44.6 MB
/srv/reproducible-results/rbuild-debian/r-b-build.pcFXdsr1/b1/erlang_27.3.3+dfsg-1_armhf.changes vs.
/srv/reproducible-results/rbuild-debian/r-b-build.pcFXdsr1/b2/erlang_27.3.3+dfsg-1_armhf.changes
2.98 KB
Files
    
Offset 4, 27 lines modifiedOffset 4, 27 lines modified
4 ·364a710b1c92c154f0f8c84d14f47cf7·7335060·debug·optional·erlang-base-dbgsym_27.3.3+dfsg-1_armhf.deb4 ·364a710b1c92c154f0f8c84d14f47cf7·7335060·debug·optional·erlang-base-dbgsym_27.3.3+dfsg-1_armhf.deb
5 ·2b8df45a7fb3a62fd7a39b0e8b7f567a·10861996·interpreters·optional·erlang-base_27.3.3+dfsg-1_armhf.deb5 ·2b8df45a7fb3a62fd7a39b0e8b7f567a·10861996·interpreters·optional·erlang-base_27.3.3+dfsg-1_armhf.deb
6 ·57f8be62cec232c1eacf4ce64d212021·41988·debug·optional·erlang-common-test-dbgsym_27.3.3+dfsg-1_armhf.deb6 ·57f8be62cec232c1eacf4ce64d212021·41988·debug·optional·erlang-common-test-dbgsym_27.3.3+dfsg-1_armhf.deb
7 ·f5914274191b7d741e84e463838da4e0·1311996·interpreters·optional·erlang-common-test_27.3.3+dfsg-1_armhf.deb7 ·f5914274191b7d741e84e463838da4e0·1311996·interpreters·optional·erlang-common-test_27.3.3+dfsg-1_armhf.deb
8 ·3e1c81f948e2b3efe57ee17e8982eba3·121052·debug·optional·erlang-crypto-dbgsym_27.3.3+dfsg-1_armhf.deb8 ·3e1c81f948e2b3efe57ee17e8982eba3·121052·debug·optional·erlang-crypto-dbgsym_27.3.3+dfsg-1_armhf.deb
9 ·27512eec7f2949722dab72ce09265b41·175112·interpreters·optional·erlang-crypto_27.3.3+dfsg-1_armhf.deb9 ·27512eec7f2949722dab72ce09265b41·175112·interpreters·optional·erlang-crypto_27.3.3+dfsg-1_armhf.deb
10 ·02a7160ab7fa3d577e1828b8149006de·479592·interpreters·optional·erlang-debugger_27.3.3+dfsg-1_armhf.deb10 ·02a7160ab7fa3d577e1828b8149006de·479592·interpreters·optional·erlang-debugger_27.3.3+dfsg-1_armhf.deb
11 ·1b9d1757efbf4228767cdd47dc86b538·287648·interpreters·optional·erlang-dev_27.3.3+dfsg-1_armhf.deb11 ·cc114ec202ab15d5d90539a250bc7d1d·287772·interpreters·optional·erlang-dev_27.3.3+dfsg-1_armhf.deb
12 ·0b2c41d4091ad0e9d458d5a730aa6133·79716·debug·optional·erlang-dialyzer-dbgsym_27.3.3+dfsg-1_armhf.deb12 ·0b2c41d4091ad0e9d458d5a730aa6133·79716·debug·optional·erlang-dialyzer-dbgsym_27.3.3+dfsg-1_armhf.deb
13 ·f611bf26e8fbf3242ca62d875e43beb2·1073192·interpreters·optional·erlang-dialyzer_27.3.3+dfsg-1_armhf.deb13 ·f611bf26e8fbf3242ca62d875e43beb2·1073192·interpreters·optional·erlang-dialyzer_27.3.3+dfsg-1_armhf.deb
14 ·325ad38d42cd6ad4cc1294d9d9c151a3·812568·interpreters·optional·erlang-diameter_27.3.3+dfsg-1_armhf.deb14 ·325ad38d42cd6ad4cc1294d9d9c151a3·812568·interpreters·optional·erlang-diameter_27.3.3+dfsg-1_armhf.deb
15 ·441acc7bbd5098a1cb39fb9761d8eaf7·16791552·doc·optional·erlang-doc_27.3.3+dfsg-1_all.deb15 ·e07f25ebcb04fa7fbd0746950f608e9b·16794444·doc·optional·erlang-doc_27.3.3+dfsg-1_all.deb
16 ·95e683ce2659a95f6dbacbdb7d050e25·459528·interpreters·optional·erlang-edoc_27.3.3+dfsg-1_armhf.deb16 ·95e683ce2659a95f6dbacbdb7d050e25·459528·interpreters·optional·erlang-edoc_27.3.3+dfsg-1_armhf.deb
17 ·ce1f9ea696f8719996b6f3e50a9e77c3·138088·interpreters·optional·erlang-eldap_27.3.3+dfsg-1_armhf.deb17 ·ce1f9ea696f8719996b6f3e50a9e77c3·138088·interpreters·optional·erlang-eldap_27.3.3+dfsg-1_armhf.deb
18 ·f944985a6b1ac70c1d492a877febe60a·185220·interpreters·optional·erlang-et_27.3.3+dfsg-1_armhf.deb18 ·f944985a6b1ac70c1d492a877febe60a·185220·interpreters·optional·erlang-et_27.3.3+dfsg-1_armhf.deb
19 ·bfd62929297b24237bd4352be6611a1f·171880·interpreters·optional·erlang-eunit_27.3.3+dfsg-1_armhf.deb19 ·bfd62929297b24237bd4352be6611a1f·171880·interpreters·optional·erlang-eunit_27.3.3+dfsg-1_armhf.deb
20 ·2c0aadef07a7ffc5b62b6de8689df987·962912·interpreters·optional·erlang-examples_27.3.3+dfsg-1_all.deb20 ·2c0aadef07a7ffc5b62b6de8689df987·962912·interpreters·optional·erlang-examples_27.3.3+dfsg-1_all.deb
21 ·b3ecd443dab8f6865c0c00b5ad05952c·106288·interpreters·optional·erlang-ftp_27.3.3+dfsg-1_armhf.deb21 ·b3ecd443dab8f6865c0c00b5ad05952c·106288·interpreters·optional·erlang-ftp_27.3.3+dfsg-1_armhf.deb
22 ·83a4d8595451d0e6cf93265652132acb·671420·interpreters·optional·erlang-inets_27.3.3+dfsg-1_armhf.deb22 ·83a4d8595451d0e6cf93265652132acb·671420·interpreters·optional·erlang-inets_27.3.3+dfsg-1_armhf.deb
23 ·f36b8ee559f57a2728102b6f10af0e23·113628·interpreters·optional·erlang-jinterface_27.3.3+dfsg-1_all.deb23 ·bfe542c3554c585ba5d66d5b8e9e83dd·113668·interpreters·optional·erlang-jinterface_27.3.3+dfsg-1_all.deb
24 ·6f21ee4c9fa24fc4c7bfabe9c101de3c·64584·debug·optional·erlang-megaco-dbgsym_27.3.3+dfsg-1_armhf.deb24 ·6f21ee4c9fa24fc4c7bfabe9c101de3c·64584·debug·optional·erlang-megaco-dbgsym_27.3.3+dfsg-1_armhf.deb
25 ·2d1a617fd67f6b31a4845583c9b16b56·3686548·interpreters·optional·erlang-megaco_27.3.3+dfsg-1_armhf.deb25 ·2d1a617fd67f6b31a4845583c9b16b56·3686548·interpreters·optional·erlang-megaco_27.3.3+dfsg-1_armhf.deb
26 ·105d203b0cb5216a4fa59734623c669c·898692·interpreters·optional·erlang-mnesia_27.3.3+dfsg-1_armhf.deb26 ·105d203b0cb5216a4fa59734623c669c·898692·interpreters·optional·erlang-mnesia_27.3.3+dfsg-1_armhf.deb
27 ·33ca402b13c54ed9494c0b341fe1bcc0·93316·interpreters·optional·erlang-mode_27.3.3+dfsg-1_all.deb27 ·33ca402b13c54ed9494c0b341fe1bcc0·93316·interpreters·optional·erlang-mode_27.3.3+dfsg-1_all.deb
28 ·9d5581075fb73e1f44de25aa1cef4a4c·14932·interpreters·optional·erlang-nox_27.3.3+dfsg-1_all.deb28 ·9d5581075fb73e1f44de25aa1cef4a4c·14932·interpreters·optional·erlang-nox_27.3.3+dfsg-1_all.deb
29 ·1435046521d8548d9753d17bff2862c3·1028524·interpreters·optional·erlang-observer_27.3.3+dfsg-1_armhf.deb29 ·1435046521d8548d9753d17bff2862c3·1028524·interpreters·optional·erlang-observer_27.3.3+dfsg-1_armhf.deb
30 ·1c4207ddb6a8b8b629ac641d7aa6b6e0·59920·debug·optional·erlang-odbc-dbgsym_27.3.3+dfsg-1_armhf.deb30 ·1c4207ddb6a8b8b629ac641d7aa6b6e0·59920·debug·optional·erlang-odbc-dbgsym_27.3.3+dfsg-1_armhf.deb
18.6 KB
erlang-dev_27.3.3+dfsg-1_armhf.deb
452 B
file list
    
Offset 1, 3 lines modifiedOffset 1, 3 lines modified
1 -rw-r--r--···0········0········0········4·2025-04-16·14:20:18.000000·debian-binary1 -rw-r--r--···0········0········0········4·2025-04-16·14:20:18.000000·debian-binary
2 -rw-r--r--···0········0········0·····3652·2025-04-16·14:20:18.000000·control.tar.xz2 -rw-r--r--···0········0········0·····3656·2025-04-16·14:20:18.000000·control.tar.xz
3 -rw-r--r--···0········0········0···283804·2025-04-16·14:20:18.000000·data.tar.xz3 -rw-r--r--···0········0········0···283924·2025-04-16·14:20:18.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
17.9 KB
data.tar.xz
17.9 KB
data.tar
17.9 KB
./usr/bin/erlang-depends
    
Offset 7, 308 lines modifiedOffset 7, 308 lines modified
7 -define(VERSION,·"1:27.3.3+dfsg").7 -define(VERSION,·"1:27.3.3+dfsg").
8 -define(ABI_VERSION,·"17.0").8 -define(ABI_VERSION,·"17.0").
9 -define(PCRE_VERSION,·"8.45").9 -define(PCRE_VERSION,·"8.45").
  
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,·[{"disk_log_1",·"erlang-base"},13 -define(MODULES,·[{"target_system",·"erlang-base"},
 14 {"release_handler_1",·"erlang-base"},
 15 {"systools_make",·"erlang-base"},
 16 {"format_lib_supp",·"erlang-base"},
 17 {"alarm_handler",·"erlang-base"},
 18 {"erlsrv",·"erlang-base"},
 19 {"sasl_report_file_h",·"erlang-base"},
 20 {"misc_supp",·"erlang-base"},
 21 {"sasl_report_tty_h",·"erlang-base"},
 22 {"sasl",·"erlang-base"},
 23 {"systools",·"erlang-base"},
 24 {"systools_relup",·"erlang-base"},
 25 {"sasl_report",·"erlang-base"},
 26 {"release_handler",·"erlang-base"},
 27 {"rb_format_supp",·"erlang-base"},
 28 {"systools_rc",·"erlang-base"},
 29 {"systools_lib",·"erlang-base"},
 30 {"rb",·"erlang-base"},
 31 {"ram_file",·"erlang-base"},
 32 {"logger",·"erlang-base"},
 33 {"inet_udp",·"erlang-base"},
 34 {"application_controller",·"erlang-base"},
 35 {"group",·"erlang-base"},
 36 {"logger_formatter",·"erlang-base"},
14 {"net",·"erlang-base"},37 {"inet_db",·"erlang-base"},
 38 {"pg",·"erlang-base"},
 39 {"raw_file_io_deflate",·"erlang-base"},
 40 {"wrap_log_reader",·"erlang-base"},
 41 {"inet_hosts",·"erlang-base"},
 42 {"error_logger",·"erlang-base"},
15 {"raw_file_io_inflate",·"erlang-base"},43 {"raw_file_io_inflate",·"erlang-base"},
16 {"inet_gethost_native",·"erlang-base"}, 
17 {"inet_dns_tsig",·"erlang-base"}, 
18 {"inet_tcp",·"erlang-base"}, 
19 {"erl_epmd",·"erlang-base"}, 
20 {"inet_epmd_socket",·"erlang-base"}, 
21 {"gen_tcp_socket",·"erlang-base"}, 
22 {"disk_log",·"erlang-base"},44 {"disk_log",·"erlang-base"},
 45 {"inet_tcp",·"erlang-base"},
 46 {"inet6_sctp",·"erlang-base"},
 47 {"dist_ac",·"erlang-base"},
 48 {"inet_parse",·"erlang-base"},
 49 {"net_kernel",·"erlang-base"},
 50 {"file_io_server",·"erlang-base"},
 51 {"raw_file_io_delayed",·"erlang-base"},
 52 {"logger_h_common",·"erlang-base"},
 53 {"erl_kernel_errors",·"erlang-base"},
 54 {"kernel",·"erlang-base"},
 55 {"inet_sctp",·"erlang-base"},
 56 {"logger_sup",·"erlang-base"},
 57 {"disk_log_server",·"erlang-base"},
23 {"rpc",·"erlang-base"},58 {"rpc",·"erlang-base"},
24 {"code_server",·"erlang-base"}, 
25 {"logger_filters",·"erlang-base"},59 {"erl_distribution",·"erlang-base"},
 60 {"gen_tcp_socket",·"erlang-base"},
26 {"logger_proxy",·"erlang-base"},61 {"logger_proxy",·"erlang-base"},
27 {"global_group",·"erlang-base"}, 
28 {"inet",·"erlang-base"},62 {"auth",·"erlang-base"},
29 {"gen_udp",·"erlang-base"},63 {"raw_file_io",·"erlang-base"},
30 {"gen_udp_socket",·"erlang-base"}, 
31 {"kernel_config",·"erlang-base"}, 
32 {"logger_disk_log_h",·"erlang-base"}, 
33 {"erl_signal_handler",·"erlang-base"},64 {"erl_signal_handler",·"erlang-base"},
34 {"local_tcp",·"erlang-base"}, 
35 {"inet6_tcp",·"erlang-base"}, 
36 {"inet6_tcp_dist",·"erlang-base"}, 
37 {"logger_formatter",·"erlang-base"}, 
38 {"user_sup",·"erlang-base"}, 
39 {"disk_log_server",·"erlang-base"}, 
40 {"disk_log_sup",·"erlang-base"}, 
41 {"group",·"erlang-base"}, 
42 {"standard_error",·"erlang-base"}, 
43 {"kernel_refc",·"erlang-base"},65 {"kernel_refc",·"erlang-base"},
44 {"ram_file",·"erlang-base"}, 
45 {"application_master",·"erlang-base"}, 
46 {"erl_kernel_errors",·"erlang-base"}, 
47 {"erl_boot_server",·"erlang-base"}, 
48 {"logger_std_h",·"erlang-base"},66 {"gen_udp",·"erlang-base"},
49 {"logger_config",·"erlang-base"},67 {"logger_backend",·"erlang-base"},
50 {"os",·"erlang-base"}, 
51 {"logger_server",·"erlang-base"}, 
52 {"inet_tcp_dist",·"erlang-base"},68 {"inet_tcp_dist",·"erlang-base"},
 69 {"prim_tty",·"erlang-base"},
 70 {"pg2",·"erlang-base"},
53 {"inet_udp",·"erlang-base"},71 {"inet_dns_tsig",·"erlang-base"},
54 {"inet_parse",·"erlang-base"}, 
55 {"dist_ac",·"erlang-base"},72 {"os",·"erlang-base"},
 73 {"raw_file_io_compressed",·"erlang-base"},
 74 {"inet_epmd_socket",·"erlang-base"},
 75 {"seq_trace",·"erlang-base"},
 76 {"group_history",·"erlang-base"},
56 {"erl_reply",·"erlang-base"},77 {"user_sup",·"erlang-base"},
57 {"inet_res",·"erlang-base"},78 {"inet_res",·"erlang-base"},
58 {"pg",·"erlang-base"}, 
59 {"application_controller",·"erlang-base"}, 
60 {"raw_file_io_delayed",·"erlang-base"}, 
61 {"raw_file_io_deflate",·"erlang-base"}, 
62 {"net_adm",·"erlang-base"},79 {"net",·"erlang-base"},
63 {"code",·"erlang-base"}, 
64 {"logger_sup",·"erlang-base"}, 
65 {"error_handler",·"erlang-base"}, 
66 {"logger_olp",·"erlang-base"}, 
67 {"logger",·"erlang-base"},80 {"disk_log_1",·"erlang-base"},
68 {"error_logger",·"erlang-base"}, 
69 {"net_kernel",·"erlang-base"}, 
70 {"raw_file_io_list",·"erlang-base"}, 
71 {"logger_h_common",·"erlang-base"}, 
72 {"erts_debug",·"erlang-base"},81 {"erts_debug",·"erlang-base"},
73 {"application",·"erlang-base"}, 
74 {"user_drv",·"erlang-base"},82 {"code",·"erlang-base"},
75 {"prim_tty",·"erlang-base"}, 
76 {"gen_sctp",·"erlang-base"}, 
77 {"erl_ddll",·"erlang-base"},83 {"erl_ddll",·"erlang-base"},
78 {"erl_compile_server",·"erlang-base"}, 
79 {"pg2",·"erlang-base"}, 
80 {"logger_backend",·"erlang-base"}, 
81 {"application_starter",·"erlang-base"}, 
82 {"inet_epmd_dist",·"erlang-base"}, 
83 {"inet_db",·"erlang-base"},84 {"user_drv",·"erlang-base"},
84 {"logger_simple_h",·"erlang-base"}, 
Max diff block lines reached; 13478/18294 bytes (73.67%) of diff not shown.
44.4 MB
erlang-doc_27.3.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-04-16·14:20:18.000000·debian-binary1 -rw-r--r--···0········0········0········4·2025-04-16·14:20:18.000000·debian-binary
2 -rw-r--r--···0········0········0····39648·2025-04-16·14:20:18.000000·control.tar.xz2 -rw-r--r--···0········0········0····39648·2025-04-16·14:20:18.000000·control.tar.xz
3 -rw-r--r--···0········0········0·16751712·2025-04-16·14:20:18.000000·data.tar.xz3 -rw-r--r--···0········0········0·16754604·2025-04-16·14:20:18.000000·data.tar.xz
12.5 KB
control.tar.xz
12.4 KB
control.tar
475 B
./control
    
Offset 1, 13 lines modifiedOffset 1, 13 lines modified
1 Package:·erlang-doc1 Package:·erlang-doc
2 Source:·erlang2 Source:·erlang
3 Version:·1:27.3.3+dfsg-13 Version:·1:27.3.3+dfsg-1
4 Architecture:·all4 Architecture:·all
5 Maintainer:·Debian·Erlang·Packagers·<pkg-erlang-devel@lists.alioth.debian.org>5 Maintainer:·Debian·Erlang·Packagers·<pkg-erlang-devel@lists.alioth.debian.org>
6 Installed-Size:·958576 Installed-Size:·95856
7 Depends:·libjs-jquery,·libjs-jquery-ui7 Depends:·libjs-jquery,·libjs-jquery-ui
8 Suggests:·erlang:any8 Suggests:·erlang:any
9 Conflicts:·erlang-base:any·(<<·1:13.b.4),·erlang-base-hipe:any,·erlang-doc-html9 Conflicts:·erlang-base:any·(<<·1:13.b.4),·erlang-base-hipe:any,·erlang-doc-html
10 Replaces:·erlang-doc-html10 Replaces:·erlang-doc-html
11 Provides:·erlang-doc-html11 Provides:·erlang-doc-html
12 Section:·doc12 Section:·doc
13 Priority:·optional13 Priority:·optional
11.9 KB
./md5sums
30.0 B
./md5sums
Files differ
11.9 KB
line order
Max HTML report size reached
44.4 MB
data.tar.xz
44.4 MB
data.tar
93.7 KB
file list
    
Offset 95, 15 lines modifiedOffset 95, 15 lines modified
95 -rw-r--r--···0·root·········(0)·root·········(0)····23236·2025-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/doc/dist/remixicon-NKANDIL5.woff2101 -rw-r--r--···0·root·········(0)·root·········(0)·····1956·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/doc/dist/remixicon-NKANDIL5.woff2
102 -rw-r--r--···0·root·········(0)·root·········(0)···111548·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/doc/dist/search_data-591BD0BC.js102 -rw-r--r--···0·root·········(0)·root·········(0)···111548·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/doc/dist/search_data-7D37828E.js
103 -rw-r--r--···0·root·········(0)·root·········(0)·····5081·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/doc/dist/sidebar_items-FCAF33E8.js103 -rw-r--r--···0·root·········(0)·root·········(0)·····5081·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/doc/dist/sidebar_items-FCAF33E8.js
104 -rw-r--r--···0·root·········(0)·root·········(0)······288·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/doc/edoc.html104 -rw-r--r--···0·root·········(0)·root·········(0)······288·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/doc/edoc.html
105 -rw-r--r--···0·root·········(0)·root·········(0)······286·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/doc/efficiency_guide.html105 -rw-r--r--···0·root·········(0)·root·········(0)······286·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/doc/efficiency_guide.html
106 -rw-r--r--···0·root·········(0)·root·········(0)······290·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/doc/eldap.html106 -rw-r--r--···0·root·········(0)·root·········(0)······290·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/doc/eldap.html
107 -rw-r--r--···0·root·········(0)·root·········(0)······278·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/doc/embedded.html107 -rw-r--r--···0·root·········(0)·root·········(0)······278·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/doc/embedded.html
108 -rw-r--r--···0·root·········(0)·root·········(0)······297·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/doc/erl_interface.html108 -rw-r--r--···0·root·········(0)·root·········(0)······297·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/doc/erl_interface.html
109 -rw-r--r--···0·root·········(0)·root·········(0)······285·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/doc/erts.html109 -rw-r--r--···0·root·········(0)·root·········(0)······285·2025-04-16·14:20:18.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)······288·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/doc/ssh.html137 -rw-r--r--···0·root·········(0)·root·········(0)······288·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/doc/ssh.html
138 -rw-r--r--···0·root·········(0)·root·········(0)······289·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/doc/ssl.html138 -rw-r--r--···0·root·········(0)·root·········(0)······289·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/doc/ssl.html
139 -rw-r--r--···0·root·········(0)·root·········(0)······290·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/doc/stdlib.html139 -rw-r--r--···0·root·········(0)·root·········(0)······290·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/doc/stdlib.html
140 -rw-r--r--···0·root·········(0)·root·········(0)······296·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/doc/syntax_tools.html140 -rw-r--r--···0·root·········(0)·root·········(0)······296·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/doc/syntax_tools.html
141 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/doc/system/141 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/doc/system/
142 -rw-r--r--···0·root·········(0)·root·········(0)·····2286·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/doc/system/.build142 -rw-r--r--···0·root·········(0)·root·········(0)·····2286·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/doc/system/.build
143 -rw-r--r--···0·root·········(0)·root·········(0)·····5524·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/doc/system/404.html143 -rw-r--r--···0·root·········(0)·root·········(0)·····5524·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/doc/system/404.html
144 -rw-r--r--···0·root·········(0)·root·········(0)···654479·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/doc/system/Erlang·System·Documentation.epub144 -rw-r--r--···0·root·········(0)·root·········(0)···654451·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/doc/system/Erlang·System·Documentation.epub
145 -rw-r--r--···0·root·········(0)·root·········(0)····53392·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/doc/system/applications.html145 -rw-r--r--···0·root·········(0)·root·········(0)····53392·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/doc/system/applications.html
146 -rw-r--r--···0·root·········(0)·root·········(0)····97349·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/doc/system/appup_cookbook.html146 -rw-r--r--···0·root·········(0)·root·········(0)····97349·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/doc/system/appup_cookbook.html
147 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/doc/system/assets/147 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/doc/system/assets/
148 -rw-r--r--···0·root·········(0)·root·········(0)·····7982·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/doc/system/assets/ballpoint-pen.svg148 -rw-r--r--···0·root·········(0)·root·········(0)·····7982·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/doc/system/assets/ballpoint-pen.svg
149 -rw-r--r--···0·root·········(0)·root·········(0)·····2284·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/doc/system/assets/dist1.gif149 -rw-r--r--···0·root·········(0)·root·········(0)·····2284·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/doc/system/assets/dist1.gif
150 -rw-r--r--···0·root·········(0)·root·········(0)·····5214·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/doc/system/assets/dist2.gif150 -rw-r--r--···0·root·········(0)·root·········(0)·····5214·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/doc/system/assets/dist2.gif
151 -rw-r--r--···0·root·········(0)·root·········(0)·····5007·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/doc/system/assets/dist3.gif151 -rw-r--r--···0·root·········(0)·root·········(0)·····5007·2025-04-16·14:20:18.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-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/351 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/
352 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.4/352 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.4/
353 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.4/doc/353 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.4/doc/
354 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.4/doc/html/354 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.4/doc/html/
355 -rw-r--r--···0·root·········(0)·root·········(0)·····1060·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.4/doc/html/.build355 -rw-r--r--···0·root·········(0)·root·········(0)·····1060·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.4/doc/html/.build
356 -rw-r--r--···0·root·········(0)·root·········(0)·····5886·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.4/doc/html/404.html356 -rw-r--r--···0·root·········(0)·root·········(0)·····5886·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.4/doc/html/404.html
357 -rw-r--r--···0·root·········(0)·root·········(0)·····6566·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.4/doc/html/api-reference.html357 -rw-r--r--···0·root·········(0)·root·········(0)·····6566·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.4/doc/html/api-reference.html
358 -rw-r--r--···0·root·········(0)·root·········(0)····97026·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.4/doc/html/asn1.epub358 -rw-r--r--···0·root·········(0)·root·········(0)····97020·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.4/doc/html/asn1.epub
359 -rw-r--r--···0·root·········(0)·root·········(0)···140360·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.4/doc/html/asn1_getting_started.html359 -rw-r--r--···0·root·········(0)·root·········(0)···140360·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.4/doc/html/asn1_getting_started.html
360 -rw-r--r--···0·root·········(0)·root·········(0)·····9204·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.4/doc/html/asn1_introduction.html360 -rw-r--r--···0·root·········(0)·root·········(0)·····9204·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.4/doc/html/asn1_introduction.html
361 -rw-r--r--···0·root·········(0)·root·········(0)·····7330·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.4/doc/html/asn1_overview.html361 -rw-r--r--···0·root·········(0)·root·········(0)·····7330·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.4/doc/html/asn1_overview.html
362 -rw-r--r--···0·root·········(0)·root·········(0)····78676·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.4/doc/html/asn1_spec.html362 -rw-r--r--···0·root·········(0)·root·········(0)····78676·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.4/doc/html/asn1_spec.html
363 -rw-r--r--···0·root·········(0)·root·········(0)····35299·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.4/doc/html/asn1ct.html363 -rw-r--r--···0·root·········(0)·root·········(0)····35299·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.4/doc/html/asn1ct.html
364 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.4/doc/html/assets/364 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.4/doc/html/assets/
365 -rw-r--r--···0·root·········(0)·root·········(0)·····1340·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.4/doc/html/assets/exclusive_Win_But.gif365 -rw-r--r--···0·root·········(0)·root·········(0)·····1340·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.4/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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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)···399374·2025-04-16·14:20:18.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)···399359·2025-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6.1/doc/html/assets/466 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6.1/doc/html/assets/
467 -rw-r--r--···0·root·········(0)·root·········(0)·····5837·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6.1/doc/html/assets/logo.png467 -rw-r--r--···0·root·········(0)·root·········(0)·····5837·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6.1/doc/html/assets/logo.png
468 -rw-r--r--···0·root·········(0)·root·········(0)····24102·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6.1/doc/html/beam_ssa.html468 -rw-r--r--···0·root·········(0)·root·········(0)····24102·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6.1/doc/html/beam_ssa.html
469 -rw-r--r--···0·root·········(0)·root·········(0)···450309·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6.1/doc/html/cerl.html469 -rw-r--r--···0·root·········(0)·root·········(0)···450309·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6.1/doc/html/cerl.html
470 -rw-r--r--···0·root·········(0)·root·········(0)····28569·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6.1/doc/html/cerl_clauses.html470 -rw-r--r--···0·root·········(0)·root·········(0)····28569·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6.1/doc/html/cerl_clauses.html
471 -rw-r--r--···0·root·········(0)·root·········(0)····28827·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6.1/doc/html/cerl_trees.html471 -rw-r--r--···0·root·········(0)·root·········(0)····28827·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6.1/doc/html/cerl_trees.html
472 -rw-r--r--···0·root·········(0)·root·········(0)····84126·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6.1/doc/html/compile.html472 -rw-r--r--···0·root·········(0)·root·········(0)····84126·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6.1/doc/html/compile.html
473 -rw-r--r--···0·root·········(0)·root·········(0)···182061·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6.1/doc/html/compiler.epub473 -rw-r--r--···0·root·········(0)·root·········(0)···182065·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6.1/doc/html/compiler.epub
474 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6.1/doc/html/dist/474 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6.1/doc/html/dist/
475 -rw-r--r--···0·root·········(0)·root·········(0)····20933·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6.1/doc/html/dist/handlebars.runtime-CFQAK6SD.js475 -rw-r--r--···0·root·········(0)·root·········(0)····20933·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6.1/doc/html/dist/handlebars.runtime-CFQAK6SD.js
476 -rw-r--r--···0·root·········(0)·root·········(0)····33580·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6.1/doc/html/dist/handlebars.templates-K7URE6B4.js476 -rw-r--r--···0·root·········(0)·root·········(0)····33580·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6.1/doc/html/dist/handlebars.templates-K7URE6B4.js
477 -rw-r--r--···0·root·········(0)·root·········(0)····70589·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6.1/doc/html/dist/html-55NP3CS6.js477 -rw-r--r--···0·root·········(0)·root·········(0)····70589·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6.1/doc/html/dist/html-55NP3CS6.js
478 -rw-r--r--···0·root·········(0)·root·········(0)····67213·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6.1/doc/html/dist/html-erlang-WGRVP7UZ.css478 -rw-r--r--···0·root·········(0)·root·········(0)····67213·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6.1/doc/html/dist/html-erlang-WGRVP7UZ.css
479 -rw-r--r--···0·root·········(0)·root·········(0)····17732·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6.1/doc/html/dist/inconsolata-latin-400-normal-OXLHDACS.woff2479 -rw-r--r--···0·root·········(0)·root·········(0)····17732·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6.1/doc/html/dist/inconsolata-latin-400-normal-OXLHDACS.woff2
480 -rw-r--r--···0·root·········(0)·root·········(0)····17976·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6.1/doc/html/dist/inconsolata-latin-700-normal-S55P5GAG.woff2480 -rw-r--r--···0·root·········(0)·root·········(0)····17976·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6.1/doc/html/dist/inconsolata-latin-700-normal-S55P5GAG.woff2
Offset 500, 15 lines modifiedOffset 500, 15 lines modified
500 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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)···127048·2025-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/debugger-5.5/doc/html/debugger.epub553 -rw-r--r--···0·root·········(0)·root·········(0)···219258·2025-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.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-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/debugger-5.5/doc/html/dist/html-erlang-WGRVP7UZ.css
Offset 583, 15 lines modifiedOffset 583, 15 lines modified
583 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/dialyzer-5.3.1/doc/583 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/dialyzer-5.3.1/doc/
584 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/dialyzer-5.3.1/doc/html/584 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/dialyzer-5.3.1/doc/html/
585 -rw-r--r--···0·root·········(0)·root·········(0)······921·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/dialyzer-5.3.1/doc/html/.build585 -rw-r--r--···0·root·········(0)·root·········(0)······921·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/dialyzer-5.3.1/doc/html/.build
586 -rw-r--r--···0·root·········(0)·root·········(0)·····5910·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/dialyzer-5.3.1/doc/html/404.html586 -rw-r--r--···0·root·········(0)·root·········(0)·····5910·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/dialyzer-5.3.1/doc/html/404.html
587 -rw-r--r--···0·root·········(0)·root·········(0)·····6676·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/dialyzer-5.3.1/doc/html/api-reference.html587 -rw-r--r--···0·root·········(0)·root·········(0)·····6676·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/dialyzer-5.3.1/doc/html/api-reference.html
588 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/dialyzer-5.3.1/doc/html/assets/588 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/dialyzer-5.3.1/doc/html/assets/
589 -rw-r--r--···0·root·········(0)·root·········(0)·····5837·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/dialyzer-5.3.1/doc/html/assets/logo.png589 -rw-r--r--···0·root·········(0)·root·········(0)·····5837·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/dialyzer-5.3.1/doc/html/assets/logo.png
590 -rw-r--r--···0·root·········(0)·root·········(0)····66387·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/dialyzer-5.3.1/doc/html/dialyzer.epub590 -rw-r--r--···0·root·········(0)·root·········(0)····66388·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/dialyzer-5.3.1/doc/html/dialyzer.epub
591 -rw-r--r--···0·root·········(0)·root·········(0)····53476·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/dialyzer-5.3.1/doc/html/dialyzer.html591 -rw-r--r--···0·root·········(0)·root·········(0)····53476·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/dialyzer-5.3.1/doc/html/dialyzer.html
592 -rw-r--r--···0·root·········(0)·root·········(0)····25782·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/dialyzer-5.3.1/doc/html/dialyzer_chapter.html592 -rw-r--r--···0·root·········(0)·root·········(0)····25782·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/dialyzer-5.3.1/doc/html/dialyzer_chapter.html
593 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/dialyzer-5.3.1/doc/html/dist/593 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/dialyzer-5.3.1/doc/html/dist/
594 -rw-r--r--···0·root·········(0)·root·········(0)····20933·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/dialyzer-5.3.1/doc/html/dist/handlebars.runtime-CFQAK6SD.js594 -rw-r--r--···0·root·········(0)·root·········(0)····20933·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/dialyzer-5.3.1/doc/html/dist/handlebars.runtime-CFQAK6SD.js
595 -rw-r--r--···0·root·········(0)·root·········(0)····33580·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/dialyzer-5.3.1/doc/html/dist/handlebars.templates-K7URE6B4.js595 -rw-r--r--···0·root·········(0)·root·········(0)····33580·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/dialyzer-5.3.1/doc/html/dist/handlebars.templates-K7URE6B4.js
596 -rw-r--r--···0·root·········(0)·root·········(0)····70589·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/dialyzer-5.3.1/doc/html/dist/html-55NP3CS6.js596 -rw-r--r--···0·root·········(0)·root·········(0)····70589·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/dialyzer-5.3.1/doc/html/dist/html-55NP3CS6.js
597 -rw-r--r--···0·root·········(0)·root·········(0)····67213·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/dialyzer-5.3.1/doc/html/dist/html-erlang-WGRVP7UZ.css597 -rw-r--r--···0·root·········(0)·root·········(0)····67213·2025-04-16·14:20:18.000000·./usr/share/doc/erlang-doc/html/lib/dialyzer-5.3.1/doc/html/dist/html-erlang-WGRVP7UZ.css
Max diff block lines reached; 75388/95907 bytes (78.61%) 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-591BD0BC.js37 dist/search_data-7D37828E.js
38 dist/sidebar_items-FCAF33E8.js38 dist/sidebar_items-FCAF33E8.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-591BD0BC.js"></script>114 <script·src="dist/search_data-7D37828E.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
536 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,·Apr·18·2025·14:04: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,·Apr·18·2025·15:34:38,·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="1488230602-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="1488230602-1">)</span><s[·...·truncated·by·diffoscope;·len:·195,·SHA:·a34bf5867ab64bb8c355ea16f2812fc5bf27456742629b6dc67d23036cb3267a·...·]-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="9636228375-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="9636228375-1">)</span><s[·...·truncated·by·diffoscope;·len:·195,·SHA:·6524a910e39aa44efff0610617309643938fe697e15107082b2c2493cdc82c58·...·]-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="1488230602-3">(</span><span·class="p"·data-group-id="1488230602-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="9636228375-3">(</span><span·class="p"·data-group-id="9636228375-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="1488230602-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="1488230602-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="9636228375-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="9636228375-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="1488230602-5">(</span><span·class="p"·data-group-id="1488230602-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="9636228375-5">(</span><span·class="p"·data-group-id="9636228375-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="8282577950-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="8282577950-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="[·...·truncated·by·diffoscope;·len:·179,·SHA:·4480fcc2f96909b52306fc45bc3cd31fc7f3cfa92149bc70cc0185dc5d6d35d1·...·]-2">}</span><span·class="p">.</span><span·class="w">40 4&gt;·</span><span·class="p"·data-group-id="2173608981-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="2173608981-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="[·...·truncated·by·diffoscope;·len:·179,·SHA:·73dcce9e28044784b4c4af2985f283ff82e75d4ea572c3e4f05d17f6671dfd98·...·]-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="8282577950-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="8282577950-3">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="[·...·truncated·by·diffoscope;·len:·179,·SHA:·288b47ff63c9791530eda6d6f0b2f78de94d571ed4911bcad9fa180ace2bc60b·...·]-4">}</span><span·class="p">.</span><span·class="w">42 5&gt;·</span><span·class="p"·data-group-id="2173608981-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="2173608981-3">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="[·...·truncated·by·diffoscope;·len:·179,·SHA:·5d18ee747facd4596067d1eda5d4ee800882c4dfa8820d874672ab737054f1c8·...·]-4">}</span><span·class="p">.</span><span·class="w">
43 </span><span·class="p"·data-group-id="8282577950-5">{</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="8282577950-5">}</span><span·class="gp·unselectable">43 </span><span·class="p"·data-group-id="2173608981-5">{</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="2173608981-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="3899680230-1">(</span><span·class="p"·data-group-id="3899680230-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="4869595483-1">(</span><span·class="p"·data-group-id="4869595483-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="7731981796-1">(</span><span·class="n">Element</span><span·class="p"·data-group-id="7731981796-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="7731981796-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="7731981796-3">(</span><span·class="n">Element</span><span·class="p"·data-group-id="7731981796-3">)</span><span·class="p"·data-group-id="7731981796-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:·9978b4bde0131bc8353dc521c9aa595b3034057ce948f72a1624a39008e2de6a·...·]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="417[·...·truncated·by·diffoscope;·len:·732,·SHA:·c3068d67e62492980cfb21a62e1da82ee502277b5ceb5a8ec9dbfa47a5abe3f7·...·]
 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="6341129919-1">(</span><span·class="n">Element</span><span·class="p"·data-group-id="6341129919-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="6341129919-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="6341129919-3">(</span><span·class="n">Element</span><span·class="p"·data-group-id="6341129919-3">)</span><span·class="p"·data-group-id="6341129919-2">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="6341129919-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="6341129919-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="2849440049-1">(</span><span·class="p"·data-group-id="2849440049-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="1173095047-1">(</span><span·class="p"·data-group-id="1173095047-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="2849440049-2">(</span><span·class="n">Set</span><span·class="p"·data-group-id="2849440049-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="1173095047-2">(</span><span·class="n">Set</span><span·class="p"·data-group-id="1173095047-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="2849440049-3">(</span><span·class="s">&quot;ok&quot;</span><span·class="p"·data-group-id="2849440049-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="1173095047-3">(</span><span·class="s">&quot;ok&quot;</span><span·class="p"·data-group-id="1173095047-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="7099461415-1">(</span><span·class="ss">system_version</span><span·class="p"·data-group-id="7099461415-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="5474858517-1">(</span><span·class="ss">system_version</span><span·class="p"·data-group-id="5474858517-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="1276666617-1">(</span><span·class="p"·data-group-id="1276666617-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="7213781959-1">(</span><span·class="p"·data-group-id="7213781959-1">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
231 ····</span><span·class="p"·data-group-id="1276666617-2">{</span><span·class="ss">win32</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id="1276666617-2">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">231 ····</span><span·class="p"·data-group-id="7213781959-2">{</span><span·class="ss">win32</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id="7213781959-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="1276666617-3">(</span><span·class="p"·data-group-id="1276666617-3">)</span><span·class="p">;</span><span·class="w">232 ········</span><span·class="nf">do_windows_specific</span><span·class="p"·data-group-id="7213781959-3">(</span><span·class="p"·data-group-id="7213781959-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="1276666617-4">(</span><span·class="p"·data-group-id="1276666617-4">)</span><span·class="w">234 ········</span><span·class="nf">do_fallback_or_exit</span><span·class="p"·data-group-id="7213781959-4">(</span><span·class="p"·data-group-id="7213781959-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="4888404525-1">(</span><span·class="n">X</span><span·class="p"·data-group-id="4888404525-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="4865516116-1">(</span><span·class="n">X</span><span·class="p"·data-group-id="4865516116-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="8645953036-1">{</span><span·class="ss">&#39;EXIT&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="8645953036-2">{</span><span·class="ss">test</span><span·class="p">,</span><span·class="n">Stacktrace</span><span·class="p"·data-group-id="864[·...·truncated·by·diffoscope;·len:·453,·SHA:·3dc6e81dc4c87b1fb66aa2880fe5d8f508c28398d6c029599eaf299f4d019dfc·...·]-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="5113070135-1">{</span><span·class="ss">&#39;EXIT&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="5113070135-2">{</span><span·class="ss">test</span><span·class="p">,</span><span·class="n">Stacktrace</span><span·class="p"·data-group-id="511[·...·truncated·by·diffoscope;·len:·453,·SHA:·f49ff951d812a26b871bd272c40221c7cef7690cc927550aea028a756e8e6aa7·...·]-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="8645953036-5">[</span><span·class="p"·data-group-id="8645953036-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:·ddd1a2506e3bf9199f63bb82d19b660c9e8de9133940acd339b61ad6e8b6fd94·...·]-6">}</span><span·class="p">,</span><span·class="w">64 </span><span·class="p"·data-group-id="5113070135-5">[</span><span·class="p"·data-group-id="5113070135-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:·610f6dcef09ffec7f87cd37994f1706278e18bff84e82b181d25640f22b51275·...·]-6">}</span><span·class="p">,</span><span·class="w">
65 ·</span><span·class="p"·data-group-id="8645953036-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="8645953036-9">[</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·74,·SHA:·edc21f50b0c38e03e304090218497d45f3b57ed75b16b37ada63b7d0e9f3f3e3·...·]-8">}</span><span·class="p">,</span><span·class="w">65 ·</span><span·class="p"·data-group-id="5113070135-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="5113070135-9">[</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·74,·SHA:·fb694a80eb8429bd43e175afe276843a7120b9e0b164ea5ed5103d098ed640a8·...·]-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="8645953036-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="5113070135-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="8645953036-10">(</span><span·class="ss">test</span><span·class="p"·data-group-id="8645953036-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="5113070135-10">(</span><span·class="ss">test</span><span·class="p"·data-group-id="5113070135-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="8645953036-11">[</span><span·class="p"·data-group-id="8645953036-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:·f9f8bd9e6ba2a22fbb7b356ef837433e6d310dd94468df4d179e216886d510c0·...·]-12">}</span><span·class="p">,</span><span·class="w">68 </span><span·class="p"·data-group-id="5113070135-11">[</span><span·class="p"·data-group-id="5113070135-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:·a1feefeaaedc3a9c0edbacfcc55079d89e9e355646cff1eca706bfdceb0ccb6f·...·]-12">}</span><span·class="p">,</span><span·class="w">
69 ·</span><span·class="p"·data-group-id="8645953036-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="8645953036-15">[</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·77,·SHA:·9070f031411af4e4d1ed1e6336e222b8cd75af0ffe81412a8cb44811d482cc57·...·]-14">}</span><span·class="p">,</span><span·class="w">69 ·</span><span·class="p"·data-group-id="5113070135-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="5113070135-15">[</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·77,·SHA:·86df4eb0f3d88dd740ad907ae6a3759baab1fbf0a39e0f8d5a0b3d5be1277adf·...·]-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="8645953036-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="5113070135-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="7348355851-1">(</span><span·class="n">PORT_NAMES</span><span·class="p"·data-group-id="7348355851-2">(</span><span·class="p"·data-group-id="7348355851-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="3727696038-1">(</span><span·class="n">PORT_NAMES</span><span·class="p"·data-group-id="3727696038-2">(</span><span·class="p"·data-group-id="3727696038-2">)</span><span·class="p">,</span><span·class="w">
35 »       </span><span·class="p"·data-group-id="7348355851-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="3727696038-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="7348355851-3">}</span><span·class="p"·data-group-id="7348355851-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="3727696038-3">}</span><span·class="p"·data-group-id="3727696038-1">)</span><span·class="p">.</span><span·class="w">
  
39 </span><span·class="nf">client_port</span><span·class="p"·data-group-id="7348355851-4">(</span><span·class="p"·data-group-id="7348355851-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="3727696038-4">(</span><span·class="p"·data-group-id="3727696038-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="7348355851-5">(</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">system_info</span><span·class="p"·data-group-id="7348355851-6">(</span><span·class="ss">scheduler_id</span><span·class="p"·data-group-id="7348355851-6">)</span><sp[·...·truncated·by·diffoscope;·len:·363,·SHA:·2ab15bd772cf2c226b7195902ce18341129c0fa73be20a272486cdbc0f2312d7·...·]-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="3727696038-5">(</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">system_info</span><span·class="p"·data-group-id="3727696038-6">(</span><span·class="ss">scheduler_id</span><span·class="p"·data-group-id="3727696038-6">)</span><sp[·...·truncated·by·diffoscope;·len:·363,·SHA:·9e8dd18f4b415557f7ff9f142ea3c012151c9002b5e2f8bd2d68e0677ee62cea·...·]-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="7348355851-9">(</span><span·class="p"·data-group-id="7348355851-9">)</span><span·class="p"·data-group-id="7348355851-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="3727696038-9">(</span><span·class="p"·data-group-id="3727696038-9">)</span><span·class="p"·data-group-id="3727696038-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="1234602009-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="1234602009-1">)</span><span·class="mi">1</span><span·class="o"[·...·truncated·by·diffoscope;·len:·157,·SHA:·4d8af3181f1ab5e1c07b39554aeef9213b103ad29b3b411e2306ffc2a7c95e00·...·]9-2">)</span><span·class="p">.</span><span·class="w">54 </span><span·class="p"·data-group-id="0021997859-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="0021997859-1">)</span><span·class="mi">1</span><span·class="o"[·...·truncated·by·diffoscope;·len:·157,·SHA:·eb93d6381a8e816a81760f60a4aecdc2458b7a6d3e5ae319262ebb51ae526e60·...·]9-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="1234602009-3">(</span><span·class="p"·data-group-id="1234602009-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="0021997859-3">(</span><span·class="p"·data-group-id="0021997859-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="2400556704-1">(</span><span·class="p"·data-group-id="2400556704-1">)</span><span·class="p">.</span><span·class="w">59 1&gt;·</span><span·class="nf">node</span><span·class="p"·data-group-id="7421359977-1">(</span><span·class="p"·data-group-id="7421359977-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="2400556704-2">(</span><span·class="p"·data-group-id="2400556704-3">[</span><span·class="ss">dilbert</span><span·class="p">,</span><span·class="ss">shortnames</span><span·class="p"·data-group-id="2400556704-3">]</span><span·class="p"·data-group-id="24005567[·...·truncated·by·diffoscope;·len:·2,·SHA:·6cd5b6e51936a442b973660c21553dd22bd72ddc8751132a943475288113b4c0·...·]-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="7421359977-2">(</span><span·class="p"·data-group-id="7421359977-3">[</span><span·class="ss">dilbert</span><span·class="p">,</span><span·class="ss">shortnames</span><span·class="p"·data-group-id="7421359977-3">]</span><span·class="p"·data-group-id="74213599[·...·truncated·by·diffoscope;·len:·2,·SHA:·a88a7902cb4ef697ba0b6759c50e8c10297ff58f942243de19b984841bfe1f73·...·]-2">)</span><span·class="p">.</span><span·class="w">
62 </span><span·class="p"·data-group-id="2400556704-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="2400556704-4">}</span><span·class="gp·unselectable">62 </span><span·class="p"·data-group-id="7421359977-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="7421359977-4">}</span><span·class="gp·unselectable">
63 (dilbert@uab)3&gt;·</span><span·class="nf">node</span><span·class="p"·data-group-id="2400556704-5">(</span><span·class="p"·data-group-id="2400556704-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="7421359977-5">(</span><span·class="p"·data-group-id="7421359977-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.17 KB
OEBPS/content.opf
3.14 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="8165125798-1">(</span><span·class="mi">1000</span><span·class="p"·data-group-id="8165125798-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="1218547575-1">(</span><span·class="mi">1000</span><span·class="p"·data-group-id="1218547575-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="8165125798-2">(</span><span·class="mi">1000</span><span·class="p"·data-group-id="8165125798-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="1218547575-2">(</span><span·class="mi">1000</span><span·class="p"·data-group-id="1218547575-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="1974294706-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="1974294706-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·[·...·truncated·by·diffoscope;·len:·555,·SHA:·cc9285ebb9a57e52472cdb4952921712b41798effdbd95afe0096a22e33dd9d3·...·]-3">}</span><span·class="w">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="0327721102-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="0327721102-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·[·...·truncated·by·diffoscope;·len:·555,·SHA:·3683c35c32f3122ae4a1a4e3646ea560a9f5c0502ebcf74ac7547ecb10ec18ef·...·]-3">}</span><span·class="w">
143 </span><span·class="nf">stop</span><span·class="p"·data-group-id="1974294706-4">(</span><span·class="n">State</span><span·class="p"·data-group-id="1974294706-4">)</span></code></pre><ul><li><code·class="inline">start/2</code>·is·called·when·starting·the·application·and·is·to·create·the143 </span><span·class="nf">stop</span><span·class="p"·data-group-id="0327721102-4">(</span><span·class="n">State</span><span·class="p"·data-group-id="0327721102-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="6099859885-1">(</span><span·class="ss">ch_app</span><span·class="p"·data-group-id="6099859885-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="4937010309-1">(</span><span·class="ss">ch_app</span><span·class="p"·data-group-id="4937010309-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="6099859885-2">(</span><span·class="ss">application</span><span·class="p"·data-group-id="6099859885-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="4937010309-2">(</span><span·class="ss">application</span><span·class="p"·data-group-id="4937010309-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="6099859885-3">(</span><span·class="p"·data-group-id="6099859885-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:·678c74027f84b3f33a50b62602d61db85079524ccd12ead4bfd0cb11342e4d1c·...·]-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="4937010309-3">(</span><span·class="p"·data-group-id="4937010309-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:·496c9ae2c1f5cef389c85e6171d42a2ea1303f9a345e2ac4dd97733ab12745fb·...·]-3">)</span><span·class="p">.</span><span·class="w">
  
157 </span><span·class="nf">start</span><span·class="p"·data-group-id="6099859885-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="6099859885-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="4937010309-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="4937010309-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="6099859885-6">(</span><span·class="p"·data-group-id="6099859885-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="4937010309-6">(</span><span·class="p"·data-group-id="4937010309-6">)</span><span·class="p">.</span><span·class="w">
  
159 </span><span·class="nf">stop</span><span·class="p"·data-group-id="6099859885-7">(</span><span·class="p">_</span><span·class="n">State</span><span·class="p"·data-group-id="6099859885-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="4937010309-7">(</span><span·class="p">_</span><span·class="n">State</span><span·class="p"·data-group-id="4937010309-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="3702185808-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="7854335104-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="3702185808-2">[</span><span·class="p"·data-group-id="3702185808-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="3702185808-3">}</span><span·class="p">,</span><span·class="w">181 ·</span><span·class="p"·data-group-id="7854335104-2">[</span><span·class="p"·data-group-id="7854335104-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="7854335104-3">}</span><span·class="p">,</span><span·class="w">
182 ··</span><span·class="p"·data-group-id="3702185808-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="3702185808-4">}</span><span·class="p">,</span><span·class="w">182 ··</span><span·class="p"·data-group-id="7854335104-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="7854335104-4">}</span><span·class="p">,</span><span·class="w">
183 ··</span><span·class="p"·data-group-id="3702185808-5">{</span><span·class="ss">modules</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3702185808-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:·70214d984d67797c73a5ccc300193e34af2cae3d19836f1a49b49da98d156449·...·]-5">}</span><span·class="p">,</span><span·class="w">183 ··</span><span·class="p"·data-group-id="7854335104-5">{</span><span·class="ss">modules</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7854335104-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:·d3bf3a10736f69211cf83eed1d89ac7d5c6e52ab88217243e171432a1822b018·...·]-5">}</span><span·class="p">,</span><span·class="w">
184 ··</span><span·class="p"·data-group-id="3702185808-7">{</span><span·class="ss">registered</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3702185808-8">[</span><span·class="ss">ch3</span><span·class="p"·data-group-id="3702185808-8">]</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·9d51ce2ec1cac5f435953bd61d9c1bc09302174119c044cb721c4344c3b676cd·...·]-7">}</span><span·class="p">,</span><span·class="w">184 ··</span><span·class="p"·data-group-id="7854335104-7">{</span><span·class="ss">registered</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7854335104-8">[</span><span·class="ss">ch3</span><span·class="p"·data-group-id="7854335104-8">]</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·1a1caf6c01845d10d835bbf92469d4c42d09d1ec60ffdd4f3646b32b321d3b41·...·]-7">}</span><span·class="p">,</span><span·class="w">
185 ··</span><span·class="p"·data-group-id="3702185808-9">{</span><span·class="ss">applications</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3702185808-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:·35c7ca1efa68b20234816202a3332dee388e70702106b9aff212dbb092ac8ee5·...·]-9">}</span><span·class="p">,</span><span·class="w">185 ··</span><span·class="p"·data-group-id="7854335104-9">{</span><span·class="ss">applications</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7854335104-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:·93f9982b38fabde450b5647857bf0e148c37a4e1458518d6797d21ed1d26590e·...·]-9">}</span><span·class="p">,</span><span·class="w">
186 ··</span><span·class="p"·data-group-id="3702185808-11">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3702185808-12">{</span><span·class="ss">ch_app</span><span·class="p">,</span><span·class="p"·data-group-id="3702185808-13">[</s[·...·truncated·by·diffoscope;·len:·153,·SHA:·f89f984249bb524e52515a5b2d18b88b504cbeba175a9c6cd3dce885dceb715d·...·]-11">}</span><span·class="w">186 ··</span><span·class="p"·data-group-id="7854335104-11">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7854335104-12">{</span><span·class="ss">ch_app</span><span·class="p">,</span><span·class="p"·data-group-id="7854335104-13">[</s[·...·truncated·by·diffoscope;·len:·153,·SHA:·d5dc235730ad10be11f1b66e3da2f11f5319eb0e1df08c90dffa7d297e08fdd8·...·]-11">}</span><span·class="w">
187 ·</span><span·class="p"·data-group-id="3702185808-2">]</span><span·class="p"·data-group-id="3702185808-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="7854335104-2">]</span><span·class="p"·data-group-id="7854335104-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="0503332997-1">(</span><span·class="ss">ch_app</span><span·class="p"·data-group-id="0503332997-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="8074908158-1">(</span><span·class="ss">ch_app</span><span·class="p"·data-group-id="8074908158-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="0503332997-2">(</span><span·class="p"·data-group-id="0503332997-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="8074908158-2">(</span><span·class="p"·data-group-id="8074908158-2">)</span><span·class="p">.</span><span·class="w">
310 </span><span·class="p"·data-group-id="0503332997-3">[</span><span·class="p"·data-group-id="0503332997-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:·439f983615997805de6eb0aae914ab12e210c04d6900c6bc02b679ee4ee98920·...·]-4">}</span><span·class="p">,</span><span·class="w">310 </span><span·class="p"·data-group-id="8074908158-3">[</span><span·class="p"·data-group-id="8074908158-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:·92aa0548b40066d84f1b255f11c8595e36ebeeee7829491faee205a31575cdb3·...·]-4">}</span><span·class="p">,</span><span·class="w">
311 ·</span><span·class="p"·data-group-id="0503332997-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="0503332997-5">}</span><span·class="p">,</span><span·class="w">311 ·</span><span·class="p"·data-group-id="8074908158-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="8074908158-5">}</span><span·class="p">,</span><span·class="w">
312 ·</span><span·class="p"·data-group-id="0503332997-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="0503332997-6">}</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·e4c2b12c129fb591fa875195f9f9d38f3148a35cd440de9d875e4f67293f0e79·...·]-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="8074908158-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="8074908158-6">}</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·d0613500decb050fdecc460e0d6642a280bd54be3b65ec4d1c6bfbfe5e2d3da6·...·]-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="3429306039-1">(</span><span·class="ss">ch_app</span><span·class="p"·data-group-id="3429306039-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="4470241860-1">(</span><span·class="ss">ch_app</span><span·class="p"·data-group-id="4470241860-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="3429306039-2">(</span><span·class="p"·data-group-id="3429306039-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="4470241860-2">(</span><span·class="p"·data-group-id="4470241860-2">)</span><span·class="p">.</span><span·class="w">
317 </span><span·class="p"·data-group-id="3429306039-3">[</span><span·class="p"·data-group-id="3429306039-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:·2c1dd7243e796beaebb9f6391edf30f0eb3726a83196005d9c0df7b560bff53b·...·]-4">}</span><span·class="p">,</span><span·class="w">317 </span><span·class="p"·data-group-id="4470241860-3">[</span><span·class="p"·data-group-id="4470241860-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:·b67da19736c99110883ffa67ff7ddc02c41fe4982bc4bf44e10f12f40cd71dda·...·]-4">}</span><span·class="p">,</span><span·class="w">
318 ·</span><span·class="p"·data-group-id="3429306039-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="3429306039-5">}</span><span·cla[·...·truncated·by·diffoscope;·len:·32,·SHA:·38b51bcb7c1ed177722baf861886f0be3ee51865d1796c07c1fc3d07d1271693·...·]-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="4470241860-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="4470241860-5">}</span><span·cla[·...·truncated·by·diffoscope;·len:·32,·SHA:·5504548c99696996512f6ecc004c84adf40ec0ce76f12ba6b4fca3ed3871549b·...·]-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="3748104333-1">(</span><span·class="ss">ch_app</span><span·class="p"·data-group-id="3748104333-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="7504240619-1">(</span><span·class="ss">ch_app</span><span·class="p"·data-group-id="7504240619-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="3748104333-2">(</span><span·class="p"·data-group-id="3748104333-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="7504240619-2">(</span><span·class="p"·data-group-id="7504240619-2">)</span><span·class="p">.</span><span·class="w">
328 </span><span·class="p"·data-group-id="3748104333-3">[</span><span·class="p"·data-group-id="3748104333-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:·6dbce82f4d3dc60f8059a8cc27df22cf61f1607852d5a9f1a11a9d38061d467e·...·]-4">}</span><span·class="p">,</span><span·class="w">328 </span><span·class="p"·data-group-id="7504240619-3">[</span><span·class="p"·data-group-id="7504240619-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:·33095e68cedd8b17144c9bae70b6040565fe56d30dd5b82181648a0c48fd4ce8·...·]-4">}</span><span·class="p">,</span><span·class="w">
329 ·</span><span·class="p"·data-group-id="3748104333-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="3748104333-5">}</span><span·class="p">,</span><span·class="w">329 ·</span><span·class="p"·data-group-id="7504240619-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="7504240619-5">}</span><span·class="p">,</span><span·class="w">
330 ·</span><span·class="p"·data-group-id="3748104333-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="3748104333-6">}</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·c2ee930be4f1023f33478f1469480340a8a1ab7c599c89d62c94dd0d367e7a47·...·]-3">]</span></code></pre><p>If·the·application·is·not·already·loaded,·the·application·controller·first·loads330 ·</span><span·class="p"·data-group-id="7504240619-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="7504240619-6">}</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·f600b7ec24b48d6ec2a332ee785b4b600343ab6ca28ed9d76e2a4182707da12e·...·]-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.6/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.6/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.6/doc/html/erlang.html#group_leader/0">group334 the·application.</p><p>The·application·master·establishes·itself·as·the·<a·href="../../erts-15.2.6/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="4451827762-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="7757470986-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="4451827762-2">[</span><span·class="p"·data-group-id="4451827762-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="4451827762-3">}</span><span·class="p">,</span><span·class="w">355 ·</span><span·class="p"·data-group-id="7757470986-2">[</span><span·class="p"·data-group-id="7757470986-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="7757470986-3">}</span><span·class="p">,</span><span·class="w">
356 ··</span><span·class="p"·data-group-id="4451827762-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="4451827762-4">}</span><span·class="p">,</span><span·class="w">356 ··</span><span·class="p"·data-group-id="7757470986-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="7757470986-4">}</span><span·class="p">,</span><span·class="w">
357 ··</span><span·class="p"·data-group-id="4451827762-5">{</span><span·class="ss">modules</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4451827762-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:·c418fe9226ad895327577756a74cdfadaa117d5e594573d049f58bc60da7509a·...·]-5">}</span><span·class="p">,</span><span·class="w">357 ··</span><span·class="p"·data-group-id="7757470986-5">{</span><span·class="ss">modules</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7757470986-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:·b0abb7e7de0187aa33ef9c875376491c3d8d7f45f8e7b3443a03b6fec9bdb004·...·]-5">}</span><span·class="p">,</span><span·class="w">
358 ··</span><span·class="p"·data-group-id="4451827762-7">{</span><span·class="ss">registered</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4451827762-8">[</span><span·class="ss">ch3</span><span·class="p"·data-group-id="4451827762-8">]</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·90ee3f5e9b51e8699f2592d060a454e25ec474f3d9447538c1e9628eb5b0737b·...·]-7">}</span><span·class="p">,</span><span·class="w">358 ··</span><span·class="p"·data-group-id="7757470986-7">{</span><span·class="ss">registered</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7757470986-8">[</span><span·class="ss">ch3</span><span·class="p"·data-group-id="7757470986-8">]</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·f65be6180ede1a670144a739ca857a6332fb6bb6e68395deb8632fdf3c93c269·...·]-7">}</span><span·class="p">,</span><span·class="w">
359 ··</span><span·class="p"·data-group-id="4451827762-9">{</span><span·class="ss">applications</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4451827762-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:·6a6f1e5f0b5cc2da7f6f4e8f8b24765cdb0daa13162eadb71d22582ff6419c60·...·]-9">}</span><span·class="p">,</span><span·class="w">359 ··</span><span·class="p"·data-group-id="7757470986-9">{</span><span·class="ss">applications</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7757470986-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:·5bd299e1375aa148ad376dd3700ef342d5825617b61dfa510a11e0527cf71d61·...·]-9">}</span><span·class="p">,</span><span·class="w">
360 ··</span><span·class="p"·data-group-id="4451827762-11">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4451827762-12">{</span><span·class="ss">ch_app</span><span·class="p">,</span><span·class="p"·data-group-id="4451827762-13">[</s[·...·truncated·by·diffoscope;·len:·153,·SHA:·3ef9b7f46730531bf8b9bf132b1fff47bb5db52d0c50ee259b0699856e3e4816·...·]-11">}</span><span·class="p">,</span><span·class="w">360 ··</span><span·class="p"·data-group-id="7757470986-11">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7757470986-12">{</span><span·class="ss">ch_app</span><span·class="p">,</span><span·class="p"·data-group-id="7757470986-13">[</s[·...·truncated·by·diffoscope;·len:·153,·SHA:·eea5493939c5230939ba90506de0c5ab659dead9aaa3a0028c533545b73c78cc·...·]-11">}</span><span·class="p">,</span><span·class="w">
361 ··</span><span·class="p"·data-group-id="4451827762-14">{</span><span·class="ss">env</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4451827762-15">[</span><span·class="p"·data-group-id="4451827762-16">{</span><span·class="ss">file</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·224,·SHA:·5cdd43c8691eb3bde6aa9e075a8a652bf59c4d4be9302d1bdb2acc42a4c1fdf2·...·]-14">}</span><span·class="w">361 ··</span><span·class="p"·data-group-id="7757470986-14">{</span><span·class="ss">env</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7757470986-15">[</span><span·class="p"·data-group-id="7757470986-16">{</span><span·class="ss">file</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·224,·SHA:·f4133cfa0d8ec766eb27160994e809b2d306beceff3fde918a2e73e8971471fc·...·]-14">}</span><span·class="w">
362 ·</span><span·class="p"·data-group-id="4451827762-2">]</span><span·class="p"·data-group-id="4451827762-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="7757470986-2">]</span><span·class="p"·data-group-id="7757470986-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.6/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.6/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="7225398545-1">(</span><span·class="n">BEAM</span><span·class="p"·data-group-id="7225398545-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:·bb10a27d59a64ee2e027792a1c75095d73b8fbc88061260fca0502df4e93204e·...·]-3">]</span><span·class="w">366 </span><span·class="n">Erlang</span><span·class="w">·</span><span·class="p"·data-group-id="1278344376-1">(</span><span·class="n">BEAM</span><span·class="p"·data-group-id="1278344376-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:·0677aa453984536776f0c0ea1eeba2bbb2e7c09edd75023c79ffda7991738157·...·]-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="7225398545-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="7225398545-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="1278344376-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="1278344376-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="7225398545-5">(</span><span·class="ss">ch_app</span><span·class="p"·data-group-id="7225398545-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="1278344376-5">(</span><span·class="ss">ch_app</span><span·class="p"·data-group-id="1278344376-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="7225398545-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="7225398545-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="1278344376-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="1278344376-6">)</span><span·class="p">.</span><span·class="w">
371 </span><span·class="p"·data-group-id="7225398545-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="7225398545-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="1278344376-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="1278344376-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="0067412047-1">[</span><span·class="p"·data-group-id="0067412047-2">{</span><span·class="n">Application1</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0067412047-3">[</span><span·class="p"·data-group-id="0067412047-4">[·...·truncated·by·diffoscope;·len:·330,·SHA:·8480fdaa769a7ebe5e17b100e698db4c251e1c047c4f8d8614c6143ba89dc6ac·...·]7-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="3038076527-1">[</span><span·class="p"·data-group-id="3038076527-2">{</span><span·class="n">Application1</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3038076527-3">[</span><span·class="p"·data-group-id="3038076527-4">[·...·truncated·by·diffoscope;·len:·330,·SHA:·420f4267a3ae21375fef09b4a5af0d0d4e4f15b21eeaaa8b9e751bb13a5cac1b·...·]7-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">
375 ·</span><span·class="p"·data-group-id="0067412047-5">{</span><span·class="n">ApplicationN</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0067412047-6">[</span><span·class="p"·data-group-id="0067412047-7">{</span><span·class="n">ParN1</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·330,·SHA:·6a13e033179c4470df2fbedf55f61425ad1d149eded534b0860b857aa0014e95·...·]7-1">]</span><span·class="p">.</span></code></pre><p>The·system·configuration·is·to·be·called·<code·class="inline">Name.config</code>·and·Erlang·is·to·be375 ·</span><span·class="p"·data-group-id="3038076527-5">{</span><span·class="n">ApplicationN</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3038076527-6">[</span><span·class="p"·data-group-id="3038076527-7">{</span><span·class="n">ParN1</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·330,·SHA:·98e505d960fbccb2f0094aa6b797f2c162b3b755ce78e389ba657f1c6773efcb·...·]7-1">]</span><span·class="p">.</span></code></pre><p>The·system·configuration·is·to·be·called·<code·class="inline">Name.config</code>·and·Erlang·is·to·be
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="6456346697-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="3627647405-1">{</span><span·class="s">&quot;2&quot;</span><span·class="p">,</span><span·class="w">
128 ·</span><span·class="p"·data-group-id="6456346697-2">[</span><span·class="p"·data-group-id="6456346697-3">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6456346697-4">[</span><span·class="p"·data-group-id="6456346697-5"[·...·truncated·by·diffoscope;·len:·317,·SHA:·b679d927bb051767587500ad1dcb3eb2965d5bcac72884382a296c6604cab5f0·...·]-2">]</span><span·class="p">,</span><span·class="w">128 ·</span><span·class="p"·data-group-id="3627647405-2">[</span><span·class="p"·data-group-id="3627647405-3">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3627647405-4">[</span><span·class="p"·data-group-id="3627647405-5"[·...·truncated·by·diffoscope;·len:·317,·SHA:·46b04333a26228b14c402427d242b8e9c669dc1bad4a354ea878b415fad15a67·...·]-2">]</span><span·class="p">,</span><span·class="w">
129 ·</span><span·class="p"·data-group-id="6456346697-6">[</span><span·class="p"·data-group-id="6456346697-7">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6456346697-8">[</span><span·class="p"·data-group-id="6456346697-9"[·...·truncated·by·diffoscope;·len:·317,·SHA:·c2809dd9a471003f2049598a98ce41fa28b5fc95f3be0373f9b3f4de2f615b52·...·]-6">]</span><span·class="w">129 ·</span><span·class="p"·data-group-id="3627647405-6">[</span><span·class="p"·data-group-id="3627647405-7">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3627647405-8">[</span><span·class="p"·data-group-id="3627647405-9"[·...·truncated·by·diffoscope;·len:·317,·SHA:·e3051fe52034ad183f63b9cb391ff324dac347988f9e467a57616932dbeff918·...·]-6">]</span><span·class="w">
130 </span><span·class="p"·data-group-id="6456346697-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="3627647405-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="6986013868-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="8574635336-1">{</span><span·class="s">&quot;2&quot;</span><span·class="p">,</span><span·class="w">
150 ·</span><span·class="p"·data-group-id="6986013868-2">[</span><span·class="p"·data-group-id="6986013868-3">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6986013868-4">[</span><span·class="p"·data-group-id="6986013868-5"[·...·truncated·by·diffoscope;·len:·319,·SHA:·b9f7035ab6d2916184d832aa0752c39b6e8e70bcee2d7e418f3910e217ecb7c3·...·]-2">]</span><span·class="p">,</span><span·class="w">150 ·</span><span·class="p"·data-group-id="8574635336-2">[</span><span·class="p"·data-group-id="8574635336-3">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8574635336-4">[</span><span·class="p"·data-group-id="8574635336-5"[·...·truncated·by·diffoscope;·len:·319,·SHA:·30605489059f5754f6140b819df38a247162014e0c043e1989263c701ffa3ba0·...·]-2">]</span><span·class="p">,</span><span·class="w">
151 ·</span><span·class="p"·data-group-id="6986013868-6">[</span><span·class="p"·data-group-id="6986013868-7">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6986013868-8">[</span><span·class="p"·data-group-id="6986013868-9"[·...·truncated·by·diffoscope;·len:·319,·SHA:·8985e110b8b19fdfab2744db22581ede08c00774b03b7d37ec0213bbc17dcae4·...·]-6">]</span><span·class="w">151 ·</span><span·class="p"·data-group-id="8574635336-6">[</span><span·class="p"·data-group-id="8574635336-7">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8574635336-8">[</span><span·class="p"·data-group-id="8574635336-9"[·...·truncated·by·diffoscope;·len:·319,·SHA:·ae4ffb237af472cfcecb804cb1f3274977cf4534111452e834960c8dd4360950·...·]-6">]</span><span·class="w">
152 </span><span·class="p"·data-group-id="6986013868-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="8574635336-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="6002258032-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="6829025590-1">{</span><span·class="s">&quot;2&quot;</span><span·class="p">,</span><span·class="w">
167 ·</span><span·class="p"·data-group-id="6002258032-2">[</span><span·class="p"·data-group-id="6002258032-3">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6002258032-4">[</span><span·class="p"·data-group-id="6002258032-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="6002258032-6">{</span><span·class="ss">advanced</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6002258032-7">[</span><span·class="p"·data-group-id="6002258032-7">]</span><span·class="p"·data-group-id="6002258032-6">}</span><span·class="p"·data-group-id="6002258032-5">}</span><span·class="p"·data-group-id="6002258032-4">]</span><span·class="p"·data-group-id="6002258032-3">}</span><span·class="p"·data-group-id="6002258032-2">]</span><span·class="p">,</span><span·class="w"> 
168 ·</span><span·class="p"·data-group-id="6002258032-8">[</span><span·class="p"·data-group-id="6002258032-9">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6002258032-10">[</span><span·class="p"·data-group-id="6002258032-11[·...·truncated·by·diffoscope;·len:·666,·SHA:·e819ea35571c587959df232271b2e13953dbb58c0b417456ba5d43d5a663ccf3·...·]</span><span·class="w">167 ·</span><span·class="p"·data-group-id="6829025590-2">[</span><span·class="p"·data-group-id="6829025590-3">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6829025590-4">[</span><span·class="p"·data-group-id="6829025590-5">[·...·truncated·by·diffoscope;·len:·682,·SHA:·c3bff03fa15e590e4e8864b52c186b68e9ea2ccfa699883721678f005f2c9d21·...·]</span><span·class="w">
 168 ·</span><span·class="p"·data-group-id="6829025590-8">[</span><span·class="p"·data-group-id="6829025590-9">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6829025590-10">[</span><span·class="p"·data-group-id="6829025590-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="6829025590-12">{</span><span·class="ss">advanced</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6829025590-13">[</span><span·class="p"·data-group-id="6829025590-13">]</span><span·class="p"·data-group-id="6829025590-12">}</span><span·class="p"·data-group-id="6829025590-11">}</span><span·class="p"·data-group-id="6829025590-10">]</span><span·class="p"·data-group-id="6829025590-9">}</span><span·class="p"·data-group-id="6829025590-8">]</span><span·class="w">
169 </span><span·class="p"·data-group-id="6002258032-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="6829025590-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.2/doc/html/gen_server.html"><code·class="inline">gen_server</code></a>·in·STDLIB).172 callback·function·<code·class="inline">code_change/3</code>·(see·<a·href="../../lib/stdlib-6.2.2/doc/html/gen_server.html"><code·class="inline">gen_server</code></a>·in·STDLIB).
173 The·term·<code·class="inline">Extra</code>,·in·this·case·<code·class="inline">[]</code>,·is·passed·as·is·to·the·function:</p><p><a·href=""·id="code_change"></a></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="4736341061-1">(</span><span·class="ss">ch3</span><span·class="p"·data-group-id="4736341061-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="2163652068-1">(</span><span·class="ss">ch3</span><span·class="p"·data-group-id="2163652068-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="4736341061-2">(</span><span·class="p"·data-group-id="4736341061-3">[</span><span·class="ss">code_change</span><span·class="p">/</span><span·class="mi">3</span><span·class="p"·data-group-id="4736341061-3">]</span><span·class="p"·data-group-id="4736341061-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="2163652068-2">(</span><span·class="p"·data-group-id="2163652068-3">[</span><span·class="ss">code_change</span><span·class="p">/</span><span·class="mi">3</span><span·class="p"·data-group-id="2163652068-3">]</span><span·class="p"·data-group-id="2163652068-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="4736341061-4">(</span><span·class="p"·data-group-id="4736341061-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="4736341061-5">}</span><s[·...·truncated·by·diffoscope;·len:·391,·SHA:·6c732043b00c83ea9e90c8d93e45300e9e6bcdcc77f6b5fabdbdf7c0a99b8018·...·]-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="2163652068-4">(</span><span·class="p"·data-group-id="2163652068-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="2163652068-5">}</span><s[·...·truncated·by·diffoscope;·len:·391,·SHA:·50d698f5fb44be47e9054eb3543057a3d52bbceea0d401a5e57637d2ab26ff1b·...·]-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
178 ····</span><span·class="p"·data-group-id="4736341061-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="4736341061-7">}</span><span·class="p">;</span><span·class="w">178 ····</span><span·class="p"·data-group-id="2163652068-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="2163652068-7">}</span><span·class="p">;</span><span·class="w">
179 </span><span·class="nf">code_change</span><span·class="p"·data-group-id="4736341061-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:·ee3f2a96ba73df377d739fcf85864e9ad773e72410c22b7b79caf7d2d03afbe1·...·]-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="2163652068-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:·5821e3c3f2439f4ad223bc7095991b7b8745102e253e5f57d5bf85e19eae08e8·...·]-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
180 ····</span><span·class="p"·data-group-id="4736341061-9">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4736341061-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:·6719e89e6a35b567552120d0918435f6238014f57ca8d5d0f14e64bca67bef8e·...·]-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="2163652068-9">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2163652068-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:·e1efbfafbcde0d1c7a50e4836f972fe6f36e53606dc7beef3e539c6eb4bad31a·...·]-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="4872899361-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="4872899361-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="3960894945-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="3960894945-1">}</span><span·class="w">
198 </span><span·class="p"·data-group-id="4872899361-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="4872899361-3">{</span><span·class="ss">advanced<[·...·truncated·by·diffoscope;·len:·254,·SHA:·f2c35923172f977515328e23ca71cdd95f2324bb2f77646b1e2d70fd6965dbfc·...·]-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="3960894945-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="3960894945-3">{</span><span·class="ss">advanced<[·...·truncated·by·diffoscope;·len:·254,·SHA:·0ef5d5b981f8685bf78ea5fa7ee5e28a5ddda772987fea12d91db9ee98dedb21·...·]-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="7777782250-1">{</span><span·class="s">&quot;2&quot;</span><span·class="p">,</span><span·class="w">200 </span><span·class="p"·data-group-id="5018581667-1">{</span><span·class="s">&quot;2&quot;</span><span·class="p">,</span><span·class="w">
201 ·</span><span·class="p"·data-group-id="7777782250-2">[</span><span·class="p"·data-group-id="7777782250-3">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7777782250-4">[</span><span·class="p"·data-group-id="7777782250-5"[·...·truncated·by·diffoscope;·len:·499,·SHA:·432a97127814f1668d949f4f087682cc6b1a8667b8f270b58813d13ecdc0bab8·...·]-2">]</span><span·class="p">,</span><span·class="w">201 ·</span><span·class="p"·data-group-id="5018581667-2">[</span><span·class="p"·data-group-id="5018581667-3">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5018581667-4">[</span><span·class="p"·data-group-id="5018581667-5"[·...·truncated·by·diffoscope;·len:·499,·SHA:·3e13f43e3cd11612790508367f74ac7869c902c30dea91509c022a419a0eafe7·...·]-2">]</span><span·class="p">,</span><span·class="w">
202 ·</span><span·class="p"·data-group-id="7777782250-7">[</span><span·class="p"·data-group-id="7777782250-8">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7777782250-9">[</span><span·class="p"·data-group-id="7777782250-10[·...·truncated·by·diffoscope;·len:·503,·SHA:·182ac273be0a24ed2ab09333e241236356118d8cc2d7f020ec72f29e70a18d75·...·]-7">]</span><span·class="w">202 ·</span><span·class="p"·data-group-id="5018581667-7">[</span><span·class="p"·data-group-id="5018581667-8">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5018581667-9">[</span><span·class="p"·data-group-id="5018581667-10[·...·truncated·by·diffoscope;·len:·503,·SHA:·500224b4ed24508a57b7b02ea0f6fbd8ca64f9b703756bc43d036d94ef8d1b80·...·]-7">]</span><span·class="w">
203 </span><span·class="p"·data-group-id="7777782250-1">}</span><span·class="p">.</span><span·class="w">203 </span><span·class="p"·data-group-id="5018581667-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="7777782250-12">{</span><span·class="s">&quot;2&quot;</span><span·class="p">,</span><span·class="w">205 </span><span·class="p"·data-group-id="5018581667-12">{</span><span·class="s">&quot;2&quot;</span><span·class="p">,</span><span·class="w">
206 ·</span><span·class="p"·data-group-id="7777782250-13">[</span><span·class="p"·data-group-id="7777782250-14">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7777782250-15">[</span><span·class="p"·data-group-id="7777782250[·...·truncated·by·diffoscope;·len:·326,·SHA:·c60864757b79be9f18f80292891fc7277143cb6f40781b4d0a0388d2b2e0cf8c·...·]-13">]</span><span·class="p">,</span><span·class="w">206 ·</span><span·class="p"·data-group-id="5018581667-13">[</span><span·class="p"·data-group-id="5018581667-14">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5018581667-15">[</span><span·class="p"·data-group-id="5018581667[·...·truncated·by·diffoscope;·len:·326,·SHA:·b6ecb4fd8800654660d68173737ba69410cf6122d7f88b3e0b2d282135118f0d·...·]-13">]</span><span·class="p">,</span><span·class="w">
207 ·</span><span·class="p"·data-group-id="7777782250-17">[</span><span·class="p"·data-group-id="7777782250-18">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7777782250-19">[</span><span·class="p"·data-group-id="7777782250[·...·truncated·by·diffoscope;·len:·326,·SHA:·7017d987a9dd29e23415bcaf10d97df51e953f7808fe9b3b3b3f032d9fe0cc5b·...·]-17">]</span><span·class="w">207 ·</span><span·class="p"·data-group-id="5018581667-17">[</span><span·class="p"·data-group-id="5018581667-18">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5018581667-19">[</span><span·class="p"·data-group-id="5018581667[·...·truncated·by·diffoscope;·len:·326,·SHA:·bf5065112efa5c4e6441eddf01865ce746ecffbffa2d840852131fd0f9b4ffb2·...·]-17">]</span><span·class="w">
208 </span><span·class="p"·data-group-id="7777782250-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="5018581667-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="2553077066-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="8829990859-1">{</span><span·class="s">&quot;2&quot;</span><span·class="p">,</span><span·class="w">
210 ·</span><span·class="p"·data-group-id="2553077066-2">[</span><span·class="p"·data-group-id="2553077066-3">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">210 ·</span><span·class="p"·data-group-id="8829990859-2">[</span><span·class="p"·data-group-id="8829990859-3">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">
211 ···</span><span·class="p"·data-group-id="2553077066-4">[</span><span·class="p"·data-group-id="2553077066-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="2553077066-5">}</span><span·class="p">,</span><span·class="w">211 ···</span><span·class="p"·data-group-id="8829990859-4">[</span><span·class="p"·data-group-id="8829990859-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="8829990859-5">}</span><span·class="p">,</span><span·class="w">
212 ····</span><span·class="p"·data-group-id="2553077066-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="2553077066-7">[</span><span·class="ss">ch3</sp[·...·truncated·by·diffoscope;·len:·256,·SHA:·19a9d76ce01b83393b710a788fe2c29a84cc6d7594311ff8f6f995b14e603c6a·...·]-2">]</span><span·class="p">,</span><span·class="w">212 ····</span><span·class="p"·data-group-id="8829990859-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="8829990859-7">[</span><span·class="ss">ch3</sp[·...·truncated·by·diffoscope;·len:·256,·SHA:·04662a8438ff7ee7852966e45d97e395e1109badac1caf8c30ce19a579d13b0e·...·]-2">]</span><span·class="p">,</span><span·class="w">
213 ·</span><span·class="p"·data-group-id="2553077066-8">[</span><span·class="p"·data-group-id="2553077066-9">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">213 ·</span><span·class="p"·data-group-id="8829990859-8">[</span><span·class="p"·data-group-id="8829990859-9">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">
214 ···</span><span·class="p"·data-group-id="2553077066-10">[</span><span·class="p"·data-group-id="2553077066-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="2553077066-11">}</span><span·class="p">,</span><span·class="w">214 ···</span><span·class="p"·data-group-id="8829990859-10">[</span><span·class="p"·data-group-id="8829990859-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="8829990859-11">}</span><span·class="p">,</span><span·class="w">
215 ····</span><span·class="p"·data-group-id="2553077066-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="2553077066-13">[</span><span·class="ss">ch3</[·...·truncated·by·diffoscope;·len:·261,·SHA:·c3b040e008ce4e1e775e812ea56e4d9c9f8b475b2ee7acd75c4be8581c904759·...·]-8">]</span><span·class="w">215 ····</span><span·class="p"·data-group-id="8829990859-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="8829990859-13">[</span><span·class="ss">ch3</[·...·truncated·by·diffoscope;·len:·261,·SHA:·68a13765428bd169c21402f4200d27ac3218d642b6833839149f0dd8c50138bc·...·]-8">]</span><span·class="w">
216 </span><span·class="p"·data-group-id="2553077066-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="8829990859-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="5766532730-1">{</span><span·class="ss">ch4</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5766532730-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:·c3197edd1b18efaceb1b08341faf46204101a5f97b58a8380e1561e769cce96e·...·]-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="9538101697-1">{</span><span·class="ss">ch4</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9538101697-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:·279f2c4409d581ee1fe0d85f2c669f2f105931270107dcbb5913664eaa0ca6fa·...·]-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="5766532730-4">[</span><span·class="ss">ch4</span><span·class="p"·data-group-id="5766532730-4">]</span><span·class="p"·data-group-id="5766532730-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="9538101697-4">[</span><span·class="ss">ch4</span><span·class="p"·data-group-id="9538101697-4">]</span><span·class="p"·data-group-id="9538101697-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="9691492596-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="0278958267-1">{</span><span·class="s">&quot;2&quot;</span><span·class="p">,</span><span·class="w">
235 ·</span><span·class="p"·data-group-id="9691492596-2">[</span><span·class="p"·data-group-id="9691492596-3">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9691492596-4">[</span><span·class="p"·data-group-id="9691492596-5"[·...·truncated·by·diffoscope;·len:·654,·SHA:·7f85e9f2c7470411cd85e4014626104a17e623c2b55544c5b3d5f78c87566e3a·...·]-2">]</span><span·class="p">,</span><span·class="w">235 ·</span><span·class="p"·data-group-id="0278958267-2">[</span><span·class="p"·data-group-id="0278958267-3">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0278958267-4">[</span><span·class="p"·data-group-id="0278958267-5"[·...·truncated·by·diffoscope;·len:·654,·SHA:·aaf09f6bf9937cc824b92b35323b6036c11feacea5aeab9317fb782211727c31·...·]-2">]</span><span·class="p">,</span><span·class="w">
236 ·</span><span·class="p"·data-group-id="9691492596-8">[</span><span·class="p"·data-group-id="9691492596-9">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9691492596-10">[</span><span·class="p"·data-group-id="9691492596-1[·...·truncated·by·diffoscope;·len:·662,·SHA:·513337ff7c1167693b1443e34fab73d6f17813da7afa14f78d354685eecdae5e·...·]-8">]</span><span·class="w">236 ·</span><span·class="p"·data-group-id="0278958267-8">[</span><span·class="p"·data-group-id="0278958267-9">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0278958267-10">[</span><span·class="p"·data-group-id="0278958267-1[·...·truncated·by·diffoscope;·len:·662,·SHA:·6f19981a395a255d796beb6355c693b30f1ca5d8f453500186fba257b6378436·...·]-8">]</span><span·class="w">
237 </span><span·class="p"·data-group-id="9691492596-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="0278958267-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="8359183515-1">(</span><span·class="ss">ch4</span><span·class="p"·data-group-id="8359183515-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="7017555726-1">(</span><span·class="ss">ch4</span><span·class="p"·data-group-id="7017555726-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="8359183515-2">(</span><span·class="p"·data-group-id="8359183515-3">[</span><span·class="ss">system_code_change</span><span·class="p">/</span><span·class="mi">4</span><span·class="p"·data-group-id="8359183515-3">]</span><span·class="p"·data-group-id="835918[·...·truncated·by·diffoscope;·len:·4,·SHA:·ed893e02d0d3b0c3e4af6e9323fc027f26601042869dfe909f84692d98a8cd39·...·]-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="7017555726-2">(</span><span·class="p"·data-group-id="7017555726-3">[</span><span·class="ss">system_code_change</span><span·class="p">/</span><span·class="mi">4</span><span·class="p"·data-group-id="7017555726-3">]</span><span·class="p"·data-group-id="701755[·...·truncated·by·diffoscope;·len:·4,·SHA:·25ebe3918b0bfaf16e3e8c356a2cf5f8d6c113cf2c3721cbcf47a401bd5412d9·...·]-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="8359183515-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:·fd706e412765fe497d9e4dd57f4cb0cdc28502385a5ca0f4fb978aa8fb84d4df·...·]-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="7017555726-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:·8ee56ce4a3e2e1e662a12b4a50aec01b9ed2bd09f18c06fc40a66b4bbe2de717·...·]-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
245 ····</span><span·class="p"·data-group-id="8359183515-5">{</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="8359183515-5">}</span><span·class="p">.</span></code></pre><ul><li>The·first·argument·is·the·internal·state·<code·class="inline">State</code>,·passed·from245 ····</span><span·class="p"·data-group-id="7017555726-5">{</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="7017555726-5">}</span><span·class="p">.</span></code></pre><ul><li>The·first·argument·is·the·internal·state·<code·class="inline">State</code>,·passed·from
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.2/doc/html/rand.html#bytes/1"><code·class="inline">rand:bytes/1</code></a>·is·still·faster·when·we·generate·100·bytes·at·the·time,148 crypto:strong_rand_bytes(100).··········1····1915·Ki·····522·ns···90%</code></pre><p><a·href="../../lib/stdlib-6.2.2/doc/html/rand.html#bytes/1"><code·class="inline">rand:bytes/1</code></a>·is·still·faster·when·we·generate·100·bytes·at·the·time,
149 but·the·relative·difference·is·smaller.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%·erlperf·&#39;rand:bytes(1000).&#39;·&#39;crypto:strong_rand_bytes(1000).&#39;</span><span·class="w">149 but·the·relative·difference·is·smaller.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%·erlperf·&#39;rand:bytes(1000).&#39;·&#39;crypto:strong_rand_bytes(1000).&#39;</span><span·class="w">
150 </span><span·class="n">Code</span><span·class="w">····································</span><span·class="p">||</span><span·class="w">········</span><span·class="n">QPS</span><span·class="w">·······</span><span·class="n">Time</span><span·class="w">···</span><span·class="n">Rel</span><span·class="w">150 </span><span·class="n">Code</span><span·class="w">····································</span><span·class="p">||</span><span·class="w">········</span><span·class="n">QPS</span><span·class="w">·······</span><span·class="n">Time</span><span·class="w">···</span><span·class="n">Rel</span><span·class="w">
151 </span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">strong_rand_bytes</span><span·class="p"·data-group-id="9713272471-1">(</span><span·class="mi">1000</span><span·class="p"·data-group-id="9713272471-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="9936003341-1">(</span><span·class="mi">1000</span><span·class="p"·data-group-id="9936003341-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="9713272471-2">(</span><span·class="mi">1000</span><span·class="p"·data-group-id="9713272471-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="9936003341-2">(</span><span·class="mi">1000</span><span·class="p"·data-group-id="9936003341-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.2/doc/html/timer.html#tc/3"><code·class="inline">timer:tc/3</code></a>·measures·wall-clock·time.·The·advantage·with·wall-clock·time·is159 <p>Benchmarks·can·measure·wall-clock·time·or·CPU·time.</p><ul><li><p><a·href="../../lib/stdlib-6.2.2/doc/html/timer.html#tc/3"><code·class="inline">timer:tc/3</code></a>·measures·wall-clock·time.·The·advantage·with·wall-clock·time·is
79.4 KB
./usr/share/doc/erlang-doc/html/doc/system/binaryhandling.html
    
Offset 114, 43 lines modifiedOffset 114, 43 lines modified
  
114 ····<span>Constructing·and·Matching·Binaries</span>114 ····<span>Constructing·and·Matching·Binaries</span>
115 ··</h1>115 ··</h1>
  
116 <p>This·section·gives·a·few·examples·on·how·to·handle·binaries·in·an·efficient·way.116 <p>This·section·gives·a·few·examples·on·how·to·handle·binaries·in·an·efficient·way.
117 The·sections·that·follow·take·an·in-depth·look·at·how·binaries·are·implemented117 The·sections·that·follow·take·an·in-depth·look·at·how·binaries·are·implemented
118 and·how·to·best·take·advantages·of·the·optimizations·done·by·the·compiler·and118 and·how·to·best·take·advantages·of·the·optimizations·done·by·the·compiler·and
119 runtime·system.</p><p>Binaries·can·be·efficiently·<em>built</em>·in·the·following·way:</p><p><strong>DO</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">my_list_to_binary</span><span·class="p"·data-group-id="2676180369-1">(</span><span·class="n">List</span><span·class="p"·data-group-id="2676180369-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="8092285059-1">(</span><span·class="n">List</span><span·class="p"·data-group-id="8092285059-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="2676180369-2">(</span><span·class="n">List</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2676180369-3">&lt;&lt;</span><span·class="p"·data-group-id="2676180369-3">&gt;&gt;</span><span·class="p"·data-group-id="26761803[·...·truncated·by·diffoscope;·len:·1,·SHA:·e7f6c011776e8db7cd330b54174fd76f7d0216b612387a5ffcfb81e6f0919683·...·]9-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="8092285059-2">(</span><span·class="n">List</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8092285059-3">&lt;&lt;</span><span·class="p"·data-group-id="8092285059-3">&gt;&gt;</span><span·class="p"·data-group-id="80922850[·...·truncated·by·diffoscope;·len:·1,·SHA:·ef2d127de37b942baad06145e54b0c619a1f22327b2ebbcfbec78f5564afe39d·...·]9-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="2676180369-4">(</span><span·class="p"·data-group-id="2676180369-5">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="2676180369-5">]</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·58,·SHA:·1564fc70e0d3f6e6f4c1fb72b1f2d549ce1963b7d3ff4749e9d027e99a046f10·...·]9-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="8092285059-4">(</span><span·class="p"·data-group-id="8092285059-5">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="8092285059-5">]</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·58,·SHA:·42aa2c4c3e0ebc03653bc573021ef77bf3b97948492c6836cf9ad5e2f313b423·...·]9-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="2676180369-6">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2676180369-7">&lt;&lt;</span><span·class="n">Acc</span><span·class="o">/</span><span·class="ss">binary</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·126,·SHA:·9f1588689e8db1102077c31d1f9fdffc7d28c287244982d9d4309f42daf11fb6·...·]9-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="8092285059-6">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8092285059-7">&lt;&lt;</span><span·class="n">Acc</span><span·class="o">/</span><span·class="ss">binary</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·126,·SHA:·8b653aa3a9631f45443437ca457a214ad6712719e9b2c89ff6a1e2a2b1833805·...·]9-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="2676180369-8">(</span><span·class="p"·data-group-id="2676180369-9">[</span><span·class="p"·data-group-id="2676180369-9">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="p"·data-group-id="2676180369-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="8092285059-8">(</span><span·class="p"·data-group-id="8092285059-9">[</span><span·class="p"·data-group-id="8092285059-9">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="p"·data-group-id="8092285059-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="6399474005-1">(</span><span·class="n">List</span><span·class="p"·data-group-id="6399474005-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="0457723378-1">(</span><span·class="n">List</span><span·class="p"·data-group-id="0457723378-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="6399474005-2">(</span><span·class="n">List</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6399474005-3">&lt;&lt;</span><span·class="p"·data-group-id="6399474005-3">&gt;&gt;</span><span·class="p"·data-group-id="63994740[·...·truncated·by·diffoscope;·len:·2,·SHA:·c97550ce8213ef5cf6ed4ba48790c137df3ef6a5da20b48961001a634b6cead2·...·]-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="0457723378-2">(</span><span·class="n">List</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0457723378-3">&lt;&lt;</span><span·class="p"·data-group-id="0457723378-3">&gt;&gt;</span><span·class="p"·data-group-id="04577233[·...·truncated·by·diffoscope;·len:·2,·SHA:·349c41201b62db851192665c504b350ff98c6b45fb62a8a2161f78b6534d8de9·...·]-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="6399474005-4">(</span><span·class="p"·data-group-id="6399474005-5">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="6399474005-5">]</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·59,·SHA:·1c97f2d2d6a704a45bacc71450f89d5b24cae128ca039cd39ce4510634581be6·...·]-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="0457723378-4">(</span><span·class="p"·data-group-id="0457723378-5">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="0457723378-5">]</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·59,·SHA:·25eac2b01625d8b318af920398e272ac958b0968b939d24a89d8298cb0318a8b·...·]-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="6399474005-6">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6399474005-7">&lt;&lt;</span><span·class="n">H</span><span·class="p">,</span><span·class="n">Acc</span><span·class="o">/</span><spa[·...·truncated·by·diffoscope;·len:·127,·SHA:·64d53135f620e7976c22eb112d0f16720f0085a698427eab06a13ff387688c8b·...·]-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="0457723378-6">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0457723378-7">&lt;&lt;</span><span·class="n">H</span><span·class="p">,</span><span·class="n">Acc</span><span·class="o">/</span><spa[·...·truncated·by·diffoscope;·len:·127,·SHA:·4523c6ee8174a80a3f543d1813d8fb51f38071586423bd7e661a368e965f2568·...·]-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="6399474005-8">(</span><span·class="p"·data-group-id="6399474005-9">[</span><span·class="p"·data-group-id="6399474005-9">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="p"·data-group-id="6399474005-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="0457723378-8">(</span><span·class="p"·data-group-id="0457723378-9">[</span><span·class="p"·data-group-id="0457723378-9">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="p"·data-group-id="0457723378-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="7277586680-1">(</span><span·class="n">List</span><span·class="p"·data-group-id="7277586680-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="4510069919-1">(</span><span·class="n">List</span><span·class="p"·data-group-id="4510069919-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="7277586680-2">(</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">reverse</span><span·class="p"·data-group-id="7277586680-3">(</span><span·class="n">List</span><span·class="p"·data-group-id="7277586680-3">)</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·192,·SHA:·7c26f76f2e2456894bad704a75ea8fca07aae1f8271375d594425017078900fb·...·]-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="4510069919-2">(</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">reverse</span><span·class="p"·data-group-id="4510069919-3">(</span><span·class="n">List</span><span·class="p"·data-group-id="4510069919-3">)</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·192,·SHA:·e0f5fd48bdc9f1cf77f1de32616b8e299f330014d46120fabde7fe1f5d809179·...·]-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="7277586680-5">(</span><span·class="p"·data-group-id="7277586680-6">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="7277586680-6">]</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·59,·SHA:·46b146cdb438fc0c72a0c4be611449c3fe661088ee740ac13d57b95a99435995·...·]-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="4510069919-5">(</span><span·class="p"·data-group-id="4510069919-6">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="4510069919-6">]</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·59,·SHA:·024fafc961dd6202f63b2f862dd601c7ed755f6a46d65fbea25f65c54dc9d1b1·...·]-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="7277586680-7">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7277586680-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:·d2da0c880fee95b625b4711d6f7e9ab4ff2815657a345533c800bee0561f0526·...·]-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="4510069919-7">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4510069919-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:·f660fb45ae57199e4e735a13a3fbce9437740f8ef2e196263bc54928a401c600·...·]-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="7277586680-9">(</span><span·class="p"·data-group-id="7277586680-10">[</span><span·class="p"·data-group-id="7277586680-10">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="p"·data-group-id="7277586680-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="4510069919-9">(</span><span·class="p"·data-group-id="4510069919-10">[</span><span·class="p"·data-group-id="4510069919-10">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="p"·data-group-id="4510069919-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="0988078337-1">(</span><span·class="p"·data-group-id="0988078337-2">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="0988078337-2">]</span><span·class="p"·data-group-id="0988078337-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="1151376295-1">(</span><span·class="p"·data-group-id="1151376295-2">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="1151376295-2">]</span><span·class="p"·data-group-id="1151376295-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="0988078337-3">(</span><span·class="n">T</span><span·class="p"·data-group-id="0988078337-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="1151376295-3">(</span><span·class="n">T</span><span·class="p"·data-group-id="1151376295-3">)</span><span·class="p">,</span><span·class="w">
139 ····</span><span·class="p"·data-group-id="0988078337-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="0988078337-4">&gt;&gt;</span><span·class="p">;</span><span·class="w">139 ····</span><span·class="p"·data-group-id="1151376295-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="1151376295-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="0988078337-5">(</span><span·class="p"·data-group-id="0988078337-6">[</span><span·class="p"·data-group-id="0988078337-6">]</span><span·class="p"·data-group-id="0988078337-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="1151376295-5">(</span><span·class="p"·data-group-id="1151376295-6">[</span><span·class="p"·data-group-id="1151376295-6">]</span><span·class="p"·data-group-id="1151376295-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
141 ····</span><span·class="p"·data-group-id="0988078337-7">&lt;&lt;</span><span·class="p"·data-group-id="0988078337-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="1151376295-7">&lt;&lt;</span><span·class="p"·data-group-id="1151376295-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="8521568808-1">(</span><span·class="p"·data-group-id="8521568808-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="8521568808-2">&gt[·...·truncated·by·diffoscope;·len:·53,·SHA:·23c2910d0c05e2a7352b6ab61fcb9d15f2c9fd3d9d8feb470ca7363d14191798·...·]-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="6193051505-1">(</span><span·class="p"·data-group-id="6193051505-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="6193051505-2">&gt[·...·truncated·by·diffoscope;·len:·53,·SHA:·0140723625e8a752b39b026dc2560d843084237aa576b5cedc5700f269559fa6·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
143 ····</span><span·class="p"·data-group-id="8521568808-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="8521568808-4">(</span><span·class="n">T</span><span·class="p"·data-group-id="8521568808-4">)</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·f6f386573e45d7512ebdd966900d62cc2fd2661a0a1b336fa733bedab086929a·...·]-3">]</span><span·class="p">;</span><span·class="w">143 ····</span><span·class="p"·data-group-id="6193051505-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="6193051505-4">(</span><span·class="n">T</span><span·class="p"·data-group-id="6193051505-4">)</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·424039b0643538179182409852643ceb4a2f207bea6e0b1c66fd024722dbcf55·...·]-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="8521568808-5">(</span><span·class="p"·data-group-id="8521568808-6">&lt;&lt;</span><span·class="p"·data-group-id="8521568808-6">&gt;&gt;</span><span·class="p"·data-group-id="8521568808-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·cla[·...·truncated·by·diffoscope;·len:·109,·SHA:·afd8b68cb8ad085447045d9901e79d03ddad9f0c28c324a4da128455f733f1fb·...·]-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="6193051505-5">(</span><span·class="p"·data-group-id="6193051505-6">&lt;&lt;</span><span·class="p"·data-group-id="6193051505-6">&gt;&gt;</span><span·class="p"·data-group-id="6193051505-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·cla[·...·truncated·by·diffoscope;·len:·109,·SHA:·abd715c78ab7acd1b9a0fdb961eb87bda9f189a4d795fdd363530e3bdd22027b·...·]-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="5576557462-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:·e6f4c1022ef5d4907f8b68dc506513cf41acf3c30b4011d105c3192504229dcc·...·]-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="6868804821-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:·5b880a24d7ed2f985354f43baf73060b1e0ccdba9fc5c0bcaf76df6a6ae44b26·...·]-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="5576557462-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:·e58861d9cb03696af97d47362f4a3c66cf2c3a0922b9fbd6611a3048e9b3a71e·...·]-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="6868804821-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:·7122243c111e5997e148a07cf38b5e383be1c0c200fe1128e9ef0946e33dd06d·...·]-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="1479525056-1">&lt;&lt;</span><span·class="mi">0</span><span·class="p"·data-group-id="1479525056-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="3614262567-1">&lt;&lt;</span><span·class="mi">0</span><span·class="p"·data-group-id="3614262567-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="1479525056-2">&lt;&lt;</span><span·class="n">Bin0</span><span·class="o">/</span><span·class="ss">binary</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·ac291b65250fde999f89376df389a526f5987f395913172ef642e4288b50bb5b·...·]-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="3614262567-2">&lt;&lt;</span><span·class="n">Bin0</span><span·class="o">/</span><span·class="ss">binary</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·8023e790d122a436525da1facdbda2997c9b9d1cd6a64373ae5673073238761c·...·]-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="1479525056-3">&lt;&lt;</span><span·class="n">Bin1</span><span·class="o">/</span><span·class="ss">binary</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">6</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·ac291b65250fde999f89376df389a526f5987f395913172ef642e4288b50bb5b·...·]-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="3614262567-3">&lt;&lt;</span><span·class="n">Bin1</span><span·class="o">/</span><span·class="ss">binary</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">6</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·8023e790d122a436525da1facdbda2997c9b9d1cd6a64373ae5673073238761c·...·]-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="1479525056-4">&lt;&lt;</span><span·class="n">Bin2</span><span·class="o">/</span><span·class="ss">binary</span><span·class="p">,</span><span·class="mi">7</span><span·class="p">,</span><span·class="mi">8</span><span·class="p">,</span><span·class="mi">9</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·ac291b65250fde999f89376df389a526f5987f395913172ef642e4288b50bb5b·...·]-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="3614262567-4">&lt;&lt;</span><span·class="n">Bin2</span><span·class="o">/</span><span·class="ss">binary</span><span·class="p">,</span><span·class="mi">7</span><span·class="p">,</span><span·class="mi">8</span><span·class="p">,</span><span·class="mi">9</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·8023e790d122a436525da1facdbda2997c9b9d1cd6a64373ae5673073238761c·...·]-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="1479525056-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="1479525056-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="3614262567-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="3614262567-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="1479525056-6">{</span><span·class="n">Bin4</span><span·class="p">,</span><span·class="n">Bin3</span><span·class="p"·data-group-id="1479525056-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="3614262567-6">{</span><span·class="n">Bin4</span><span·class="p">,</span><span·class="n">Bin3</span><span·class="p"·data-group-id="3614262567-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="6838532843-1">(</span><span·class="ss">repack</span><span·class="p"·data-group-id="6838532843-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="1736012997-1">(</span><span·class="ss">repack</span><span·class="p"·data-group-id="1736012997-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="6838532843-2">(</span><span·class="p"·data-group-id="6838532843-3">[</span><span·class="ss">repack</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="6838532843-3">]</span><span·class="p"·data-group-id="6838532843-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="1736012997-2">(</span><span·class="p"·data-group-id="1736012997-3">[</span><span·class="ss">repack</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="1736012997-3">]</span><span·class="p"·data-group-id="1736012997-2">)</span><span·class="p">.</span><span·class="w">
  
262 </span><span·class="nf">repack</span><span·class="p"·data-group-id="6838532843-4">(</span><span·class="n">Bin</span><span·class="p"·data-group-id="6838532843-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="6838532843-5">(<[·...·truncated·by·diffoscope;·len:·73,·SHA:·af380bd45b572d4bcc259e1bd5959f9983a7f8a0093cfc87fd7b9c26afd8eeb5·...·]-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="1736012997-4">(</span><span·class="n">Bin</span><span·class="p"·data-group-id="1736012997-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="1736012997-5">(<[·...·truncated·by·diffoscope;·len:·73,·SHA:·3c3a8911790be4a5b22dd56f1bc84f81f31d92ce3049a2b0a4584d76b013338f·...·]-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="6838532843-6">(</span><span·class="n">Bin</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6838532843-7">&lt;&lt;</span><span·class="p"·data-group-id="6838532843-7">&gt;&gt;</span><span·class="p"·data-group-id="683853284[·...·truncated·by·diffoscope;·len:·1,·SHA:·4e07408562bedb8b60ce05c1decfe3ad16b72230967de01f640b7e4729b49fce·...·]-6">)</span><span·class="p">.</span><span·class="w">263 ····</span><span·class="nf">repack</span><span·class="p"·data-group-id="1736012997-6">(</span><span·class="n">Bin</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1736012997-7">&lt;&lt;</span><span·class="p"·data-group-id="1736012997-7">&gt;&gt;</span><span·class="p"·data-group-id="173601299[·...·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="6838532843-8">(</span><span·class="p"·data-group-id="6838532843-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:·4c570edb74b7a63258092548e3877ff2f9debe957f8f268e17f9f9f6dcd86092·...·]-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="1736012997-8">(</span><span·class="p"·data-group-id="1736012997-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:·489d116cb0fe7c216776b4ee89217bbff19d3a97e961d13ac00776c824e50ee7·...·]-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="6838532843-10">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6838532843-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:·0c52e8769679e0d3e89a82b47f7badbd0aafc4b4aabfbfaf375f847c7db5daef·...·]-10">)</span><span·class="p">;</span><span·class="w">265 ····</span><span·class="nf">repack</span><span·class="p"·data-group-id="1736012997-10">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1736012997-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:·32433dc85b2cc13c1bcdc36cbfac126b59afa64da0e03d9ca5f8fc927677ac31·...·]-10">)</span><span·class="p">;</span><span·class="w">
266 </span><span·class="nf">repack</span><span·class="p"·data-group-id="6838532843-12">(</span><span·class="p"·data-group-id="6838532843-13">&lt;&lt;</span><span·class="p"·data-group-id="6838532843-13">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Result</span><span·class="p"·data-group-id="683[·...·truncated·by·diffoscope;·len:·7,·SHA:·26ea530d0f59caab218f2a24262004e296d040ed062b6b1838965532004b1125·...·]-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="1736012997-12">(</span><span·class="p"·data-group-id="1736012997-13">&lt;&lt;</span><span·class="p"·data-group-id="1736012997-13">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Result</span><span·class="p"·data-group-id="173[·...·truncated·by·diffoscope;·len:·7,·SHA:·b1274f02998b6ebe833b3639200c09b5c4128d940ae001ab96c4e965be4b55d8·...·]-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="8718294437-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="8718294437-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="3831606037-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="3831606037-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="3626067327-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="3626067327-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="7834084321-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="7834084321-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="3626067327-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="3626067327-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="7834084321-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="7834084321-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.6/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.6/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.6/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.6/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="9743795810-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="9743795810-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="0634930743-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="0634930743-1">&gt;&gt;</span><span·class="p">,</span><span·class="w">
299 </span><span·class="p"·data-group-id="9743795810-2">&lt;&lt;</span><span·class="n">X</span><span·class="p">,</span><span·class="n">Y</span><span·class="p">,</span><span·class="n">Z</span><span·class="p">,</span><span·class="n">T</span><span·class="o">/</span><span·class="ss">binary</span><span[·...·truncated·by·diffoscope;·len:·36,·SHA:·a5b965ba2e112e288e35a2aaf62ea9447524d7d7eac4572472b7fa638a6de4cd·...·]-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="0634930743-2">&lt;&lt;</span><span·class="n">X</span><span·class="p">,</span><span·class="n">Y</span><span·class="p">,</span><span·class="n">Z</span><span·class="p">,</span><span·class="n">T</span><span·class="o">/</span><span·class="ss">binary</span><span[·...·truncated·by·diffoscope;·len:·36,·SHA:·9f41310cd2c814de7c314482ee7a22e87ad0cfad85582f3ff932f49ce75c44aa·...·]-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="9743795810-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="9743795810-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="0634930743-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="0634930743-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="6500180429-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:·80,·SHA:·e019afc8becb6eac8b27d931038edf46dd566ca284203d3171db001aaedd6958·...·]9-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="4990360399-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:·80,·SHA:·16053d905b6a1c9d970c9535e7649e77c1633b6c2830626b483da9bb1584ccca·...·]9-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="4456310286-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·class=[·...·truncated·by·diffoscope;·len:·579,·SHA:·3cec8867f63ab5bbfb825000621ac9b98aaf6f888663dadbb0751c527f964933·...·]-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="4453003715-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·class=[·...·truncated·by·diffoscope;·len:·579,·SHA:·23dc4faa488e78145f00b4aac43ee96b9ab5542219d73e07bac7fb0c5aba4ce5·...·]-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="7410685263-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="7410685263-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="1552175508-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="1552175508-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="7410685263-2">&lt;&lt;</span><span·class="s">&quot;abc&quot;</span><span·class="p"·data-group-id="7410685263-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.6/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.6/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="1552175508-2">&lt;&lt;</span><span·class="s">&quot;abc&quot;</span><span·class="p"·data-group-id="1552175508-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.6/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.6/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="7111769050-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:·92a5abb7adda875c05795e655aa4be5d217d5bfb219317cedea0bb07a01442ac·...·]-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="2207676083-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:·35a4cd7303563c85cb4e407cb14cca4a1d96762c5e5fcb30c31dfb05d9ae803d·...·]-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.6/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.6/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="9409634520-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:·84,·SHA:·bcd2bda9629f4336335696c2ae14a165c61d5c7fa6eb801b72f757f679f12516·...·]20-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="8546045320-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:·84,·SHA:·e82f57015bcbfebe36efdeeb7405a416d24ae607ad5b084344e97769cbc7ad21·...·]20-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="6128157767-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="6128157767-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="6431359880-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="6431359880-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="6128157767-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="6128157767-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="6431359880-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="6431359880-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="6128157767-3">(</span><span·class="n">Dgram</span><span·class="p"·data-group-id="6128157767-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="6431359880-3">(</span><span·class="n">Dgram</span><span·class="p"·data-group-id="6431359880-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="6128157767-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="6431359880-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="6128157767-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="6431359880-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="6128157767-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="6128157767-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="6431359880-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="6431359880-5">)</span><span·class="p">,</span><span·class="w">
158 ········</span><span·class="p"·data-group-id="6128157767-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">b[·...·truncated·by·diffoscope;·len:·53,·SHA:·5679de050a8c12b889a69aada2fdb82e17976dd5ef6c28ad297aba10f5f93072·...·]-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="6431359880-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">b[·...·truncated·by·diffoscope;·len:·53,·SHA:·cf7b23b1d4f7c68310040e915037010f718b4798cbdeb6f7940a8f6f11f8cada·...·]-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="4417711184-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="441[·...·truncated·by·diffoscope;·len:·7,·SHA:·4e870debb405fa91b70393542c6681586c07770bb1dd627b4d27ce099577276f·...·]-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="8348364963-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="834[·...·truncated·by·diffoscope;·len:·7,·SHA:·87f39d38f5989db261d141ea2d96f2689d8d80340cc2277b71051693c1eb7fe6·...·]-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="2872773273-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="2872773273-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="3801276111-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="3801276111-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="6374872811-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="6374872811-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="1219412215-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="1219412215-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="0619799976-1">&lt;&lt;</span><span·class="p"·data-group-id="0619799976-2">(</span><span·class="n">X</span><span·class="o">+</span><span·class="mi">1</span><span·class="p"·data-group-id="0619799976-2">)</span><span·class="p">:</span><span·class="mi">8</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·d2e9876360aa9c0e462a77b7fb4f3917bca31bc54999e1f0250ea6395d092abb·...·]-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="5193519663-1">&lt;&lt;</span><span·class="p"·data-group-id="5193519663-2">(</span><span·class="n">X</span><span·class="o">+</span><span·class="mi">1</span><span·class="p"·data-group-id="5193519663-2">)</span><span·class="p">:</span><span·class="mi">8</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·1aedb790617c3b928a99537a62eeb75be9134438ed79f68d4ed430227af79acf·...·]-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="4481877171-1">&lt;&lt;</span><span·class="s">&quot;hello&quot;</span><span·class="p"·data-group-id="4481877171-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:·69309d7bed928c06ccb2829da93bbf0717d80a2747c85d455de793fe947adbbd·...·]-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="1294937021-1">&lt;&lt;</span><span·class="s">&quot;hello&quot;</span><span·class="p"·data-group-id="1294937021-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:·2e477032f45c32b1fbd33aaf32c0ecb413c92d08b9d3a85b7e72cf0b45b14f95·...·]-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="3172771901-1">(</span><span·class="n">N</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3172771901-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:·900f8c588b6abb2cd2719b297aeae246be5e62f350456fe9cb80c613d3c2224a·...·]-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="1409486492-1">(</span><span·class="n">N</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1409486492-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:·23d16ec2467b5a4990d454e8e67b468c005aa856445272e9cb3e156e9f13b741·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
257 ···</span><span·class="p"·data-group-id="3172771901-3">{</span><span·class="n">X</span><span·class="p">,</span><span·class="n">T</span><span·class="p"·data-group-id="3172771901-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="3585239025-1">(</span><span·[·...·truncated·by·diffoscope;·len:·213,·SHA:·ed0869d5f2ff4f77a74f27c37e5acbc11d58562c6327952c4cfc80fd5d5a09d7·...·]257 ···</span><span·class="p"·data-group-id="1409486492-3">{</span><span·class="n">X</span><span·class="p">,</span><span·class="n">T</span><span·class="p"·data-group-id="1409486492-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="7826447695-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="7826447695-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
259 ···</span><span·class="p"·data-group-id="3585239025-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="3585239025-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="7826447695-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="7826447695-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="3585239025-3">{</span><span·class="n">X</span><span·class="p">,</span><span·class="n">T</span><span·class="p"·data-group-id="3585239025-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="7826447695-3">{</span><span·class="n">X</span><span·class="p">,</span><span·class="n">T</span><span·class="p"·data-group-id="7826447695-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="6976372950-1">(</span><span·class="p"·data-group-id="6976372950-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:·e0a4f9fb39ae354cc620c3c9a7cb53805b2d1f4a487defc90000260a7ec1db35·...·]-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="3826819205-1">(</span><span·class="p"·data-group-id="3826819205-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:·313b5184e5efa23ebba6fb99cdda4a6ed2a8235f02a9e21f77ef24b1edc58bf8·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
270 ···</span><span·class="p"·data-group-id="6976372950-3">{</span><span·class="n">Payload</span><span·class="p">,</span><span·class="n">Rest</span><span·class="p"·data-group-id="6976372950-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="7241449284-1">(</span><span·cla[·...·truncated·by·diffoscope;·len:·878,·SHA:·5e2c775b8bce46384af5a5a2052081e1b5b4f0b3d04ed7c6fae7e6a931b4a24a·...·]270 ···</span><span·class="p"·data-group-id="3826819205-3">{</span><span·class="n">Payload</span><span·class="p">,</span><span·class="n">Rest</span><span·class="p"·data-group-id="3826819205-3">}</span><span·class="p">.</span></code></pre><p>Here·<code·class="i[·...·truncated·by·diffoscope;·len:·110,·SHA:·145231a26929568653fac93d2fa7f9ffb2c7e7c8c481d11c98e993e0326b0686·...·]
 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="1304915690-1">(</span><span·class="p"·data-group-id="1304915690-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="1304915690-3">(</span><span·class="p"·data-group-id="1304915690-4">(</span><span·class="n">Sz</span><span·class="o">-</span><span·class="mi">1</span><span·class="p"·data-group-id="1304915690-4">)</span><span·class="o">*</span><span·class="mi">8</span><span·class="p"·data-group-id="1304915690-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="1304915690-2">&gt;&gt;</span><span·class="p"·data-group-id="1304915690-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
272 ···</span><span·class="p"·data-group-id="7241449284-5">{</span><span·class="n">Payload</span><span·class="p">,</span><span·class="n">Rest</span><span·class="p"·data-group-id="7241449284-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·to272 ···</span><span·class="p"·data-group-id="1304915690-5">{</span><span·class="n">Payload</span><span·class="p">,</span><span·class="n">Rest</span><span·class="p"·data-group-id="1304915690-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="8736205772-1">(</span><span·class="p"·data-group-id="8736205772-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:·bd6253ce86e10570edf38eaf837342dab70bf62638510307ea0ebe3b2e29e2d4·...·]-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="9494663388-1">(</span><span·class="p"·data-group-id="9494663388-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:·cadf6c92cfaf944070df18d4bf909c6eb0b1071e2d241c2f9fd3cb33758b0ca6·...·]-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="9522763040-1">(</span><span·class="n">T</span><span·class="p"·data-group-id="9522763040-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="7399225909-1">(</span><span·class="n">T</span><span·class="p"·data-group-id="7399225909-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="9522763040-2">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9522763040-3">&lt;&lt;</span><span·class="p"·data-group-id="9522763040-3">&gt;&gt;</span><span·class="p"·data-group-id="9522763040-2">)</span><span·class="p">.</span><span·class="w">286 ····</span><span·class="nf">triples_to_bin</span><span·class="p"·data-group-id="7399225909-2">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7399225909-3">&lt;&lt;</span><span·class="p"·data-group-id="7399225909-3">&gt;&gt;</span><span·class="p"·data-group-id="7399225909-2">)</span><span·class="p">.</span><span·class="w">
  
287 </span><span·class="nf">triples_to_bin</span><span·class="p"·data-group-id="9522763040-4">(</span><span·class="p"·data-group-id="9522763040-5">[</span><span·class="p"·data-group-id="9522763040-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:·9b41cd525d0dfc782411c8e39de167195cb1e32632a3671cf1313cfbbcf48a99·...·]-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="7399225909-4">(</span><span·class="p"·data-group-id="7399225909-5">[</span><span·class="p"·data-group-id="7399225909-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:·39a577a7ada1e4978ec8be6ab3bc834a885153e2cc377d4a5e33c728cb12fe05·...·]-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="9522763040-7">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9522763040-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:·3931c62c7a97e6998c8218e45a2275456ab9e8a75ba7aa86bc47fe637f495a1b·...·]-7">)</span><span·class="p">;</span><span·class="w">288 ····</span><span·class="nf">triples_to_bin</span><span·class="p"·data-group-id="7399225909-7">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7399225909-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:·1a20a5ce56f4fede765c1dd1fe01774bf4c18908faed269e6778ba55c50e6437·...·]-7">)</span><span·class="p">;</span><span·class="w">
289 </span><span·class="nf">triples_to_bin</span><span·class="p"·data-group-id="9522763040-9">(</span><span·class="p"·data-group-id="9522763040-10">[</span><span·class="p"·data-group-id="9522763040-10">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="p"·data-group-id="9522763040-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="7399225909-9">(</span><span·class="p"·data-group-id="7399225909-10">[</span><span·class="p"·data-group-id="7399225909-10">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="p"·data-group-id="7399225909-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
290 ····</span><span·class="n">Acc</span><span·class="p">.</span></code></pre>290 ····</span><span·class="n">Acc</span><span·class="p">.</span></code></pre>
291 </div>291 </div>
  
Max diff block lines reached; 123/49198 bytes (0.25%) of diff not shown.
58.7 KB
./usr/share/doc/erlang-doc/html/doc/system/c_port.html
    
Offset 148, 101 lines modifiedOffset 148, 101 lines modified
148 external·program,·if·it·is·written·properly).</p><p>The·port·is·created·using·the·BIF·<a·href="../../erts-15.2.6/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.6/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="1280664346-1">(</span><span·class="ss">complex1</span><span·class="p"·data-group-id="1280664346-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="1858149311-1">(</span><span·class="ss">complex1</span><span·class="p"·data-group-id="1858149311-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="1280664346-2">(</span><span·class="p"·data-group-id="1280664346-3">[</span><span·class="ss">start</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">init</span><span·class="p">/</span><spa[·...·truncated·by·diffoscope;·len:·115,·SHA:·71b10f478e8942154bf6c68610ad6296194754bf31901dd40a45fe64e075a219·...·]-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="1858149311-2">(</span><span·class="p"·data-group-id="1858149311-3">[</span><span·class="ss">start</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">init</span><span·class="p">/</span><spa[·...·truncated·by·diffoscope;·len:·115,·SHA:·b9823a3b7e3f0b8a50adda8644c316a928e7f5d37ffd604ca8d089ae9e0ba21b·...·]-2">)</span><span·class="p">.</span><span·class="w">
  
157 </span><span·class="nf">start</span><span·class="p"·data-group-id="1280664346-4">(</span><span·class="n">ExtPrg</span><span·class="p"·data-group-id="1280664346-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="1858149311-4">(</span><span·class="n">ExtPrg</span><span·class="p"·data-group-id="1858149311-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="1280664346-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="1280664346-6">[</span><span[·...·truncated·by·diffoscope;·len:·118,·SHA:·00f2a3b7a942d4f3baa52be447d6d087da727555022805acad6fccc00e53fbde·...·]-5">)</span><span·class="p">.</span><span·class="w">158 ··</span><span·class="nf">spawn</span><span·class="p"·data-group-id="1858149311-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="1858149311-6">[</span><span[·...·truncated·by·diffoscope;·len:·118,·SHA:·2c58a779ae22efc3d4d52443e831a2b934096e41bca1e39b2256280e7c9a581e·...·]-5">)</span><span·class="p">.</span><span·class="w">
  
159 </span><span·class="nf">init</span><span·class="p"·data-group-id="1280664346-7">(</span><span·class="n">ExtPrg</span><span·class="p"·data-group-id="1280664346-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="1858149311-7">(</span><span·class="n">ExtPrg</span><span·class="p"·data-group-id="1858149311-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="1280664346-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="1280664346-9">(</span><span·class="p"·data-group-id="1280664346-9">)</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·19,·SHA:·c5255df28e42f78afb0c5aca711fa1c4252b75211e9b413d3cb10e2a3005d103·...·]-8">)</span><span·class="p">,</span><span·class="w">160 ··</span><span·class="nf">register</span><span·class="p"·data-group-id="1858149311-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="1858149311-9">(</span><span·class="p"·data-group-id="1858149311-9">)</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·19,·SHA:·84b3e5b5cd8210323b84df6d0248d0011ad5ca0e1017dc9a1b2b745634b8201a·...·]-8">)</span><span·class="p">,</span><span·class="w">
161 ··</span><span·class="nf">process_flag</span><span·class="p"·data-group-id="1280664346-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="1280664346-10">)</span><span·class="p">,</span><span·class="w">161 ··</span><span·class="nf">process_flag</span><span·class="p"·data-group-id="1858149311-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="1858149311-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="1280664346-11">(</span><span·class="p"·data-group-id="1280664346-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="1280664346-12">}</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·388,·SHA:·737e1b6eb97b7fa3757b8d7bd253791ff012597a1dbbb3c95564210e25fbfe5c·...·]-11">)</span><span·class="p">,</span><span·class="w">162 ··</span><span·class="n">Port</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">open_port</span><span·class="p"·data-group-id="1858149311-11">(</span><span·class="p"·data-group-id="1858149311-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="1858149311-12">}</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·388,·SHA:·b1e9991db6bde500b420810a9c33f3acad4c4bd2a78e75418eb460185055cd7d·...·]-11">)</span><span·class="p">,</span><span·class="w">
163 ··</span><span·class="nf">loop</span><span·class="p"·data-group-id="1280664346-15">(</span><span·class="n">Port</span><span·class="p"·data-group-id="1280664346-15">)</span><span·class="p">.</span></code></pre><p>Now·<code·class="inline">complex1:foo/1</code>·and·<code·class="inline">complex1:bar/1</code>·can·be·implemented.·Both·send·a163 ··</span><span·class="nf">loop</span><span·class="p"·data-group-id="1858149311-15">(</span><span·class="n">Port</span><span·class="p"·data-group-id="1858149311-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="9761587773-1">(</span><span·class="n">X</span><span·class="p"·data-group-id="9761587773-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="7754268204-1">(</span><span·class="n">X</span><span·class="p"·data-group-id="7754268204-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="9761587773-2">(</span><span·class="p"·data-group-id="9761587773-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="9761587773-3">}</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·12,·SHA:·53dd51a2a4ec5fae2d22ba4d319409712c6041381360bb9d54990110b8f28a44·...·]-2">)</span><span·class="p">.</span><span·class="w">165 ··</span><span·class="nf">call_port</span><span·class="p"·data-group-id="7754268204-2">(</span><span·class="p"·data-group-id="7754268204-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="7754268204-3">}</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·12,·SHA:·8f7ede25ada1ee8980c3657614a10865ad8297d676b79a560db356a5f5f970a8·...·]-2">)</span><span·class="p">.</span><span·class="w">
166 </span><span·class="nf">bar</span><span·class="p"·data-group-id="9761587773-4">(</span><span·class="n">Y</span><span·class="p"·data-group-id="9761587773-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="7754268204-4">(</span><span·class="n">Y</span><span·class="p"·data-group-id="7754268204-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="9761587773-5">(</span><span·class="p"·data-group-id="9761587773-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="9761587773-6">}</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·12,·SHA:·53dd51a2a4ec5fae2d22ba4d319409712c6041381360bb9d54990110b8f28a44·...·]-5">)</span><span·class="p">.</span><span·class="w">167 ··</span><span·class="nf">call_port</span><span·class="p"·data-group-id="7754268204-5">(</span><span·class="p"·data-group-id="7754268204-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="7754268204-6">}</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·12,·SHA:·8f7ede25ada1ee8980c3657614a10865ad8297d676b79a560db356a5f5f970a8·...·]-5">)</span><span·class="p">.</span><span·class="w">
  
168 </span><span·class="nf">call_port</span><span·class="p"·data-group-id="9761587773-7">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="9761587773-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="7754268204-7">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="7754268204-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="9761587773-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="9761587773-9">(</span><span·class="p"·data-group-id="9761587773-9">)</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·91,·SHA:·64088a582bbd6e278d5e2d071c5e6a9266aca73695c1b8136a8e25ab3ac48548·...·]-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="7754268204-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="7754268204-9">(</span><span·class="p"·data-group-id="7754268204-9">)</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·91,·SHA:·bd89e764e5c83b66b1d337d659d8f16c969b6f81de3fe87f5948e98e8d085118·...·]-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="9761587773-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="9761587773-10">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">171 ····</span><span·class="p"·data-group-id="7754268204-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="7754268204-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="4064174626-1">(</span><span·class="n">Port</span><span·class="p"·data-group-id="4064174626-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="9274921306-1">(</span><span·class="n">Port</span><span·class="p"·data-group-id="9274921306-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="4064174626-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="4064174626-2">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">175 ····</span><span·class="p"·data-group-id="9274921306-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="9274921306-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="4064174626-3">{</span><span·class="nf">self</span><span·class="p"·data-group-id="4064174626-4">(</span><span·class="p"·data-group-id="4064174626-4">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4064174626-5">{</span[·...·truncated·by·diffoscope;·len:·335,·SHA:·7bcff7fe70614e0206e9ecde0cfe3b78a36caf83776cdaeeb23f74704edf2861·...·]6-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="9274921306-3">{</span><span·class="nf">self</span><span·class="p"·data-group-id="9274921306-4">(</span><span·class="p"·data-group-id="9274921306-4">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9274921306-5">{</span[·...·truncated·by·diffoscope;·len:·335,·SHA:·30cb3a03a52de8638b5f71d3574b7a857e91414c0466d8b247768791a77f7bc6·...·]6-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="4064174626-7">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4064174626-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:·90,·SHA:·cba604cb2241d72e2cff2a60bffb3719a19e6deb1596b93a9134bfa8021af451·...·]6-7">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">178 ········</span><span·class="p"·data-group-id="9274921306-7">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9274921306-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:·90,·SHA:·41090927715eeb79f0ce8f598e67d520ff27b1f9bc99c40125b9e97681520204·...·]6-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="4064174626-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="4064174626-10">(</span><span·class="n">Data</span><span·class="p"·data-group-id="4064174626-10[·...·truncated·by·diffoscope;·len:·50,·SHA:·a694f4d26fc9d8c558b208d42e5bdde31813f0dfd71ece97b35e6710ec6f1780·...·]6-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="9274921306-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="9274921306-10">(</span><span·class="n">Data</span><span·class="p"·data-group-id="9274921306-10[·...·truncated·by·diffoscope;·len:·50,·SHA:·cc8329480b3ae493fc8828abc01910bd510c78d66616d64558adb266b03f9ac2·...·]6-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="4064174626-11">(</span><span·class="n">Port</span><span·class="p"·data-group-id="4064174626-11">)</span><span·class="w">181 ······</span><span·class="nf">loop</span><span·class="p"·data-group-id="9274921306-11">(</span><span·class="n">Port</span><span·class="p"·data-group-id="9274921306-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="0690595052-1">(</span><span·class="p"·data-group-id="0690595052-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="0690595052-2">}</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·291,·SHA:·697a1360380026f9b1d5c7a5dd0d67a3edcf8ed2687ff0474929f5446cc6fd54·...·]-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="1818019190-1">(</span><span·class="p"·data-group-id="1818019190-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="1818019190-2">}</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·291,·SHA:·eaf6eb6c2db3521e7f6b5535302ce23041a2cf93f5a201fca05b94c3bcef429a·...·]-3">]</span><span·class="p">;</span><span·class="w">
186 </span><span·class="nf">encode</span><span·class="p"·data-group-id="0690595052-4">(</span><span·class="p"·data-group-id="0690595052-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="0690595052-5">}</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·291,·SHA:·da6b0d439ac3bea6971c96fd59c5cadef21d9d3f79971730c31e8ded81a69f56·...·]-6">]</span><span·class="p">.</span><span·class="w">186 </span><span·class="nf">encode</span><span·class="p"·data-group-id="1818019190-4">(</span><span·class="p"·data-group-id="1818019190-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="1818019190-5">}</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·291,·SHA:·cf139f4fc11e3460ad08bff2e3b633eb982bf11383f8c09fdd772be4bcffa7d1·...·]-6">]</span><span·class="p">.</span><span·class="w">
  
187 </span><span·class="nf">decode</span><span·class="p"·data-group-id="0690595052-7">(</span><span·class="p"·data-group-id="0690595052-8">[</span><span·class="n">Int</span><span·class="p"·data-group-id="0690595052-8">]</span><span·class="p"·data-group-id="0690595052-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Int</span><span·class="p">.</span></code></pre><p>The·resulting·Erlang·program,·including·functionality·for·stopping·the·port·and187 </span><span·class="nf">decode</span><span·class="p"·data-group-id="1818019190-7">(</span><span·class="p"·data-group-id="1818019190-8">[</span><span·class="n">Int</span><span·class="p"·data-group-id="1818019190-8">]</span><span·class="p"·data-group-id="1818019190-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="7342083516-1">(</span><span·class="ss">complex1</span><span·class="p"·data-group-id="7342083516-1">)</span><span·class="p">.</span><span·class="w">188 detecting·port·failures,·is·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="9131523698-1">(</span><span·class="ss">complex1</span><span·class="p"·data-group-id="9131523698-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="7342083516-2">(</span><span·class="p"·data-group-id="7342083516-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:·b4b5d589ce9a6dc9b681105dfbf0faa9ed91e31a1ebe6d6d2abe8bc5c43024a6·...·]-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="9131523698-2">(</span><span·class="p"·data-group-id="9131523698-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:·ac486f862ef21bb98b4732d34badf56379d63a61f8f86718491ca8da444b8943·...·]-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="7342083516-4">(</span><span·class="p"·data-group-id="7342083516-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:·105241ff5682a829940ba6a735c1c36a712236dfdb2f2bc8696d97a154efb633·...·]-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="9131523698-4">(</span><span·class="p"·data-group-id="9131523698-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:·7842548780502a04e51b1ba387127b320596318be53867307d187862384682ce·...·]-4">)</span><span·class="p">.</span><span·class="w">
  
191 </span><span·class="nf">start</span><span·class="p"·data-group-id="7342083516-6">(</span><span·class="n">ExtPrg</span><span·class="p"·data-group-id="7342083516-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="9131523698-6">(</span><span·class="n">ExtPrg</span><span·class="p"·data-group-id="9131523698-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="7342083516-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="7342083516-8">[</span><spa[·...·truncated·by·diffoscope;·len:·119,·SHA:·f7b2a70f173c531354cb241c7056583edd28ce71f373628585a4f262ad14b0c7·...·]-7">)</span><span·class="p">.</span><span·class="w">192 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="9131523698-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="9131523698-8">[</span><spa[·...·truncated·by·diffoscope;·len:·119,·SHA:·924cd9b1151ac1fd05a768b944c365a1bf11985fc69b83765b0ecbe1a53ac7d1·...·]-7">)</span><span·class="p">.</span><span·class="w">
193 </span><span·class="nf">stop</span><span·class="p"·data-group-id="7342083516-9">(</span><span·class="p"·data-group-id="7342083516-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="9131523698-9">(</span><span·class="p"·data-group-id="9131523698-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="7342083516-10">(</span><span·class="n">X</span><span·class="p"·data-group-id="7342083516-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="9131523698-10">(</span><span·class="n">X</span><span·class="p"·data-group-id="9131523698-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="7342083516-11">(</span><span·class="p"·data-group-id="7342083516-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="7342083516-12">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·af93d00d7c76651b74f1ef4bf3424096696014d2e1ee9a19cf7177d991cf5b52·...·]-11">)</span><span·class="p">.</span><span·class="w">196 ····</span><span·class="nf">call_port</span><span·class="p"·data-group-id="9131523698-11">(</span><span·class="p"·data-group-id="9131523698-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="9131523698-12">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·56b3d15cef3a610ddad99d7c8a81ab0f0a23dcb1936d6ee87681106e5a1b1e83·...·]-11">)</span><span·class="p">.</span><span·class="w">
197 </span><span·class="nf">bar</span><span·class="p"·data-group-id="7342083516-13">(</span><span·class="n">Y</span><span·class="p"·data-group-id="7342083516-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="9131523698-13">(</span><span·class="n">Y</span><span·class="p"·data-group-id="9131523698-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="7342083516-14">(</span><span·class="p"·data-group-id="7342083516-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="7342083516-15">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·af93d00d7c76651b74f1ef4bf3424096696014d2e1ee9a19cf7177d991cf5b52·...·]-14">)</span><span·class="p">.</span><span·class="w">198 ····</span><span·class="nf">call_port</span><span·class="p"·data-group-id="9131523698-14">(</span><span·class="p"·data-group-id="9131523698-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="9131523698-15">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·56b3d15cef3a610ddad99d7c8a81ab0f0a23dcb1936d6ee87681106e5a1b1e83·...·]-14">)</span><span·class="p">.</span><span·class="w">
  
199 </span><span·class="nf">call_port</span><span·class="p"·data-group-id="7342083516-16">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="7342083516-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="9131523698-16">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="9131523698-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="7342083516-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="7342083516-18">(</span><span·class="p"·data-group-id="7342083516-18">)</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·94,·SHA:·2ecf2dcbc8b9cddd7fd54890a7ca205cf700a36237b6aae472785f247e14b205·...·]-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="9131523698-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="9131523698-18">(</span><span·class="p"·data-group-id="9131523698-18">)</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·94,·SHA:·eb56494fafe64d97e4eed8c3daee1edcec5d8f351566b3c6ae924f61c1fcf002·...·]-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="7342083516-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="7342083516-19">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">202 »       </span><span·class="p"·data-group-id="9131523698-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="9131523698-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="7342083516-20">(</span><span·class="n">ExtPrg</span><span·class="p"·data-group-id="7342083516-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="9131523698-20">(</span><span·class="n">ExtPrg</span><span·class="p"·data-group-id="9131523698-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="7342083516-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="7342083516-22">(</span><span·class="p"·data-group-id="7342083516-22">)</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·f590a7107665782249a63d562f005ea8947ce7da09bfbf5e33b0a0dea42837ed·...·]-21">)</span><span·class="p">,</span><span·class="w">206 ····</span><span·class="nf">register</span><span·class="p"·data-group-id="9131523698-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="9131523698-22">(</span><span·class="p"·data-group-id="9131523698-22">)</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·beef2b1167bc17dda9fcefafb36d0f9eb1c8e90fa23d48a08380643b3b90caf2·...·]-21">)</span><span·class="p">,</span><span·class="w">
207 ····</span><span·class="nf">process_flag</span><span·class="p"·data-group-id="7342083516-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="7342083516-23">)</span><span·class="p">,</span><span·class="w">207 ····</span><span·class="nf">process_flag</span><span·class="p"·data-group-id="9131523698-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="9131523698-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="7342083516-24">(</span><span·class="p"·data-group-id="7342083516-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="7342083516-25">}</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·389,·SHA:·9867941866ef5be7b98d8d362740ea4a8c5013abdfbc3c6872cda5102b583a6f·...·]-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="9131523698-24">(</span><span·class="p"·data-group-id="9131523698-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="9131523698-25">}</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·389,·SHA:·1a10343556260b9067b9a8f9d5a62119e51f2e663b40d6064f41e4741e751bda·...·]-24">)</span><span·class="p">,</span><span·class="w">
209 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="7342083516-28">(</span><span·class="n">Port</span><span·class="p"·data-group-id="7342083516-28">)</span><span·class="p">.</span><span·class="w">209 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="9131523698-28">(</span><span·class="n">Port</span><span·class="p"·data-group-id="9131523698-28">)</span><span·class="p">.</span><span·class="w">
  
210 </span><span·class="nf">loop</span><span·class="p"·data-group-id="7342083516-29">(</span><span·class="n">Port</span><span·class="p"·data-group-id="7342083516-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="9131523698-29">(</span><span·class="n">Port</span><span·class="p"·data-group-id="9131523698-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="7342083516-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="7342083516-30">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">212 »       </span><span·class="p"·data-group-id="9131523698-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="9131523698-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="7342083516-31">{</span><span·class="nf">self</span><span·class="p"·data-group-id="7342083516-32">(</span><span·class="p"·data-group-id="7342083516-32">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7342083516-33">{</[·...·truncated·by·diffoscope;·len:·343,·SHA:·7c3cfe1e556c0cda619451a6209f2a4f67bddc954e1befe1cabf3f89434523bd·...·]-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="9131523698-31">{</span><span·class="nf">self</span><span·class="p"·data-group-id="9131523698-32">(</span><span·class="p"·data-group-id="9131523698-32">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9131523698-33">{</[·...·truncated·by·diffoscope;·len:·343,·SHA:·d359bbebd6722e163a70d7cb930ab1430c35bc07aa1a0bae64069a5eeac4af73·...·]-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="7342083516-35">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7342083516-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:·f9163db990a43088a7c138fe74565cf834bfc7544c61ff830aa05565bf0b06ab·...·]-35">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">215 »       »       </span><span·class="p"·data-group-id="9131523698-35">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9131523698-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:·31768706995377a2f31580d3f3a30a5a2d254e5308fbfcb23802decdec66abef·...·]-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="7342083516-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="7342083516-38">(</span><span·class="n">Data</span><span·class="p"·data-group-id="7342083516-3[·...·truncated·by·diffoscope;·len:·52,·SHA:·c41e574c3c2f26c732791f2fd20e716ee332b23d03223fb6bce3f7f91f396622·...·]-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="9131523698-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="9131523698-38">(</span><span·class="n">Data</span><span·class="p"·data-group-id="9131523698-3[·...·truncated·by·diffoscope;·len:·52,·SHA:·6e674292657ed738f8e62d435af0dbf630241af2b67d1d143bf1a9a5cb7cbf19·...·]-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="7342083516-39">(</span><span·class="n">Port</span><span·class="p"·data-group-id="7342083516-39">)</span><span·class="p">;</span><span·class="w">218 »       ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="9131523698-39">(</span><span·class="n">Port</span><span·class="p"·data-group-id="9131523698-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="7342083516-40">{</span><span·class="nf">self</span><span·class="p"·data-group-id="7342083516-41">(</span><span·class="p"·data-group-id="7342083516-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:·f49d1d35a0fc65b3dde21914c5bb8a026063655473ed8b8393468635a63a6c83·...·]-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="9131523698-40">{</span><span·class="nf">self</span><span·class="p"·data-group-id="9131523698-41">(</span><span·class="p"·data-group-id="9131523698-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:·e4f2514e77c0920f4cccf19d8dd2f0052554e2f78219a41c35ba171275fddd88·...·]-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="7342083516-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="7342083516-42">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">222 »       »       </span><span·class="p"·data-group-id="9131523698-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="9131523698-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="7342083516-43">(</span><span·class="ss">normal</span><span·class="p"·data-group-id="7342083516-43">)</span><span·class="w">223 »       »       ····</span><span·class="nf">exit</span><span·class="p"·data-group-id="9131523698-43">(</span><span·class="ss">normal</span><span·class="p"·data-group-id="9131523698-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="7342083516-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="7342083516-44">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">225 »       </span><span·class="p"·data-group-id="9131523698-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="9131523698-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="7342083516-45">(</span><span·class="ss">port_terminated</span><span·class="p"·data-group-id="7342083516-45">)</span><span·class="w">226 »       ····</span><span·class="nf">exit</span><span·class="p"·data-group-id="9131523698-45">(</span><span·class="ss">port_terminated</span><span·class="p"·data-group-id="9131523698-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="7342083516-46">(</span><span·class="p"·data-group-id="7342083516-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="7342083516-47">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·296,·SHA:·9b1b41d3f560fc251c07225f3f2792c0f7d7f5a84e5d732b458b05e2ebc954ca·...·]-48">]</span><span·class="p">;</span><span·class="w">228 </span><span·class="nf">encode</span><span·class="p"·data-group-id="9131523698-46">(</span><span·class="p"·data-group-id="9131523698-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="9131523698-47">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·296,·SHA:·8fa548e502216003c9536a2cd7fdae8577c5fdb8d64edfbe74854b474ec318c7·...·]-48">]</span><span·class="p">;</span><span·class="w">
229 </span><span·class="nf">encode</span><span·class="p"·data-group-id="7342083516-49">(</span><span·class="p"·data-group-id="7342083516-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="7342083516-50">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·296,·SHA:·2ac38d18fdd3380d2e45c6972ca6c180c5c0ff530954138e389ef3906f053eae·...·]-51">]</span><span·class="p">.</span><span·class="w">229 </span><span·class="nf">encode</span><span·class="p"·data-group-id="9131523698-49">(</span><span·class="p"·data-group-id="9131523698-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="9131523698-50">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·296,·SHA:·3fed4c704cb07618a9ff5cda32032b7fa04ce0c6f8cb44a5b553c8d0e39d91e7·...·]-51">]</span><span·class="p">.</span><span·class="w">
  
230 </span><span·class="nf">decode</span><span·class="p"·data-group-id="7342083516-52">(</span><span·class="p"·data-group-id="7342083516-53">[</span><span·class="n">Int</span><span·class="p"·data-group-id="7342083516-53">]</span><span·class="p"·data-group-id="7342083516-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="9131523698-52">(</span><span·class="p"·data-group-id="9131523698-53">[</span><span·class="n">Int</span><span·class="p"·data-group-id="9131523698-53">]</span><span·class="p"·data-group-id="9131523698-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="8581560356-1">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">14.2</span><span·class="p"·data-group-id="8581560356-1">]</span><span·class="w">·</span><span·class="p"·data-group-id="8581560356-2">[</span><span·class="ss">source<[·...·truncated·by·diffoscope;·len:·1283,·SHA:·9825878ecbf9d03063f0e80cac956ea010cc7dbb00d5e8cc452bbd5f58860324·...·]-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="6492076608-1">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">14.2</span><span·class="p"·data-group-id="6492076608-1">]</span><span·class="w">·</span><span·class="p"·data-group-id="6492076608-2">[</span><span·class="ss">source<[·...·truncated·by·diffoscope;·len:·1283,·SHA:·12b26e51413f2777dd44a374c1dfa696032f68b66160d634b7dddbb976b07865·...·]-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="8581560356-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:·933cf51a9b4b999eb174719fada25fceb03143409b9706ca344bdd1cd633b508·...·]-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="6492076608-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:·f7d5d92d6a88629e3173a0682eb2b76a75a87c5e237a92553ef9c14db2ff515d·...·]-8">)</span><span·class="gp·unselectable">
342 1&gt;·</span><span·class="nf">c</span><span·class="p"·data-group-id="8581560356-10">(</span><span·class="ss">complex1</span><span·class="p"·data-group-id="8581560356-10">)</span><span·class="p">.</span><span·class="w">342 1&gt;·</span><span·class="nf">c</span><span·class="p"·data-group-id="6492076608-10">(</span><span·class="ss">complex1</span><span·class="p"·data-group-id="6492076608-10">)</span><span·class="p">.</span><span·class="w">
343 </span><span·class="p"·data-group-id="8581560356-11">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">complex1</span><span·class="p"·data-group-id="8581560356-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:·d457b98aa636b69e6662e3ed40b00fb15139cf3d0e4ce2936a1fa1c9f9f08722·...·]-1">)</span><span·class="p">.</span><span·class="w">343 </span><span·class="p"·data-group-id="6492076608-11">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">complex1</span><span·class="p"·data-group-id="6492076608-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:·e05e5d2d4298114d83a71fc345f891da513de2b28034ea30888987027b6e32d2·...·]-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="4523949219-2">(</span><span·class="mi">3</span><span·class="p"·data-group-id="4523949219-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="8753038954-2">(</span><span·class="mi">3</span><span·class="p"·data-group-id="8753038954-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="4523949219-3">(</span><span·class="mi">5</span><span·class="p"·data-group-id="4523949219-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="8753038954-3">(</span><span·class="mi">5</span><span·class="p"·data-group-id="8753038954-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="4523949219-4">(</span><span·class="p"·data-group-id="4523949219-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="8753038954-4">(</span><span·class="p"·data-group-id="8753038954-4">)</span><span·class="p">.</span><span·class="w">
350 </span><span·class="ss">stop</span></code></pre>350 </span><span·class="ss">stop</span></code></pre>
351 </div>351 </div>
  
352 <div·class="bottom-actions"·id="bottom-actions">352 <div·class="bottom-actions"·id="bottom-actions">
353 ··<div·class="bottom-actions-item">353 ··<div·class="bottom-actions-item">
  
354 ······<a·href="example.html"·class="bottom-actions-button"·rel="prev">354 ······<a·href="example.html"·class="bottom-actions-button"·rel="prev">
Max diff block lines reached; -1/60004 bytes (-0.00%) of diff not shown.
63.7 KB
./usr/share/doc/erlang-doc/html/doc/system/c_portdriver.html
    
Offset 151, 112 lines modifiedOffset 151, 112 lines modified
151 <p>Like·a·port·program,·the·port·communicates·with·an·Erlang·process.·All151 <p>Like·a·port·program,·the·port·communicates·with·an·Erlang·process.·All
152 communication·goes·through·one·Erlang·process·that·is·the·<em>connected·process</em>·of152 communication·goes·through·one·Erlang·process·that·is·the·<em>connected·process</em>·of
153 the·port·driver.·Terminating·this·process·closes·the·port·driver.</p><p>Before·the·port·is·created,·the·driver·must·be·loaded.·This·is·done·with·the153 the·port·driver.·Terminating·this·process·closes·the·port·driver.</p><p>Before·the·port·is·created,·the·driver·must·be·loaded.·This·is·done·with·the
154 function·<a·href="../../lib/kernel-10.2.6/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.6/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.6/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.6/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="9803227345-1">(</span><span·class="ss">complex5</span><span·class="p"·data-group-id="9803227345-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="0614130206-1">(</span><span·class="ss">complex5</span><span·class="p"·data-group-id="0614130206-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="9803227345-2">(</span><span·class="p"·data-group-id="9803227345-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:·0bac031d9fdf94c1eb16879cd5032b238b821d4dc86dcf6fa7fd7680464033cd·...·]-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="0614130206-2">(</span><span·class="p"·data-group-id="0614130206-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:·f8cc241a633d4d4e470496d680680694a307651212787d887aa20ef599aa442e·...·]-2">)</span><span·class="p">.</span><span·class="w">
  
160 </span><span·class="nf">start</span><span·class="p"·data-group-id="9803227345-4">(</span><span·class="n">SharedLib</span><span·class="p"·data-group-id="9803227345-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="0614130206-4">(</span><span·class="n">SharedLib</span><span·class="p"·data-group-id="0614130206-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="9803227345-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="9803227345-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="0614130206-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="0614130206-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="9803227345-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="9803227345-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="0614130206-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="0614130206-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="9803227345-7">(</span><span·class="p"·data-group-id="9803227345-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="9803227345-8">}</span><span·[·...·truncated·by·diffoscope;·len:·35,·SHA:·f94eca78d805c702eed77d7c6e21dc3d1cab08af38a663a6bc6deed9e7f5cd83·...·]-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="0614130206-7">(</span><span·class="p"·data-group-id="0614130206-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="0614130206-8">}</span><span·[·...·truncated·by·diffoscope;·len:·35,·SHA:·48af46e0f8f3a675df582294f0c89106eb30ea0870689a9d673c1ae2c6af528b·...·]-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="9803227345-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="9803227345-10">[</span><sp[·...·truncated·by·diffoscope;·len:·124,·SHA:·8fb3e5e75dbe96ccc8eed196e7913254630370f799c258c8e6d01c286c6d6bf9·...·]-9">)</span><span·class="p">.</span><span·class="w">166 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="0614130206-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="0614130206-10">[</span><sp[·...·truncated·by·diffoscope;·len:·124,·SHA:·54da4bec02f2b7dc368a00ba0aaf64026f26cd94cff6510c79bae38faf6c427b·...·]-9">)</span><span·class="p">.</span><span·class="w">
  
167 </span><span·class="nf">init</span><span·class="p"·data-group-id="9803227345-11">(</span><span·class="n">SharedLib</span><span·class="p"·data-group-id="9803227345-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="0614130206-11">(</span><span·class="n">SharedLib</span><span·class="p"·data-group-id="0614130206-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="9803227345-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="9803227345-13">(</span><span·class="p"·data-group-id="9803227345-13">)</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·457bacbe056fea04bb51d2bd6b06303648c2b633d55ec01ad988f43bbb545ed1·...·]-12">)</span><span·class="p">,</span><span·class="w">168 ··</span><span·class="nf">register</span><span·class="p"·data-group-id="0614130206-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="0614130206-13">(</span><span·class="p"·data-group-id="0614130206-13">)</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·32f1c547c717f1a28460604e93a6ed49d2c27388797f30c34a4325babce18c23·...·]-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="9803227345-14">(</span><span·class="p"·data-group-id="9803227345-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="9803227345-15">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9803227345-16">[</span><span·class="p"·data-group-id="9803227345-16">]</span><span·class="p"·data-group-id="9803227345-14">)</span><span·class="p">,</span><span·class="w"> 
170 ··</span><span·class="nf">loop</span><span·class="p"·data-group-id="9803227345-17">(</span><span·class="n">Port</span><span·class="p"·data-group-id="9803227345-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="0614130206-14">(</span><span·class="p"·data-group-id="0614130206-15">{</span><span·class="nb">spawn</span><[·...·truncated·by·diffoscope;·len:·383,·SHA:·04ec65dcf8b6613ec37ef035d34f4313bfeb790155f0d6a0b5a47e9cf531b433·...·]
 170 ··</span><span·class="nf">loop</span><span·class="p"·data-group-id="0614130206-17">(</span><span·class="n">Port</span><span·class="p"·data-group-id="0614130206-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="2110041245-1">(</span><span·class="n">X</span><span·class="p"·data-group-id="2110041245-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="3128025743-1">(</span><span·class="n">X</span><span·class="p"·data-group-id="3128025743-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="2110041245-2">(</span><span·class="p"·data-group-id="2110041245-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="2110041245-3">}</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·12,·SHA:·5a09e81fe21b4998af109709db3f17711ae92ad6f0f6775ac3223d773ae66209·...·]-2">)</span><span·class="p">.</span><span·class="w">172 ····</span><span·class="nf">call_port</span><span·class="p"·data-group-id="3128025743-2">(</span><span·class="p"·data-group-id="3128025743-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="3128025743-3">}</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·12,·SHA:·4b5a88d88c0c9ee2ada47ade4625b647af1b262f8f16899a998b94d0b13e9261·...·]-2">)</span><span·class="p">.</span><span·class="w">
173 </span><span·class="nf">bar</span><span·class="p"·data-group-id="2110041245-4">(</span><span·class="n">Y</span><span·class="p"·data-group-id="2110041245-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="3128025743-4">(</span><span·class="n">Y</span><span·class="p"·data-group-id="3128025743-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="2110041245-5">(</span><span·class="p"·data-group-id="2110041245-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="2110041245-6">}</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·12,·SHA:·5a09e81fe21b4998af109709db3f17711ae92ad6f0f6775ac3223d773ae66209·...·]-5">)</span><span·class="p">.</span><span·class="w">174 ····</span><span·class="nf">call_port</span><span·class="p"·data-group-id="3128025743-5">(</span><span·class="p"·data-group-id="3128025743-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="3128025743-6">}</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·12,·SHA:·4b5a88d88c0c9ee2ada47ade4625b647af1b262f8f16899a998b94d0b13e9261·...·]-5">)</span><span·class="p">.</span><span·class="w">
  
175 </span><span·class="nf">call_port</span><span·class="p"·data-group-id="2110041245-7">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="2110041245-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="3128025743-7">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="3128025743-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="2110041245-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="2110041245-9">(</span><span·class="p"·data-group-id="2110041245-9">)</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·91,·SHA:·fc415db4180977462aa5ab2c47ae8f3feafab3a4b2b703ef89de62502b010f17·...·]-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="3128025743-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="3128025743-9">(</span><span·class="p"·data-group-id="3128025743-9">)</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·91,·SHA:·ae92105a5d45d0c5c2813505b8f39fdc5621e86d29f96dd57adf810bf2b39749·...·]-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="2110041245-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="2110041245-10">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">178 ········</span><span·class="p"·data-group-id="3128025743-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="3128025743-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="9166969913-1">(</span><span·class="n">Port</span><span·class="p"·data-group-id="9166969913-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="0881278492-1">(</span><span·class="n">Port</span><span·class="p"·data-group-id="0881278492-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="9166969913-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="9166969913-2">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">182 ········</span><span·class="p"·data-group-id="0881278492-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="0881278492-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="9166969913-3">{</span><span·class="nf">self</span><span·class="p"·data-group-id="9166969913-4">(</span><span·class="p"·data-group-id="9166969913-4">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9166969913-5">{</span[·...·truncated·by·diffoscope;·len:·336,·SHA:·6b6669a908b8f897851bcf6c8875d56e026fd342c107b622a76f12c03355c5c0·...·]-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="0881278492-3">{</span><span·class="nf">self</span><span·class="p"·data-group-id="0881278492-4">(</span><span·class="p"·data-group-id="0881278492-4">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0881278492-5">{</span[·...·truncated·by·diffoscope;·len:·336,·SHA:·d443c712d17853a12290f7969fb0b3d11a595de3686346540119b71313329942·...·]-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="9166969913-7">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9166969913-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:·ac81ebd0cd6412d90ec335360468214853f57ab4f0bb3fb5219dabdf40314106·...·]-7">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">185 ················</span><span·class="p"·data-group-id="0881278492-7">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0881278492-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:·30ffbdedece966e47407d711a860e7a783faa314eebed8dfddc21e168200c1af·...·]-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="9166969913-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="9166969913-10">(</span><span·class="n">Data</span><span·class="p"·data-group-id="9166969913-10[·...·truncated·by·diffoscope;·len:·51,·SHA:·38cb5746026f4b040e2f7a1b748571921bbab59f249b4fb76b504a7abc67421f·...·]-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="0881278492-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="0881278492-10">(</span><span·class="n">Data</span><span·class="p"·data-group-id="0881278492-10[·...·truncated·by·diffoscope;·len:·51,·SHA:·79ef895cc1874833b8429e07dd14d822aa15f4ad682e0e79a8cb16441f32e639·...·]-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="9166969913-11">(</span><span·class="n">Port</span><span·class="p"·data-group-id="9166969913-11">)</span><span·class="w">188 ············</span><span·class="nf">loop</span><span·class="p"·data-group-id="0881278492-11">(</span><span·class="n">Port</span><span·class="p"·data-group-id="0881278492-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="7821827783-1">(</span><span·class="p"·data-group-id="7821827783-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="7821827783-2">}</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·291,·SHA:·6d960260c044c15476eb968b15d38ef49bc2a369ecb425755877e3c277037dbc·...·]-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="6420779568-1">(</span><span·class="p"·data-group-id="6420779568-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="6420779568-2">}</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·291,·SHA:·c5fdb8e6be4097766feea0a29c581f414d852638ea3ea84ef80fbddd9c8a5132·...·]-3">]</span><span·class="p">;</span><span·class="w">
193 </span><span·class="nf">encode</span><span·class="p"·data-group-id="7821827783-4">(</span><span·class="p"·data-group-id="7821827783-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="7821827783-5">}</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·291,·SHA:·28b68ae8bb1abe13412bb3838714d52937d2202e4b6e695b5c1beb54547fa610·...·]-6">]</span><span·class="p">.</span><span·class="w">193 </span><span·class="nf">encode</span><span·class="p"·data-group-id="6420779568-4">(</span><span·class="p"·data-group-id="6420779568-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="6420779568-5">}</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·291,·SHA:·20bca8a2d3c6b1c2294e386c38c8c8736b9cd844a23861e38ca48797d3ef1bfd·...·]-6">]</span><span·class="p">.</span><span·class="w">
  
194 </span><span·class="nf">decode</span><span·class="p"·data-group-id="7821827783-7">(</span><span·class="p"·data-group-id="7821827783-8">[</span><span·class="n">Int</span><span·class="p"·data-group-id="7821827783-8">]</span><span·class="p"·data-group-id="7821827783-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="6420779568-7">(</span><span·class="p"·data-group-id="6420779568-8">[</span><span·class="n">Int</span><span·class="p"·data-group-id="6420779568-8">]</span><span·class="p"·data-group-id="6420779568-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="7023039658-1">(</span><span·class="ss">complex5</span><span·class="p"·data-group-id="7023039658-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="0371190647-1">(</span><span·class="ss">complex5</span><span·class="p"·data-group-id="0371190647-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="7023039658-2">(</span><span·class="p"·data-group-id="7023039658-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:·7af2a7a90aa59428add496c5f0ba30408134571e09b4e4e5894d9cc2c0f0895a·...·]-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="0371190647-2">(</span><span·class="p"·data-group-id="0371190647-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:·0706dd3c82e38a317b668204cbf3abce87da33e70d421535ff63434dccfd7e6c·...·]-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="7023039658-4">(</span><span·class="p"·data-group-id="7023039658-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:·88a046a71d6bf22d4bbe7bf463369656cf00da0e27f504ecbfc49fcca68f6d6c·...·]-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="0371190647-4">(</span><span·class="p"·data-group-id="0371190647-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:·7f608dd75f3a939a10c4f8b544f718ff47af598dabd3277ba64b968b6297357b·...·]-4">)</span><span·class="p">.</span><span·class="w">
  
199 </span><span·class="nf">start</span><span·class="p"·data-group-id="7023039658-6">(</span><span·class="n">SharedLib</span><span·class="p"·data-group-id="7023039658-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="0371190647-6">(</span><span·class="n">SharedLib</span><span·class="p"·data-group-id="0371190647-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="7023039658-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="7023039658-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="0371190647-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="0371190647-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="7023039658-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="7023039658-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="0371190647-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="0371190647-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="7023039658-9">(</span><span·class="p"·data-group-id="7023039658-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="7023039658-10">}</span><spa[·...·truncated·by·diffoscope;·len:·37,·SHA:·6012a50dd2b0a93577edbbf413c680b0052716f09de2b136b5417d39fdfc3533·...·]-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="0371190647-9">(</span><span·class="p"·data-group-id="0371190647-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="0371190647-10">}</span><spa[·...·truncated·by·diffoscope;·len:·37,·SHA:·cca6e547a72c251b0d82a6182c223db7f7c5fbacea1bfe24183075ba134c4692·...·]-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="7023039658-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="7023039658-12">[</span><s[·...·truncated·by·diffoscope;·len:·125,·SHA:·7d1946c750af75ac956755842d6b367e3796a0db20d2d8c1329009b576abccf7·...·]-11">)</span><span·class="p">.</span><span·class="w">205 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="0371190647-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="0371190647-12">[</span><s[·...·truncated·by·diffoscope;·len:·125,·SHA:·68e1ba3a6aea8aedc5540c1ad46208f014f4426186e367e1c77a0e77ad6d8825·...·]-11">)</span><span·class="p">.</span><span·class="w">
  
206 </span><span·class="nf">init</span><span·class="p"·data-group-id="7023039658-13">(</span><span·class="n">SharedLib</span><span·class="p"·data-group-id="7023039658-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="0371190647-13">(</span><span·class="n">SharedLib</span><span·class="p"·data-group-id="0371190647-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="7023039658-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="7023039658-15">(</span><span·class="p"·data-group-id="7023039658-15">)</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·af2e38cb8a9d283efdd69ba6d4cb837b1dabfb71e1f6d9ed14452a18845f0ada·...·]-14">)</span><span·class="p">,</span><span·class="w">207 ····</span><span·class="nf">register</span><span·class="p"·data-group-id="0371190647-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="0371190647-15">(</span><span·class="p"·data-group-id="0371190647-15">)</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·c1389c614dcfab828b471416ab4d8c96a703a78e3ee15005c393165a4adfa88b·...·]-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="7023039658-16">(</span><span·class="p"·data-group-id="7023039658-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="7023039658-17">}</span><span·class="p">[·...·truncated·by·diffoscope;·len:·181,·SHA:·950a17b6ea22b3140cb29bdb9de2745e533f5bdace71b3707237288e75f86d41·...·]-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="0371190647-16">(</span><span·class="p"·data-group-id="0371190647-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="0371190647-17">}</span><span·class="p">[·...·truncated·by·diffoscope;·len:·181,·SHA:·9d609b1d284dcbcba977b149016476d10f4c0f8563029ad4f8af169283cea724·...·]-16">)</span><span·class="p">,</span><span·class="w">
209 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="7023039658-19">(</span><span·class="n">Port</span><span·class="p"·data-group-id="7023039658-19">)</span><span·class="p">.</span><span·class="w">209 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="0371190647-19">(</span><span·class="n">Port</span><span·class="p"·data-group-id="0371190647-19">)</span><span·class="p">.</span><span·class="w">
  
210 </span><span·class="nf">stop</span><span·class="p"·data-group-id="7023039658-20">(</span><span·class="p"·data-group-id="7023039658-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="0371190647-20">(</span><span·class="p"·data-group-id="0371190647-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="7023039658-21">(</span><span·class="n">X</span><span·class="p"·data-group-id="7023039658-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="0371190647-21">(</span><span·class="n">X</span><span·class="p"·data-group-id="0371190647-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="7023039658-22">(</span><span·class="p"·data-group-id="7023039658-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="7023039658-23">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·de2ec2f41551c06e354bdd80da1451415a896941bfe0e58bb4a49c86c79e15f6·...·]-22">)</span><span·class="p">.</span><span·class="w">213 ····</span><span·class="nf">call_port</span><span·class="p"·data-group-id="0371190647-22">(</span><span·class="p"·data-group-id="0371190647-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="0371190647-23">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·2a330d8ce662b21dc0267123c4582a1eac8f8f3549558e95d29472e395658e9e·...·]-22">)</span><span·class="p">.</span><span·class="w">
214 </span><span·class="nf">bar</span><span·class="p"·data-group-id="7023039658-24">(</span><span·class="n">Y</span><span·class="p"·data-group-id="7023039658-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="0371190647-24">(</span><span·class="n">Y</span><span·class="p"·data-group-id="0371190647-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="7023039658-25">(</span><span·class="p"·data-group-id="7023039658-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="7023039658-26">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·de2ec2f41551c06e354bdd80da1451415a896941bfe0e58bb4a49c86c79e15f6·...·]-25">)</span><span·class="p">.</span><span·class="w">215 ····</span><span·class="nf">call_port</span><span·class="p"·data-group-id="0371190647-25">(</span><span·class="p"·data-group-id="0371190647-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="0371190647-26">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·2a330d8ce662b21dc0267123c4582a1eac8f8f3549558e95d29472e395658e9e·...·]-25">)</span><span·class="p">.</span><span·class="w">
  
216 </span><span·class="nf">call_port</span><span·class="p"·data-group-id="7023039658-27">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="7023039658-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="0371190647-27">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="0371190647-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="7023039658-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="7023039658-29">(</span><span·class="p"·data-group-id="7023039658-29">)</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·94,·SHA:·f3a9fe9868ab40be6054f158f828f59a6cf289c7fe162987ebcec1d28fd7c058·...·]-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="0371190647-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="0371190647-29">(</span><span·class="p"·data-group-id="0371190647-29">)</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·94,·SHA:·9d02aa9b4398ebb4538f981b1bb7134e3f8789a7c42a35eae391e5d01620d7d1·...·]-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="7023039658-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="7023039658-30">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">219 »       </span><span·class="p"·data-group-id="0371190647-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="0371190647-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="7023039658-31">(</span><span·class="n">Port</span><span·class="p"·data-group-id="7023039658-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="0371190647-31">(</span><span·class="n">Port</span><span·class="p"·data-group-id="0371190647-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="7023039658-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="7023039658-32">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">224 »       </span><span·class="p"·data-group-id="0371190647-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="0371190647-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="7023039658-33">{</span><span·class="nf">self</span><span·class="p"·data-group-id="7023039658-34">(</span><span·class="p"·data-group-id="7023039658-34">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7023039658-35">{</[·...·truncated·by·diffoscope;·len:·343,·SHA:·e4dbb865bfe7deb0d03eead73ce3f51c27c9a2cfee7713c7a4fe35addb50c64f·...·]-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="0371190647-33">{</span><span·class="nf">self</span><span·class="p"·data-group-id="0371190647-34">(</span><span·class="p"·data-group-id="0371190647-34">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0371190647-35">{</[·...·truncated·by·diffoscope;·len:·343,·SHA:·0313982c9f1d2a29ce38e57a3be9ee69b028e68fab32042539c6dbed6252b7b3·...·]-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="7023039658-37">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7023039658-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:·f9fdc454ef9b2a4cbc6a774f42e0c3c04f0b772521650b28fb91857a28ab427d·...·]-37">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">227 »       »       </span><span·class="p"·data-group-id="0371190647-37">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0371190647-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:·4cdfe7acfdf4ae71319e612f89fbafa0d569f859b809375f2a04f455aac4062a·...·]-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="7023039658-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="7023039658-40">(</span><span·class="n">Data</span><span·class="p"·data-group-id="7023039658-4[·...·truncated·by·diffoscope;·len:·52,·SHA:·21a727e42cf13f18313d0a102b887a7a766f5319b3a8bba473dff63a11374650·...·]-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="0371190647-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="0371190647-40">(</span><span·class="n">Data</span><span·class="p"·data-group-id="0371190647-4[·...·truncated·by·diffoscope;·len:·52,·SHA:·cf8b8b33917c876a9c05e2ec4320a33945fd9f48c4e6811b27445e660ad6eedf·...·]-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="7023039658-41">(</span><span·class="n">Port</span><span·class="p"·data-group-id="7023039658-41">)</span><span·class="p">;</span><span·class="w">230 »       ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="0371190647-41">(</span><span·class="n">Port</span><span·class="p"·data-group-id="0371190647-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="7023039658-42">{</span><span·class="nf">self</span><span·class="p"·data-group-id="7023039658-43">(</span><span·class="p"·data-group-id="7023039658-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:·346bb383dd88d4700f45030e0a89a4a8c49c65153aaf8c390d3e942f467d205f·...·]-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="0371190647-42">{</span><span·class="nf">self</span><span·class="p"·data-group-id="0371190647-43">(</span><span·class="p"·data-group-id="0371190647-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:·78477d0ae015705c6f55153d5e74c7ebed49557a508abc9e30f1b36c5601a5cf·...·]-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="7023039658-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="7023039658-44">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">234 »       »       </span><span·class="p"·data-group-id="0371190647-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="0371190647-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="7023039658-45">(</span><span·class="ss">normal</span><span·class="p"·data-group-id="7023039658-45">)</span><span·class="w">235 »       »       ····</span><span·class="nf">exit</span><span·class="p"·data-group-id="0371190647-45">(</span><span·class="ss">normal</span><span·class="p"·data-group-id="0371190647-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="7023039658-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="7023039658-46">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">237 »       </span><span·class="p"·data-group-id="0371190647-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="0371190647-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="7023039658-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="7023039658-48">[</sp[·...·truncated·by·diffoscope;·len:·127,·SHA:·b4cce6734ba22a537a0bfa94b23fa447e91ca8968055a3d18b95566b509946c1·...·]-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="0371190647-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="0371190647-48">[</sp[·...·truncated·by·diffoscope;·len:·127,·SHA:·6884526d60715e58e5f62339cc8d0827c6a0201a13b55e59612046ab1222c904·...·]-47">)</span><span·class="p">,</span><span·class="w">
239 »       ····</span><span·class="nf">exit</span><span·class="p"·data-group-id="7023039658-49">(</span><span·class="ss">port_terminated</span><span·class="p"·data-group-id="7023039658-49">)</span><span·class="w">239 »       ····</span><span·class="nf">exit</span><span·class="p"·data-group-id="0371190647-49">(</span><span·class="ss">port_terminated</span><span·class="p"·data-group-id="0371190647-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="7023039658-50">(</span><span·class="p"·data-group-id="7023039658-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="7023039658-51">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·296,·SHA:·ce95b4979b236767bcb5361726f465e354247437534b4c43d3fc24dad54da6b6·...·]-52">]</span><span·class="p">;</span><span·class="w">241 </span><span·class="nf">encode</span><span·class="p"·data-group-id="0371190647-50">(</span><span·class="p"·data-group-id="0371190647-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="0371190647-51">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·296,·SHA:·65503c1a8f969945f55c6b3c7998b21e70d36f4cc03524390a315e835fb6e52e·...·]-52">]</span><span·class="p">;</span><span·class="w">
242 </span><span·class="nf">encode</span><span·class="p"·data-group-id="7023039658-53">(</span><span·class="p"·data-group-id="7023039658-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="7023039658-54">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·296,·SHA:·cd9f65c633506cd196518421497b7c6d55287d76f00dbfecf6ca400a5f2b358a·...·]-55">]</span><span·class="p">.</span><span·class="w">242 </span><span·class="nf">encode</span><span·class="p"·data-group-id="0371190647-53">(</span><span·class="p"·data-group-id="0371190647-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="0371190647-54">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·296,·SHA:·fd8954b7cbbe39aa2d7959b8bf9d8b0f76a678c967b7371e471cd5686ca971d4·...·]-55">]</span><span·class="p">.</span><span·class="w">
  
243 </span><span·class="nf">decode</span><span·class="p"·data-group-id="7023039658-56">(</span><span·class="p"·data-group-id="7023039658-57">[</span><span·class="n">Int</span><span·class="p"·data-group-id="7023039658-57">]</span><span·class="p"·data-group-id="7023039658-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="0371190647-56">(</span><span·class="p"·data-group-id="0371190647-57">[</span><span·class="n">Int</span><span·class="p"·data-group-id="0371190647-57">]</span><span·class="p"·data-group-id="0371190647-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="8123043830-1">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">14.2</span><span·class="p"·data-group-id="8123043830-1">]</span><span·class="w">·</span><span·class="p"·data-group-id="8123043830-2">[</span><span·class="ss">source<[·...·truncated·by·diffoscope;·len:·1283,·SHA:·2f06b056ff9347001385745a8c96bfb2e56cc0c29d18e0bf1ddf10837e5768c0·...·]-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="0880418841-1">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">14.2</span><span·class="p"·data-group-id="0880418841-1">]</span><span·class="w">·</span><span·class="p"·data-group-id="0880418841-2">[</span><span·class="ss">source<[·...·truncated·by·diffoscope;·len:·1283,·SHA:·d781d3be9c4178027d4dab37910f094aaa940536fdd6f109879fd70883582b4b·...·]-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="8123043830-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:·0603e1401a9c16f04d400269bd0edd4959f20408121d7886355f2012d453c606·...·]-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="0880418841-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:·6916e7e17d678b687196d58ee8fc1ddb5b80425628a5c4bab4cb61b55ab6d1f2·...·]-8">)</span><span·class="gp·unselectable">
356 1&gt;·</span><span·class="nf">c</span><span·class="p"·data-group-id="8123043830-10">(</span><span·class="ss">complex5</span><span·class="p"·data-group-id="8123043830-10">)</span><span·class="p">.</span><span·class="w">356 1&gt;·</span><span·class="nf">c</span><span·class="p"·data-group-id="0880418841-10">(</span><span·class="ss">complex5</span><span·class="p"·data-group-id="0880418841-10">)</span><span·class="p">.</span><span·class="w">
357 </span><span·class="p"·data-group-id="8123043830-11">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">complex5</span><span·class="p"·data-group-id="8123043830-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:·60166d9cc4a3916a87171c11417fb1fe12960ece58b6dad8d6bc33fc39b20e5c·...·]-1">)</span><span·class="p">.</span><span·class="w">357 </span><span·class="p"·data-group-id="0880418841-11">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">complex5</span><span·class="p"·data-group-id="0880418841-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:·2898cdf4b040a00ebbfaaced5a7675ca3b71f658f103799fd4339343ace4b4ee·...·]-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.1/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="8206575909-1">(</span><span·class="n">Module</span><span·class="p"·data-group-id="8206575909-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.1/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="6765275521-1">(</span><span·class="n">Module</span><span·class="p"·data-group-id="6765275521-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="8206575909-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="8206575909-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="6765275521-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="6765275521-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.6/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.6/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.6/doc/html/erlc_cmd.html">erlc</a>·executable·in·ERTS.·It135 shell,·see·the·<a·href="../../erts-15.2.6/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="5012107343-1">(</span><span·class="ss">m</span><span·class="p"·data-group-id="5012107343-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="5012107343-2">(</span><span·class="p"·data-group-id="5012107343-3">[</span><span·class="ss">loop</span><span·class="p">/</span><span·class="mi">0</span><span·class=[·...·truncated·by·diffoscope;·len:·84,·SHA:·61e783a08efebff1287054affde7bc42dfd28a6665311e37cb6d1d071b6503b7·...·]">)</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="1458843946-1">(</span><span·class="ss">m</span><span·class="p"·data-group-id="145[·...·truncated·by·diffoscope;·len:·9,·SHA:·831e77053025ea3132f85e72cda5278bfa0742e1aef3adf279bbe876d5d5b29e·...·]">)</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="1458843946-2">(</span><span·class="p"·data-group-id="1458843946-3">[</span><span·class="ss">loop</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="1458843946-3">]</span><span·class="p"·data-group-id="1458843946-2">)</span><span·class="p">.</span><span·class="w">
  
165 </span><span·class="nf">loop</span><span·class="p"·data-group-id="5012107343-4">(</span><span·class="p"·data-group-id="5012107343-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="1458843946-4">(</span><span·class="p"·data-group-id="1458843946-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="5012107343-5">(</span><span·class="p"·data-group-id="5012107343-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="1458843946-5">(</span><span·class="p"·data-group-id="1458843946-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="5012107343-6">(</span><span·class="p"·data-group-id="5012107343-6">)</span><span·class="w">171 ············</span><span·class="nf">loop</span><span·class="p"·data-group-id="1458843946-6">(</span><span·class="p"·data-group-id="1458843946-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="0117109966-1">(</span><span·class="n">Name</span><span·class="o">/</span><span·class="mi">0</span><span·class="p"·data-group-id="0117109966-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="2869322403-1">(</span><span·class="n">Name</span><span·class="o">/</span><span·class="mi">0</span><span·class="p"·data-group-id="2869322403-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="0428759801-1">(</span><span·class="ss">m</span><span·class="p"·data-group-id="0428759801-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="3659609109-1">(</span><span·class="ss">m</span><span·class="p"·data-group-id="3659609109-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="0428759801-2">(</span><span·class="ss">load_my_nifs</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="0428759801-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="3659609109-2">(</span><span·class="ss">load_my_nifs</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="3659609109-2">)</span><span·class="p">.</span><span·class="w">
  
197 </span><span·class="nf">load_my_nifs</span><span·class="p"·data-group-id="0428759801-3">(</span><span·class="p"·data-group-id="0428759801-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="3659609109-3">(</span><span·class="p"·data-group-id="3659609109-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="0428759801-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="0428759801-4">)</span><span·class="p">.</span></code></pre><p>If·the·call·to·<a·href="../../erts-15.2.6/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="3659609109-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="3659609109-4">)</span><span·class="p">.</span></code></pre><p>If·the·call·to·<a·href="../../erts-15.2.6/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="9652877573-1">(</span><span·class="p"·data-group-id="9652877573-2">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="9652877573-2">]</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·60,·SHA:·fc24e97d4b83be01a323c440addd602c2d0ce405f1b5fb42ae5653fef1704f00·...·]-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="8549071651-1">(</span><span·class="p"·data-group-id="8549071651-2">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="8549071651-2">]</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·60,·SHA:·26bf6ec1c1ad6f3260ae3b0ef81bc66ee777247a9be66c3a7285fc102ea42685·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
126 ····</span><span·class="p"·data-group-id="9652877573-3">[</span><span·class="n">H</span><span·class="p">|</span><span·class="nf">my_plus_plus</span><span·class="p"·data-group-id="9652877573-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:·e8901e82e0ccc1c17dab3ce0eb48cc234f3cda9f60618e9bd9db509d135bef56·...·]-3">]</span><span·class="p">;</span><span·class="w">126 ····</span><span·class="p"·data-group-id="8549071651-3">[</span><span·class="n">H</span><span·class="p">|</span><span·class="nf">my_plus_plus</span><span·class="p"·data-group-id="8549071651-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:·56edc0b8d137c697529f196a839bd4227069ce538305d6d605c5d34bf0165373·...·]-3">]</span><span·class="p">;</span><span·class="w">
127 </span><span·class="nf">my_plus_plus</span><span·class="p"·data-group-id="9652877573-5">(</span><span·class="p"·data-group-id="9652877573-6">[</span><span·class="p"·data-group-id="9652877573-6">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tail</span><span·class="p"·data-group-id="9652877573-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="8549071651-5">(</span><span·class="p"·data-group-id="8549071651-6">[</span><span·class="p"·data-group-id="8549071651-6">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tail</span><span·class="p"·data-group-id="8549071651-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="3828309339-1">(</span><span·class="p"·data-group-id="3828309339-2">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="3828309339-2">]</span><span·class="p"·data-group-id="3828309339-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="4588064754-1">(</span><span·class="p"·data-group-id="4588064754-2">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="4588064754-2">]</span><span·class="p"·data-group-id="4588064754-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="3828309339-3">(</span><span·class="n">T</span><span·class="p"·data-group-id="3828309339-3">)</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="p"·data-group-id="3828309339-4">[</span><span·class="n">H</span><span·c[·...·truncated·by·diffoscope;·len:·34,·SHA:·5333dc6484e50467b8929154f25d07fe92e02cdf875b92774dccab39c5fa8279·...·]-4">]</span><span·class="p">;</span><span·class="w">129 ····</span><span·class="nf">naive_reverse</span><span·class="p"·data-group-id="4588064754-3">(</span><span·class="n">T</span><span·class="p"·data-group-id="4588064754-3">)</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="p"·data-group-id="4588064754-4">[</span><span·class="n">H</span><span·c[·...·truncated·by·diffoscope;·len:·34,·SHA:·7d4d2c876dfa58e621d23289f0c2c3485da7f68fe1f9716da428d89cc63be030·...·]-4">]</span><span·class="p">;</span><span·class="w">
130 </span><span·class="nf">naive_reverse</span><span·class="p"·data-group-id="3828309339-5">(</span><span·class="p"·data-group-id="3828309339-6">[</span><span·class="p"·data-group-id="3828309339-6">]</span><span·class="p"·data-group-id="3828309339-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="4588064754-5">(</span><span·class="p"·data-group-id="4588064754-6">[</span><span·class="p"·data-group-id="4588064754-6">]</span><span·class="p"·data-group-id="4588064754-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
131 ····</span><span·class="p"·data-group-id="3828309339-7">[</span><span·class="p"·data-group-id="3828309339-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="4588064754-7">[</span><span·class="p"·data-group-id="4588064754-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="2394838907-1">(</span><span·class="n">List</span><span·class="p"·data-group-id="2394838907-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="9289580332-1">(</span><span·class="n">List</span><span·class="p"·data-group-id="9289580332-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="2394838907-2">(</span><span·class="n">List</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2394838907-3">[</span><span·class="p"·data-group-id="2394838907-3">]</span><span·class="p"·data-group-id="2394838907-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="9289580332-2">(</span><span·class="n">List</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9289580332-3">[</span><span·class="p"·data-group-id="9289580332-3">]</span><span·class="p"·data-group-id="9289580332-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="2394838907-4">(</span><span·class="p"·data-group-id="2394838907-5">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="2394838907-5">]</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·59,·SHA:·0c8ef80719c811fc4834d3e9b5af911493b7384f63faa124deaa0a5c472c6c49·...·]-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="9289580332-4">(</span><span·class="p"·data-group-id="9289580332-5">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="9289580332-5">]</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·59,·SHA:·f2edbd507ad208313460a23f3b1850e335f5816ef093653a475e0eed82a140cf·...·]-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="2394838907-6">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2394838907-7">[</span><span·class="n">H</span><span·class="p"·data-group-id="2394838907-7">]</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·108,·SHA:·795cce64a3dbe702572d37923d7df135025d56bd93db982433cd181726b8b93d·...·]-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="9289580332-6">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9289580332-7">[</span><span·class="n">H</span><span·class="p"·data-group-id="9289580332-7">]</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·108,·SHA:·8557ac5fe96960e716eda30b6f9d9aac3271dc0488f51ae39b0c3b84a9a8b884·...·]-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="2394838907-8">(</span><span·class="p"·data-group-id="2394838907-9">[</span><span·class="p"·data-group-id="2394838907-9">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="p"·data-group-id="2394838907-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="9289580332-8">(</span><span·class="p"·data-group-id="9289580332-9">[</span><span·class="p"·data-group-id="9289580332-9">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="p"·data-group-id="9289580332-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="1380752259-1">(</span><span·class="p"·data-group-id="1380752259-2">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="1380752259-2">]</span><span·class="p">,</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·58,·SHA:·a2a3f9ee3fca9b31fa868a6c8fcbd9b35a64b255a22273631de2d55a69867fd8·...·]-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="1023862804-1">(</span><span·class="p"·data-group-id="1023862804-2">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="1023862804-2">]</span><span·class="p">,</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·58,·SHA:·f9a5dd6e6ad575ac43fbf6b332a802ecf64f5fd81f2e0bb3623e702c1eb80048·...·]-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="1380752259-3">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1380752259-4">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">Acc</span><span·class="p"·data-group-id="13807[·...·truncated·by·diffoscope;·len:·58,·SHA:·ba9b334302442071d41d4477d95e31259a872dddec3b8720ab9c5e1c7777a92e·...·]-3">)</span><span·class="p">;</span><span·class="w">139 ····</span><span·class="nf">vanilla_reverse</span><span·class="p"·data-group-id="1023862804-3">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1023862804-4">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">Acc</span><span·class="p"·data-group-id="10238[·...·truncated·by·diffoscope;·len:·58,·SHA:·4d2af17871b7b546cb2a0e997dc0c18d28eb4da77102ed9cf260b2665f0346b2·...·]-3">)</span><span·class="p">;</span><span·class="w">
140 </span><span·class="nf">vanilla_reverse</span><span·class="p"·data-group-id="1380752259-5">(</span><span·class="p"·data-group-id="1380752259-6">[</span><span·class="p"·data-group-id="1380752259-6">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="p"·data-group-id="1380752259-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="1023862804-5">(</span><span·class="p"·data-group-id="1023862804-6">[</span><span·class="p"·data-group-id="1023862804-6">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="p"·data-group-id="1023862804-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="8817263288-1">(</span><span·class="n">State</span><span·class="p"·data-group-id="8817263288-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="7594651172-1">(</span><span·class="n">State</span><span·class="p"·data-group-id="7594651172-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="8817263288-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="8817263288-3">(</span><span·class="p"·data-group-id="8817263288-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="7594651172-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="7594651172-3">(</span><span·class="p"·data-group-id="7594651172-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="8817263288-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="8817263288-5">[</span><span·class="n">State</span><span·class="o">#</[·...·truncated·by·diffoscope;·len:·180,·SHA:·cddaeb1eb66069eb5ebaad7ac5dcc49bfa0ad9a0ea4be4222b34746b6e9e815f·...·]-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="7594651172-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="7594651172-5">[</span><span·class="n">State</span><span·class="o">#</[·...·truncated·by·diffoscope;·len:·180,·SHA:·be1510b46a510f28ddea02ad209cf1642efebf56593fc9abc5a6a37825633acf·...·]-4">)</span><span·class="w">
170 ··········</span><span·class="k">end</span><span·class="p"·data-group-id="8817263288-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="7594651172-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.6/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.6/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="4973480489-1">(</span><span·class="n">State</span><span·class="p"·data-group-id="4973480489-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="0681628292-1">(</span><span·class="n">State</span><span·class="p"·data-group-id="0681628292-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="4973480489-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="4973480489-3">(</span><span·class="p"·data-group-id="4973480489-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="0681628292-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="0681628292-3">(</span><span·class="p"·data-group-id="0681628292-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="4973480489-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="4973480489-5">[</span><span·class="nf">map_get</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·288,·SHA:·0581690afbb2f0e6f9d149db8942b3d5a72161200e00db441a0b5cf6d18ea63b·...·]-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="0681628292-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="0681628292-5">[</span><span·class="nf">map_get</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·288,·SHA:·42505662128699bb444b6fa61dd69742a7c90a8bd21dde046fb0b2d2b08e3d7e·...·]-4">)</span><span·class="w">
175 ··········</span><span·class="k">end</span><span·class="p"·data-group-id="4973480489-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.2/doc/html/gen_server.html"><code·class="inline">gen_server</code></a>175 ··········</span><span·class="k">end</span><span·class="p"·data-group-id="0681628292-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.2/doc/html/gen_server.html"><code·class="inline">gen_server</code></a>
176 behavior)·the·created·fun·is·sent·to·another·process:</p><p><strong>DO·NOT</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">handle_call</span><span·class="p"·data-group-id="9111651599-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:·28e3e3bd9eb71f30525f836a8c3d6720b02f64d45c2e9e28711e049fd638c2b9·...·]-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="4506128734-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:·7ee44c0215df32d8fb8c7ec46d946e260e5450b0127a922a1c6b6bc445240037·...·]-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="9111651599-2">(</span><span·class="p"·data-group-id="9111651599-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="4506128734-2">(</span><span·class="p"·data-group-id="4506128734-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="9111651599-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="9111651599-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="4506128734-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="4506128734-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="9208297272-1">(</span><span·class="p"·data-group-id="9208297272-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="7233337665-1">(</span><span·class="p"·data-group-id="7233337665-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="9208297272-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="9208297272-3">(</span><span·class="mi">1</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·147,·SHA:·1b4132f782f7c629d59d1a5c66a6d60624bc9facf63d3ea92efa4654969af73b·...·]-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="7233337665-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="7233337665-3">(</span><span·class="mi">1</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·147,·SHA:·03918bc18f31d26a43b376224619921556f28fa355bd1c14e8fd85e6518e0b1e·...·]-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="9511029632-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="9511029632-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="9512859216-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="9512859216-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="2082719223-1">(</span><span·class="p"·data-group-id="2082719223-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="4275684118-1">(</span><span·class="p"·data-group-id="4275684118-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="2082719223-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="2082719223-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="2082719223-3">)</span><span[·...·truncated·by·diffoscope;·len:·852,·SHA:·badc4f8ab2d9313310b9f60d763bb310339c79e40cbbe076a9c1ddd74b209c39·...·]-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="4275684118-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="4275684118-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="4275684118-3">)</span><span[·...·truncated·by·diffoscope;·len:·852,·SHA:·f6950ed905f722f3e516acfd2198feb37de23d1b213a51734dafd888a62af800·...·]-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="2082719223-7">{</span><span·class="ss">data</span><span·class="o">=</span><span·class="n">Shared</span><span·class="p"·data-group-id="2082719223-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="4275684118-7">{</span><span·class="ss">data</span><span·class="o">=</span><span·class="n">Shared</span><span·class="p"·data-group-id="4275684118-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="5091532448-1">(</span><span·class="n">State</span><span·class="p"·data-group-id="5091532448-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="8787191926-1">(</span><span·class="n">State</span><span·class="p"·data-group-id="8787191926-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="5091532448-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="5091532448-3">(</span><span·class="p"·data-group-id="5091532448-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="8787191926-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="8787191926-3">(</span><span·class="p"·data-group-id="8787191926-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="5091532448-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="5091532448-5">[</span><span·class="n">Info</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·74,·SHA:·d2fe6fe12b4c3cfadde1f288007a0c1e1227381208afc85ac53497616c9ab0ff·...·]-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="8787191926-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="8787191926-5">[</span><span·class="n">Info</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·74,·SHA:·2def08bab7413bd71c30125a98b7afc49c4a3adbfbd82d4341a0be0857e65db1·...·]-4">)</span><span·class="w">
196 ··········</span><span·class="k">end</span><span·class="p"·data-group-id="5091532448-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="8787191926-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="5748163402-1">(</span><span·class="n">State</span><span·class="p"·data-group-id="5748163402-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="2038385334-1">(</span><span·class="n">State</span><span·class="p"·data-group-id="2038385334-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="5748163402-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="5748163402-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="2038385334-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="2038385334-2">)</span><span·class="p">,</span><span·class="w">
199 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="5748163402-3">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="5748163402-4">(</span><span·class="p"·data-group-id="5748163402-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="2038385334-3">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="2038385334-4">(</span><span·class="p"·data-group-id="2038385334-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="5748163402-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="5748163402-6">[</span><span·class="n">Info</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·74,·SHA:·63d9ac4ef195a481a0b77345072ea29febf8e1373052a219e8dad92b4d291398·...·]-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="2038385334-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="2038385334-6">[</span><span·class="n">Info</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·74,·SHA:·8d341da19305ca67112bce2e45c9a868524b9a7b272e4687aca69336185f99c8·...·]-5">)</span><span·class="w">
201 ··········</span><span·class="k">end</span><span·class="p"·data-group-id="5748163402-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="2038385334-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.6/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.6/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.6/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.6/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.6/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.6/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.6/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="6226497742-1">(</span><span·class="nf">list_to_atom</span><span·class="p"·data-group-id="6226497742-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="6226497742-2">)</s[·...·truncated·by·diffoscope;·len:·195,·SHA:·2f605a0951936cd9f0aace36a814f5a42632564153b0671ba60c507e7ef73b38·...·]-1">)</span></code></pre><h2·id="length-1"·class="section-heading">216 is·passed·to·<a·href="../../erts-15.2.6/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="6565404237-1">(</span><span·class="nf">list_to_atom</span><span·class="p"·data-group-id="6565404237-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="6565404237-2">)</s[·...·truncated·by·diffoscope;·len:·195,·SHA:·92d89590846769c4c1b1005e89d7125530f68d1fa91848ec567398e06370c0c9·...·]-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.6/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.6/doc/html/erlang.html#tuple_size/1"><code·class="inline">tuple_size/1</code></a>,
224 <a·href="../../erts-15.2.6/doc/html/erlang.html#byte_size/1"><code·class="inline">byte_size/1</code></a>,·and·<a·href="../../erts-15.2.6/doc/html/erlang.html#bit_size/1"><code·class="inline">bit_size/1</code></a>,·which·all224 <a·href="../../erts-15.2.6/doc/html/erlang.html#byte_size/1"><code·class="inline">byte_size/1</code></a>,·and·<a·href="../../erts-15.2.6/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.6/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.6/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.6/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.6/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="8554735350-1">(</span><span·class="n">L</span><span·class="p"·data-group-id="8554735350-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="8554735350-2">(</span[·...·truncated·by·diffoscope;·len:·66,·SHA:·990c213a8baf1c2a1a45480e3cf25ec7de41c3a541bc7d2ae01cdda25a4d0923·...·]-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="6140650454-1">(</span><span·class="n">L</span><span·class="p"·data-group-id="6140650454-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="6140650454-2">(</span[·...·truncated·by·diffoscope;·len:·66,·SHA:·69bee56fc6c937beedd0cb2439d698052cc3f625af60025b70753a01a35e2930·...·]-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="4098434202-1">(</span><span·class="p"·data-group-id="4098434202-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:·7c79b1bf0e95045e30ffcc1947e0cade866f57567679d6193f8a585ac99191c6·...·]-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="0903121593-1">(</span><span·class="p"·data-group-id="0903121593-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:·e94e14157a0ae0306f9339728ddda40f04a7351e292b88c14e01302b3eb7e2b3·...·]-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.6/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.6/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.6/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.6/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.6/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.6/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.6/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.6/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.6/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.6/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="5843133608-1">(</span><span·class="n">T0</span><span·class="p"·data-group-id="5843133608-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="5843133608-2">(<[·...·truncated·by·diffoscope;·len:·70,·SHA:·450df8bdba205a31e73c465d724b94e48e57b527da1f9efb2c69a2ac6a5d4de7·...·]08-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="0604197708-1">(</span><span·class="n">T0</span><span·class="p"·data-group-id="0604197708-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="0604197708-2">(<[·...·truncated·by·diffoscope;·len:·70,·SHA:·20fab1d20fbdc250c6de3d0f96a1ff5be953472015176732abecaccf6f26268b·...·]08-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="5843133608-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="5843133608-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="0604197708-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="0604197708-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="5843133608-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="5843133608-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="0604197708-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="0604197708-4">)</span><span·class="p">,</span><span·class="w">
248 ····</span><span·class="nf">setelement</span><span·class="p"·data-group-id="5843133608-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="5843133608-5">)</span><span·class="p">.</span></code></pre><p>The·two·following·<a·href="../../erts-15.2.6/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="0604197708-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="0604197708-5">)</span><span·class="p">.</span></code></pre><p>The·two·following·<a·href="../../erts-15.2.6/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.6/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.6/doc/html/erlang.html#setelement/3"><code·class="inline">setelement/3</code></a>·call·must·only·be250 <a·href="../../erts-15.2.6/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.6/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.6/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.6/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="7505266168-1">(</span><span·class="ss">tut14</span><span·class="p"·data-group-id="7505266168-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="1749401441-1">(</span><span·class="ss">tut14</span><span·class="p"·data-group-id="1749401441-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="7505266168-2">(</span><span·class="p"·data-group-id="7505266168-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:·3a5a959d105770800fdb36afb3321191748fdbdfd938221184b7fe589bccc8e1·...·]-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="1749401441-2">(</span><span·class="p"·data-group-id="1749401441-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:·c2bdb8d0d3fb23fdf0403eaf95c9f41cc958a56417767aa789ff7c15ca1d5cd6·...·]-2">)</span><span·class="p">.</span><span·class="w">
  
142 </span><span·class="nf">say_something</span><span·class="p"·data-group-id="7505266168-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="7505266168-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="1749401441-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="1749401441-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="7505266168-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="7505266168-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="1749401441-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="1749401441-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="7505266168-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="7505266168-7">[</span><span·class="n">What</s[·...·truncated·by·diffoscope;·len:·98,·SHA:·330e3ff44f277eadc8eac1ca3ddd05eadc4e753224ca5d1e2de079bb357ad72e·...·]-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="1749401441-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="1749401441-7">[</span><span·class="n">What</s[·...·truncated·by·diffoscope;·len:·98,·SHA:·cc9d8faee5a54c67960a306fbf7d3241afa3aaa149b30983d26d77d2de070930·...·]-6">)</span><span·class="p">,</span><span·class="w">
146 ····</span><span·class="nf">say_something</span><span·class="p"·data-group-id="7505266168-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="750[·...·truncated·by·diffoscope;·len:·7,·SHA:·6d1a47550fa9714a1617b538403ef98964b52d0b539431c49e8b8de0f7d0c545·...·]-8">)</span><span·class="p">.</span><span·class="w">146 ····</span><span·class="nf">say_something</span><span·class="p"·data-group-id="1749401441-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="174[·...·truncated·by·diffoscope;·len:·7,·SHA:·1bb9cb4f52145586a677e1e63b489d68318f1051e445d9acd5c308372a09862b·...·]-8">)</span><span·class="p">.</span><span·class="w">
  
147 </span><span·class="nf">start</span><span·class="p"·data-group-id="7505266168-9">(</span><span·class="p"·data-group-id="7505266168-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="1749401441-9">(</span><span·class="p"·data-group-id="1749401441-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="7505266168-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="7505266168-11">[</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·180,·SHA:·756c76e4d0c7aacc670c0c9b25a974aa916bc8d7647e4fe997c25aba04bd1d78·...·]-10">)</span><span·class="p">,</span><span·class="w">148 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="1749401441-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="1749401441-11">[</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·180,·SHA:·5f3826fc80b9312cb01945a9a2d13c1ccbd5f6792faab4911666ca808faf2043·...·]-10">)</span><span·class="p">,</span><span·class="w">
149 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="7505266168-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="7505266168-13">[</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·471,·SHA:·7f67009f3aa300f8b559e00e153b61f5ee969d60bfbf461ac735589c25f15026·...·]-1">)</span><span·class="p">.</span><span·class="w">149 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="1749401441-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="1749401441-13">[</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·471,·SHA:·1b2352d49fd87a60553d10c7f95595453b5801169f468337c06b158c17a5d1bd·...·]-1">)</span><span·class="p">.</span><span·class="w">
150 </span><span·class="p"·data-group-id="9077597296-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">tut14</span><span·class="p"·data-group-id="9077597296-2">}</span><span·class="gp·unselectable">150 </span><span·class="p"·data-group-id="7887819511-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">tut14</span><span·class="p"·data-group-id="7887819511-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="9077597296-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="9077597296-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="7887819511-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="7887819511-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="0993837789-1">(</span><span·class="p"·data-group-id="0993837789-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="3894873593-1">(</span><span·class="p"·data-group-id="3894873593-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="6938887084-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="6938887084-2">[</span><span·class="ss">go[·...·truncated·by·diffoscope;·len:·179,·SHA:·19c87dde3557189a8268478e7c6fed86ce3df25d0cc8c5720b0f444e81d0f026·...·]-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="2798441779-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="2798441779-2">[</span><span·class="ss">go[·...·truncated·by·diffoscope;·len:·179,·SHA:·f0507b84cb1caf3fb1b7dffedab753bcff9cf1f16d37b45ce3fe3f9f2702e331·...·]-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.2/doc/html/io.html#format/2"><code·class="inline">io:format/2</code></a>.·To·quote·<a·href="../../lib/stdlib-6.2.2/doc/html/io.html#tilde_p">the·manual</a>:</p><blockquote><p>~p·Writes·the·data·with·standard·syntax·in·the·same·way·as·~w,·but·breaks·terms173 example·shows·how·to·use·pids.</p><p>Notice·also·that·~p·is·used·instead·of·~w·in·<a·href="../../lib/stdlib-6.2.2/doc/html/io.html#format/2"><code·class="inline">io:format/2</code></a>.·To·quote·<a·href="../../lib/stdlib-6.2.2/doc/html/io.html#tilde_p">the·manual</a>:</p><blockquote><p>~p·Writes·the·data·with·standard·syntax·in·the·same·way·as·~w,·but·breaks·terms
174 whose·printed·representation·is·longer·than·one·line·into·many·lines·and·indents174 whose·printed·representation·is·longer·than·one·line·into·many·lines·and·indents
175 each·line·sensibly.·It·also·tries·to·detect·flat·lists·of·printable·characters·and175 each·line·sensibly.·It·also·tries·to·detect·flat·lists·of·printable·characters·and
176 to·output·these·as·strings</p></blockquote><h2·id="message-passing"·class="section-heading">176 to·output·these·as·strings</p></blockquote><h2·id="message-passing"·class="section-heading">
177 ··<a·href="#message-passing"·class="hover-link">177 ··<a·href="#message-passing"·class="hover-link">
178 ····<i·class="ri-link-m"·aria-hidden="true"></i>178 ····<i·class="ri-link-m"·aria-hidden="true"></i>
179 ··</a>179 ··</a>
180 ··<span·class="text">Message·Passing</span>180 ··<span·class="text">Message·Passing</span>
181 </h2>181 </h2>
182 <p>In·the·following·example·two·processes·are·created·and·they·send·messages·to182 <p>In·the·following·example·two·processes·are·created·and·they·send·messages·to
183 each·other·a·number·of·times.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="5878703055-1">(</span><span·class="ss">tut15</span><span·class="p"·data-group-id="5878703055-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="8782879573-1">(</span><span·class="ss">tut15</span><span·class="p"·data-group-id="8782879573-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="5878703055-2">(</span><span·class="p"·data-group-id="5878703055-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:·a41227f5365dc053502bdb41348b07621d7df916944353e98dd5eb300cb41ee8·...·]-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="8782879573-2">(</span><span·class="p"·data-group-id="8782879573-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:·557a00e0c93c9a3af996ca96a404b6b16b41a17614e4556feff76ab17c89173e·...·]-2">)</span><span·class="p">.</span><span·class="w">
  
186 </span><span·class="nf">ping</span><span·class="p"·data-group-id="5878703055-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="5878703055-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="8782879573-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="8782879573-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="5878703055-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="5878703055-6">[</span><span·class="p"·data-group-id="58787[·...·truncated·by·diffoscope;·len:·58,·SHA:·ed46e74c0c49e11ed4b930716eb1b8a87cabefe44c9cdc67f92347acfd3baf20·...·]-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="8782879573-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="8782879573-6">[</span><span·class="p"·data-group-id="87828[·...·truncated·by·diffoscope;·len:·58,·SHA:·2551abbd4f70213bcb9d0329631d7760f3a818dc63390028a1208df991320c90·...·]-5">)</span><span·class="p">;</span><span·class="w">
  
189 </span><span·class="nf">ping</span><span·class="p"·data-group-id="5878703055-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="5878703055-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="8782879573-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="8782879573-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="5878703055-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="5878703055-9">(</span><span·class="p"·data-group-id="5878703055-9">)</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·17,·SHA:·2fd2204196999444593e22e6cacda572fb5b42dba5b8c2fbf656aa3110d8ca39·...·]-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="8782879573-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="8782879573-9">(</span><span·class="p"·data-group-id="8782879573-9">)</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·17,·SHA:·e8d35dc03107078d94d9859409b6ae4887eb6a5e3a6042a37bb719377c042694·...·]-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="5878703055-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="5878703055-11">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·66,·SHA:·1ce8171cfe9fc123ed0cf1c317c09a6f36864d11806ad6c068bb23a3748e398a·...·]-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="8782879573-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="8782879573-11">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·66,·SHA:·ef6642c988964063c09880e6c864a52944f2015dfbf89c736d0296ab0925778a·...·]-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="5878703055-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="58[·...·truncated·by·diffoscope;·len:·8,·SHA:·8b22089560cff8a4e8cf5387ccdf6397e2e2952009ad5839fa69072bae845c6e·...·]-12">)</span><span·class="p">.</span><span·class="w">195 ····</span><span·class="nf">ping</span><span·class="p"·data-group-id="8782879573-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="87[·...·truncated·by·diffoscope;·len:·8,·SHA:·12d17543ffce78fa458728f2357081a0ea26a04f24ed87c01c6ea54b9e468ab0·...·]-12">)</span><span·class="p">.</span><span·class="w">
  
196 </span><span·class="nf">pong</span><span·class="p"·data-group-id="5878703055-13">(</span><span·class="p"·data-group-id="5878703055-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="8782879573-13">(</span><span·class="p"·data-group-id="8782879573-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="5878703055-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="5878703055-15">[</span><span·class="p"·data-group-id="587[·...·truncated·by·diffoscope;·len:·61,·SHA:·d0e70dafd507b66961c0934dbb800e0e30cc3119dd6a48d62ffe40d542cb7135·...·]-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="8782879573-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="8782879573-15">[</span><span·class="p"·data-group-id="878[·...·truncated·by·diffoscope;·len:·61,·SHA:·f0f1809e47e7b231172dd561240ac040d244f39920d1f98f87e5c6dbb2df068f·...·]-14">)</span><span·class="p">;</span><span·class="w">
200 ········</span><span·class="p"·data-group-id="5878703055-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="5878703055-16">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">200 ········</span><span·class="p"·data-group-id="8782879573-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="8782879573-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="5878703055-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="5878703055-18">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·66,·SHA:·11aedd3f366a903852310d02a4290cd220a9a341c2e652357e27fc551a10a68c·...·]-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="8782879573-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="8782879573-18">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·66,·SHA:·1645a602bc464d854b89327fed3186438b83050c146bcf739232e78a444202dd·...·]-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="5878703055-19">(</span><span·class="p"·data-group-id="5878703055-19">)</span><span·class="w">203 ············</span><span·class="nf">pong</span><span·class="p"·data-group-id="8782879573-19">(</span><span·class="p"·data-group-id="8782879573-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="5878703055-20">(</span><span·class="p"·data-group-id="5878703055-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="8782879573-20">(</span><span·class="p"·data-group-id="8782879573-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="5878703055-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="5878703055-22">[</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·69,·SHA:·bf386f2654e41f579911ce3e5eb0f53c800cdff5a9de8865719e1176bc2d75a2·...·]-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="8782879573-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="8782879573-22">[</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·69,·SHA:·06d48dbfd69ed1a424a37debf37ec5ad0a7118830e213f988fdc203120b5d192·...·]-21">)</span><span·class="p">,</span><span·class="w">
207 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="5878703055-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="5878703055-24">[</span><span·class="mi">3</span><[·...·truncated·by·diffoscope;·len:·462,·SHA:·ba4a5253671a2ce91ee713c3b9e2d079dfa15649f6bd89d47b2370d7f524e4de·...·]-1">)</span><span·class="p">.</span><span·class="w">207 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="8782879573-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="8782879573-24">[</span><span·class="mi">3</span><[·...·truncated·by·diffoscope;·len:·462,·SHA:·26aa4746dd7b49f346cf3c1ec38406875a1dec4ee67824e6487d1dc704220604·...·]-1">)</span><span·class="p">.</span><span·class="w">
208 </span><span·class="p"·data-group-id="7841751842-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">tut15</span><span·class="p"·data-group-id="7841751842-2">}</span><span·class="gp·unselectable">208 </span><span·class="p"·data-group-id="6027562955-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">tut15</span><span·class="p"·data-group-id="6027562955-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="7841751842-3">(</span><span·class="p"·data-group-id="7841751842-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="6027562955-3">(</span><span·class="p"·data-group-id="6027562955-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="4468419317-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="4468419317-2">[</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·66,·SHA:·48b6a6df79d192aceb1549146bf12f79f5b994d66bcf7fbdca4012c6fe72c1cf·...·]-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="9220570771-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="9220570771-2">[</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·66,·SHA:·616803f25933cdaef43f4c3c0ab8e41e5c87d3e4e91738cc912f3f64e225ab22·...·]-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="7478634432-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="7478634432-2">[</span><span·class="mi">3</span><sp[·...·truncated·by·diffoscope;·len:·575,·SHA:·9276f0272849e8147243aa583ea341b22a2af1be6258376c81e692e12c7db57f·...·]-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="9301281615-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="9301281615-2">[</span><span·class="mi">3</span><sp[·...·truncated·by·diffoscope;·len:·575,·SHA:·8439c16abca448bbda67e576f6c2f3e543affbf007f53c20889c9e3923a4bfaf·...·]-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="2199909467-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="2199909467-2">[</span><span·class="p"·data-group-id="21999[·...·truncated·by·diffoscope;·len:·58,·SHA:·7d9c2c3a2e927c42acd1a1b82ccf776872e7ce7c9c5251a3ab84497ce1f44548·...·]-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="8155654804-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="8155654804-2">[</span><span·class="p"·data-group-id="81556[·...·truncated·by·diffoscope;·len:·58,·SHA:·253d24e2991ed4b6de860558a8ca26c0f2001cd6f9af61436505ddb648b7532b·...·]-1">)</span><span·class="p">;</span><span·class="w">
222 ····</span><span·class="p"·data-group-id="2199909467-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="2199909467-3">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">222 ····</span><span·class="p"·data-group-id="8155654804-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="8155654804-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="2199909467-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="2199909467-5">[</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·63,·SHA:·a223e57ee8a73892b6d58c8fe7a5d04ae0a36d567f3b88631760b59ca01e9cd1·...·]-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="8155654804-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="8155654804-5">[</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·63,·SHA:·ed3eb1107991503c64e476ba44f1a762d25b0bd51ded242ae9878b168e8a1928·...·]-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="2199909467-6">(</span><span·class="p"·data-group-id="2199909467-6">)</span><span·class="w">225 ········</span><span·class="nf">pong</span><span·class="p"·data-group-id="8155654804-6">(</span><span·class="p"·data-group-id="8155654804-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="3363448931-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="3363448931-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="2872222038-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="2872222038-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="1797307918-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="1797307918-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="5669435451-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="5669435451-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="2360616019-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="2360616019-2">(</span><span·class="p"·data-group-id="2360616019-2">)</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·17,·SHA:·feee4ce6da4cf5b111950b3404a65a62a8a50ee4c88cc80be0df4f8f5bb62c35·...·]-1">}</span><span·class="p">,</span></code></pre><p><a·href="../../erts-15.2.6/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.6/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="4466617694-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="4466617694-2">(</span><span·class="p"·data-group-id="4466617694-2">)</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·17,·SHA:·638a3b6652b615f7881a16b93455b218db58027d45007a41f94614dff0bf4261·...·]-1">}</span><span·class="p">,</span></code></pre><p><a·href="../../erts-15.2.6/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.6/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="6072780936-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="6072780936-2">[</span><span·class="p"·data-group-id="6[·...·truncated·by·diffoscope;·len:·62,·SHA:·a6830ce6df61bb964fffea0fe4e37f7b1725e001985e2570d06262a4d6a59b3e·...·]-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="6816201220-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="6816201220-2">[</span><span·class="p"·data-group-id="6[·...·truncated·by·diffoscope;·len:·62,·SHA:·3d8902f34aa29f7e1cb749eeaf9287bfa1148bd44b8dc01b1cfb92e421b8ae2d·...·]-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="4380567310-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="438[·...·truncated·by·diffoscope;·len:·7,·SHA:·19f717029b06537ba15882d3228e7113a3905ada88bfffbab67fc41510a7a2fd·...·]-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="2580750527-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="258[·...·truncated·by·diffoscope;·len:·7,·SHA:·bee5472b49c1fd42d51ece263fa82a3c9745d45843d1b4d8f51f4558c74d0eec·...·]-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="5042689674-1">{</span><span·class="ss">release</span><span·class="p">,</span><span·class="w">145 </span><span·class="p"·data-group-id="4547314930-1">{</span><span·class="ss">release</span><span·class="p">,</span><span·class="w">
146 ·</span><span·class="p"·data-group-id="5042689674-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="5042689674-2">}</span><span·class="p">,</span><span·class="w">146 ·</span><span·class="p"·data-group-id="4547314930-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="4547314930-2">}</span><span·class="p">,</span><span·class="w">
147 ·</span><span·class="p"·data-group-id="5042689674-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="5042689674-3">}</span><span·class="p">,</span><span·class="w">147 ·</span><span·class="p"·data-group-id="4547314930-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="4547314930-3">}</span><span·class="p">,</span><span·class="w">
148 ·</span><span·class="p"·data-group-id="5042689674-4">[</span><span·class="p"·data-group-id="5042689674-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="5042689674-5">}</span><span·class="p">,</span><span·class="w">148 ·</span><span·class="p"·data-group-id="4547314930-4">[</span><span·class="p"·data-group-id="4547314930-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="4547314930-5">}</span><span·class="p">,</span><span·class="w">
149 ··</span><span·class="p"·data-group-id="5042689674-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="5042689674-6">}</span><span·class="p">,</span><span·class="w">149 ··</span><span·class="p"·data-group-id="4547314930-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="4547314930-6">}</span><span·class="p">,</span><span·class="w">
150 ··</span><span·class="p"·data-group-id="5042689674-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="5042689674-7">}</span><span·class="p">,</span><span·class="w">150 ··</span><span·class="p"·data-group-id="4547314930-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="4547314930-7">}</span><span·class="p">,</span><span·class="w">
151 ··</span><span·class="p"·data-group-id="5042689674-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="5042689674-8">}</span><span·class="p"·data-group-id="5042689674-4">]</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·f4a1f838cfd20bc03bbd362df9b08259c9d4339886e7ff9bd4610486e15cb068·...·]-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="4547314930-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="4547314930-8">}</span><span·class="p"·data-group-id="4547314930-4">]</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·eed8af6dbd5cb1a3eed29a209f9f26065296897800a4c91d7507fb16e7145857·...·]-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="3731660874-1">{</span><span·class="ss">release</span><span·class="p">,</span><span·class="w">249 </span><span·class="p"·data-group-id="9871657122-1">{</span><span·class="ss">release</span><span·class="p">,</span><span·class="w">
250 ·</span><span·class="p"·data-group-id="3731660874-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="3731660874-2">}</span><span·class="p">,</span><span·class="w">250 ·</span><span·class="p"·data-group-id="9871657122-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="9871657122-2">}</span><span·class="p">,</span><span·class="w">
251 ·</span><span·class="p"·data-group-id="3731660874-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="3731660874-3">}</span><span·class="p">,</span><span·class="w">251 ·</span><span·class="p"·data-group-id="9871657122-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="9871657122-3">}</span><span·class="p">,</span><span·class="w">
252 ·</span><span·class="p"·data-group-id="3731660874-4">[</span><span·class="p"·data-group-id="3731660874-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="3731660874-5">}</span><span·class="p">,</span><span·class="w">252 ·</span><span·class="p"·data-group-id="9871657122-4">[</span><span·class="p"·data-group-id="9871657122-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="9871657122-5">}</span><span·class="p">,</span><span·class="w">
253 ··</span><span·class="p"·data-group-id="3731660874-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="3731660874-6">}</span><span·class="p">,</span><span·class="w">253 ··</span><span·class="p"·data-group-id="9871657122-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="9871657122-6">}</span><span·class="p">,</span><span·class="w">
254 ··</span><span·class="p"·data-group-id="3731660874-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="3731660874-7">}</span><span·class="p">,</span><span·class="w">254 ··</span><span·class="p"·data-group-id="9871657122-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="9871657122-7">}</span><span·class="p">,</span><span·class="w">
255 ··</span><span·class="p"·data-group-id="3731660874-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="3731660874-8">}</span><span·class="p"·data-group-id="3731660874-4">]</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·d5790e286404c529f36051ba2ae1bc4ebe99e9fb0d955c90aca537a4ee5301a9·...·]-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="9871657122-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="9871657122-8">}</span><span·class="p"·data-group-id="9871657122-4">]</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·56c7286edb94aa8a41a69069c9d074762dd77994be2987aa035f89f260b73d45·...·]-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="7155913798-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="0542713775-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="7155913798-2">[</span><span·class="p"·data-group-id="7155913798-3">{</span><span·class="s">&quot;1.0&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="7155913798-4">[</span><span·class="p"·data-group-id="7155913798-5">{</span><span·class="[·...·truncated·by·diffoscope;·len:·277,·SHA:·57edc47a023ea6834f0b3634993a03dd59191759f88a09741c2e07fcc6e08ea9·...·]-2">]</span><span·class="p">,</span><span·class="w">258 ·</span><span·class="p"·data-group-id="0542713775-2">[</span><span·class="p"·data-group-id="0542713775-3">{</span><span·class="s">&quot;1.0&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="0542713775-4">[</span><span·class="p"·data-group-id="0542713775-5">{</span><span·class="[·...·truncated·by·diffoscope;·len:·277,·SHA:·b14f722164850a8e6fe6938136628a3bae694f85846b3ecbe8689cfcb8cdd60b·...·]-2">]</span><span·class="p">,</span><span·class="w">
259 ·</span><span·class="p"·data-group-id="7155913798-6">[</span><span·class="p"·data-group-id="7155913798-7">{</span><span·class="s">&quot;1.0&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="7155913798-8">[</span><span·class="p"·data-group-id="7155913798-9">{</span><span·class="[·...·truncated·by·diffoscope;·len:·330,·SHA:·e91e3a4de9f46e7065a0f98c5f6a343a004e4f8b121f4e6530675a69b967c25e·...·]-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="0542713775-6">[</span><span·class="p"·data-group-id="0542713775-7">{</span><span·class="s">&quot;1.0&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="0542713775-8">[</span><span·class="p"·data-group-id="0542713775-9">{</span><span·class="[·...·truncated·by·diffoscope;·len:·330,·SHA:·2a9d997b68f1c6e763dc8c6087a2765c52fc965448ae77b670b32b5d638ee965·...·]-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="4453174805-1">(</span><span·class="p"·data-group-id="4453174805-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="1217006893-1">(</span><span·class="p"·data-group-id="1217006893-1">)</span><span·class="p">.</span><span·class="w">
300 </span><span·class="p"·data-group-id="4453174805-2">[</span><span·class="p"·data-group-id="4453174805-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="1217006893-2">[</span><span·class="p"·data-group-id="1217006893-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="4453174805-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:·5434a1919e32fab73c3be1d326382f5a79dc12c67e7536d60a8460d3a755fc50·...·]-4">]</span><span·class="p">,</span><span·class="w">301 ··</span><span·class="p"·data-group-id="1217006893-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:·ac0bc0ba80b98e09efe09bffd6f4486f60f06e82a7f715f83c825468c283ace2·...·]-4">]</span><span·class="p">,</span><span·class="w">
302 ··</span><span·class="ss">current</span><span·class="p"·data-group-id="4453174805-3">}</span><span·class="p">,</span><span·class="w">302 ··</span><span·class="ss">current</span><span·class="p"·data-group-id="1217006893-3">}</span><span·class="p">,</span><span·class="w">
303 ·</span><span·class="p"·data-group-id="4453174805-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="1217006893-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="4453174805-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:·951b672b51a1807cbab5941826bd6e538cd981cb4a41c86404667dddec4fbf4f·...·]-6">]</span><span·class="p">,</span><span·class="w">304 ··</span><span·class="p"·data-group-id="1217006893-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:·2ba367d91d61e3398e9fa81a99032429d7c8dd1fb698472b55dba097e3bbe2ff·...·]-6">]</span><span·class="p">,</span><span·class="w">
305 ··</span><span·class="ss">permanent</span><span·class="p"·data-group-id="4453174805-5">}</span><span·class="p"·data-group-id="4453174805-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="1217006893-5">}</span><span·class="p"·data-group-id="1217006893-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="6128473060-1">(</span><span·class="ss">target_system</span><span·class="p"·data-group-id="6128473060-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="1451597604-1">(</span><span·class="ss">target_system</span><span·class="p"·data-group-id="1451597604-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="6128473060-2">(</span><span·class="p"·data-group-id="6128473060-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:·a2567343add1390ecc993a0206f1b13b4a72e3dcc36752c6f278324b46676563·...·]-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="1451597604-2">(</span><span·class="p"·data-group-id="1451597604-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:·b07049a2764bfddb703a9c2cec5d4a028f3624b5f818bfe404a41ce343ea58bb·...·]-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="6128473060-4">(</span><span·class="n">RelFileName</span><span·class="p"·data-group-id="6128473060-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="1451597604-4">(</span><span·class="n">RelFileName</span><span·class="p"·data-group-id="1451597604-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="6128473060-5">(</span><span·class="n">RelFileName</span><span·class="p">,</span><span·class="p"·data-group-id="6128473060-6">[</span><span·class="p"·data-group-id="6128473060-6">]</span><span·class="p"·data-group-id="6128473060-5">)</span><span·class="p">.</span><span·class="w">330 ····</span><span·class="nf">create</span><span·class="p"·data-group-id="1451597604-5">(</span><span·class="n">RelFileName</span><span·class="p">,</span><span·class="p"·data-group-id="1451597604-6">[</span><span·class="p"·data-group-id="1451597604-6">]</span><span·class="p"·data-group-id="1451597604-5">)</span><span·class="p">.</span><span·class="w">
  
331 </span><span·class="nf">create</span><span·class="p"·data-group-id="6128473060-7">(</span><span·class="n">RelFileName</span><span·class="p">,</span><span·class="n">SystoolsOpts</span><span·class="p"·data-group-id="6128473060-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="1451597604-7">(</span><span·class="n">RelFileName</span><span·class="p">,</span><span·class="n">SystoolsOpts</span><span·class="p"·data-group-id="1451597604-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="6128473060-8">(</span><span·class="n">RelFileName</span><span·class="p"·data-group-id="6128473060-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="1451597604-8">(</span><span·class="n">RelFileName</span><span·class="p"·data-group-id="1451597604-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="6128473060-9">(</span><span·class="n">Dir</span><span·class="p">,</span><span·class="s">&quot;plain&quot;</span><span·class="p"·data-group-id="6128473060-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="1451597604-9">(</span><span·class="n">Dir</span><span·class="p">,</span><span·class="s">&quot;plain&quot;</span><span·class="p"·data-group-id="1451597604-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="6128473060-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="6128473060-11">[</span><span·class="n">RelFile</s[·...·truncated·by·diffoscope;·len:·99,·SHA:·c871451c0272f626ff960abed16095ae1cd5fdad3146e9d676358525a077fe06·...·]-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="1451597604-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="1451597604-11">[</span><span·class="n">RelFile</s[·...·truncated·by·diffoscope;·len:·99,·SHA:·353ed5c5e8043b695fb13670556b8c8154a8a7bf08271d3c580a42357b3dfc7c·...·]-10">)</span><span·class="p">,</span><span·class="w">
337 ····</span><span·class="p"·data-group-id="6128473060-12">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6128473060-13">[</span><span·class="n">RelSpec</span><span·class="p"·data-group-id="6128473060-13">]</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·313,·SHA:·9a3023b3eeace34d576e15a747c638400b4269dc5926934a4489b42d2e51807a·...·]-14">)</span><span·class="p">,</span><span·class="w">337 ····</span><span·class="p"·data-group-id="1451597604-12">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1451597604-13">[</span><span·class="n">RelSpec</span><span·class="p"·data-group-id="1451597604-13">]</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·313,·SHA:·a6d30d38a9f33b16f8f3b753e220899e8a41a7f27bc9c12416e49e9f09828862·...·]-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="6128473060-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="1451597604-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="6128473060-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="6128473060-16">]</span><span·class="p"·data-group-id="6128473060-15">)</span><span·class="p">,</span><span·class="w">339 ··············</span><span·class="p"·data-group-id="1451597604-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="1451597604-16">]</span><span·class="p"·data-group-id="1451597604-15">)</span><span·class="p">,</span><span·class="w">
340 ····</span><span·class="p"·data-group-id="6128473060-17">{</span><span·class="ss">release</span><span·class="p">,</span><span·class="w">340 ····</span><span·class="p"·data-group-id="1451597604-17">{</span><span·class="ss">release</span><span·class="p">,</span><span·class="w">
341 ·····</span><span·class="p"·data-group-id="6128473060-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="6128473060-18">}</span><span·class="p">,</span><span·class="w">341 ·····</span><span·class="p"·data-group-id="1451597604-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="1451597604-18">}</span><span·class="p">,</span><span·class="w">
342 ·····</span><span·class="p"·data-group-id="6128473060-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="6128473060-19">}</span><span·class="p">,</span><span·class="w">342 ·····</span><span·class="p"·data-group-id="1451597604-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="1451597604-19">}</span><span·class="p">,</span><span·class="w">
343 ·····</span><span·class="n">AppVsns</span><span·class="p"·data-group-id="6128473060-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="1451597604-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="6128473060-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="1451597604-20">{</span><span·class="ss">release</span><span·class="p">,</span><span·class="w">
345 ····················</span><span·class="p"·data-group-id="6128473060-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="6128473060-21">}</span><span·class="p">,</span><span·class="w">345 ····················</span><span·class="p"·data-group-id="1451597604-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="1451597604-21">}</span><span·class="p">,</span><span·class="w">
346 ····················</span><span·class="p"·data-group-id="6128473060-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="6128473060-22">}</span><span·class="p">,</span><span·class="w">346 ····················</span><span·class="p"·data-group-id="1451597604-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="1451597604-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="6128473060-23">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="6128473060-24">(</span><span·class="p"·data-group-id="6128473060-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:·4daf433558ca692d594e7185b23e2df0bb12f70e3e00af709e33846d1d3489e1·...·]-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="1451597604-23">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="1451597604-24">(</span><span·class="p"·data-group-id="1451597604-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:·2ff8ddbc856c3721dcf5a007d89358b7496efef91fb1ee7d8a344165d00373bd·...·]-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="6128473060-26">(</span><span·class="p"·data-group-id="6128473060-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="6128473060-27">}</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·18,·SHA:·8c491dd62b43eb4e0a2dce6659e79993df577ee4e726dda91d2ce1bee49f1e5f·...·]-26">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">349 ····································</span><span·class="p"·data-group-id="1451597604-26">(</span><span·class="p"·data-group-id="1451597604-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="1451597604-27">}</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·18,·SHA:·b7628740d37476af1ef1324e22885e500e5ea6668427ff9a1ecae19f27644a86·...·]-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="6128473060-28">(</span><span·class="p">_</span><span·class="p"·data-group-id="6128473060-28">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">351 ····································</span><span·class="p"·data-group-id="1451597604-28">(</span><span·class="p">_</span><span·class="p"·data-group-id="1451597604-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="6128473060-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="1451597604-23">)</span><span·class="w">
354 ···················</span><span·class="p"·data-group-id="6128473060-20">}</span><span·class="p">,</span><span·class="w">354 ···················</span><span·class="p"·data-group-id="1451597604-20">}</span><span·class="p">,</span><span·class="w">
355 ····</span><span·class="p"·data-group-id="6128473060-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="6128473060-29">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·387,·SHA:·de27941019780d8f06242f080d605980b197987c8631a263a0ef7af1d6cbb0de·...·]-30">)</span><span·class="p">,</span><span·class="w">355 ····</span><span·class="p"·data-group-id="1451597604-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="1451597604-29">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·387,·SHA:·10cf8b28d366e23630ea17ad9d26a898bc66ae66dde919c1cb65b6163334bf2c·...·]-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="6128473060-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:·4c0c6c858ef38f267e6263f6eaa368c29581a15e1f7e4984052743c356e5d234·...·]-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="1451597604-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:·115b828930d41b4573aba3e890e7307bd03022c4eb5f1708496f07ba9fda07ba·...·]-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="6128473060-34">(</span><span·class="n">Fd</span><span·class="p"·data-group-id="6128473060-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="1451597604-34">(</span><span·class="n">Fd</span><span·class="p"·data-group-id="1451597604-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="6128473060-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="1451597604-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="6128473060-36">[</span><span·class="n">PlainRelFileName</span><span·class="p">,</span><span·class="n">PlainRelFileName</span><span·class="p"·data-group-id="6128473060-36">]</span><span·class="p"·data-group-id="6128473060-35">)</span><span·class="p">,</span><span·class="w">359 »       ······</span><span·class="p"·data-group-id="1451597604-36">[</span><span·class="n">PlainRelFileName</span><span·class="p">,</span><span·class="n">PlainRelFileName</span><span·class="p"·data-group-id="1451597604-36">]</span><span·class="p"·data-group-id="1451597604-35">)</span><span·class="p">,</span><span·class="w">
360 ····</span><span·class="nf">make_script</span><span·class="p"·data-group-id="6128473060-37">(</span><span·class="n">PlainRelFileName</span><span·class="p">,</span><span·class="n">SystoolsOpts</span><span·class="p"·data-group-id="6128473060-37">)</span><span·class="p">,</span><span·class="w">360 ····</span><span·class="nf">make_script</span><span·class="p"·data-group-id="1451597604-37">(</span><span·class="n">PlainRelFileName</span><span·class="p">,</span><span·class="n">SystoolsOpts</span><span·class="p"·data-group-id="1451597604-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="6128473060-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="1451597604-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="6128473060-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="6128473060-39">]</span><span·class="p"·data-group-id="6128473060-38">)</span><span·class="p">,</span><span·class="w">362 ··············</span><span·class="p"·data-group-id="1451597604-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="1451597604-39">]</span><span·class="p"·data-group-id="1451597604-38">)</span><span·class="p">,</span><span·class="w">
363 ····</span><span·class="nf">make_script</span><span·class="p"·data-group-id="6128473060-40">(</span><span·class="n">RelFileName</span><span·class="p">,</span><span·class="n">SystoolsOpts</span><span·class="p"·data-group-id="6128473060-40">)</span><span·class="p">,</span><span·class="w">363 ····</span><span·class="nf">make_script</span><span·class="p"·data-group-id="1451597604-40">(</span><span·class="n">RelFileName</span><span·class="p">,</span><span·class="n">SystoolsOpts</span><span·class="p"·data-group-id="1451597604-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="6128473060-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="6128473060-42">[</span><span·class="n">TarFil[·...·truncated·by·diffoscope;·len:·107,·SHA:·80259883cab113f7b4be736e110e54d21ff5d1ee608379810400cba536b6731b·...·]-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="1451597604-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="1451597604-42">[</span><span·class="n">TarFil[·...·truncated·by·diffoscope;·len:·107,·SHA:·157b2cd0f60ecfc65c58aa24ff6a4fea332b760d9d58799f479656368cbc99a3·...·]-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="6249175607-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="6349013824-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="6249175607-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="6349013824-1">}</span><span·class="p">.</span><span·class="w">
201 </span><span·class="p"·data-group-id="6249175607-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="6349013824-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="6249175607-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="6349013824-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.6/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.6/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.6/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.6/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="0894121597-1">(</span><span·class="p"·data-group-id="0894121597-2">&lt;&lt;</span><span·class="mi">1</span><span·class="p">:</span><span·class="mi">1</span><span·class="p"·data-group-id="0894121597-2">&gt;&gt;</span><span·class="p"·data-group-id="089412159[·...·truncated·by·diffoscope;·len:·1,·SHA:·7902699be42c8a8e46fbbb4501726517e86b22c56a189f7625a6da49081b2451·...·]-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="2142166775-1">(</span><span·class="p"·data-group-id="2142166775-2">&lt;&lt;</span><span·class="mi">1</span><span·class="p">:</span><span·class="mi">1</span><span·class="p"·data-group-id="2142166775-2">&gt;&gt;</span><span·class="p"·data-group-id="214216677[·...·truncated·by·diffoscope;·len:·1,·SHA:·ef2d127de37b942baad06145e54b0c619a1f22327b2ebbcfbec78f5564afe39d·...·]-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="0894121597-3">(</span><span·class="p"·data-group-id="0894121597-4">&lt;&lt;</span><span·class="mi">1</span><span·class="p">:</span><span·class="mi">1</span><span·class="p"·data-group-id="0894121597-4">&gt;&gt;</span><span·class="p"·data-group-id="089412159[·...·truncated·by·diffoscope;·len:·1,·SHA:·7902699be42c8a8e46fbbb4501726517e86b22c56a189f7625a6da49081b2451·...·]-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="2142166775-3">(</span><span·class="p"·data-group-id="2142166775-4">&lt;&lt;</span><span·class="mi">1</span><span·class="p">:</span><span·class="mi">1</span><span·class="p"·data-group-id="2142166775-4">&gt;&gt;</span><span·class="p"·data-group-id="214216677[·...·truncated·by·diffoscope;·len:·1,·SHA:·ef2d127de37b942baad06145e54b0c619a1f22327b2ebbcfbec78f5564afe39d·...·]-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="0894121597-5">(</span><span·class="p"·data-group-id="0894121597-6">&lt;&lt;</span><span·class="mi">42</span><span·class="p"·data-group-id="0894121597-6">&gt;&gt;</span><span·class="p"·data-group-id="0894121597-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="2142166775-5">(</span><span·class="p"·data-group-id="2142166775-6">&lt;&lt;</span><span·class="mi">42</span><span·class="p"·data-group-id="2142166775-6">&gt;&gt;</span><span·class="p"·data-group-id="2142166775-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.6/doc/html/erlang.html#make_ref/0"><code·class="inline">make_ref/0</code></a>·BIF.·The258 <a·href="../../erts-15.2.6/doc/html/erlang.html#make_ref/0"><code·class="inline">make_ref/0</code></a>·BIF.·The
259 <a·href="../../erts-15.2.6/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.6/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="0879004218-1">(</span><span·class="p"·data-group-id="0879004218-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="5409254736-1">(</span><span·class="p"·data-group-id="5409254736-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="0879004218-2">(</span><span·class="n">Ref</span><span·class="p"·data-group-id="0879004218-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="5409254736-2">(</span><span·class="n">Ref</span><span·class="p"·data-group-id="5409254736-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="6180841227-1">(</span><span·class="n">X</span><span·class="p"·data-group-id="6180841227-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="4461515806-1">(</span><span·class="n">X</span><span·class="p"·data-group-id="4461515806-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="6180841227-2">(</span><span·class="mi">2</span><span·class="p"·data-group-id="6180841227-2">)</span><span·class="p">.</span><span·class="w">273 2&gt;·</span><span·class="n">Fun1</span><span·class="p"·data-group-id="4461515806-2">(</span><span·class="mi">2</span><span·class="p"·data-group-id="4461515806-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.6/doc/html/erlang.html#is_function/1"><code·class="inline">is_function/1</code></a>·and·<a·href="../../erts-15.2.6/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.6/doc/html/erlang.html#is_function/1"><code·class="inline">is_function/1</code></a>·and·<a·href="../../erts-15.2.6/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="1764436933-1">(</span><span·class="p"·data-group-id="1764436933-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="9729108163-1">(</span><span·class="p"·data-group-id="9729108163-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="1764436933-2">(</span><span·class="n">F</span><span·class="p"·data-group-id="1764436933-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="9729108163-2">(</span><span·class="n">F</span><span·class="p"·data-group-id="9729108163-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="1764436933-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="1764436933-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="9729108163-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="9729108163-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="1764436933-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="1764436933-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="9729108163-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="9729108163-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.6/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.6/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.6/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.6/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.6/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.6/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.6/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="0194682573-1">(</span><span·class="ss">m</span><span·class="p"·data-group-id="0194682573-1">)</span><span·class="p">.</span><span·class="w">307 <a·href="../../erts-15.2.6/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="9693847526-1">(</span><span·class="ss">m</span><span·class="p"·data-group-id="9693847526-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="0194682573-2">(</span><span·class="p"·data-group-id="0194682573-3">[</span><span·class="ss">loop</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="0194682573-3">]</span><span·class="p"·data-group-id="0194682573-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="9693847526-2">(</span><span·class="p"·data-group-id="9693847526-3">[</span><span·class="ss">loop</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="9693847526-3">]</span><span·class="p"·data-group-id="9693847526-2">)</span><span·class="p">.</span><span·class="w">
  
309 </span><span·class="nf">loop</span><span·class="p"·data-group-id="0194682573-4">(</span><span·class="p"·data-group-id="0194682573-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="9693847526-4">(</span><span·class="p"·data-group-id="9693847526-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="0194682573-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="0194682573-6">[</span><span·class="nf">s[·...·truncated·by·diffoscope;·len:·210,·SHA:·c608da6a1a49b4b29b7f30b8c77b249247f0aa58bec2a1c869a36d76e6556148·...·]-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="9693847526-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="9693847526-6">[</span><span·class="nf">s[·...·truncated·by·diffoscope;·len:·210,·SHA:·88c84b2042ebd68606e1d3a34e37c2a9e3afad1aff0934d22bb3a815106a5814·...·]-5">)</span><span·class="p">,</span><span·class="w">
313 ············</span><span·class="nf">loop</span><span·class="p"·data-group-id="0194682573-8">(</span><span·class="p"·data-group-id="0194682573-8">)</span><span·class="w">313 ············</span><span·class="nf">loop</span><span·class="p"·data-group-id="9693847526-8">(</span><span·class="p"·data-group-id="9693847526-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="0194682573-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="0194682573-10">[</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·64,·SHA:·4455cf0342e18ed1c4ca715813e5ab043b20fa609d69a8f7d4e1cb94dc0eb8ed·...·]-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="9693847526-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="9693847526-10">[</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·64,·SHA:·8ecb07d2c4895333798d1aac7b2f375530d246af2c6eb2359a2091df2978ca7e·...·]-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="3072285130-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="3072285130-2">{</span><span·class="ss">july</span><span·class="p">,</span><span·class="mi">29</span><s[·...·truncated·by·diffoscope;·len:·92,·SHA:·c3dc3e418e19af4b5c57af4670966dc2d31315b02a288861ba6d68ea23469e15·...·]-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="3988387873-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="3988387873-2">{</span><span·class="ss">july</span><span·class="p">,</span><span·class="mi">29</span><s[·...·truncated·by·diffoscope;·len:·92,·SHA:·92bf6aa70f2e085266a3b5aca314714eef3d1cc553ffc6151c54c5be114f1524·...·]-1">}</span><span·class="p">.</span><span·class="w">
327 </span><span·class="p"·data-group-id="3072285130-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="3072285130-4">{</span><span·class="ss">july</span><span·class="p">,</span><span·class="mi">29</span><s[·...·truncated·by·diffoscope;·len:·92,·SHA:·93ae3ffaccceabbc748d2f20331209afbf34e4f3003a5b7795e12323df2f427c·...·]-3">}</span><span·class="gp·unselectable">327 </span><span·class="p"·data-group-id="3988387873-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="3988387873-4">{</span><span·class="ss">july</span><span·class="p">,</span><span·class="mi">29</span><s[·...·truncated·by·diffoscope;·len:·92,·SHA:·701d689774eef2f98ebd7fa4800af898844c91dcb49001a49e97709279140134·...·]-3">}</span><span·class="gp·unselectable">
328 2&gt;·</span><span·class="nf">element</span><span·class="p"·data-group-id="3072285130-5">(</span><span·class="mi">1</span><span·class="p">,</span><span·class="n">P</span><span·class="p"·data-group-id="3072285130-5">)</span><span·class="p">.</span><span·class="w">328 2&gt;·</span><span·class="nf">element</span><span·class="p"·data-group-id="3988387873-5">(</span><span·class="mi">1</span><span·class="p">,</span><span·class="n">P</span><span·class="p"·data-group-id="3988387873-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="3072285130-6">(</span><span·class="mi">3</span><span·class="p">,</span><span·class="n">P</span><span·class="p"·data-group-id="3072285130-6">)</span><span·class="p">.</span><span·class="w">330 3&gt;·</span><span·class="nf">element</span><span·class="p"·data-group-id="3988387873-6">(</span><span·class="mi">3</span><span·class="p">,</span><span·class="n">P</span><span·class="p"·data-group-id="3988387873-6">)</span><span·class="p">.</span><span·class="w">
331 </span><span·class="p"·data-group-id="3072285130-7">{</span><span·class="ss">july</span><span·class="p">,</span><span·class="mi">29</span><span·class="p"·data-group-id="3072285130-7">}</span><span·class="gp·unselectable">331 </span><span·class="p"·data-group-id="3988387873-7">{</span><span·class="ss">july</span><span·class="p">,</span><span·class="mi">29</span><span·class="p"·data-group-id="3988387873-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="3072285130-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="3072285130-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="3988387873-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="3988387873-8">)</span><span·class="p">.</span><span·class="w">
333 </span><span·class="p"·data-group-id="3072285130-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="3072285130-10">{</span><span·class="ss">july</span><span·class="p">,</span><span·class="mi">29</span><[·...·truncated·by·diffoscope;·len:·94,·SHA:·0b1cec9f137d170e418261c59572ed610ac3b15cab39224f5c33f6922eb6ac93·...·]-9">}</span><span·class="gp·unselectable">333 </span><span·class="p"·data-group-id="3988387873-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="3988387873-10">{</span><span·class="ss">july</span><span·class="p">,</span><span·class="mi">29</span><[·...·truncated·by·diffoscope;·len:·94,·SHA:·53ca31f895922f4d032614495f0b6815529a2ec36bb8aba9d4133c915bbef3cc·...·]-9">}</span><span·class="gp·unselectable">
334 5&gt;·</span><span·class="nf">tuple_size</span><span·class="p"·data-group-id="3072285130-11">(</span><span·class="n">P</span><span·class="p"·data-group-id="3072285130-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="3988387873-11">(</span><span·class="n">P</span><span·class="p"·data-group-id="3988387873-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="3072285130-12">(</span><span·class="p"·data-group-id="3072285130-13">{</span><span·class="p"·data-group-id="3072285130-13">}</span><span·class="p"·data-group-id="3072285130-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="3988387873-12">(</span><span·class="p"·data-group-id="3988387873-13">{</span><span·class="p"·data-group-id="3988387873-13">}</span><span·class="p"·data-group-id="3988387873-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="3072285130-14">(</span><span·class="p"·data-group-id="3072285130-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="3072285130-15">}</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·5a936d3ad68aa491037b587849774eb8583306a778b676f6dd9d16acfec9491e·...·]-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="3988387873-14">(</span><span·class="p"·data-group-id="3988387873-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="3988387873-15">}</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·0b190942ddba0a46a3399760aa0ee1b385e2fffc7e34cc8db6b4d52dbb9e3e00·...·]-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="1016613681-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:·622717a616ac0dafe1f2a6e6455adc506be83d152dd5b12153d0e3fb867572f5·...·]-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="8078593195-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:·6c6d92a567c1c1922c26d5f6d1ac7f3c8f2dd9c2435fa3287546d432d6505f61·...·]-1">}</span><span·class="p">.</span><span·class="w">
348 </span><span·class="p"·data-group-id="1016613681-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:·a6fe90c0c8553d70f420575e7833f60ff396be2865b762ccb577950c2454ea56·...·]-3">}</span><span·class="gp·unselectable">348 </span><span·class="p"·data-group-id="8078593195-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:·e384a74494ae32ecfc5a2f519283a26643004c2693a5615bec51820c35e62425·...·]-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="1016613681-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="1016613681-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="8078593195-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="8078593195-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="1016613681-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="1016613681-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="8078593195-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="8078593195-6">)</span><span·class="p">.</span><span·class="w">
352 </span><span·class="p"·data-group-id="1016613681-7">{</span><span·class="ss">july</span><span·class="p">,</span><span·class="mi">29</span><span·class="p"·data-group-id="1016613681-7">}</span><span·class="gp·unselectable">352 </span><span·class="p"·data-group-id="8078593195-7">{</span><span·class="ss">july</span><span·class="p">,</span><span·class="mi">29</span><span·class="p"·data-group-id="8078593195-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="2122630994-1">(</span><span·class="ss">ch1</span><span·class="p"·data-group-id="2122630994-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="8596898997-1">(</span><span·class="ss">ch1</span><span·class="p"·data-group-id="8596898997-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="2122630994-2">(</span><span·class="p"·data-group-id="2122630994-3">[</span><span·class="ss">start</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="2122630994-3">]</span><span·class="p"·data-group-id="2122630994-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="8596898997-2">(</span><span·class="p"·data-group-id="8596898997-3">[</span><span·class="ss">start</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="8596898997-3">]</span><span·class="p"·data-group-id="8596898997-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="2122630994-4">(</span><span·class="p"·data-group-id="2122630994-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:·24c908663847835d9f74675b900da8a7bfc3acd63872a33cbaa936f360efb7e9·...·]-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="8596898997-4">(</span><span·class="p"·data-group-id="8596898997-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:·0797233153dedd6e376e4b16b6bbea8210083ad804ed2ca728df7eea2ec0c1f9·...·]-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="2122630994-6">(</span><span·class="p"·data-group-id="2122630994-7">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="2122630994-7">]</span><span·class="p"·data-group-id="2122630994-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="8596898997-6">(</span><span·class="p"·data-group-id="8596898997-7">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="8596898997-7">]</span><span·class="p"·data-group-id="8596898997-6">)</span><span·class="p">.</span><span·class="w">
  
163 </span><span·class="nf">start</span><span·class="p"·data-group-id="2122630994-8">(</span><span·class="p"·data-group-id="2122630994-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="8596898997-8">(</span><span·class="p"·data-group-id="8596898997-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="2122630994-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="2122630994-10">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·66,·SHA:·14cb873baddb35faef14541dcdb67a5bead1505593aa0ac8e26b794479673f2f·...·]-9">)</span><span·class="p">.</span><span·class="w">164 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="8596898997-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="8596898997-10">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·66,·SHA:·9cd0a658a67aa04d8c63080e0a1e831cf9bc8efcc5abcd36ceacf9c7ae6d2873·...·]-9">)</span><span·class="p">.</span><span·class="w">
  
165 </span><span·class="nf">alloc</span><span·class="p"·data-group-id="2122630994-11">(</span><span·class="p"·data-group-id="2122630994-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="8596898997-11">(</span><span·class="p"·data-group-id="8596898997-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="2122630994-12">{</span><span·class="nf">self</span><span·class="p"·data-group-id="2122630994-13">(</span><span·class="p"·data-group-id="2122630994-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:·231850d9c6e89316d7fcac489d0dd9a7b4de639be129d57e133353baac23cfee·...·]-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="8596898997-12">{</span><span·class="nf">self</span><span·class="p"·data-group-id="8596898997-13">(</span><span·class="p"·data-group-id="8596898997-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:·dd335bad12d2df0f0cb03f93ddb44e1653d053c301a068811a9f80c88810d3cf·...·]-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="2122630994-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="2122630994-14">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">168 ········</span><span·class="p"·data-group-id="8596898997-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="8596898997-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="2122630994-15">(</span><span·class="n">Ch</span><span·class="p"·data-group-id="2122630994-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="8596898997-15">(</span><span·class="n">Ch</span><span·class="p"·data-group-id="8596898997-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="2122630994-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="2122630994-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="8596898997-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="8596898997-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="2122630994-17">(</span><span·class="p"·data-group-id="2122630994-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="8596898997-17">(</span><span·class="p"·data-group-id="8596898997-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="2122630994-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="2122630994-19">(</span><span·class="p"·data-group-id="2122630994-19">)</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·19,·SHA:·edd332aa5639836db62e95d9d3e8ba5fc770ea680e07e1a3d18e449b6bbfd508·...·]-18">)</span><span·class="p">,</span><span·class="w">175 ····</span><span·class="nf">register</span><span·class="p"·data-group-id="8596898997-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="8596898997-19">(</span><span·class="p"·data-group-id="8596898997-19">)</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·19,·SHA:·010008485ae40a768ee1d55fbecbf026cbf3adcb54fe9babe2dde8f9d10f4336·...·]-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="2122630994-20">(</span><span·class="p"·data-group-id="2122630994-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="8596898997-20">(</span><span·class="p"·data-group-id="8596898997-20">)</span><span·class="p">,</span><span·class="w">
177 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="2122630994-21">(</span><span·class="n">Chs</span><span·class="p"·data-group-id="2122630994-21">)</span><span·class="p">.</span><span·class="w">177 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="8596898997-21">(</span><span·class="n">Chs</span><span·class="p"·data-group-id="8596898997-21">)</span><span·class="p">.</span><span·class="w">
  
178 </span><span·class="nf">loop</span><span·class="p"·data-group-id="2122630994-22">(</span><span·class="n">Chs</span><span·class="p"·data-group-id="2122630994-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="8596898997-22">(</span><span·class="n">Chs</span><span·class="p"·data-group-id="8596898997-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="2122630994-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="2122630994-23">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">180 ········</span><span·class="p"·data-group-id="8596898997-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="8596898997-23">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
181 ············</span><span·class="p"·data-group-id="2122630994-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="2122630994-24">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·143,·SHA:·63da72857e9b9a3eacc20acea33214a00d5316bbb44ac385c6d7a2e203772d99·...·]-25">)</span><span·class="p">,</span><span·class="w">181 ············</span><span·class="p"·data-group-id="8596898997-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="8596898997-24">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·143,·SHA:·699ec49eced7ce6ca70fa46354a7f8fb4850ae179ef117d83a98d2c25880f7d1·...·]-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="2122630994-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="2122630994-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="8596898997-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="8596898997-26">}</span><span·class="p">,</span><span·class="w">
183 ············</span><span·class="nf">loop</span><span·class="p"·data-group-id="2122630994-27">(</span><span·class="n">Chs2</span><span·class="p"·data-group-id="2122630994-27">)</span><span·class="p">;</span><span·class="w">183 ············</span><span·class="nf">loop</span><span·class="p"·data-group-id="8596898997-27">(</span><span·class="n">Chs2</span><span·class="p"·data-group-id="8596898997-27">)</span><span·class="p">;</span><span·class="w">
184 ········</span><span·class="p"·data-group-id="2122630994-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="2122630994-28">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">184 ········</span><span·class="p"·data-group-id="8596898997-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="8596898997-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="2122630994-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="2122630994-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="8596898997-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="8596898997-29">)</span><span·class="p">,</span><span·class="w">
186 ············</span><span·class="nf">loop</span><span·class="p"·data-group-id="2122630994-30">(</span><span·class="n">Chs2</span><span·class="p"·data-group-id="2122630994-30">)</span><span·class="w">186 ············</span><span·class="nf">loop</span><span·class="p"·data-group-id="8596898997-30">(</span><span·class="n">Chs2</span><span·class="p"·data-group-id="8596898997-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="3792787710-1">(</span><span·class="ss">server</span><span·class="p"·data-group-id="3792787710-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="1344752178-1">(</span><span·class="ss">server</span><span·class="p"·data-group-id="1344752178-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="3792787710-2">(</span><span·class="p"·data-group-id="3792787710-3">[</span><span·class="ss">start</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="3792787710-3">]</span><span·class="p"·data-group-id="3792787710-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="1344752178-2">(</span><span·class="p"·data-group-id="1344752178-3">[</span><span·class="ss">start</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="1344752178-3">]</span><span·class="p"·data-group-id="1344752178-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="3792787710-4">(</span><span·class="p"·data-group-id="3792787710-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:·a5ee7fdba16e5165f1b434b3cd40d3af87f597e7436183c28b0742f2fa9e0a7d·...·]-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="1344752178-4">(</span><span·class="p"·data-group-id="1344752178-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:·3cc7304eb7e4f69139f54d1bddbbb7cc6f297d9bffdf2b1d33a8be73060348d3·...·]-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="3792787710-6">(</span><span·class="p"·data-group-id="3792787710-7">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="3792787710-7">]</span><span·class="p"·data-group-id="3792787710-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="1344752178-6">(</span><span·class="p"·data-group-id="1344752178-7">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="1344752178-7">]</span><span·class="p"·data-group-id="1344752178-6">)</span><span·class="p">.</span><span·class="w">
  
191 </span><span·class="nf">start</span><span·class="p"·data-group-id="3792787710-8">(</span><span·class="n">Mod</span><span·class="p"·data-group-id="3792787710-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="1344752178-8">(</span><span·class="n">Mod</span><span·class="p"·data-group-id="1344752178-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="3792787710-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="3792787710-10">[</span><span·class="n">Mod</span>[·...·truncated·by·diffoscope;·len:·95,·SHA:·85ea5271bca97cbe858f4554ecbb59a64c7209666d438e2dce10db316f214c24·...·]-9">)</span><span·class="p">.</span><span·class="w">192 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="1344752178-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="1344752178-10">[</span><span·class="n">Mod</span>[·...·truncated·by·diffoscope;·len:·95,·SHA:·26e4c25b920c8e67e66defba40d233162642f281cac43eaff7ac835379b82890·...·]-9">)</span><span·class="p">.</span><span·class="w">
  
193 </span><span·class="nf">call</span><span·class="p"·data-group-id="3792787710-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="3792787710-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="1344752178-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="1344752178-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="3792787710-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="3792787710-13">(</span><span·class="p"·data-group-id="3792787710-13">)</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·94,·SHA:·d8e2230e0c634085873dd4498000a9f3154945fd04981eabdc5ed85326f0237d·...·]-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="1344752178-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="1344752178-13">(</span><span·class="p"·data-group-id="1344752178-13">)</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·94,·SHA:·228585eefc228d9c2f9e72e1894e23e2856938808c52e133258a280fe6d4f247·...·]-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="3792787710-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="3792787710-14">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">196 ········</span><span·class="p"·data-group-id="1344752178-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="1344752178-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="3792787710-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="3792787710-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="1344752178-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="1344752178-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="3792787710-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="3792787710-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="1344752178-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="1344752178-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="3792787710-17">(</span><span·class="n">Mod</span><span·class="p"·data-group-id="3792787710-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="1344752178-17">(</span><span·class="n">Mod</span><span·class="p"·data-group-id="1344752178-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="3792787710-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="3792787710-19">(</span><span·class="p"·data-group-id="3792787710-19">)</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·18,·SHA:·dcbc6949e51709a77ceacb0efd141cac01cd65c31a9e6661c8227a790bbe4b50·...·]-18">)</span><span·class="p">,</span><span·class="w">203 ····</span><span·class="nf">register</span><span·class="p"·data-group-id="1344752178-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="1344752178-19">(</span><span·class="p"·data-group-id="1344752178-19">)</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·18,·SHA:·3e6289e4f2b9de380bd33d3a269d4bcfbec63f73d97ad1ec72f5f8a81a50b129·...·]-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="3792787710-20">(</span><span·class="p"·data-group-id="3792787710-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="1344752178-20">(</span><span·class="p"·data-group-id="1344752178-20">)</span><span·class="p">,</span><span·class="w">
205 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="3792787710-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="3792787710-21">)</span><span·class="p">.</span><span·class="w">205 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="1344752178-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="1344752178-21">)</span><span·class="p">.</span><span·class="w">
  
206 </span><span·class="nf">loop</span><span·class="p"·data-group-id="3792787710-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="3792787710-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="1344752178-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="1344752178-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="3792787710-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="3792787710-23">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">208 ········</span><span·class="p"·data-group-id="1344752178-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="1344752178-23">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
209 ············</span><span·class="p"·data-group-id="3792787710-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="3792787710-24">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·278,·SHA:·4dbc15028ea73c54659ebe1c13e8fb351c9478e25d60488e9e6dd10ade12461c·...·]-25">)</span><span·class="p">,</span><span·class="w">209 ············</span><span·class="p"·data-group-id="1344752178-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="1344752178-24">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·278,·SHA:·67db1b594dd644b7c32624718f42af523dbbc268ad3167c5494735f850e8c19c·...·]-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="3792787710-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="3792787710-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="1344752178-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="1344752178-26">}</span><span·class="p">,</span><span·class="w">
211 ············</span><span·class="nf">loop</span><span·class="p"·data-group-id="3792787710-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="3792787710-27">)</span><span·class="p">;</span><span·class="w">211 ············</span><span·class="nf">loop</span><span·class="p"·data-group-id="1344752178-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="1344752178-27">)</span><span·class="p">;</span><span·class="w">
212 ········</span><span·class="p"·data-group-id="3792787710-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="3792787710-28">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">212 ········</span><span·class="p"·data-group-id="1344752178-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="1344752178-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="3792787710-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="3792787710-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="1344752178-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="1344752178-29">)</span><span·class="p">,</span><span·class="w">
214 ············</span><span·class="nf">loop</span><span·class="p"·data-group-id="3792787710-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="3792787710-30">)</span><span·class="w">214 ············</span><span·class="nf">loop</span><span·class="p"·data-group-id="1344752178-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="1344752178-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="2671793075-1">(</span><span·class="ss">ch2</span><span·class="p"·data-group-id="2671793075-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="6813110601-1">(</span><span·class="ss">ch2</span><span·class="p"·data-group-id="6813110601-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="2671793075-2">(</span><span·class="p"·data-group-id="2671793075-3">[</span><span·class="ss">start</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="2671793075-3">]</span><span·class="p"·data-group-id="2671793075-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="6813110601-2">(</span><span·class="p"·data-group-id="6813110601-3">[</span><span·class="ss">start</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="6813110601-3">]</span><span·class="p"·data-group-id="6813110601-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="2671793075-4">(</span><span·class="p"·data-group-id="2671793075-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:·460b0a6a1801273b203661dc74e311a1f68d235c3ecde76813c82f021fbac243·...·]-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="6813110601-4">(</span><span·class="p"·data-group-id="6813110601-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:·c6c19f9528c4c792add3e2dfbc0248f69ea68967533a9fa084690af98f920f84·...·]-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="2671793075-6">(</span><span·class="p"·data-group-id="2671793075-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:·7e3b5f0e87741f30e0481cc313192b76e580435223d20c01443f10b729d837ed·...·]-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="6813110601-6">(</span><span·class="p"·data-group-id="6813110601-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:·857ac708994015f7a1a6d20c23dcc31c97681b7a68a30b6093340eab2aa85459·...·]-6">)</span><span·class="p">.</span><span·class="w">
  
219 </span><span·class="nf">start</span><span·class="p"·data-group-id="2671793075-8">(</span><span·class="p"·data-group-id="2671793075-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="6813110601-8">(</span><span·class="p"·data-group-id="6813110601-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="2671793075-9">(</span><span·class="ss">ch2</span><span·class="p"·data-group-id="2671793075-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="6813110601-9">(</span><span·class="ss">ch2</span><span·class="p"·data-group-id="6813110601-9">)</span><span·class="p">.</span><span·class="w">
  
221 </span><span·class="nf">alloc</span><span·class="p"·data-group-id="2671793075-10">(</span><span·class="p"·data-group-id="2671793075-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="6813110601-10">(</span><span·class="p"·data-group-id="6813110601-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="2671793075-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="2671793075-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="6813110601-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="6813110601-11">)</span><span·class="p">.</span><span·class="w">
  
223 </span><span·class="nf">free</span><span·class="p"·data-group-id="2671793075-12">(</span><span·class="n">Ch</span><span·class="p"·data-group-id="2671793075-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="6813110601-12">(</span><span·class="n">Ch</span><span·class="p"·data-group-id="6813110601-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="2671793075-13">(</span><span·class="ss">ch2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2671793075-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:·e99928e40407a27ff37e0f1d2740dc42335cf26d00e5e39202079825f50892cc·...·]-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="6813110601-13">(</span><span·class="ss">ch2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6813110601-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:·ab707b01c8baf1f4c13da26e09c8d9e2ad33a6b0651b8df057a074b54de3454b·...·]-13">)</span><span·class="p">.</span><span·class="w">
  
225 </span><span·class="nf">init</span><span·class="p"·data-group-id="2671793075-15">(</span><span·class="p"·data-group-id="2671793075-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="6813110601-15">(</span><span·class="p"·data-group-id="6813110601-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="2671793075-16">(</span><span·class="p"·data-group-id="2671793075-16">)</span><span·class="p">.</span><span·class="w">226 ····</span><span·class="nf">channels</span><span·class="p"·data-group-id="6813110601-16">(</span><span·class="p"·data-group-id="6813110601-16">)</span><span·class="p">.</span><span·class="w">
  
227 </span><span·class="nf">handle_call</span><span·class="p"·data-group-id="2671793075-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="2671793075-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="6813110601-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="6813110601-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="2671793075-18">(</span><span·class="n">Chs</span><span·class="p"·data-group-id="2671793075-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="6813110601-18">(</span><span·class="n">Chs</span><span·class="p"·data-group-id="6813110601-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="2671793075-19">(</span><span·class="p"·data-group-id="2671793075-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="2671793075-20">}</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·91,·SHA:·a1bb80e3619b99bb77bf3f0bba64365fe733ba0430b5b0641b4e723afacd9b3a·...·]-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="6813110601-19">(</span><span·class="p"·data-group-id="6813110601-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="6813110601-20">}</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·91,·SHA:·7066e1693cc8e081c167f0767838b39cfe84de7a483c9c101557b46de8e171ca·...·]-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="2671793075-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="2671793075-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="6813110601-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="6813110601-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="8876999530-1">(</span><span·class="p"·data-group-id="8876999530-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="8737010546-1">(</span><span·class="p"·data-group-id="8737010546-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
240 ···</span><span·class="p"·data-group-id="8876999530-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="8876999530-3">[</span><span·class="p"·data-group-id="8876999530-3">]</span><[·...·truncated·by·diffoscope;·len:·497,·SHA:·df5e077ccc585aa118f8dffdc35f7e57ea1f2e90aab121d446c5f0d163cb1e89·...·]-2">}</span><span·class="p">.</span><span·class="w">240 ···</span><span·class="p"·data-group-id="8737010546-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="8737010546-3">[</span><span·class="p"·data-group-id="8737010546-3">]</span><[·...·truncated·by·diffoscope;·len:·497,·SHA:·0cf69d42f307e052e1dc5d478ef0d3f3a78ba5eff6d6092826f59d6317ef25d0·...·]-2">}</span><span·class="p">.</span><span·class="w">
  
241 </span><span·class="nf">alloc</span><span·class="p"·data-group-id="8876999530-5">(</span><span·class="p"·data-group-id="8876999530-6">{</span><span·class="n">Allocated</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8876999530-7">[</span><span·class="n">H</span><span·class="p">|</span><[·...·truncated·by·diffoscope;·len:·293,·SHA:·926ea66f59d7569ada1efca8ec183e6df96c02eaefcf863299a4da317b0c7096·...·]-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="8737010546-5">(</span><span·class="p"·data-group-id="8737010546-6">{</span><span·class="n">Allocated</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8737010546-7">[</span><span·class="n">H</span><span·class="p">|</span><[·...·truncated·by·diffoscope;·len:·293,·SHA:·e19c01a33cd927209a44170f097a7c5b0d2762590c449c6d1781fddf3bac22af·...·]-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
242 ···</span><span·class="p"·data-group-id="8876999530-8">{</span><span·class="n">H</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8876999530-9">{</span><span·class="p"·data-group-id="8876999530-10">[</span><span·class="n">H</span><span·class="p">|</span><span·cl[·...·truncated·by·diffoscope;·len:·244,·SHA:·47ee28176714f906e753a1a14abc87b52da17ae37d6138f8dca8cd154f3f4972·...·]-8">}</span><span·class="p">.</span><span·class="w">242 ···</span><span·class="p"·data-group-id="8737010546-8">{</span><span·class="n">H</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8737010546-9">{</span><span·class="p"·data-group-id="8737010546-10">[</span><span·class="n">H</span><span·class="p">|</span><span·cl[·...·truncated·by·diffoscope;·len:·244,·SHA:·bca1b58169a17dcd3924ce04abd23c7faa210696876bf9f86209c9be4df43abf·...·]-8">}</span><span·class="p">.</span><span·class="w">
  
243 </span><span·class="nf">free</span><span·class="p"·data-group-id="8876999530-11">(</span><span·class="n">Ch</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8876999530-12">{</span><span·class="n">Alloc</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Free</span><spa[·...·truncated·by·diffoscope;·len:·194,·SHA:·883a163f581904027958741e29e9dad0967f71d7b791b5fff56513a781e55eb7·...·]-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="8737010546-11">(</span><span·class="n">Ch</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8737010546-12">{</span><span·class="n">Alloc</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Free</span><spa[·...·truncated·by·diffoscope;·len:·194,·SHA:·adb33d65c954e438475be61869e8b94833e59cc10bc8c955c87a3077a5457438·...·]-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="8876999530-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="8876999530-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="8737010546-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="8737010546-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="8876999530-14">{</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">delete</span><span·class="p"·data-group-id="8876999530-15">(</span><span·class="n">Ch</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Alloc</s[·...·truncated·by·diffoscope;·len:·331,·SHA:·e9c6d3e92c49cbd0363f1250cdb8541aeadb5026a23b33446a38dc207fa22ca3·...·]-14">}</span><span·class="p">;</span><span·class="w">246 ·········</span><span·class="p"·data-group-id="8737010546-14">{</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">delete</span><span·class="p"·data-group-id="8737010546-15">(</span><span·class="n">Ch</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Alloc</s[·...·truncated·by·diffoscope;·len:·331,·SHA:·923e06ddb21ad2aa66409dd6e107fb7ffdf0c882a4ed4b41baa30d5761bc41a3·...·]-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="9985378151-1">(</span><span·class="ss">chs3</span><span·class="p"·data-group-id="9985378151-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="1511405727-1">(</span><span·class="ss">chs3</span><span·class="p"·data-group-id="1511405727-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="9985378151-2">(</span><span·class="ss">gen_server</span><span·class="p"·data-group-id="9985378151-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="1511405727-2">(</span><span·class="ss">gen_server</span><span·class="p"·data-group-id="1511405727-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="9985378151-3">(</span><span·class="ss">chs3</span><span·class="p"·data-group-id="9985378151-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="1511405727-3">(</span><span·class="ss">chs3</span><span·class="p"·data-group-id="1511405727-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.6/doc/html/erl_cmd.html#name"><code·class="inline">-name</code></a>·(long·names)·or144 the·command-line·flag·<a·href="../../erts-15.2.6/doc/html/erl_cmd.html#name"><code·class="inline">-name</code></a>·(long·names)·or
145 <a·href="../../erts-15.2.6/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.6/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.6/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.6/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="2062531458-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="2062531458-1">)</span><span·class="mi">1</span><span·class="o">[·...·truncated·by·diffoscope;·len:·157,·SHA:·ff8260173e6285d28b56d14d589aa6f29370b090e900165929a3e54967230ec0·...·]-2">)</span><span·class="p">.</span><span·class="w">149 </span><span·class="p"·data-group-id="2506394097-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="2506394097-1">)</span><span·class="mi">1</span><span·class="o">[·...·truncated·by·diffoscope;·len:·157,·SHA:·0baf79ec54fa67ddbbf39b91cfadb115b0ccd8924072fc8b7a3c6411982fbaed·...·]-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="2062531458-3">(</span><span·class="p"·data-group-id="2062531458-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="2506394097-3">(</span><span·class="p"·data-group-id="2506394097-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.6/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.6/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="5746033661-1">(</span><span·class="p"·data-group-id="5746033661-1">)</span><span·class="p">.</span><span·class="w">154 1&gt;·</span><span·class="nf">node</span><span·class="p"·data-group-id="0778606375-1">(</span><span·class="p"·data-group-id="0778606375-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="5746033661-2">(</span><span·class="p"·data-group-id="5746033661-3">[</span><span·class="ss">dilbert</span><span·class="p">,</span><span·class="ss">shortnames</span><span·class="p"·data-group-id="5746033661-3">]</span><span·class="p"·data-group-id="57460336[·...·truncated·by·diffoscope;·len:·2,·SHA:·d029fa3a95e174a19934857f535eb9427d967218a36ea014b70ad704bc6c8d1c·...·]-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="0778606375-2">(</span><span·class="p"·data-group-id="0778606375-3">[</span><span·class="ss">dilbert</span><span·class="p">,</span><span·class="ss">shortnames</span><span·class="p"·data-group-id="0778606375-3">]</span><span·class="p"·data-group-id="07786063[·...·truncated·by·diffoscope;·len:·2,·SHA:·f369cb89fc627e668987007d121ed1eacdc01db9e28f8bb26f358b7d8c4f08ac·...·]-2">)</span><span·class="p">.</span><span·class="w">
157 </span><span·class="p"·data-group-id="5746033661-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="5746033661-4">}</span><span·class="gp·unselectable">157 </span><span·class="p"·data-group-id="0778606375-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="0778606375-4">}</span><span·class="gp·unselectable">
158 (dilbert@uab)3&gt;·</span><span·class="nf">node</span><span·class="p"·data-group-id="5746033661-5">(</span><span·class="p"·data-group-id="5746033661-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="0778606375-5">(</span><span·class="p"·data-group-id="0778606375-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="7263826643-1">[</span><span·class="p"·data-group-id="7263826643-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="5426992253-1">[</span><span·class="p"·data-group-id="5426992253-2">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">
158 ··</span><span·class="p"·data-group-id="7263826643-3">[</span><span·class="p"·data-group-id="7263826643-4">{</span><span·class="ss">distributed</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7263826643-5">[</span><span·class="p"·data-group-id="7263826643-6">[·...·truncated·by·diffoscope;·len:·711,·SHA:·0f3e5bab718a53607ef7890b2a0db3fb58e9e74df7d947299a71c1ed833f464c·...·]3-4">}</span><span·class="p">,</span><span·class="w">158 ··</span><span·class="p"·data-group-id="5426992253-3">[</span><span·class="p"·data-group-id="5426992253-4">{</span><span·class="ss">distributed</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5426992253-5">[</span><span·class="p"·data-group-id="5426992253-6">[·...·truncated·by·diffoscope;·len:·711,·SHA:·9e6ee8d3b0867b011748619f8fd2263dc52f1632fc56fb965b05e5de0f50eab9·...·]3-4">}</span><span·class="p">,</span><span·class="w">
159 ···</span><span·class="p"·data-group-id="7263826643-9">{</span><span·class="ss">sync_nodes_mandatory</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7263826643-10">[</span><span·class="ss">cp2@cave</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·118,·SHA:·5c85d06a50c1be9811323e3c7d6ad12389039461c74dfa03430150ce3b05eb90·...·]3-9">}</span><span·class="p">,</span><span·class="w">159 ···</span><span·class="p"·data-group-id="5426992253-9">{</span><span·class="ss">sync_nodes_mandatory</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5426992253-10">[</span><span·class="ss">cp2@cave</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·118,·SHA:·59f4703aaa0af1daa7ac2b84875b24d43a1e65709ff38950b41728dd47c20613·...·]3-9">}</span><span·class="p">,</span><span·class="w">
160 ···</span><span·class="p"·data-group-id="7263826643-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="7263826643-11">}</span><span·class="w">160 ···</span><span·class="p"·data-group-id="5426992253-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="5426992253-11">}</span><span·class="w">
161 ··</span><span·class="p"·data-group-id="7263826643-3">]</span><span·class="w">161 ··</span><span·class="p"·data-group-id="5426992253-3">]</span><span·class="w">
162 ·</span><span·class="p"·data-group-id="7263826643-2">}</span><span·class="w">162 ·</span><span·class="p"·data-group-id="5426992253-2">}</span><span·class="w">
163 </span><span·class="p"·data-group-id="7263826643-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="5426992253-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="8288186693-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="8288186693-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="6623717118-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="6623717118-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="6075310167-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="6075310167-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="0802470678-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="0802470678-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="3655340949-1">(</span><span·class="p"·data-group-id="3655340949-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="3655340949-2">}</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·100,·SHA:·6e033768d3f2476321d574b8826e7d3726163e56bde4eed0c36015a4bfdae835·...·]-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="8556181262-1">(</span><span·class="p"·data-group-id="8556181262-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="8556181262-2">}</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·100,·SHA:·f7a1650566136836c51172ccc70943306101179669bbcd6b254f228b69c2702f·...·]-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="6013763408-1">(</span><span·class="p"·data-group-id="6013763408-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="6013763408-2">}</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·100,·SHA:·ece75d2d2cd1ed13ba2626e634bc7731da7357787173cabad18533dee192bfe2·...·]-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="5611543065-1">(</span><span·class="p"·data-group-id="5611543065-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="5611543065-2">}</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·100,·SHA:·50adb220d4c7aafb9ff6a2b9c5d9233a4bf2e07582d0b2846501032b7954c828·...·]-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.6/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.6/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="3040722541-1">(</span><span·class="ss">arith</span><span·class="p"·data-group-id="3040722541-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="8917656700-1">(</span><span·class="ss">arith</span><span·class="p"·data-group-id="8917656700-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="3040722541-2">(</span><span·class="p"·data-group-id="3040722541-3">[</span><span·class="ss">add</span><span·class="p">/</span><span·class="mi">2</span><span·class="p"·data-group-id="3040722541-3">]</span><span·class="p"·data-group-id="3040722541-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="8917656700-2">(</span><span·class="p"·data-group-id="8917656700-3">[</span><span·class="ss">add</span><span·class="p">/</span><span·class="mi">2</span><span·class="p"·data-group-id="8917656700-3">]</span><span·class="p"·data-group-id="8917656700-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="3040722541-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="3040722541-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="8917656700-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="8917656700-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="3901470082-1">(</span><span·class="ss">arith</span><span·class="p"·data-group-id="3901470082-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="6232302006-1">(</span><span·class="ss">arith</span><span·class="p"·data-group-id="6232302006-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="3901470082-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="3901470082-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="6232302006-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="6232302006-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="3901470082-3">(</span><span·class="p"·data-group-id="3901470082-4">[</span><span·class="ss">add</span><span·class="p">/</span><span·class="mi">2</span><span·class="p"·data-group-id="3901470082-4">]</span><span·class="p"·data-group-id="3901470082-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="6232302006-3">(</span><span·class="p"·data-group-id="6232302006-4">[</span><span·class="ss">add</span><span·class="p">/</span><span·class="mi">2</span><span·class="p"·data-group-id="6232302006-4">]</span><span·class="p"·data-group-id="6232302006-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="3901470082-5">(</span><span·class="p"·data-group-id="3901470082-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="390147[·...·truncated·by·diffoscope;·len:·57,·SHA:·f97c566753a1d4fdfc8ab31f3469c7d0bacd602114f6e08e8eea4ac7b5a2956d·...·]-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="6232302006-5">(</span><span·class="p"·data-group-id="6232302006-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="623230[·...·truncated·by·diffoscope;·len:·57,·SHA:·dce7bce50bdd4d3d25fbcde10eeaa1ebf9a330d4c69de3313d9ebde1e9047574·...·]-5">)</span><span·class="p">.</span><span·class="w">
157 </span><span·class="nf">add</span><span·class="p"·data-group-id="3901470082-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="3901470082-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="6232302006-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="6232302006-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="2812777802-1">#{</span><span·class="ss">since</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;1.0&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">author</span><span·class=[·...·truncated·by·diffoscope;·len:·143,·SHA:·a1e88666c45b245b71ee8aca0dfe7a4906e672ccbe782598c5782809063ef71d·...·]-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="9032963490-1">#{</span><span·class="ss">since</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;1.0&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">author</span><span·class=[·...·truncated·by·diffoscope;·len:·143,·SHA:·ec7cda2ff14f078828ea9a7b9a2e61a802a2f21ffa827c9a528464465ab05d85·...·]-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="2812777802-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="2812777802-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="9032963490-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="9032963490-2">}</span><span·class="p">.</span><span·class="w">
163 </span><span·class="nf">add</span><span·class="p"·data-group-id="2812777802-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="2812777802-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="9032963490-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="9032963490-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="9137529409-1">(</span><span·class="p"·data-group-id="9137529409-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="9137529409-2">}</span><spa[·...·truncated·by·diffoscope;·len:·37,·SHA:·ccce224964357cbb27740dc2fc4c4af1adb255107db25dd991a4fc24a2f5ffb9·...·]-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="2296100152-1">(</span><span·class="p"·data-group-id="2296100152-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="2296100152-2">}</span><spa[·...·truncated·by·diffoscope;·len:·37,·SHA:·ec2c6d534fe4432ef52222dace5349407a5778c048ab81604b50672e93d9a15c·...·]-1">)</span><span·class="p">.</span><span·class="w">
176 </span><span·class="nf">add</span><span·class="p"·data-group-id="9137529409-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="9137529409-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="2296100152-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="2296100152-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="5628473067-1">(</span><span·class="ss">arith</span><span·class="p"·data-group-id="5628473067-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="9453516344-1">(</span><span·class="ss">arith</span><span·class="p"·data-group-id="9453516344-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="3669470207-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="3669470207-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="3317618695-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="3317618695-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="3669470207-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:·152,·SHA:·4df19c07d8ec28e011bfbf67e6f26401dcdc371778cbab4794b3256841950049·...·]-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="3317618695-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:·152,·SHA:·e95c6eee310543bbcc0a1c3fa6640ceb8a2bde7ad0baddd5d1cdb44dc2fe16a5·...·]-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="3669470207-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="3669470207-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="3317618695-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="3317618695-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.2/doc/html/c.html#h/1"><code·class="inline">c:h/1</code></a>·to·show·the·documentation·to·the·user.</p><p>For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">doc</span><span·class="w">·</span><span·class="s">&quot;&quot;&quot;221 is·used·by·IDEs·and·<a·href="../../lib/stdlib-6.2.2/doc/html/c.html#h/1"><code·class="inline">c:h/1</code></a>·to·show·the·documentation·to·the·user.</p><p>For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">doc</span><span·class="w">·</span><span·class="s">&quot;&quot;&quot;
222 A·number·that·can·be·used·by·the·arith·module.222 A·number·that·can·be·used·by·the·arith·module.
  
223 We·use·a·special·number·here·so·that·we·know223 We·use·a·special·number·here·so·that·we·know
224 that·this·number·comes·from·this·module.224 that·this·number·comes·from·this·module.
225 &quot;&quot;&quot;</span><span·class="p">.</span><span·class="w">225 &quot;&quot;&quot;</span><span·class="p">.</span><span·class="w">
226 </span><span·class="p">-</span><span·class="na">opaque</span><span·class="w">·</span><span·class="nf">number</span><span·class="p"·data-group-id="2979193698-1">(</span><span·class="p"·data-group-id="2979193698-1">)</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="2979193698-2">{</span><span·class="ss">arith</span><sp[·...·truncated·by·diffoscope;·len:·276,·SHA:·0fb59e6ad86bbf3d65fc60bd6118a1174de2efb003373ad58167de256cbb5b51·...·]-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="5748765611-1">(</span><span·class="p"·data-group-id="5748765611-1">)</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="5748765611-2">{</span><span·class="ss">arith</span><sp[·...·truncated·by·diffoscope;·len:·276,·SHA:·ccbf7208b42460974413049d00e31f609a315118a0d35d9ee18d8879eae27747·...·]-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="2979193698-4">(</span><span·class="nf">number</span><span·class="p"·data-group-id="2979193698-5">(</span><span·class="p"·data-group-id="2979193698-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:·17579a828d4deb9df4313cccec63b0da1170378e1e9e3e03a94429afe569f031·...·]-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="5748765611-4">(</span><span·class="nf">number</span><span·class="p"·data-group-id="5748765611-5">(</span><span·class="p"·data-group-id="5748765611-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:·7d951187ab4dfb3477aaf0669703bb8d6483799dbdab2b0737509b0d44e4546d·...·]-7">)</span><span·class="p">.</span><span·class="w">
236 </span><span·class="nf">add</span><span·class="p"·data-group-id="2979193698-8">(</span><span·class="p"·data-group-id="2979193698-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="2979193698-9">}</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·662,·SHA:·67cf739a3003ce8039625c65b10c33d1c4f062dd3290345f0f967a375de1e38b·...·]-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="5748765611-8">(</span><span·class="p"·data-group-id="5748765611-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="5748765611-9">}</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·662,·SHA:·3988103d7c396ca813efa942fc31b730068443108871a13f40e3e306ae8dd511·...·]-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="2324515464-1">(</span><span·class="n">PORT_NAMES</span><span·class="p"·data-group-id="2324515464-2">(</span><span·class="p"·data-group-id="2324515464-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="7330024801-1">(</span><span·class="n">PORT_NAMES</span><span·class="p"·data-group-id="7330024801-2">(</span><span·class="p"·data-group-id="7330024801-2">)</span><span·class="p">,</span><span·class="w">
130 »       </span><span·class="p"·data-group-id="2324515464-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="7330024801-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="2324515464-3">}</span><span·class="p"·data-group-id="2324515464-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="7330024801-3">}</span><span·class="p"·data-group-id="7330024801-1">)</span><span·class="p">.</span><span·class="w">
  
134 </span><span·class="nf">client_port</span><span·class="p"·data-group-id="2324515464-4">(</span><span·class="p"·data-group-id="2324515464-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="7330024801-4">(</span><span·class="p"·data-group-id="7330024801-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="2324515464-5">(</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">system_info</span><span·class="p"·data-group-id="2324515464-6">(</span><span·class="ss">scheduler_id</span><span·class="p"·data-group-id="2324515464-6">)</span><sp[·...·truncated·by·diffoscope;·len:·363,·SHA:·6c6b82e1aa4bc49eca931224cc6dcc02c7d15c758ee4619038c67dd09b0f402a·...·]-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">135 ····</span><span·class="nf">element</span><span·class="p"·data-group-id="7330024801-5">(</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">system_info</span><span·class="p"·data-group-id="7330024801-6">(</span><span·class="ss">scheduler_id</span><span·class="p"·data-group-id="7330024801-6">)</span><sp[·...·truncated·by·diffoscope;·len:·363,·SHA:·91d752f98e2f61c58bd1c8d0fa42849aff77961de706adc9e1bc2d7e6cbdd0df·...·]-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="2324515464-9">(</span><span·class="p"·data-group-id="2324515464-9">)</span><span·class="p"·data-group-id="2324515464-5">)</span><span·class="p">.</span></code></pre><p>As·long·as·there·are·no·more·than·16·schedulers,·there·will·never·be·any·lock136 »       ····</span><span·class="o">?</span><span·class="n">PORT_NAMES</span><span·class="p"·data-group-id="7330024801-9">(</span><span·class="p"·data-group-id="7330024801-9">)</span><span·class="p"·data-group-id="7330024801-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.6/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.6/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="9494774326-1">(</span><span·class="ss">one</span><span·class="p"·data-group-id="9494774326-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="8714130710-1">(</span><span·class="ss">one</span><span·class="p"·data-group-id="8714130710-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="9494774326-2">(</span><span·class="ss">two</span><span·class="p"·data-group-id="9494774326-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="8714130710-2">(</span><span·class="ss">two</span><span·class="p"·data-group-id="8714130710-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="9494774326-3">(</span><span·class="ss">three</span><span·class="p"·data-group-id="9494774326-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="8714130710-3">(</span><span·class="ss">three</span><span·class="p"·data-group-id="8714130710-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="9494774326-4">(</span><span·class="n">Int</span><span·class="p"·data-group-id="9494774326-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="9494774326-5">([·...·truncated·by·diffoscope;·len:·74,·SHA:·e7307eb0aef0bfaafe38624798a84bbea95bac4b9421751e0de9667b9d63b249·...·]-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="8714130710-4">(</span><span·class="n">Int</span><span·class="p"·data-group-id="8714130710-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="8714130710-5">([·...·truncated·by·diffoscope;·len:·74,·SHA:·cf146fabdd3e1d7d136cf3c41555233bb138d95e786446c83e1d5879aecd7537·...·]-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="9494774326-6">(</span><span·class="ss">four</span><span·class="p"·data-group-id="9494774326-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="8714130710-6">(</span><span·class="ss">four</span><span·class="p"·data-group-id="8714130710-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="9494774326-7">(</span><span·class="ss">five</span><span·class="p"·data-group-id="9494774326-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="8714130710-7">(</span><span·class="ss">five</span><span·class="p"·data-group-id="8714130710-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="9494774326-8">(</span><span·class="ss">six</span><span·class="p"·data-group-id="9494774326-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="8714130710-8">(</span><span·class="ss">six</span><span·class="p"·data-group-id="8714130710-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.6/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.6/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="3873277458-1">(</span><span·class="ss">one</span><span·class="p"·data-group-id="3873277458-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="0322399633-1">(</span><span·class="ss">one</span><span·class="p"·data-group-id="0322399633-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="3873277458-2">(</span><span·class="ss">two</span><span·class="p"·data-group-id="3873277458-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="0322399633-2">(</span><span·class="ss">two</span><span·class="p"·data-group-id="0322399633-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="3873277458-3">(</span><span·class="ss">three</span><span·class="p"·data-group-id="3873277458-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="0322399633-3">(</span><span·class="ss">three</span><span·class="p"·data-group-id="0322399633-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="3873277458-4">(</span><span·class="ss">four</span><span·class="p"·data-group-id="3873277458-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="0322399633-4">(</span><span·class="ss">four</span><span·class="p"·data-group-id="0322399633-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="3873277458-5">(</span><span·class="ss">five</span><span·class="p"·data-group-id="3873277458-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="0322399633-5">(</span><span·class="ss">five</span><span·class="p"·data-group-id="0322399633-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="3873277458-6">(</span><span·class="ss">six</span><span·class="p"·data-group-id="3873277458-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="0322399633-6">(</span><span·class="ss">six</span><span·class="p"·data-group-id="0322399633-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="3873277458-7">(</span><span·class="n">Int</span><span·class="p"·data-group-id="3873277458-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="3873277458-8">([·...·truncated·by·diffoscope;·len:·703,·SHA:·610fbc598a0df396b484e0e584bd66dc7c1696f802cc2e53be990a203e9d3825·...·]-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="0322399633-7">(</span><span·class="n">Int</span><span·class="p"·data-group-id="0322399633-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="0322399633-8">([·...·truncated·by·diffoscope;·len:·703,·SHA:·ec62cfb64f95517688d9fa36542b928dc1edd15775b84c051dd01c3c61adeb9e·...·]-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="1826999177-3">(</span><span·class="ss">one</span><span·class="p"·data-group-id="1826999177-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="0583521958-3">(</span><span·class="ss">one</span><span·class="p"·data-group-id="0583521958-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="1826999177-4">(</span><span·class="ss">two</span><span·class="p"·data-group-id="1826999177-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="0583521958-4">(</span><span·class="ss">two</span><span·class="p"·data-group-id="0583521958-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="1826999177-5">(</span><span·class="ss">three</span><span·class="p"·data-group-id="1826999177-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="0583521958-5">(</span><span·class="ss">three</span><span·class="p"·data-group-id="0583521958-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="1826999177-6">(</span><span·class="ss">four</span><span·class="p"·data-group-id="1826999177-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="0583521958-6">(</span><span·class="ss">four</span><span·class="p"·data-group-id="0583521958-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="1826999177-7">(</span><span·class="ss">five</span><span·class="p"·data-group-id="1826999177-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="0583521958-7">(</span><span·class="ss">five</span><span·class="p"·data-group-id="0583521958-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="1826999177-8">(</span><span·class="ss">six</span><span·class="p"·data-group-id="1826999177-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:·541,·SHA:·38f686a28400cb30401824c9e252d4eb0444df5d98d85f5da944b481ef984531·...·]-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="0583521958-8">(</span><span·class="ss">six</span><span·class="p"·data-group-id="0583521958-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:·541,·SHA:·5df7cc0cccccab7919f77639b67c8b3dc5a63cb89055dadab0d872716f034543·...·]-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="5547683500-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="5547683500-4">[</span><span·clas[·...·truncated·by·diffoscope;·len:·84,·SHA:·314831ef716d9d973de88a217e85eebaf8ef85fe95da770cb03795ff3c3e86b8·...·]-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="6283385188-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="6283385188-4">[</span><span·clas[·...·truncated·by·diffoscope;·len:·84,·SHA:·cd042cfb1e17325f384b8534d7d9dc113b668fb116a286da8eaa196b50a93d1c·...·]-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="5547683500-5">(</span><span·class="n">Map</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5547683500-6">[</span><span·class="n">X</span><span·class="p">|</span><span·class="n">Xs</span><span·class="p"·data-group-id="554[·...·truncated·by·diffoscope;·len:·287,·SHA:·2f4e5ebe927e92839ff84dcabee620432342907875d2d1523cc3845fa030564a·...·]-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="6283385188-5">(</span><span·class="n">Map</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6283385188-6">[</span><span·class="n">X</span><span·class="p">|</span><span·class="n">Xs</span><span·class="p"·data-group-id="628[·...·truncated·by·diffoscope;·len:·287,·SHA:·0687dcfc81edc48aa2e45c9438acfe6f2d53f508346e9032ee5fd084ebafa864·...·]-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
162 ····</span><span·class="p"·data-group-id="5547683500-8">[</span><span·class="n">Map</span><span·class="p"·data-group-id="5547683500-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="5547683500-9">)</span><span·[·...·truncated·by·diffoscope;·len:·373,·SHA:·fbab146e5ce947d975e9eca1a9eeae19a081feaf110613816960d54b9a1ce379·...·]-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="6283385188-8">[</span><span·class="n">Map</span><span·class="p"·data-group-id="6283385188-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="6283385188-9">)</span><span·[·...·truncated·by·diffoscope;·len:·373,·SHA:·ce78031b15caad01cc92933a1bc00255f3a36fd436c32db024b1292b678d71ab·...·]-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="8600510672-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="8600510672-2">[</span><span·class="p"·data-group-id="8600510672-2">]</span><span·class="p">,</span><span·c[·...·truncated·by·diffoscope;·len:·83,·SHA:·8f28c2f997c0e18152859c5e3b341fe8596cc30aa3d660a233bb7cf3a9294f65·...·]-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="8423269106-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="8423269106-2">[</span><span·class="p"·data-group-id="8423269106-2">]</span><span·class="p">,</span><span·c[·...·truncated·by·diffoscope;·len:·83,·SHA:·c203dcbbb34acdc5441555b95896766e0a4f1bba2b54ccfdeb592f0ac751cd9e·...·]-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="8600510672-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="8600510672-4">[</span><span·class="p">_</span><span·class="p">|</span><span·class="p">_</span><span·class=[·...·truncated·by·diffoscope;·len:·309,·SHA:·feefb603a5704d53f56387d460084ec8787fd252ce551db2388804ccb76eb8a9·...·]-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="8423269106-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="8423269106-4">[</span><span·class="p">_</span><span·class="p">|</span><span·class="p">_</span><span·class=[·...·truncated·by·diffoscope;·len:·309,·SHA:·6ce638ce82e3a767622087b9924c5b4e450a8310eb504cfd6d20236fd1b6c749·...·]-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="8600510672-6">(</span><span·class="n">Map</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8600510672-7">[</span><span·class="n">X</span><span·class="p">|</span><span·class="n">Xs</span><span·class="p"·data-group-id="8600[·...·truncated·by·diffoscope;·len:·286,·SHA:·26a96b1effdb8278a348b51ebf9ba675d471e1f809f8eb0d7058113ad45a28f7·...·]-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="8423269106-6">(</span><span·class="n">Map</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8423269106-7">[</span><span·class="n">X</span><span·class="p">|</span><span·class="n">Xs</span><span·class="p"·data-group-id="8423[·...·truncated·by·diffoscope;·len:·286,·SHA:·cd486268558d9fe845af754f634aac993660d51e372be94bf678c4e3444656b7·...·]-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
172 ····</span><span·class="p"·data-group-id="8600510672-9">[</span><span·class="n">Map</span><span·class="p"·data-group-id="8600510672-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="8600510672-10">)</span><span[·...·truncated·by·diffoscope;·len:·897,·SHA:·24afcde28205e6f03040cf45be5714a78427337806427cf149a48d8f9222fef9·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">172 ····</span><span·class="p"·data-group-id="8423269106-9">[</span><span·class="n">Map</span><span·class="p"·data-group-id="8423269106-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="8423269106-10">)</span><span[·...·truncated·by·diffoscope;·len:·897,·SHA:·5ffda624478cfaaaf563e60f5bd653beac9c399f66f2379318f27f79a1126d69·...·]-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="4838096887-2">[</span><span·class="n">X</span><span·class="p">|</span><span·class="n">Xs</span><span·class="p"·data-group-id="4838096887-2">]</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">174 »       </span><span·class="p"·data-group-id="2126252338-2">[</span><span·class="n">X</span><span·class="p">|</span><span·class="n">Xs</span><span·class="p"·data-group-id="2126252338-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="4838096887-3">[</span><span·class="n">Y</span><span·class="p">|</span><span·class="n">Ys</span><span·class="p"·data-group-id="4838096887-3">]</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">176 »       »       </span><span·class="p"·data-group-id="2126252338-3">[</span><span·class="n">Y</span><span·class="p">|</span><span·class="n">Ys</span><span·class="p"·data-group-id="2126252338-3">]</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
177 »       »       ····</span><span·class="p"·data-group-id="4838096887-4">[</span><span·class="n">Map</span><span·class="p"·data-group-id="4838096887-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="4838096887-5">)</span><span·[·...·truncated·by·diffoscope;·len:·379,·SHA:·af0d2edc09f251ba501704f934b40dce47708c05981f56bcdf6d73385b71acf2·...·]-4">]</span><span·class="p">;</span><span·class="w">177 »       »       ····</span><span·class="p"·data-group-id="2126252338-4">[</span><span·class="n">Map</span><span·class="p"·data-group-id="2126252338-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="2126252338-5">)</span><span·[·...·truncated·by·diffoscope;·len:·379,·SHA:·db559425f317d268506d40995fede17ee300febe85ff5593dd9997bef6ae8f74·...·]-4">]</span><span·class="p">;</span><span·class="w">
178 »       »       </span><span·class="p"·data-group-id="4838096887-7">[</span><span·class="p"·data-group-id="4838096887-7">]</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">178 »       »       </span><span·class="p"·data-group-id="2126252338-7">[</span><span·class="p"·data-group-id="2126252338-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="4838096887-8">[</span><span·class="p"·data-group-id="4838096887-8">]</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">181 »       </span><span·class="p"·data-group-id="2126252338-8">[</span><span·class="p"·data-group-id="2126252338-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="5396647336-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="5396647336-1">]</span><span·class="w">·</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·1121,·SHA:·b7e6bea88a017066e60d9fda92a49c3871600cffb018b0c2a382b6f6bf6dc69d·...·]-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="5796904013-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="5796904013-1">]</span><span·class="w">·</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·1121,·SHA:·631cb097da9d149c0d3d9aa93ec79fdc95b68ff98b9f36b25c657f90ee174e70·...·]-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="5396647336-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><spa[·...·truncated·by·diffoscope;·len:·398,·SHA:·8bb043cbe5d1d5c1668ecf7ea06eba62069a45befbe427b7d57f02fd33f49154·...·]-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="5796904013-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><spa[·...·truncated·by·diffoscope;·len:·398,·SHA:·d91c8733501b2c79e890b60675406b9c84bea7d22654c427893916a3e30d1174·...·]-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="5396647336-9">(</span><span·class="p"·data-group-id="5396647336-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="5796904013-9">(</span><span·class="p"·data-group-id="5796904013-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="5396647336-10">{</span><span·class="p">_</span><span·class="p">,</span><span·class="n">Bytes</span><span·class="p"·data-group-id="5396647336-10">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">process_info</s[·...·truncated·by·diffoscope;·len:·340,·SHA:·e5dba1fe783100258509762272a52650b8f85397b77b53115d17e1adba06a074·...·]-11">)</span><span·class="p">.</span><span·class="w">130 2&gt;·</span><span·class="p"·data-group-id="5796904013-10">{</span><span·class="p">_</span><span·class="p">,</span><span·class="n">Bytes</span><span·class="p"·data-group-id="5796904013-10">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">process_info</s[·...·truncated·by·diffoscope;·len:·340,·SHA:·5548f8b52346eb09367643c9c455c4c6d3ffd41ba36efde6d0e53a2677649cdf·...·]-11">)</span><span·class="p">.</span><span·class="w">
131 </span><span·class="p"·data-group-id="5396647336-13">{</span><span·class="nb">memory</span><span·class="p">,</span><span·class="mi">2616</span><span·class="p"·data-group-id="5396647336-13">}</span><span·class="gp·unselectable">131 </span><span·class="p"·data-group-id="5796904013-13">{</span><span·class="nb">memory</span><span·class="p">,</span><span·class="mi">2616</span><span·class="p"·data-group-id="5796904013-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="5396647336-14">(</span><span·class="ss">wordsize</span><span·class="p"·data-group-id="5396647336-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="5796904013-14">(</span><span·class="ss">wordsize</span><span·class="p"·data-group-id="5796904013-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="3401394583-1">(</span><span·class="p"·data-group-id="3401394583-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="7949059751-1">(</span><span·class="p"·data-group-id="7949059751-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="3401394583-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="3401394583-2">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">137 ·····</span><span·class="p"·data-group-id="7949059751-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="7949059751-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="3401394583-3">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="3401394583-3">)</span><span·class="p">,</span><span·class="w">138 ·········</span><span·class="nf">handle_sys_msg</span><span·class="p"·data-group-id="7949059751-3">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="7949059751-3">)</span><span·class="p">,</span><span·class="w">
139 ·········</span><span·class="nf">loop</span><span·class="p"·data-group-id="3401394583-4">(</span><span·class="p"·data-group-id="3401394583-4">)</span><span·class="p">;</span><span·class="w">139 ·········</span><span·class="nf">loop</span><span·class="p"·data-group-id="7949059751-4">(</span><span·class="p"·data-group-id="7949059751-4">)</span><span·class="p">;</span><span·class="w">
140 ·····</span><span·class="p"·data-group-id="3401394583-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="3401394583-5">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">140 ·····</span><span·class="p"·data-group-id="7949059751-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="7949059751-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="3401394583-6">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="3401394583-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="7949059751-6">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="7949059751-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="3401394583-7">(</span><span·class="p"·data-group-id="3401394583-7">)</span><span·class="w">143 ··········</span><span·class="nf">loop</span><span·class="p"·data-group-id="7949059751-7">(</span><span·class="p"·data-group-id="7949059751-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="3401394583-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="3401394583-9">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·65,·SHA:·af3169d5a40e09b7cd6dd1a8e5d09d4da1152ba58af990acb3df889a001cee38·...·]-8">)</span><span·class="p">.</span></code></pre><p>The·call·to·<a·href="../../lib/stdlib-6.2.2/doc/html/io.html#format/2"><code·class="inline">io:format/2</code></a>·will·never·be·executed,·but·a·return·address·will145 ··</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="7949059751-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="7949059751-9">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·65,·SHA:·53245a0f74e2fc7b224392f49bb5a11ad3eb40d30851d3cde67df1a2201718b6·...·]-8">)</span><span·class="p">.</span></code></pre><p>The·call·to·<a·href="../../lib/stdlib-6.2.2/doc/html/io.html#format/2"><code·class="inline">io:format/2</code></a>·will·never·be·executed,·but·a·return·address·will
146 still·be·pushed·to·the·stack·each·time·<code·class="inline">loop/0</code>·is·called·recursively.·The146 still·be·pushed·to·the·stack·each·time·<code·class="inline">loop/0</code>·is·called·recursively.·The
147 correct·tail-recursive·version·of·the·function·looks·as·follows:</p><p><strong>DO</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">loop</span><span·class="p"·data-group-id="3110958480-1">(</span><span·class="p"·data-group-id="3110958480-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="3862876764-1">(</span><span·class="p"·data-group-id="3862876764-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="3110958480-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="3110958480-2">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">149 ······</span><span·class="p"·data-group-id="3862876764-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="3862876764-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="3110958480-3">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="3110958480-3">)</span><span·class="p">,</span><span·class="w">150 ·········</span><span·class="nf">handle_sys_msg</span><span·class="p"·data-group-id="3862876764-3">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="3862876764-3">)</span><span·class="p">,</span><span·class="w">
151 ·········</span><span·class="nf">loop</span><span·class="p"·data-group-id="3110958480-4">(</span><span·class="p"·data-group-id="3110958480-4">)</span><span·class="p">;</span><span·class="w">151 ·········</span><span·class="nf">loop</span><span·class="p"·data-group-id="3862876764-4">(</span><span·class="p"·data-group-id="3862876764-4">)</span><span·class="p">;</span><span·class="w">
152 ······</span><span·class="p"·data-group-id="3110958480-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="3110958480-5">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">152 ······</span><span·class="p"·data-group-id="3862876764-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="3862876764-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="3110958480-6">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="3110958480-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="3862876764-6">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="3862876764-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="3110958480-7">(</span><span·class="p"·data-group-id="3110958480-7">)</span><span·class="w">155 ·········</span><span·class="nf">loop</span><span·class="p"·data-group-id="3862876764-7">(</span><span·class="p"·data-group-id="3862876764-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="2936576990-1">(</span><span·class="n">Message</span><span·class="p"·data-group-id="2936576990-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="5539814893-1">(</span><span·class="n">Message</span><span·class="p"·data-group-id="5539814893-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="9571399149-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="9571399149-1">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·156,·SHA:·ebf8cca5ef27adb9fbfb5a29be211f4930df297d465a608a4f21671429f69569·...·]9-2">)</span><span·class="w">200 ····</span><span·class="p"·data-group-id="8158922969-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="8158922969-1">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·156,·SHA:·e7625820ee3c9eef120a37ca0b8ea69c593a629157a13f52dfe731f2b5d009d8·...·]9-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="2891593287-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="2891593287-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="4968832699-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="4968832699-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="2891593287-2">{</span><span·class="nf">self</span><span·class="p"·data-group-id="2891593287-3">(</span><span·class="p"·data-group-id="2891593287-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:·5a937a549fee37f9e177c5c11b9101613b30321ee00d392929fcfccb72fbec73·...·]-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="4968832699-2">{</span><span·class="nf">self</span><span·class="p"·data-group-id="4968832699-3">(</span><span·class="p"·data-group-id="4968832699-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:·86361b0e18f76b4df4503c94aa4dd40250d1f12f608f887588bb84d9bfe41287·...·]-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="2891593287-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="2891593287-4">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">207 ····</span><span·class="p"·data-group-id="4968832699-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="4968832699-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="2891593287-5">(</span><span·class="n">MRef</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2891593287-6">[</span><span·class="ss">flush</span><span·class="p"·data-group-id="2891593287-6">]</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·17,·SHA:·e5774bbdda0c2a44ae3257fa2338dcf263a5de3c48dbeab3cf4fc36a167bdab6·...·]-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="4968832699-5">(</span><span·class="n">MRef</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4968832699-6">[</span><span·class="ss">flush</span><span·class="p"·data-group-id="4968832699-6">]</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·17,·SHA:·949bb40ddf83c367ec4d3657dc0b11ad1867311f5943564fcd79ab9453b47a8e·...·]-5">)</span><span·class="p">,</span><span·class="w">
209 ········</span><span·class="nf">handle_reply</span><span·class="p"·data-group-id="2891593287-7">(</span><span·class="n">Reply</span><span·class="p"·data-group-id="2891593287-7">)</span><span·class="p">;</span><span·class="w">209 ········</span><span·class="nf">handle_reply</span><span·class="p"·data-group-id="4968832699-7">(</span><span·class="n">Reply</span><span·class="p"·data-group-id="4968832699-7">)</span><span·class="p">;</span><span·class="w">
210 ····</span><span·class="p"·data-group-id="2891593287-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:·d375883d1a6b25cff0db3e97ad7bc09de960b72ed4093f88d9c892c42c950801·...·]-8">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">210 ····</span><span·class="p"·data-group-id="4968832699-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:·134dde72cc8691a49e3f9baae6b098ab4f6291031d475a7f7c57601edd0bf155·...·]-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="2891593287-9">(</span><span·class="n">Reason</span><span·class="p"·data-group-id="2891593287-9">)</span><span·class="w">211 ········</span><span·class="nf">handle_error</span><span·class="p"·data-group-id="4968832699-9">(</span><span·class="n">Reason</span><span·class="p"·data-group-id="4968832699-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.6/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.6/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.6/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.6/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="8922090705-1">(</span><span·class="p"·data-group-id="8922090705-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="8342451842-1">(</span><span·class="p"·data-group-id="8342451842-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="8922090705-2">(</span><span·class="n">Message</span><span·class="p"·data-group-id="8922090705-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="8342451842-2">(</span><span·class="n">Message</span><span·class="p"·data-group-id="8342451842-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="8922090705-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="8922090705-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="8342451842-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="8342451842-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="8922090705-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="8922090705-4">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·156,·SHA:·d375b8ac8734e5ac97a30175c2dd403e3041e8785cf6b701da213c305f96c8cd·...·]-5">)</span><span·class="w">245 ····</span><span·class="p"·data-group-id="8342451842-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="8342451842-4">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·156,·SHA:·e6156789141d88673e54610f8e1483f887fff4c2d28d1fad969e0eb6d6447810·...·]-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="8922090705-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="8922090705-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="8342451842-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="8342451842-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="8922090705-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="8922090705-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="8342451842-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="8342451842-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="8922090705-8">{</span><span·class="nf">self</span><span·class="p"·data-group-id="8922090705-9">(</span><span·class="p"·data-group-id="8922090705-9">)</span><span·class="p">,</span><span·class="w">·</span><span·class="n">MRef</span><span·class="p">,</span><s[·...·truncated·by·diffoscope;·len:·93,·SHA:·15621bbbe4ab367ebbefe5e065852c0df5fa7b40b237a9c864af166d36a484f2·...·]-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="8342451842-8">{</span><span·class="nf">self</span><span·class="p"·data-group-id="8342451842-9">(</span><span·class="p"·data-group-id="8342451842-9">)</span><span·class="p">,</span><span·class="w">·</span><span·class="n">MRef</span><span·class="p">,</span><s[·...·truncated·by·diffoscope;·len:·93,·SHA:·98ae0b06bca77c4d393e3aed0ec331bcd1d582016218ca8770c38c372187babb·...·]-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="8922090705-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="8922090705-10">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">254 ········</span><span·class="p"·data-group-id="8342451842-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="8342451842-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="8922090705-11">(</span><span·class="n">MRef</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8922090705-12">[</span><span·class="ss">flush</span><span·class="p"·data-group-id="8922090705-12">]</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·19,·SHA:·92ae868f7ee89a37586ee15776f5d3c019d957295aded81138fec367e61593c8·...·]-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="8342451842-11">(</span><span·class="n">MRef</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8342451842-12">[</span><span·class="ss">flush</span><span·class="p"·data-group-id="8342451842-12">]</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·19,·SHA:·196cce742979764d5afed2bc1495d9a75ac18bb01353d0ac2646544cc41b7cd8·...·]-11">)</span><span·class="p">,</span><span·class="w">
256 ········</span><span·class="nf">handle_reply</span><span·class="p"·data-group-id="8922090705-13">(</span><span·class="n">Reply</span><span·class="p"·data-group-id="8922090705-13">)</span><span·class="p">;</span><span·class="w">256 ········</span><span·class="nf">handle_reply</span><span·class="p"·data-group-id="8342451842-13">(</span><span·class="n">Reply</span><span·class="p"·data-group-id="8342451842-13">)</span><span·class="p">;</span><span·class="w">
257 ····</span><span·class="p"·data-group-id="8922090705-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:·141,·SHA:·52af46a24198ace7cdeabd9610921b93afa6cdb167b005da0d3d28f7fcad984b·...·]-14">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">257 ····</span><span·class="p"·data-group-id="8342451842-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:·141,·SHA:·8856d80e0026b995cbc725a6c7491ca1937b149a8a95cebdc5e2a08020ed0566·...·]-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="8922090705-15">(</span><span·class="n">Reason</span><span·class="p"·data-group-id="8922090705-15">)</span><span·class="w">258 ····</span><span·class="nf">handle_error</span><span·class="p"·data-group-id="8342451842-15">(</span><span·class="n">Reason</span><span·class="p"·data-group-id="8342451842-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="8922090705-16">(</span><span·class="p"·data-group-id="8922090705-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="8342451842-16">(</span><span·class="p"·data-group-id="8342451842-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="8922090705-17">(</span><span·class="p"·data-group-id="8922090705-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="8342451842-17">(</span><span·class="p"·data-group-id="8342451842-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="8922090705-18">(</span><span·class="n">Ref</span><span·class="p"·data-group-id="8922090705-18">)</span><span·class="p">.</span><span·class="w">265 ····</span><span·class="nf">cross_function_receive</span><span·class="p"·data-group-id="8342451842-18">(</span><span·class="n">Ref</span><span·class="p"·data-group-id="8342451842-18">)</span><span·class="p">.</span><span·class="w">
  
266 </span><span·class="nf">cross_function_receive</span><span·class="p"·data-group-id="8922090705-19">(</span><span·class="n">Ref</span><span·class="p"·data-group-id="8922090705-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="8342451842-19">(</span><span·class="n">Ref</span><span·class="p"·data-group-id="8342451842-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="8922090705-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="8922090705-20">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·159,·SHA:·ddb287d32335ffd504aa2f0806485ae696d35b70d534b6aec458f72615d84870·...·]-21">)</span><span·class="w">269 ········</span><span·class="p"·data-group-id="8342451842-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="8342451842-20">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·159,·SHA:·08199ff0d8eede15c4e30b470bd98f376be88c0f70b4661d3f8388ce65e3aebd·...·]-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="2128648823-1">(</span><span·class="ss">complex1</span><span·class="p"·data-group-id="2128648823-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="1591842849-1">(</span><span·class="ss">complex1</span><span·class="p"·data-group-id="1591842849-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="2128648823-2">(</span><span·class="p"·data-group-id="2128648823-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:·221e041e166c43929f13c925e0af2203d0345730fb74c7ba676842cc299d0d60·...·]-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="1591842849-2">(</span><span·class="p"·data-group-id="1591842849-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:·fb47e36c8f037ca5fcc8cdbeb34fc85b88b1e6961e356a444e8b028a83e34d48·...·]-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="2128648823-4">(</span><span·class="p"·data-group-id="2128648823-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:·7dbed4cab5de6b1bc82e62540235c1e757b69c8655763665c0575ba4c495fd8d·...·]-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="1591842849-4">(</span><span·class="p"·data-group-id="1591842849-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:·6b397ee05f0978e9db179568655ad5803f800f579e12c33cc7e1efeed19f0fd4·...·]-4">)</span><span·class="p">.</span><span·class="w">
  
130 </span><span·class="nf">start</span><span·class="p"·data-group-id="2128648823-6">(</span><span·class="n">ExtPrg</span><span·class="p"·data-group-id="2128648823-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="1591842849-6">(</span><span·class="n">ExtPrg</span><span·class="p"·data-group-id="1591842849-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="2128648823-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="2128648823-8">[</span><spa[·...·truncated·by·diffoscope;·len:·119,·SHA:·c503fc55299dc84d5c96c991b56587eba82989416a55a9dd0d1747b09fce04b2·...·]-7">)</span><span·class="p">.</span><span·class="w">131 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="1591842849-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="1591842849-8">[</span><spa[·...·truncated·by·diffoscope;·len:·119,·SHA:·f393c79b70f2af59edbf1143927e38204cfec3b411d11061f1b53ddd0dd4ce28·...·]-7">)</span><span·class="p">.</span><span·class="w">
132 </span><span·class="nf">stop</span><span·class="p"·data-group-id="2128648823-9">(</span><span·class="p"·data-group-id="2128648823-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="1591842849-9">(</span><span·class="p"·data-group-id="1591842849-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="2128648823-10">(</span><span·class="n">X</span><span·class="p"·data-group-id="2128648823-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="1591842849-10">(</span><span·class="n">X</span><span·class="p"·data-group-id="1591842849-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="2128648823-11">(</span><span·class="p"·data-group-id="2128648823-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="2128648823-12">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·78a1ca84c0effc67c4621d3e5dfcb6012723b17e68836a5a20125e51eadbccb1·...·]-11">)</span><span·class="p">.</span><span·class="w">135 ····</span><span·class="nf">call_port</span><span·class="p"·data-group-id="1591842849-11">(</span><span·class="p"·data-group-id="1591842849-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="1591842849-12">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·2319ec3b52f57ea3598cb7393d77bf51dea8c0652759911c38c9567de900058c·...·]-11">)</span><span·class="p">.</span><span·class="w">
136 </span><span·class="nf">bar</span><span·class="p"·data-group-id="2128648823-13">(</span><span·class="n">Y</span><span·class="p"·data-group-id="2128648823-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="1591842849-13">(</span><span·class="n">Y</span><span·class="p"·data-group-id="1591842849-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="2128648823-14">(</span><span·class="p"·data-group-id="2128648823-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="2128648823-15">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·78a1ca84c0effc67c4621d3e5dfcb6012723b17e68836a5a20125e51eadbccb1·...·]-14">)</span><span·class="p">.</span><span·class="w">137 ····</span><span·class="nf">call_port</span><span·class="p"·data-group-id="1591842849-14">(</span><span·class="p"·data-group-id="1591842849-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="1591842849-15">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·2319ec3b52f57ea3598cb7393d77bf51dea8c0652759911c38c9567de900058c·...·]-14">)</span><span·class="p">.</span><span·class="w">
  
138 </span><span·class="nf">call_port</span><span·class="p"·data-group-id="2128648823-16">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="2128648823-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="1591842849-16">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="1591842849-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="2128648823-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="2128648823-18">(</span><span·class="p"·data-group-id="2128648823-18">)</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·94,·SHA:·79efc842a5864691aeffe12bfe40d853cb72a5e5c49f8e5a8ea96435df3b1051·...·]-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="1591842849-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="1591842849-18">(</span><span·class="p"·data-group-id="1591842849-18">)</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·94,·SHA:·8f5b8c3262dce360480aa6ed501adffbda1aaaf5b5d9b5c34b5521333bcbbbfb·...·]-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="2128648823-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="2128648823-19">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">141 »       </span><span·class="p"·data-group-id="1591842849-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="1591842849-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="2128648823-20">(</span><span·class="n">ExtPrg</span><span·class="p"·data-group-id="2128648823-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="1591842849-20">(</span><span·class="n">ExtPrg</span><span·class="p"·data-group-id="1591842849-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="2128648823-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="2128648823-22">(</span><span·class="p"·data-group-id="2128648823-22">)</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·408c3e7170644be9db76b4ffe4c1fd74cbfe1dca25bbd1ce8d5a180cafd06f0e·...·]-21">)</span><span·class="p">,</span><span·class="w">145 ····</span><span·class="nf">register</span><span·class="p"·data-group-id="1591842849-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="1591842849-22">(</span><span·class="p"·data-group-id="1591842849-22">)</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·16e2f248745270ba2d7a36ef09924d304b083719e8b44ffbfdedbbd246e3dff3·...·]-21">)</span><span·class="p">,</span><span·class="w">
146 ····</span><span·class="nf">process_flag</span><span·class="p"·data-group-id="2128648823-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="2128648823-23">)</span><span·class="p">,</span><span·class="w">146 ····</span><span·class="nf">process_flag</span><span·class="p"·data-group-id="1591842849-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="1591842849-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="2128648823-24">(</span><span·class="p"·data-group-id="2128648823-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="2128648823-25">}</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·389,·SHA:·dbaff0d334516594fcff9f25020836efaf9b1e59949814053caacf2a8347f627·...·]-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="1591842849-24">(</span><span·class="p"·data-group-id="1591842849-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="1591842849-25">}</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·389,·SHA:·6e52d8a3e10f870fdbd9423c402865b73b42cad060d6ccddf0eca73fd294b0ac·...·]-24">)</span><span·class="p">,</span><span·class="w">
148 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="2128648823-28">(</span><span·class="n">Port</span><span·class="p"·data-group-id="2128648823-28">)</span><span·class="p">.</span><span·class="w">148 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="1591842849-28">(</span><span·class="n">Port</span><span·class="p"·data-group-id="1591842849-28">)</span><span·class="p">.</span><span·class="w">
  
149 </span><span·class="nf">loop</span><span·class="p"·data-group-id="2128648823-29">(</span><span·class="n">Port</span><span·class="p"·data-group-id="2128648823-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="1591842849-29">(</span><span·class="n">Port</span><span·class="p"·data-group-id="1591842849-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="2128648823-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="2128648823-30">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">151 »       </span><span·class="p"·data-group-id="1591842849-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="1591842849-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="2128648823-31">{</span><span·class="nf">self</span><span·class="p"·data-group-id="2128648823-32">(</span><span·class="p"·data-group-id="2128648823-32">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2128648823-33">{</[·...·truncated·by·diffoscope;·len:·343,·SHA:·ade804f409b7532d44976d00daa3e762d42a29d41eb62554a3f3211adbcb363d·...·]-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="1591842849-31">{</span><span·class="nf">self</span><span·class="p"·data-group-id="1591842849-32">(</span><span·class="p"·data-group-id="1591842849-32">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1591842849-33">{</[·...·truncated·by·diffoscope;·len:·343,·SHA:·9402a2ad0b3199f9b89487444d332b2c07782be4978dddcf0d3cb76d1609ccc4·...·]-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="2128648823-35">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2128648823-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:·19c8dbdef97c42b93120bb512cc300dd6e113986ffa233b66836d7a42e14bae6·...·]-35">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">154 »       »       </span><span·class="p"·data-group-id="1591842849-35">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1591842849-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:·9394e3691c0408d945744920122935d2bd0007a66230928bc052d58f8a506ffa·...·]-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="2128648823-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="2128648823-38">(</span><span·class="n">Data</span><span·class="p"·data-group-id="2128648823-3[·...·truncated·by·diffoscope;·len:·52,·SHA:·e62aa073d15dcd43f1fa954d0cd60901a640b0a55c7cb8a05ff5b0d2a52f9e12·...·]-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="1591842849-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="1591842849-38">(</span><span·class="n">Data</span><span·class="p"·data-group-id="1591842849-3[·...·truncated·by·diffoscope;·len:·52,·SHA:·2868f20640c15deecf3095bd72932a6217739017d49bc9d617ac318fc6a586d8·...·]-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="2128648823-39">(</span><span·class="n">Port</span><span·class="p"·data-group-id="2128648823-39">)</span><span·class="p">;</span><span·class="w">157 »       ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="1591842849-39">(</span><span·class="n">Port</span><span·class="p"·data-group-id="1591842849-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="2128648823-40">{</span><span·class="nf">self</span><span·class="p"·data-group-id="2128648823-41">(</span><span·class="p"·data-group-id="2128648823-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:·c5cc023cb937181a2a15d5793a70540f93e6ec90772f3b8a122edc47704f519a·...·]-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="1591842849-40">{</span><span·class="nf">self</span><span·class="p"·data-group-id="1591842849-41">(</span><span·class="p"·data-group-id="1591842849-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:·e835a9b37a940e823d3858d1c1e153a100b8af1ce57c4b38b27c44e34a5186da·...·]-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="2128648823-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="2128648823-42">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">161 »       »       </span><span·class="p"·data-group-id="1591842849-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="1591842849-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="2128648823-43">(</span><span·class="ss">normal</span><span·class="p"·data-group-id="2128648823-43">)</span><span·class="w">162 »       »       ····</span><span·class="nf">exit</span><span·class="p"·data-group-id="1591842849-43">(</span><span·class="ss">normal</span><span·class="p"·data-group-id="1591842849-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="2128648823-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="2128648823-44">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">164 »       </span><span·class="p"·data-group-id="1591842849-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="1591842849-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="2128648823-45">(</span><span·class="ss">port_terminated</span><span·class="p"·data-group-id="2128648823-45">)</span><span·class="w">165 »       ····</span><span·class="nf">exit</span><span·class="p"·data-group-id="1591842849-45">(</span><span·class="ss">port_terminated</span><span·class="p"·data-group-id="1591842849-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="2128648823-46">(</span><span·class="p"·data-group-id="2128648823-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="2128648823-47">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·296,·SHA:·176a048590cde50c1c63fe01a745d0880c9d24749de088e4dd31f30db7d1235a·...·]-48">]</span><span·class="p">;</span><span·class="w">167 </span><span·class="nf">encode</span><span·class="p"·data-group-id="1591842849-46">(</span><span·class="p"·data-group-id="1591842849-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="1591842849-47">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·296,·SHA:·82db95747c7569ba08aa098692fc3e31b8403d5ad886c6b300dd930de61879b2·...·]-48">]</span><span·class="p">;</span><span·class="w">
168 </span><span·class="nf">encode</span><span·class="p"·data-group-id="2128648823-49">(</span><span·class="p"·data-group-id="2128648823-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="2128648823-50">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·296,·SHA:·deb0a92910e843d3e7ceee4805878c582bb5b2717b6cdf0a08be6504b43a6668·...·]-51">]</span><span·class="p">.</span><span·class="w">168 </span><span·class="nf">encode</span><span·class="p"·data-group-id="1591842849-49">(</span><span·class="p"·data-group-id="1591842849-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="1591842849-50">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·296,·SHA:·e953b3e7b4008027d1358ea13113de4ef88a0723731c9ebbd58486f1faf12ce1·...·]-51">]</span><span·class="p">.</span><span·class="w">
  
169 </span><span·class="nf">decode</span><span·class="p"·data-group-id="2128648823-52">(</span><span·class="p"·data-group-id="2128648823-53">[</span><span·class="n">Int</span><span·class="p"·data-group-id="2128648823-53">]</span><span·class="p"·data-group-id="2128648823-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="1591842849-52">(</span><span·class="p"·data-group-id="1591842849-53">[</span><span·class="n">Int</span><span·class="p"·data-group-id="1591842849-53">]</span><span·class="p"·data-group-id="1591842849-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.6/doc/html/erlang.html#term_to_binary/1"><code·class="inline">term_to_binary/1</code></a>·and172 <a·href="../../erts-15.2.6/doc/html/erlang.html#term_to_binary/1"><code·class="inline">term_to_binary/1</code></a>·and
173 <a·href="../../erts-15.2.6/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="8484710471-1">(</span><span·class="p"·data-group-id="8484710471-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="8484710471-2">}</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·2065,·SHA:·74c1dae35caead40d42d08927d00120ce5e1b3e38247e85ad0035e53db5224f6·...·]-1">}</span><span·class="p">,</span><span·class="w">173 <a·href="../../erts-15.2.6/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="1276146465-1">(</span><span·class="p"·data-group-id="1276146465-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="1276146465-2">}</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·2065,·SHA:·fdb8ee60ea9d3e0f5a0d759200f644c95d97ba89900627589ea23cdf873ca8f8·...·]-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="2994416138-5">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2994416138-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:·3403826c8b578c8d9e2a32e2b7e351d70c99779ed0c48c4612d839cba5c04442·...·]-5">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">175 ··</span><span·class="p"·data-group-id="8788710834-5">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8788710834-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:·327f3c96edb30e2cf6e4c45e6c526c091b589b75d664a52019bbc54b814c2db6·...·]-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="2994416138-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="2994416138-8">(</span><span·class="n">Data</span><span·class="p"·data-group-id="2994416138-8">[·...·truncated·by·diffoscope;·len:·49,·SHA:·5e6421f09d417218c9b1f28702e2f3f21d1b4f16fc86918ba8526fed28720828·...·]-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="8788710834-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="8788710834-8">(</span><span·class="n">Data</span><span·class="p"·data-group-id="8788710834-8">[·...·truncated·by·diffoscope;·len:·49,·SHA:·f6da8d85d5103fb3dd82aed859bc2b70a53fa0b4f6d2b877d1d624b5bcc6cdee·...·]-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="0430562760-1">{</span><span·class="nf">self</span><span·class="p"·data-group-id="0430562760-2">(</span><span·class="p"·data-group-id="0430562760-2">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0430562760-3">{</span[·...·truncated·by·diffoscope;·len:·343,·SHA:·57b13fb92c527ed58134bcb7ee770fb7a0842063da6478dbe4cc1b9d26bc51a4·...·]0-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="7157786800-1">{</span><span·class="nf">self</span><span·class="p"·data-group-id="7157786800-2">(</span><span·class="p"·data-group-id="7157786800-2">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7157786800-3">{</span[·...·truncated·by·diffoscope;·len:·343,·SHA:·2d80644307261ec108ee4180fd9f6766e70db3c39a00e211a7d0aef55c67929f·...·]0-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="0430562760-5">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0430562760-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:·90,·SHA:·15d564e1986b7e9525462dba556c6243bcbc394b9bda810ba0649c4139873414·...·]0-5">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">179 ··</span><span·class="p"·data-group-id="7157786800-5">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7157786800-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:·90,·SHA:·e435427e12b5792c8edf38f538ea18d2cf1208bb1d26afaed53f28915f78e323·...·]0-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="0430562760-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="0430562760-8">(</span><span·class="n">Data</span><span·class="p"·data-group-id="043056[·...·truncated·by·diffoscope;·len:·56,·SHA:·a7961e25b0bb4112e645f89d8389ff57771e8ec2961f1e667b99cebbb85c7611·...·]0-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="7157786800-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="7157786800-8">(</span><span·class="n">Data</span><span·class="p"·data-group-id="715778[·...·truncated·by·diffoscope;·len:·56,·SHA:·2bb5b6088150b26233151baa1ddaad2db7b26923cf24b2f2741b5cbb889a8d08·...·]0-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="6102728050-1">(</span><span·class="ss">complex2</span><span·class="p"·data-group-id="6102728050-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="0002391621-1">(</span><span·class="ss">complex2</span><span·class="p"·data-group-id="0002391621-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="6102728050-2">(</span><span·class="p"·data-group-id="6102728050-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:·58149bfaf6786527b2ccded8d4eb837159bc82bc84dd0a5bc30ee3e604cf04ab·...·]-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="0002391621-2">(</span><span·class="p"·data-group-id="0002391621-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:·6ecde48b6ee62ea0645c523f6233b5c05ddc7535760f320f748e97041b5a4d40·...·]-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="6102728050-4">(</span><span·class="p"·data-group-id="6102728050-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:·04c7d8b5cdb43daf4c56c22a54d8e23ef34cfe76f6b0d8361e61f37dc2ac59ec·...·]-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="0002391621-4">(</span><span·class="p"·data-group-id="0002391621-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:·f637f9e214863fcfc864ff73c87784589177ea0881470c1adab07834eb24aa93·...·]-4">)</span><span·class="p">.</span><span·class="w">
  
184 </span><span·class="nf">start</span><span·class="p"·data-group-id="6102728050-6">(</span><span·class="n">ExtPrg</span><span·class="p"·data-group-id="6102728050-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="0002391621-6">(</span><span·class="n">ExtPrg</span><span·class="p"·data-group-id="0002391621-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="6102728050-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="6102728050-8">[</span><spa[·...·truncated·by·diffoscope;·len:·119,·SHA:·e7680bfa6c02fb59ff8907e5e155399113a8dcd7be4220fcee69ed13cf174246·...·]-7">)</span><span·class="p">.</span><span·class="w">185 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="0002391621-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="0002391621-8">[</span><spa[·...·truncated·by·diffoscope;·len:·119,·SHA:·9ae7f1d8757ae1757788b2f533b3d1b4d000c75dee544dace212d76e0ff0dbb4·...·]-7">)</span><span·class="p">.</span><span·class="w">
186 </span><span·class="nf">stop</span><span·class="p"·data-group-id="6102728050-9">(</span><span·class="p"·data-group-id="6102728050-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="0002391621-9">(</span><span·class="p"·data-group-id="0002391621-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="6102728050-10">(</span><span·class="n">X</span><span·class="p"·data-group-id="6102728050-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="0002391621-10">(</span><span·class="n">X</span><span·class="p"·data-group-id="0002391621-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="6102728050-11">(</span><span·class="p"·data-group-id="6102728050-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="6102728050-12">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·6438a719b527b04a2fdba02e9943056f1bf9bccf5a6eac35eee878268faaf64f·...·]-11">)</span><span·class="p">.</span><span·class="w">189 ····</span><span·class="nf">call_port</span><span·class="p"·data-group-id="0002391621-11">(</span><span·class="p"·data-group-id="0002391621-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="0002391621-12">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·582acafc8e9ecbcc734616af634cf3a3354def2f3bf00c0ea8e27af692ec7b54·...·]-11">)</span><span·class="p">.</span><span·class="w">
190 </span><span·class="nf">bar</span><span·class="p"·data-group-id="6102728050-13">(</span><span·class="n">Y</span><span·class="p"·data-group-id="6102728050-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="0002391621-13">(</span><span·class="n">Y</span><span·class="p"·data-group-id="0002391621-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="6102728050-14">(</span><span·class="p"·data-group-id="6102728050-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="6102728050-15">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·6438a719b527b04a2fdba02e9943056f1bf9bccf5a6eac35eee878268faaf64f·...·]-14">)</span><span·class="p">.</span><span·class="w">191 ····</span><span·class="nf">call_port</span><span·class="p"·data-group-id="0002391621-14">(</span><span·class="p"·data-group-id="0002391621-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="0002391621-15">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·582acafc8e9ecbcc734616af634cf3a3354def2f3bf00c0ea8e27af692ec7b54·...·]-14">)</span><span·class="p">.</span><span·class="w">
  
192 </span><span·class="nf">call_port</span><span·class="p"·data-group-id="6102728050-16">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="6102728050-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="0002391621-16">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="0002391621-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="6102728050-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="6102728050-18">(</span><span·class="p"·data-group-id="6102728050-18">)</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·94,·SHA:·febbdb601f32d70a77006745ef946b769d3c0bab5b598168ffdfe3d46daf036c·...·]-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="0002391621-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="0002391621-18">(</span><span·class="p"·data-group-id="0002391621-18">)</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·94,·SHA:·562038b2c722dec8bde36bc6edfd9da963f818dd64b436beacb0a98af0e299ab·...·]-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="6102728050-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="6102728050-19">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">195 »       </span><span·class="p"·data-group-id="0002391621-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="0002391621-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="6102728050-20">(</span><span·class="n">ExtPrg</span><span·class="p"·data-group-id="6102728050-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="0002391621-20">(</span><span·class="n">ExtPrg</span><span·class="p"·data-group-id="0002391621-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="6102728050-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="6102728050-22">(</span><span·class="p"·data-group-id="6102728050-22">)</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·f06348c0e5ef65412b356cce51fa244b265c921199accb62470418d5fea39c30·...·]-21">)</span><span·class="p">,</span><span·class="w">199 ····</span><span·class="nf">register</span><span·class="p"·data-group-id="0002391621-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="0002391621-22">(</span><span·class="p"·data-group-id="0002391621-22">)</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·03b7e1db8173fc71f4dcf5c332bee0a768ae2d7f7a2453e80c4fd30f1ff314a3·...·]-21">)</span><span·class="p">,</span><span·class="w">
200 ····</span><span·class="nf">process_flag</span><span·class="p"·data-group-id="6102728050-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="6102728050-23">)</span><span·class="p">,</span><span·class="w">200 ····</span><span·class="nf">process_flag</span><span·class="p"·data-group-id="0002391621-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="0002391621-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="6102728050-24">(</span><span·class="p"·data-group-id="6102728050-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="6102728050-25">}</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·467,·SHA:·f421151429a3e1f4dd2955f7ff015663559c63f8207dab2c4e4d639c2205a5f6·...·]-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="0002391621-24">(</span><span·class="p"·data-group-id="0002391621-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="0002391621-25">}</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·467,·SHA:·e331eea4239127a16dd8b309caf691563bc23ea65fae24107f363f032543f9fc·...·]-24">)</span><span·class="p">,</span><span·class="w">
202 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="6102728050-28">(</span><span·class="n">Port</span><span·class="p"·data-group-id="6102728050-28">)</span><span·class="p">.</span><span·class="w">202 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="0002391621-28">(</span><span·class="n">Port</span><span·class="p"·data-group-id="0002391621-28">)</span><span·class="p">.</span><span·class="w">
  
203 </span><span·class="nf">loop</span><span·class="p"·data-group-id="6102728050-29">(</span><span·class="n">Port</span><span·class="p"·data-group-id="6102728050-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="0002391621-29">(</span><span·class="n">Port</span><span·class="p"·data-group-id="0002391621-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="6102728050-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="6102728050-30">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">205 »       </span><span·class="p"·data-group-id="0002391621-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="0002391621-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="6102728050-31">{</span><span·class="nf">self</span><span·class="p"·data-group-id="6102728050-32">(</span><span·class="p"·data-group-id="6102728050-32">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6102728050-33">{</[·...·truncated·by·diffoscope;·len:·351,·SHA:·005e711457ef5e36913bf65417dfcb169ba192728b5bbaae8f57b8d34a1b1a3f·...·]-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="0002391621-31">{</span><span·class="nf">self</span><span·class="p"·data-group-id="0002391621-32">(</span><span·class="p"·data-group-id="0002391621-32">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0002391621-33">{</[·...·truncated·by·diffoscope;·len:·351,·SHA:·949bbea04b0d803eeea7e0adbdef2a497ad17bc5cdff0cfe161b15869dcf36de·...·]-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="6102728050-35">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6102728050-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:·e03daf2f68dce52f1286180e13a9105afebc0b7952c2dea73653ce69da0553d1·...·]-35">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">208 »       »       </span><span·class="p"·data-group-id="0002391621-35">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0002391621-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:·9cf285ac5ecbdac101a2f7cc73d6550069c62df35b437e9e597047eb13d7ee64·...·]-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="6102728050-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="6102728050-38">(</span><span·class="n">Data</span><span·class="p"·data-group-id="6102[·...·truncated·by·diffoscope;·len:·60,·SHA:·5350eef65c52a10eb2f60fefb87a1eb750a3dc7321a3776aed63d0038827e488·...·]-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="0002391621-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="0002391621-38">(</span><span·class="n">Data</span><span·class="p"·data-group-id="0002[·...·truncated·by·diffoscope;·len:·60,·SHA:·751382738065846bd3c1cc103cb4a8e39c371e2bc6eb7aa738d132933025b767·...·]-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="6102728050-39">(</span><span·class="n">Port</span><span·class="p"·data-group-id="6102728050-39">)</span><span·class="p">;</span><span·class="w">211 »       ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="0002391621-39">(</span><span·class="n">Port</span><span·class="p"·data-group-id="0002391621-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="6102728050-40">{</span><span·class="nf">self</span><span·class="p"·data-group-id="6102728050-41">(</span><span·class="p"·data-group-id="6102728050-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:·1860e9750330f38b995bd2c125e4c0d8068bcb872c5e3b893ff43df4b52dcfd1·...·]-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="0002391621-40">{</span><span·class="nf">self</span><span·class="p"·data-group-id="0002391621-41">(</span><span·class="p"·data-group-id="0002391621-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:·fb51de0bc401f9acc131b8277d612c93ec7e9f667ab4491a9f2ffd2453669602·...·]-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="6102728050-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="6102728050-42">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">215 »       »       </span><span·class="p"·data-group-id="0002391621-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="0002391621-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="6102728050-43">(</span><span·class="ss">normal</span><span·class="p"·data-group-id="6102728050-43">)</span><span·class="w">216 »       »       ····</span><span·class="nf">exit</span><span·class="p"·data-group-id="0002391621-43">(</span><span·class="ss">normal</span><span·class="p"·data-group-id="0002391621-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="6102728050-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="6102728050-44">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">218 »       </span><span·class="p"·data-group-id="0002391621-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="0002391621-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="6102728050-45">(</span><span·class="ss">port_terminated</span><span·class="p"·data-group-id="6102728050-45">)</span><span·class="w">219 »       ····</span><span·class="nf">exit</span><span·class="p"·data-group-id="0002391621-45">(</span><span·class="ss">port_terminated</span><span·class="p"·data-group-id="0002391621-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.6/doc/html/kernel_app.html#logger_sasl_compatible"><code·class="inline">logger_sasl_compatible</code></a>·to147 <a·href="../../lib/kernel-10.2.6/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="5564484884-1">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">10.0</span><span·class="p"·data-group-id="5564484884-1">]</span><span·class="w">·</span><span·class="p"·data-group-id="5564484884-2">[</span><span·class="ss">source<[·...·truncated·by·diffoscope;·len:·1313,·SHA:·abe8655285e7830e4320e209f58dba965ff269b8638176e8b672fdc5810c5ff3·...·]-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="0158489167-1">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">10.0</span><span·class="p"·data-group-id="0158489167-1">]</span><span·class="w">·</span><span·class="p"·data-group-id="0158489167-2">[</span><span·class="ss">source<[·...·truncated·by·diffoscope;·len:·1313,·SHA:·37f0c154935f2288933ef4d404f3d8678e2937a5b24633965de81062fce8be73·...·]-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="5564484884-8">{</span><span·class="ss">local</span><span·class="p">,</span><span·class="ss">kernel_safe_sup</span><span·class="p"·data-group-id="5564484884-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="0158489167-8">{</span><span·class="ss">local</span><span·class="p">,</span><span·class="ss">kernel_safe_sup</span><span·class="p"·data-group-id="0158489167-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="5564484884-9">[</span><span·class="p"·data-group-id="5564484884-10">{</span><span·class="ss">pid</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.74</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</spa[·...·truncated·by·diffoscope;·len:·43,·SHA:·f5c9e66ae0037736872c61a1302349d2245278acd1f631d54615620e042bc37e·...·]-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="0158489167-9">[</span><span·class="p"·data-group-id="0158489167-10">{</span><span·class="ss">pid</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.74</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</spa[·...·truncated·by·diffoscope;·len:·43,·SHA:·011fed0333808fc86915cd9ad87fafae3cf4dc16687f2fb30befb4a2f665e1ae·...·]-10">}</span><span·class="p">,</span><span·class="w">
160 ··············</span><span·class="p"·data-group-id="5564484884-11">{</span><span·class="ss">id</span><span·class="p">,</span><span·class="ss">disk_log_sup</span><span·class="p"·data-group-id="5564484884-11">}</span><span·class="p">,</span><span·class="w">160 ··············</span><span·class="p"·data-group-id="0158489167-11">{</span><span·class="ss">id</span><span·class="p">,</span><span·class="ss">disk_log_sup</span><span·class="p"·data-group-id="0158489167-11">}</span><span·class="p">,</span><span·class="w">
161 ··············</span><span·class="p"·data-group-id="5564484884-12">{</span><span·class="ss">mfargs</span><span·class="p">,</span><span·class="p"·data-group-id="5564484884-13">{</span><span·class="ss">disk_log_sup</span><span·class="p">,</span><span·class="ss">start_link</span><span·class="p">,</span><span·c[·...·truncated·by·diffoscope;·len:·196,·SHA:·18e658a46dfa0d0386033ee86c215b7609b4a814784647344eaad1a645c3b89b·...·]-12">}</span><span·class="p">,</span><span·class="w">161 ··············</span><span·class="p"·data-group-id="0158489167-12">{</span><span·class="ss">mfargs</span><span·class="p">,</span><span·class="p"·data-group-id="0158489167-13">{</span><span·class="ss">disk_log_sup</span><span·class="p">,</span><span·class="ss">start_link</span><span·class="p">,</span><span·c[·...·truncated·by·diffoscope;·len:·196,·SHA:·9f48ff37a16349896d4870318023ee79bb417f7b8539c27efe6a101c47b0f952·...·]-12">}</span><span·class="p">,</span><span·class="w">
162 ··············</span><span·class="p"·data-group-id="5564484884-15">{</span><span·class="ss">restart_type</span><span·class="p">,</span><span·class="ss">permanent</span><span·class="p"·data-group-id="5564484884-15">}</span><span·class="p">,</span><span·class="w">162 ··············</span><span·class="p"·data-group-id="0158489167-15">{</span><span·class="ss">restart_type</span><span·class="p">,</span><span·class="ss">permanent</span><span·class="p"·data-group-id="0158489167-15">}</span><span·class="p">,</span><span·class="w">
163 ··············</span><span·class="p"·data-group-id="5564484884-16">{</span><span·class="ss">shutdown</span><span·class="p">,</span><span·class="mi">1000</span><span·class="p"·data-group-id="5564484884-16">}</span><span·class="p">,</span><span·class="w">163 ··············</span><span·class="p"·data-group-id="0158489167-16">{</span><span·class="ss">shutdown</span><span·class="p">,</span><span·class="mi">1000</span><span·class="p"·data-group-id="0158489167-16">}</span><span·class="p">,</span><span·class="w">
164 ··············</span><span·class="p"·data-group-id="5564484884-17">{</span><span·class="ss">child_type</span><span·class="p">,</span><span·class="ss">supervisor</span><span·class="p"·data-group-id="5564484884-17">}</span><span·class="p"·data-group-id="5564484884-9">]</span><span·class="w">164 ··············</span><span·class="p"·data-group-id="0158489167-17">{</span><span·class="ss">child_type</span><span·class="p">,</span><span·class="ss">supervisor</span><span·class="p"·data-group-id="0158489167-17">}</span><span·class="p"·data-group-id="0158489167-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="5564484884-18">{</span><span·class="ss">local</span><span·class="p">,</span><span·class="ss">kernel_safe_sup</span><span·class="p"·data-group-id="5564484884-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="0158489167-18">{</span><span·class="ss">local</span><span·class="p">,</span><span·class="ss">kernel_safe_sup</span><span·class="p"·data-group-id="0158489167-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="5564484884-19">[</span><span·class="p"·data-group-id="5564484884-20">{</span><span·class="ss">pid</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.75</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·8ce5f2db2f9ee217d8e120e06f509c534387c265d804a19337dc4a185f353465·...·]-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="0158489167-19">[</span><span·class="p"·data-group-id="0158489167-20">{</span><span·class="ss">pid</span><span·class="p">,</span><span·class="o">&lt;</span><span·class="mf">0.75</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·6995426797285e5081e57f1b93705271ac2548e90849f10c998a0af36210f8d7·...·]-20">}</span><span·class="p">,</span><span·class="w">
168 ··············</span><span·class="p"·data-group-id="5564484884-21">{</span><span·class="ss">id</span><span·class="p">,</span><span·class="ss">disk_log_server</span><span·class="p"·data-group-id="5564484884-21">}</span><span·class="p">,</span><span·class="w">168 ··············</span><span·class="p"·data-group-id="0158489167-21">{</span><span·class="ss">id</span><span·class="p">,</span><span·class="ss">disk_log_server</span><span·class="p"·data-group-id="0158489167-21">}</span><span·class="p">,</span><span·class="w">
169 ··············</span><span·class="p"·data-group-id="5564484884-22">{</span><span·class="ss">mfargs</span><span·class="p">,</span><span·class="p"·data-group-id="5564484884-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:·199,·SHA:·0b9a1f143568870fcb205d41d2507cf8617ba6444d4fc16a0ae88d0c0a7c4552·...·]-22">}</span><span·class="p">,</span><span·class="w">169 ··············</span><span·class="p"·data-group-id="0158489167-22">{</span><span·class="ss">mfargs</span><span·class="p">,</span><span·class="p"·data-group-id="0158489167-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:·199,·SHA:·89a317c9e0fcfa5dc4e7a101a4d329426dfd51e2b7ea123a8fa4e25c1fc3ffb1·...·]-22">}</span><span·class="p">,</span><span·class="w">
170 ··············</span><span·class="p"·data-group-id="5564484884-25">{</span><span·class="ss">restart_type</span><span·class="p">,</span><span·class="ss">permanent</span><span·class="p"·data-group-id="5564484884-25">}</span><span·class="p">,</span><span·class="w">170 ··············</span><span·class="p"·data-group-id="0158489167-25">{</span><span·class="ss">restart_type</span><span·class="p">,</span><span·class="ss">permanent</span><span·class="p"·data-group-id="0158489167-25">}</span><span·class="p">,</span><span·class="w">
171 ··············</span><span·class="p"·data-group-id="5564484884-26">{</span><span·class="ss">shutdown</span><span·class="p">,</span><span·class="mi">2000</span><span·class="p"·data-group-id="5564484884-26">}</span><span·class="p">,</span><span·class="w">171 ··············</span><span·class="p"·data-group-id="0158489167-26">{</span><span·class="ss">shutdown</span><span·class="p">,</span><span·class="mi">2000</span><span·class="p"·data-group-id="0158489167-26">}</span><span·class="p">,</span><span·class="w">
172 ··············</span><span·class="p"·data-group-id="5564484884-27">{</span><span·class="ss">child_type</span><span·class="p">,</span><span·class="ss">worker</span><span·class="p"·data-group-id="5564484884-27">}</span><span·class="p"·data-group-id="5564484884-19">]</span><span·class="w">172 ··············</span><span·class="p"·data-group-id="0158489167-27">{</span><span·class="ss">child_type</span><span·class="p">,</span><span·class="ss">worker</span><span·class="p"·data-group-id="0158489167-27">}</span><span·class="p"·data-group-id="0158489167-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="5564484884-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="5564484884-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="0158489167-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="0158489167-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.6/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.6/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.6/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.6/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.6/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.6/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.6/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.6/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="1118422945-1">{</span><span·class="ss">&#39;EXIT&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="1118422945-2">{</span><span·class="ss">test</span><span·class="p">,</span><span·class="n">Stacktrace</span><span·class="p"·data-group-id="111[·...·truncated·by·diffoscope;·len:·453,·SHA:·2082e055d715ea3d59719f49ad4cfc9da003bfafb9566964a2ee85464f27856c·...·]-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="3507370988-1">{</span><span·class="ss">&#39;EXIT&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="3507370988-2">{</span><span·class="ss">test</span><span·class="p">,</span><span·class="n">Stacktrace</span><span·class="p"·data-group-id="350[·...·truncated·by·diffoscope;·len:·453,·SHA:·2d8f1de65838fdb17fce714d40a47deb2d520bc0936a291a42f480714d95023d·...·]-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="1118422945-5">[</span><span·class="p"·data-group-id="1118422945-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:·3159dc81b324cf9c3e800221fd8f416a3719a42667e04001f79961c9d3b3a7ec·...·]-6">}</span><span·class="p">,</span><span·class="w">159 </span><span·class="p"·data-group-id="3507370988-5">[</span><span·class="p"·data-group-id="3507370988-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:·a0db99effa04b686fffa209f0535db7a396b9305511a3f6748f0df4850009166·...·]-6">}</span><span·class="p">,</span><span·class="w">
160 ·</span><span·class="p"·data-group-id="1118422945-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="1118422945-9">[</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·74,·SHA:·dee9110cd345e39df4f89578d6903386a46960e5c818c06900fea9c5f51dfd79·...·]-8">}</span><span·class="p">,</span><span·class="w">160 ·</span><span·class="p"·data-group-id="3507370988-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="3507370988-9">[</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·74,·SHA:·603d4c638053e593f00e2705fda28811f14779a902eab616998fd01cee417897·...·]-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="1118422945-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="3507370988-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="1118422945-10">(</span><span·class="ss">test</span><span·class="p"·data-group-id="1118422945-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="3507370988-10">(</span><span·class="ss">test</span><span·class="p"·data-group-id="3507370988-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="1118422945-11">[</span><span·class="p"·data-group-id="1118422945-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:·e1b0f9712a9ba315858e043e5eeabdb5e3e527744e4347bef28cdaf1cfc64c41·...·]-12">}</span><span·class="p">,</span><span·class="w">163 </span><span·class="p"·data-group-id="3507370988-11">[</span><span·class="p"·data-group-id="3507370988-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:·5fe7bf969055eff6ac4e06e5b009100c6f4f95b6e912b6332160a97c9368533e·...·]-12">}</span><span·class="p">,</span><span·class="w">
164 ·</span><span·class="p"·data-group-id="1118422945-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="1118422945-15">[</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·77,·SHA:·c507b00a372e6d0502e26161993f95a325bdf6e8fd0a24191d96e628873105aa·...·]-14">}</span><span·class="p">,</span><span·class="w">164 ·</span><span·class="p"·data-group-id="3507370988-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="3507370988-15">[</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·77,·SHA:·3c373676400a0ee5c1ad08a77219819b356c5e907a06a6bc5f19dc1a4577fa8c·...·]-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="1118422945-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="3507370988-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.6/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.6/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="1583044786-1">(</span><span·class="ss">terminal_logger</span><span·class="p"·data-group-id="1583044786-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="6870426926-1">(</span><span·class="ss">terminal_logger</span><span·class="p"·data-group-id="6870426926-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="1583044786-2">(</span><span·class="ss">gen_event</span><span·class="p"·data-group-id="1583044786-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="6870426926-2">(</span><span·class="ss">gen_event</span><span·class="p"·data-group-id="6870426926-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="1583044786-3">(</span><span·class="p"·data-group-id="1583044786-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:·252,·SHA:·36f0f03484a8484f806bb1319c53e92976efb7e336907de8951240fcf5ccc2cf·...·]6-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="6870426926-3">(</span><span·class="p"·data-group-id="6870426926-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:·252,·SHA:·054977b5f55ebbe3fc362803bf2cefa3c62cbf399825b22107176129673ecdf7·...·]6-3">)</span><span·class="p">.</span><span·class="w">
  
146 </span><span·class="nf">init</span><span·class="p"·data-group-id="1583044786-5">(</span><span·class="p">_</span><span·class="n">Args</span><span·class="p"·data-group-id="1583044786-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="6870426926-5">(</span><span·class="p">_</span><span·class="n">Args</span><span·class="p"·data-group-id="6870426926-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
147 ····</span><span·class="p"·data-group-id="1583044786-6">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1583044786-7">[</span><span·class="p"·data-group-id="1583044786-7">]</span><span·class="p"·data-group-id="1583044786-6">}</span><span·class="p">.</span><span·class="w">147 ····</span><span·class="p"·data-group-id="6870426926-6">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6870426926-7">[</span><span·class="p"·data-group-id="6870426926-7">]</span><span·class="p"·data-group-id="6870426926-6">}</span><span·class="p">.</span><span·class="w">
  
148 </span><span·class="nf">handle_event</span><span·class="p"·data-group-id="1583044786-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="1583044786-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="6870426926-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="6870426926-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="1583044786-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="1583044786-10">[</span><span·clas[·...·truncated·by·diffoscope;·len:·115,·SHA:·fc9c2831b521fa0eecd38842cf12ab9b6f5d820e0e129d3d09bf596186251161·...·]6-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="6870426926-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="6870426926-10">[</span><span·clas[·...·truncated·by·diffoscope;·len:·115,·SHA:·d9a19d1862e3aaa5b7ca535e9a162fdfc8e1d6ad8c48ffb587513c5f319c632b·...·]6-9">)</span><span·class="p">,</span><span·class="w">
150 ····</span><span·class="p"·data-group-id="1583044786-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="1583044786-11">}</span><span·class="p">.</span><span·class="w">150 ····</span><span·class="p"·data-group-id="6870426926-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="6870426926-11">}</span><span·class="p">.</span><span·class="w">
  
151 </span><span·class="nf">terminate</span><span·class="p"·data-group-id="1583044786-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="1583044786-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="6870426926-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="6870426926-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="3861385503-1">(</span><span·class="ss">file_logger</span><span·class="p"·data-group-id="3861385503-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="0539678060-1">(</span><span·class="ss">file_logger</span><span·class="p"·data-group-id="0539678060-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="3861385503-2">(</span><span·class="ss">gen_event</span><span·class="p"·data-group-id="3861385503-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="0539678060-2">(</span><span·class="ss">gen_event</span><span·class="p"·data-group-id="0539678060-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="3861385503-3">(</span><span·class="p"·data-group-id="3861385503-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:·fe925fd8e6df86e5bbd87d9b748bc275360dff88bdba62e531f5960876d55b34·...·]-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="0539678060-3">(</span><span·class="p"·data-group-id="0539678060-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:·21ac6cf56297aadf633f0029c5592a6be52a656d5cfe668669d0a5209e87492a·...·]-3">)</span><span·class="p">.</span><span·class="w">
  
157 </span><span·class="nf">init</span><span·class="p"·data-group-id="3861385503-5">(</span><span·class="n">File</span><span·class="p"·data-group-id="3861385503-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="0539678060-5">(</span><span·class="n">File</span><span·class="p"·data-group-id="0539678060-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
158 ····</span><span·class="p"·data-group-id="3861385503-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="3861385503-6">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·267,·SHA:·b2b4a32ba20c449b0f1fe94f33165544da2d35b5822df2b568a4e62839a8eed0·...·]-7">)</span><span·class="p">,</span><span·class="w">158 ····</span><span·class="p"·data-group-id="0539678060-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="0539678060-6">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·267,·SHA:·19de027b1c2e0d83a351e3531adec980fbc595e8c5a85c6ee9075f36208417cd·...·]-7">)</span><span·class="p">,</span><span·class="w">
159 ····</span><span·class="p"·data-group-id="3861385503-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="3861385503-8">}</span><span·class="p">.</span><span·class="w">159 ····</span><span·class="p"·data-group-id="0539678060-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="0539678060-8">}</span><span·class="p">.</span><span·class="w">
  
160 </span><span·class="nf">handle_event</span><span·class="p"·data-group-id="3861385503-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="3861385503-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="0539678060-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="0539678060-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="3861385503-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:·8a41460531d30ad81b89c3cfa306682eea08699b811be6a7e049f866ad2c2715·...·]-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="0539678060-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:·f972f2fd196e536449832bbac6d4dec4be8e2de8f5ad35ddbf78067d7e51f8af·...·]-10">)</span><span·class="p">,</span><span·class="w">
162 ····</span><span·class="p"·data-group-id="3861385503-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="3861385503-12">}</span><span·class="p">.</span><span·class="w">162 ····</span><span·class="p"·data-group-id="0539678060-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="0539678060-12">}</span><span·class="p">.</span><span·class="w">
  
163 </span><span·class="nf">terminate</span><span·class="p"·data-group-id="3861385503-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="3861385503-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="0539678060-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="0539678060-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="3861385503-14">(</span><span·class="n">Fd</span><span·class="p"·data-group-id="3861385503-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="0539678060-14">(</span><span·class="n">Fd</span><span·class="p"·data-group-id="0539678060-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.2/doc/html/gen_event.html#start_link/1"><code·class="inline">gen_event:start_link/1</code></a>·spawns·and·links·to·a·new·event·manager·process.</p><p>The·argument,·<code·class="inline">{local,·error_man}</code>,·specifies·the·name·under·which·the171 example,·call·the·following·function:</p><pre><code·class="text">gen_event:start_link({local,·error_man})</code></pre><p><a·href="../../lib/stdlib-6.2.2/doc/html/gen_event.html#start_link/1"><code·class="inline">gen_event:start_link/1</code></a>·spawns·and·links·to·a·new·event·manager·process.</p><p>The·argument,·<code·class="inline">{local,·error_man}</code>,·specifies·the·name·under·which·the
Offset 184, 57 lines modifiedOffset 184, 57 lines modified
184 manager·that·is·not·part·of·a·supervision·tree.</p><h2·id="adding-an-event-handler"·class="section-heading">184 manager·that·is·not·part·of·a·supervision·tree.</p><h2·id="adding-an-event-handler"·class="section-heading">
185 ··<a·href="#adding-an-event-handler"·class="hover-link">185 ··<a·href="#adding-an-event-handler"·class="hover-link">
186 ····<i·class="ri-link-m"·aria-hidden="true"></i>186 ····<i·class="ri-link-m"·aria-hidden="true"></i>
187 ··</a>187 ··</a>
188 ··<span·class="text">Adding·an·Event·Handler</span>188 ··<span·class="text">Adding·an·Event·Handler</span>
189 </h2>189 </h2>
190 <p>The·following·example·shows·how·to·start·an·event·manager·and·add·an·event190 <p>The·following·example·shows·how·to·start·an·event·manager·and·add·an·event
191 handler·to·it·by·using·the·shell:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">gen_event</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="4980326691-1">(</span><span·class="p"·data-group-id="4980326691-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="4980326691-2">}</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·55e7f5620f49aaed4c43ef13bcc6a2d1a00d8318fc9e97a191bc09e35fb76d25·...·]-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="0746279079-1">(</span><span·class="p"·data-group-id="0746279079-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="0746279079-2">}</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·427182e38c7e5a9a9455e17de2bbd624f0783d1b319ffbe79f8f29260302d72d·...·]-1">)</span><span·class="p">.</span><span·class="w">
192 </span><span·class="p"·data-group-id="4980326691-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="4980326691-3">}</span><span·class="gp·unselectable">192 </span><span·class="p"·data-group-id="0746279079-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="0746279079-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="4980326691-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="4980326691-5">[</span><span·class="[·...·truncated·by·diffoscope;·len:·81,·SHA:·070a0b3758c6d1370c3d354cf1bac7158f763767e10cd606cfaf670619072f5b·...·]-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="0746279079-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="0746279079-5">[</span><span·class="[·...·truncated·by·diffoscope;·len:·81,·SHA:·ff72ac7855dbad6dd21f350fba270a86aa9d36eabeae14a667e2e7d6a6ea19cd·...·]-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="7710579474-1">(</span><span·class="p">_</span><span·class="n">Args</span><span·class="p"·data-group-id="7710579474-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w"> 
199 ····</span><span·class="p"·data-group-id="7710579474-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7710579474-3">[</span><span·class="p"·data-group-id="7710579474-3">]</span><span·class=[·...·truncated·by·diffoscope;·len:·180,·SHA:·a6a018375c3b9e3940a353c687908c8786ec5ba450d5c5cb84423e6ad87a00e1·...·]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="6242102093-1">(</span><span·class="p">_</span><span·class="n">[·...·truncated·by·diffoscope;·len:·132,·SHA:·c2603b39f56d6c67a678cc6623ec460a680662e7049b323331d69ba2434019b2·...·]
 199 ····</span><span·class="p"·data-group-id="6242102093-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6242102093-3">[</span><span·class="p"·data-group-id="6242102093-3">]</span><span·class="p"·data-group-id="6242102093-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="5007864956-1">(</span><span·class="n">File</span><span·class="p"·data-group-id="5007864956-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="4820635229-1">(</span><span·class="n">File</span><span·class="p"·data-group-id="4820635229-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
202 ····</span><span·class="p"·data-group-id="5007864956-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="5007864956-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·267,·SHA:·a0325e0c830204be29770708d3067896e60f6b47663b8f0a6a3fb95fa009921e·...·]-3">)</span><span·class="p">,</span><span·class="w">202 ····</span><span·class="p"·data-group-id="4820635229-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="4820635229-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·267,·SHA:·357cd503d91dc09ac79bc3b4ce9121c26cc7550266c641108536e62b351e5ef5·...·]-3">)</span><span·class="p">,</span><span·class="w">
203 ····</span><span·class="p"·data-group-id="5007864956-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="5007864956-4">}</span><span·class="p">.</span></code></pre><h2·id="notifying-about-events"·class="section-heading">203 ····</span><span·class="p"·data-group-id="4820635229-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="4820635229-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="6165131508-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="6165131508-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="6165131508-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="6165131508-3">[</span><span·class="n">ErrorMsg</span><span·class="p"·data-group-id="6165131508-3">]</span><span·class="p"·data-group-id="6165131508-2">)</span><span·class="p">,</span><span·class="w"> 
217 ····</span><span·class="p"·data-group-id="6165131508-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="6165131508-4">}</span><span·class="p">.</span></code></pre>[·...·truncated·by·diffoscope;·len:·332,·SHA:·4573d738660dc37d43368dc74d1890785545fa331fb0c8a7bd52cf02196a5f15·...·]-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="6447106807-1">(</span><span·class="n">ErrorMsg</span><sp[·...·truncated·by·diffoscope;·len:·114,·SHA:·bce0449ba63591e6e9b4fdb2bac6112e98083464c44e2c308a0132e33c72e82c·...·]-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="6447106807-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="6447106807-3">[</span><span·class="n">ErrorMsg</span><span·class="p"·data-group-id="6447106807-3">]</span><span·class="p"·data-group-id="6447106807-2">)</span><span·class="p">,</span><span·class="w">
 217 ····</span><span·class="p"·data-group-id="6447106807-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="6447106807-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="1255221490-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="1255221490-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="6206370732-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:·30c09617ed925b774bb2dc7777f7fb90e13914101fd3fd738291adc9996ee3c0·...·]-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="1255221490-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:·0e532de746e5bf016d52e395b3a91b28e6aa529d0e5c14d07311916642127be8·...·]-2">)</span><span·class="p">,</span><span·class="w">
219 ····</span><span·class="p"·data-group-id="6206370732-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="6206370732-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="1255221490-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="1255221490-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="3567368740-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="3567368740-2">[</span><span·class="p[·...·truncated·by·diffoscope;·len:·80,·SHA:·d4986f4dad57f3c3faa50780d2c2f6553f7fdb40b57bb3a93fcff265826a1cb6·...·]-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="3018601062-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="3018601062-2">[</span><span·class="p[·...·truncated·by·diffoscope;·len:·80,·SHA:·391e0e9ff17993144d01bde2e9e5eec6481e1466bae08b56e4ad1f4cbddeedcd·...·]-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="9238549906-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="9238549906-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"><spa[·...·truncated·by·diffoscope;·len:·247,·SHA:·e29482d28f6a8eac2868e2e013d69a7a796d8fcd05dbc576ace7b8fabb02ac49·...·]-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="2896248040-1">(</span><span·class="p">_</span><s[·...·truncated·by·diffoscope;·len:·166,·SHA:·86fd26b0036820c0be32beba295623dc15b7f5dee9bc039f508c288a29dd57c6·...·]-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="1662913754-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="1662913754-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="8228448681-2">(</span><span·class="n">Fd</span><span·class="p"·data-group-id="8228448681-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="1662913754-2">(</span><span·class="n">Fd</span><span·class="p"·data-group-id="1662913754-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="3801642281-1">(</span><span·class="ss">error_man</span><span·class="p"·data-group-id="3801642281-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="6087147740-1">(</span><span·class="ss">error_man</span><span·class="p"·data-group-id="6087147740-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.2/doc/html/gen_event.html#add_sup_handler/3"><code·class="inline">gen_event:add_sup_handler/3</code></a>)·and·is267 supervisor·(for·example·via·<a·href="../../lib/stdlib-6.2.2/doc/html/gen_event.html#add_sup_handler/3"><code·class="inline">gen_event:add_sup_handler/3</code></a>)·and·is
268 trapping·exit·signals.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">handle_info</span><span·class="p"·data-group-id="0591409746-1">(</span><span·class="p"·data-group-id="0591409746-2">{</span><span·class="ss">&#39;EXIT&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pid</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reaso[·...·truncated·by·diffoscope;·len:·178,·SHA:·2c355a927498fc63f9cfe44d5982839c7eb2be8b701b39b62386751007030055·...·]-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="8009935278-1">(</span><span·class="p"·data-group-id="8009935278-2">{</span><span·class="ss">&#39;EXIT&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pid</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Reaso[·...·truncated·by·diffoscope;·len:·178,·SHA:·b81eaaa2ee13b9d344a1649e44eb7a10ae9d236b095721ea6fb29887ceabf5d3·...·]-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">
Max diff block lines reached; 2507/41640 bytes (6.02%) 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="2317696417-1">(</span><span·class="n">X</span><span·class="p"·data-group-id="2317696417-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="6021003601-1">(</span><span·class="n">X</span><span·class="p"·data-group-id="6021003601-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="9885500558-1">(</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9885500558-2">[</span><span·class="p"·data-group-id="9885500558-2">]</span><span·class="p"·data-group-id="9885500558-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="2911137772-1">(</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2911137772-2">[</span><span·class="p"·data-group-id="2911137772-2">]</span><span·class="p"·data-group-id="2911137772-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
159 ····</span><span·class="p"·data-group-id="9885500558-3">[</span><span·class="p"·data-group-id="9885500558-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-g[·...·truncated·by·diffoscope;·len:·253,·SHA:·dd5f0b9d06f06a32ca9d6642ac580251969e4fa07f0030a8a16319a8f5ea7771·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">159 ····</span><span·class="p"·data-group-id="2911137772-3">[</span><span·class="p"·data-group-id="2911137772-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-g[·...·truncated·by·diffoscope;·len:·253,·SHA:·66b81e5cea0ca88cc6fb291c8340bb75c7632bbcc3879fe65adcd299d8ba67b2·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
160 ····</span><span·class="p"·data-group-id="9211047847-3">[</span><span·class="p"·data-group-id="9211047847-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="2065327696-3">[</span><span·class="p"·data-group-id="2065327696-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="7336000743-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="7336000743-2">[</span><span·class="p"·data-group-id="7336000743-2">]</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·12,·SHA:·bc95a3969e3432e8c5a32b3dd6c911168dc6405e4a981da6367862d3a2a02128·...·]-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="2254161656-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="2254161656-2">[</span><span·class="p"·data-group-id="2254161656-2">]</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·12,·SHA:·7881fb6b40077d00facfe1cd9bd37ff48f4a1d819892935d4bbdd8289287b3eb·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
162 ····</span><span·class="p"·data-group-id="7336000743-3">[</span><span·class="p"·data-group-id="7336000743-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="7984830424-1">{</span><span·class="p">_</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id="7984830424-1">}</span>[·...·truncated·by·diffoscope;·len:·916,·SHA:·29ad07bed98259cfb3905b81ee29a18285664f667c37e2d57b8e8ea41aa330cb·...·]162 ····</span><span·class="p"·data-group-id="2254161656-3">[</span><span·class="p"·data-group-id="2254161656-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="6834237613-1">{</span><span·class="p">_</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id="6834237613-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="6834237613-2">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="6834237613-2">}</span></code></pre><p>But·this·example·fails:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="7767675529-1">{</span><span·class="p">_</span><span·class="n">N</span><span·class="p">,</span><span·class="p">_</span><span·class="n">N</span><span·class="p"·data-group-id="7767675529-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="7767675529-2">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="7767675529-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="4477698041-1">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="4477698041-1">]</span><span·class="w">174 </span><span·class="p"·data-group-id="3648604843-1">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="3648604843-1">]</span><span·class="w">
175 </span><span·class="p"·data-group-id="4477698041-2">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="n">Reason</span><span·class="p"·data-group-id="4477698041-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="3648604843-2">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="n">Reason</span><span·class="p"·data-group-id="3648604843-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="9416339365-1">(</span><span·class="p"·data-group-id="9416339365-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:·f63e95ea1eaa49732077185b2c1c9fbe54e37869d921ceb462fc1753ec042014·...·]-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="5639898820-1">(</span><span·class="p"·data-group-id="5639898820-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:·b2785b206021444ed216b79f6bd17180b0877da6c92696b7d74ee45cf59aec27·...·]-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="9416339365-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:·f6e2afc8dd8c9e88b178911f783e2c9d15540127672cbf46d0e0258a47dfe918·...·]-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="5639898820-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:·3602ce48ab500b32f736c5156b7086cb05ccbdd687cabeddc9d11f1c9f362184·...·]-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="9416339365-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="9416339365-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="5639898820-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="5639898820-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="8178263629-1">(</span><span·class="p"·data-group-id="8178263629-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:·310,·SHA:·97c16dfc9376cd5f2fe6e272879e6cb86598b323c618527dd6f5da8f92c7e1b4·...·]9-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="2176009359-1">(</span><span·class="p"·data-group-id="2176009359-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:·310,·SHA:·0bb13203611070c05d68bc783c61d519ec42ae63a724f4303fb6429f9397af8c·...·]9-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="8178263629-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="8178263629-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="2176009359-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="2176009359-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="5591082351-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="5591082351-1">)</span><span·class="w">·</span><span·class="p">-[·...·truncated·by·diffoscope;·len:·836,·SHA:·ac5a41f93b9af4a2bcf0d45f45a46774d460fcb387a52ee1270635b555f3684d·...·]6-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="3191208989-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="3191208989-1">)</span><span·class="w">·</span><span·class="p">-[·...·truncated·by·diffoscope;·len:·836,·SHA:·b66137f384964483198edbcfb6a4e2d48839571b94a90615487c5241b147f57d·...·]6-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="6935612220-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="6935612220-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="5301269856-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="5301269856-1">}</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
208 ····</span><span·class="p"·data-group-id="6935612220-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="6935612220-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="5301269856-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="5301269856-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="2066592990-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="2066592990-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="[·...·truncated·by·diffoscope;·len:·281,·SHA:·4f1597e06e914cb6faec0f349dba88ae9983469358b3ebd037ee5d2e8e7a3607·...·]-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="3692494464-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="3692494464-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="[·...·truncated·by·diffoscope;·len:·281,·SHA:·cafbd50e0b3752979595d3a941c51e8888fed3fe93ba8f79791df60a434cfb49·...·]-2">}</span><span·class="p">.</span><span·class="w">
217 </span><span·class="p"·data-group-id="2066592990-3">{</span><span·class="ss">answer</span><span·class="p">,</span><span·class="mi">42</span><span·class="p"·data-group-id="2066592990-3">}</span><span·class="gp·unselectable">217 </span><span·class="p"·data-group-id="3692494464-3">{</span><span·class="ss">answer</span><span·class="p">,</span><span·class="mi">42</span><span·class="p"·data-group-id="3692494464-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="2066592990-4">{</span><span·class="ss">answer</span><span·class="p">,</span><span·class="mi">42</span><span·class="p"·data-group-id="2066592990-4">}</span><span·class="gp·unselectable">223 </span><span·class="p"·data-group-id="3692494464-4">{</span><span·class="ss">answer</span><span·class="p">,</span><span·class="mi">42</span><span·class="p"·data-group-id="3692494464-4">}</span><span·class="gp·unselectable">
224 5&gt;·</span><span·class="p"·data-group-id="2066592990-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="2066592990-5">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="[·...·truncated·by·diffoscope;·len:·179,·SHA:·97dd046abe39ab05eea2125825b497ebdef90ed26196f539fdcf79670d0da0d2·...·]-6">]</span><span·class="p">.</span><span·class="w">224 5&gt;·</span><span·class="p"·data-group-id="3692494464-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="3692494464-5">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="[·...·truncated·by·diffoscope;·len:·179,·SHA:·c52ffae7a46b2a3ba7cc884a8582f5549ba349fb9a39b670bdb9c74fa755da6a·...·]-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="9153326890-1">(</span><span·class="p"·data-group-id="9153326890-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="9153326890-2">}</span>[·...·truncated·by·diffoscope;·len:·346,·SHA:·57551ce6ea5e3e50a68f3f2c2b35b12b4bb0582d21acf454a7d6603dbf16d8b4·...·]-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="4260314013-1">(</span><span·class="p"·data-group-id="4260314013-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="4260314013-2">}</span>[·...·truncated·by·diffoscope;·len:·346,·SHA:·eabfff290f4f7047c1f093b80c3789381e5156f41d86260c79e5cfe99f120d0b·...·]-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="9153326890-4">(</span><span·class="p"·data-group-id="9153326890-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="9153326890-5">}</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·887,·SHA:·22d509b8c30f74779aa500bcee6519a5fa3b0e94b98d2e45659329247405e038·...·]-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="4260314013-4">(</span><span·class="p"·data-group-id="4260314013-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="4260314013-5">}</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·887,·SHA:·2d893d473c80e6372cc9cc4e8e1893af536fdcb56b20bdcbc07c5fde0d992f95·...·]-7">)</span><span·class="p">.</span><span·class="w">
249 </span><span·class="p"·data-group-id="9153326890-9">{</span><span·class="p"·data-group-id="9153326890-10">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="9153326890-10">}</span><span·class="p">,</span><span·class="mi">3</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·98a7b732c12f41d41b7b24d34e89d414688ff60db01e305b71afd26bc118d3c4·...·]-9">}</span><span·class="gp·unselectable">249 </span><span·class="p"·data-group-id="4260314013-9">{</span><span·class="p"·data-group-id="4260314013-10">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="4260314013-10">}</span><span·class="p">,</span><span·class="mi">3</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·c4989da142ee3390eee2e3f3b16d8369656436787627735cff43e436701153ad·...·]-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="9153326890-11">(</span><span·class="p"·data-group-id="9153326890-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:·5e2e43254509ac2188c1e0903944db334a9374205166b5f556bc5c1ddafa052c·...·]-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="4260314013-11">(</span><span·class="p"·data-group-id="4260314013-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:·f64a37c6bbaed50d2c5756b4663ee57261bbfea7dfdc02113db4638e8e4d4300·...·]-15">)</span><span·class="p">.</span><span·class="w">
251 </span><span·class="p"·data-group-id="9153326890-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="9153326890-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="4260314013-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="4260314013-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="2089276765-1">#{</span><span·class="ss">key</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">key2</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">key2</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·120,·SHA:·317872597c2b7f8990dcc6883d37b155fb9f54c9ac25e42914e22f95b2d54164·...·]-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="5386074586-1">#{</span><span·class="ss">key</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">key2</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">key2</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·120,·SHA:·62eb53105286236e0fd6f8f6b46ea17a56f6a7c91cc95b78d29f6fcaa017aa81·...·]-1">}</span><span·class="p">.</span><span·class="w">
254 </span><span·class="p"·data-group-id="2089276765-2">#{</span><span·class="ss">key</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">key2</span><span·class="p">,</span><span·class="ss">key2</span><span·class="w">·</span><span·class="p">=&gt;</spa[·...·truncated·by·diffoscope;·len:·96,·SHA:·616efd01b4be2b985b98fa9865f24ae9f232e912bbfee08eef6f35f4a9b67d8d·...·]-2">}</span><span·class="gp·unselectable">254 </span><span·class="p"·data-group-id="5386074586-2">#{</span><span·class="ss">key</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">key2</span><span·class="p">,</span><span·class="ss">key2</span><span·class="w">·</span><span·class="p">=&gt;</spa[·...·truncated·by·diffoscope;·len:·96,·SHA:·bf06dcb54c1394ef27c9a6179071ed5fb6c5e49a68bb89753f41214b3646f784·...·]-2">}</span><span·class="gp·unselectable">
255 2&gt;·</span><span·class="nf">f</span><span·class="p"·data-group-id="2089276765-3">(</span><span·class="n">Key</span><span·class="p"·data-group-id="2089276765-3">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2089276765-4">#{</span><span·class="n">Key</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·420,·SHA:·e536fbb0bc853051653036d7d0bbe7b96a2593194d2f404abdbbd88951bfc81d·...·]-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="5386074586-3">(</span><span·class="n">Key</span><span·class="p"·data-group-id="5386074586-3">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5386074586-4">#{</span><span·class="n">Key</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·420,·SHA:·a177eccfaae66c63c00ea79893770041bc856e2bab45f6fc89568f92272faef8·...·]-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="2089276765-6">(</span><span·class="n">Key</span><span·class="p"·data-group-id="2089276765-6">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2089276765-7">#{</span><span·class="n">Key</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·622,·SHA:·245bc56cf3212a96ce16e1359e998c9f53e42949b6de88a86bc107a981a5cd7e·...·]-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="5386074586-6">(</span><span·class="n">Key</span><span·class="p"·data-group-id="5386074586-6">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5386074586-7">#{</span><span·class="n">Key</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·622,·SHA:·28f61f1035745755c3fd0e179970fb3c3446057421914acbaab76613f18c36ff·...·]-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="2089276765-10">(</span><span·class="n">Key</span><span·class="p"·data-group-id="2089276765-10">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2089276765-11">(</span><span·class="p"·data-group-id="2089276765-12">#{</s[·...·truncated·by·diffoscope;·len:·533,·SHA:·9f6b2189169b08e5fd575da1ef8ae92746bdef39916441fb4a00f3679605643f·...·]-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="5386074586-10">(</span><span·class="n">Key</span><span·class="p"·data-group-id="5386074586-10">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5386074586-11">(</span><span·class="p"·data-group-id="5386074586-12">#{</s[·...·truncated·by·diffoscope;·len:·533,·SHA:·24ac1217d39132b3e32613b6037563b4d2cb659e71e9c0742005e9f5aa09d566·...·]-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="2089276765-14">&lt;&lt;</span><span·class="n">X</span><span·class="p">:</span><span·class="n">Y</span><span·class="p"·data-group-id="2089276765-14">&gt;&gt;</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="k">begin[·...·truncated·by·diffoscope;·len:·377,·SHA:·7cb45aad7dd99f573d61aa52f6da95f1d72bba7ddfbaaaf5139636a7fc5189f8·...·]-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="5386074586-14">&lt;&lt;</span><span·class="n">X</span><span·class="p">:</span><span·class="n">Y</span><span·class="p"·data-group-id="5386074586-14">&gt;&gt;</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="k">begin[·...·truncated·by·diffoscope;·len:·377,·SHA:·11c3719edfdac141ad9b9a409ea1d05fc39c0d491d3d2455a7387b1669a99401·...·]-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="0592351774-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="0592351774-1">)</span><span·class="w">283 <pre><code·class="makeup·erlang"·translate="no"><span·class="n">ExprF</span><span·class="p"·data-group-id="6717347285-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="6717347285-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="0592351774-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="0592351774-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="6717347285-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="6717347285-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="6764909558-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="6764909558-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="5407566288-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="5407566288-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="2693636142-1">(</span><span·class="p"·data-group-id="2693636142-2">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="2693636142-2">]</span><span·class="p"·data-group-id="2693636142-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="2693636142-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="2693636142-4">(</span><span·class="n">T</span><span·class="p"·data-group-id="2693636142-4">)</span><span·class="p"·data-group-id="2693636142-3">]</span><span·class="p">;</span><span·class="w"> 
124 </span><span·class="nf">double</span><span·class="p"·data-group-id="2693636142-5">(</span><span·class="p"·data-group-id="2693636142-6">[</span><span·class="p"·data-group-id="2693636142-6">]</span><span·class="p"·data-group-id="2693636142-5">)</span><span·class="w">····</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="2693636142-7">[</span><span·class="p"·data-group-id="2693636142-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="2874535017-1">(</span><span·class="p"·data-group-id="2874535017-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="2874535017-2">]</span><span·class="p"·data-group-id="2874535017-1">)</span><span·class="p">.</span><span·class="w"> 
125 </span><span·class="p"·data-group-id="2874535017-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-grou[·...·truncated·by·diffoscope;·len:·936,·SHA:·b2233b8dc7c1b76a569e34ef1906dc4e971cb4f49ef630210203b9dd051628b8·...·]-3">]</span><span·class="p">;</span><span·class="w">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="8195413228-1">(</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·631,·SHA:·1082e24bafd070d330cc31b6ace8f2675a2237c338b28805bc82b893aa427b57·...·]-3">]</span><span·class="p">;</span><span·class="w">
 124 </span><span·class="nf">double</span><span·class="p"·data-group-id="8195413228-5">(</span><span·class="p"·data-group-id="8195413228-6">[</span><span·class="p"·data-group-id="8195413228-6">]</span><span·class="p"·data-group-id="8195413228-5">)</span><span·class="w">····</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="8195413228-7">[</span><span·class="p"·data-group-id="8195413228-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="1458668884-1">(</span><span·class="p"·data-group-id="1458668884-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="1458668884-2">]</span><span·class="p"·data-group-id="1458668884-1">)</span><span·class="p">.</span><span·class="w">
 125 </span><span·class="p"·data-group-id="1458668884-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="1458668884-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="2662015222-1">(</span><span·class="p"·data-group-id="2662015222-2">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="2662015222-2">]</span><span·class="p"·data-group-id="2662015222-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="2662015222-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="2662015222-4">(</span><span·class="n">T</span><span·class="p"·data-group-id="2662015222-4">)</span><span·class="p"·data-group-id="2662015222-3">]</span><span·class="p">;</span><span·class="w">
126 </span><span·class="nf">add_one</span><span·class="p"·data-group-id="4094214362-5">(</span><span·class="p"·data-group-id="4094214362-6">[</span><span·class="p"·data-group-id="4094214362-6">]</span><span·class="p"·data-group-id="4094214362-5">)</span><span·class="w">····</span><span·class="p">-&gt;</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·97,·SHA:·4907eea23c2fa92fa1b358cd78a05217b300d3efc7856e3689b4929b214a09b1·...·]2-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·used126 </span><span·class="nf">add_one</span><span·class="p"·data-group-id="2662015222-5">(</span><span·class="p"·data-group-id="2662015222-6">[</span><span·class="p"·data-group-id="2662015222-6">]</span><span·class="p"·data-group-id="2662015222-5">)</span><span·class="w">····</span><span·class="p">-&gt;</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·97,·SHA:·baee813ef72538f6a459de220e86b549853b594f083604234fbaa029f9586348·...·]2-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="2602167902-1">(</span><span·class="n">F</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2602167902-2">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="260216[·...·truncated·by·diffoscope;·len:·646,·SHA:·b346e33ca48b9ee00357014aba61a0446654558a4fd6611b535312e045da2a6f·...·]-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="3996080378-1">(</span><span·class="n">F</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3996080378-2">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="399608[·...·truncated·by·diffoscope;·len:·646,·SHA:·d65392d90b306b90fd0cc00f92baca0a5e509dfd3e23ec9c8fa233f2b111273e·...·]-3">]</span><span·class="p">;</span><span·class="w">
128 </span><span·class="nf">map</span><span·class="p"·data-group-id="2602167902-6">(</span><span·class="n">F</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2602167902-7">[</span><span·class="p"·data-group-id="2602167902-7">]</span><span·class="p"·data-group-id="2602167902-6">)</span><sp[·...·truncated·by·diffoscope;·len:·170,·SHA:·4e0d220f47635cfedcfbb41f221411642b0949efa1c47c8ce5acd8467a3fa412·...·]-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="3996080378-6">(</span><span·class="n">F</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3996080378-7">[</span><span·class="p"·data-group-id="3996080378-7">]</span><span·class="p"·data-group-id="3996080378-6">)</span><sp[·...·truncated·by·diffoscope;·len:·170,·SHA:·dc25536e3d96b173cf3da9afc065f8a49c5645bad168add197390f46d0543de2·...·]-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="0786201151-1">(</span><span·class="n">L</span><span·class="p"·data-group-id="0786201151-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="0786201151-2">(</span>[·...·truncated·by·diffoscope;·len:·469,·SHA:·41710ab168e0beaf789f76e22a019024c6cc41b3ad21f692aba0a46ee8ee30ce·...·]-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="6645639865-1">(</span><span·class="n">L</span><span·class="p"·data-group-id="6645639865-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="6645639865-2">(</span>[·...·truncated·by·diffoscope;·len:·469,·SHA:·93f5dad88f9d6335937fae052b04254f652e1dbba6abccac56a04ec13c4d2311·...·]-2">)</span><span·class="p">.</span><span·class="w">
130 </span><span·class="nf">add_one</span><span·class="p"·data-group-id="0786201151-4">(</span><span·class="n">L</span><span·class="p"·data-group-id="0786201151-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="0786201151-5">(</span><[·...·truncated·by·diffoscope;·len:·516,·SHA:·cb977ccac423409a35f6166698dcbd9097b5b36bb6e544791597fe360d7676e1·...·]-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="6645639865-4">(</span><span·class="n">L</span><span·class="p"·data-group-id="6645639865-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="6645639865-5">(</span><[·...·truncated·by·diffoscope;·len:·516,·SHA:·7240ebc2413ef3bd41012bd2f6219c63db3bbde28b08baaa6ebc0e1babae5576·...·]-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="8875052402-1">(</span><span·class="n">Stream</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8875052402-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:·08198655658816fb01b34134a8c81df97c9f7a1dbedb3f8b1221f0cfb82e02bb·...·]-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="6199945351-1">(</span><span·class="n">Stream</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6199945351-2">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="6[·...·truncated·by·diffoscope;·len:·62,·SHA:·35e992fdc0dfe9d8c9d6bc1578ffcf251882cf0464c17daadd1caeb55d30533a·...·]-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="8875052402-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:·bd8e0f7519f728e61cd66184105cd0d5f8aac3b2797e22e732b10b93d1477890·...·]-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="6199945351-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:·f6402867495c6b187b464b05494d5f20dcdc3fd9f9ae16ee343523968208616b·...·]-3">)</span><span·class="p">,</span><span·class="w">
146 ····</span><span·class="nf">print_list</span><span·class="p"·data-group-id="8875052402-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="8875052402-5">)</span><span·class="p">;</span><span·class="w">146 ····</span><span·class="nf">print_list</span><span·class="p"·data-group-id="6199945351-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="6199945351-5">)</span><span·class="p">;</span><span·class="w">
147 </span><span·class="nf">print_list</span><span·class="p"·data-group-id="8875052402-6">(</span><span·class="n">Stream</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8875052402-7">[</span><span·class="p"·data-group-id="8875052402-7">]</span><span·class="p"·data-group-id="8875052402-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="6199945351-6">(</span><span·class="n">Stream</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6199945351-7">[</span><span·class="p"·data-group-id="6199945351-7">]</span><span·class="p"·data-group-id="6199945351-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="7189360606-1">(</span><span·class="n">Msg</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7189360606-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:·63,·SHA:·55d8087b246f1abf287cce104ebe2b87f7b841b7a44bc69f3901171ec16e7fee·...·]-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="7824010942-1">(</span><span·class="n">Msg</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7824010942-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:·63,·SHA:·9b9287052a3b1eafdc9ccd174764f078232509a7cad3cda9ac17752c2306c4df·...·]-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="7189360606-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="7189360606-3">)</span><span·class="p">;</span><span·class="w">150 ····</span><span·class="nf">broadcast</span><span·class="p"·data-group-id="7824010942-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="7824010942-3">)</span><span·class="p">;</span><span·class="w">
151 </span><span·class="nf">broadcast</span><span·class="p"·data-group-id="7189360606-4">(</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7189360606-5">[</span><span·class="p"·data-group-id="7189360606-5">]</span><span·class="p"·data-group-id="7189360606-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="7824010942-4">(</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7824010942-5">[</span><span·class="p"·data-group-id="7824010942-5">]</span><span·class="p"·data-group-id="7824010942-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="7413525432-1">(</span><span·class="n">F</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7413525432-2">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="741352[·...·truncated·by·diffoscope;·len:·57,·SHA:·59aa7a2cc3d35bcbca86877238decf25a316055e4619e205e3c3eeaa93664b4d·...·]-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="1725200871-1">(</span><span·class="n">F</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1725200871-2">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="172520[·...·truncated·by·diffoscope;·len:·57,·SHA:·4727c1241cc83476cc88b6a5624fbfec4d78555d5a0f6919c2a7240d4018e755·...·]-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="7413525432-3">(</span><span·class="n">H</span><span·class="p"·data-group-id="7413525432-3">)</span><span·class="p">,</span><span·class="w">155 ····</span><span·class="n">F</span><span·class="p"·data-group-id="1725200871-3">(</span><span·class="n">H</span><span·class="p"·data-group-id="1725200871-3">)</span><span·class="p">,</span><span·class="w">
156 ····</span><span·class="nf">foreach</span><span·class="p"·data-group-id="7413525432-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="7413525432-4">)</span><span·class="p">;</span><span·class="w">156 ····</span><span·class="nf">foreach</span><span·class="p"·data-group-id="1725200871-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="1725200871-4">)</span><span·class="p">;</span><span·class="w">
157 </span><span·class="nf">foreach</span><span·class="p"·data-group-id="7413525432-5">(</span><span·class="n">F</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7413525432-6">[</span><span·class="p"·data-group-id="7413525432-6">]</span><span·class="p"·data-group-id="7413525432-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">157 </span><span·class="nf">foreach</span><span·class="p"·data-group-id="1725200871-5">(</span><span·class="n">F</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1725200871-6">[</span><span·class="p"·data-group-id="1725200871-6">]</span><span·class="p"·data-group-id="1725200871-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="nf">foreach</span><span·class="p"·data-group-id="0150589352-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="0150589352-2">(</span><span·class="n">H</span><span·class="p"·data-group-id="0150589352-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·1482,·SHA:·21398454647a14a4dd83e980494291930ffab003e916abc888b004bee8f54f6f·...·]-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>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="0509823855-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="0509823855-2">(</span><span·class="n">H</span><span·class="p"·data-group-id="0509823855-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·1482,·SHA:·6b99c4d4f96d400fab1c8b4912a20dc02dd84a9b7191d837625a02b9ec379918·...·]-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="8010949195-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:·8d8058067ccdf74aca5924dc0711e88e8e7ba8e1f0b663fba5443db9b1be77c4·...·]-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="2476464322-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:·ee01e8d83eb5e349dbe25f9d0e15ea6b37ce1b74056a0690608be22f470db676·...·]-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="6511311004-1">(</span><span·class="ss">fun_test</span><span·class="p"·data-group-id="6511311004-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="0158863919-1">(</span><span·class="ss">fun_test</span><span·class="p"·data-group-id="0158863919-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="6511311004-2">(</span><span·class="p"·data-group-id="6511311004-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:·03cbe7be29c19d2410e331e957b8e175f6fb808d9bc764c9e234c772890fb371·...·]-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="0158863919-2">(</span><span·class="p"·data-group-id="0158863919-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:·383dd013e9845a56bd3cceaee9518b73e8c11dd894a0fc62d4ccaaaf16a9ed98·...·]-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="6511311004-4">(</span><span·class="ss">lists</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6511311004-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:·17a41b5a3625e8ebbcc7a60ebd620bd239970f2193a810e17e42d4074e020db2·...·]-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="0158863919-4">(</span><span·class="ss">lists</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0158863919-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:·2af74f5b64db3d374fc57f0923ba2da4922a5314ad4b982c5bc1cfa375949891·...·]-4">)</span><span·class="p">.</span><span·class="w">
  
177 </span><span·class="nf">t1</span><span·class="p"·data-group-id="6511311004-6">(</span><span·class="p"·data-group-id="6511311004-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="6511311004-7">(</span><span·class="nf">fun</spa[·...·truncated·by·diffoscope;·len:·795,·SHA:·c7fd680f0fb074952ea88ed7446d51ba0d14f0d54bbc1087bd397f73e33d3d6f·...·]-7">)</span><span·class="p">.</span><span·class="w">177 </span><span·class="nf">t1</span><span·class="p"·data-group-id="0158863919-6">(</span><span·class="p"·data-group-id="0158863919-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="0158863919-7">(</span><span·class="nf">fun</spa[·...·truncated·by·diffoscope;·len:·795,·SHA:·e352b357102a6b6335afc141621d3eb72e14d7b5ba2f8937e75d981d0128d897·...·]-7">)</span><span·class="p">.</span><span·class="w">
  
178 </span><span·class="nf">t2</span><span·class="p"·data-group-id="6511311004-10">(</span><span·class="p"·data-group-id="6511311004-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="6511311004-11">(</span><span·class="k">fun</s[·...·truncated·by·diffoscope;·len:·525,·SHA:·d65f0c36d2db2b0a3f6ceb32e63bdbc88df9cb69d2d76e110300ca86f0639023·...·]-11">)</span><span·class="p">.</span><span·class="w">178 </span><span·class="nf">t2</span><span·class="p"·data-group-id="0158863919-10">(</span><span·class="p"·data-group-id="0158863919-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="0158863919-11">(</span><span·class="k">fun</s[·...·truncated·by·diffoscope;·len:·525,·SHA:·21d3a0673b8c7f37d94d102b52ed57e7f3519248adbbb3ad804e3d6be17027e4·...·]-11">)</span><span·class="p">.</span><span·class="w">
  
179 </span><span·class="nf">double</span><span·class="p"·data-group-id="6511311004-13">(</span><span·class="n">X</span><span·class="p"·data-group-id="6511311004-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·c[·...·truncated·by·diffoscope;·len:·628,·SHA:·5bc7ca45e911d88b0abfe5c24f17161c92d09c29a55149ef1f37635ae65a24c9·...·]25-1">)</span></code></pre><p>To·check·whether·a·term·is·a·fun,·use·the·test179 </span><span·class="nf">double</span><span·class="p"·data-group-id="0158863919-13">(</span><span·class="n">X</span><span·class="p"·data-group-id="0158863919-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·c[·...·truncated·by·diffoscope;·len:·628,·SHA:·08823fd7ea2250d45e75f3ced759b767c3d43f3554cdcb29ce34156aa7be4b73·...·]25-1">)</span></code></pre><p>To·check·whether·a·term·is·a·fun,·use·the·test
180 <a·href="../../erts-15.2.6/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="2392822242-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="2392822242-1">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·146,·SHA:·c3e5fccde556c731864fc8aa685b9f9260daedf6af5962598b222d5ce4f9df15·...·]-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">180 <a·href="../../erts-15.2.6/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="3306585377-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="3306585377-1">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·146,·SHA:·fc569f6864055924ffb2bf977189f05bf9cef8f22865183a30b486dc5652975d·...·]-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="2392822242-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="2392822242-3">)</span><span·class="p">;</span><span·class="w">181 ···</span><span·class="nf">apply</span><span·class="p"·data-group-id="3306585377-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="3306585377-3">)</span><span·class="p">;</span><span·class="w">
182 </span><span·class="nf">f</span><span·class="p"·data-group-id="2392822242-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="2392822242-4">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·142,·SHA:·e66388599346c403a9b234bd72f9f5adc8aa96f32f4aeec80028cdc8a82f37ad·...·]-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="3306585377-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="3306585377-4">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·142,·SHA:·4cc5e585d72bbcba22056def865ab8b67c4aff7378ab923be03618969bcc61f8·...·]-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.6/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.6/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.6/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.6/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="4592389141-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="4592389141-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="2250432314-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="2250432314-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
196 ····</span><span·class="p"·data-group-id="4592389141-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="4592389141-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·272,·SHA:·78c6564be325d41d3f0bae5b452d742aef21fd641cce4d7ecf258d23f6b865c1·...·]-3">)</span><span·class="p">,</span><span·class="w">196 ····</span><span·class="p"·data-group-id="2250432314-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="2250432314-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·272,·SHA:·2e4b83c6eb575e2b48db7ca93faf24cff3c3bfd50be652864cb1703e4625e72d·...·]-3">)</span><span·class="p">,</span><span·class="w">
197 ····</span><span·class="nf">foreach</span><span·class="p"·data-group-id="4592389141-4">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="4592389141-5">(</span><span·class="n">X</span><span·class="p"·data-group-id="4592389141-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·668,·SHA:·f40de5efeaa1f9d5289d11e74747c6774276cd2c2667eca8f42be572e603e236·...·]-4">)</span><span·class="p">,</span><span·class="w">197 ····</span><span·class="nf">foreach</span><span·class="p"·data-group-id="2250432314-4">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="2250432314-5">(</span><span·class="n">X</span><span·class="p"·data-group-id="2250432314-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·668,·SHA:·4d661ef7b364c0d6662ff491a834ea5a2066b1a9e9b2c793ffbd400a8ff382e3·...·]-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="4592389141-8">(</span><span·class="n">Stream</span><span·class="p"·data-group-id="4592389141-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="2250432314-8">(</span><span·class="n">Stream</span><span·class="p"·data-group-id="2250432314-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="1042464590-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="1042464590-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="1463396615-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="1463396615-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
202 ····</span><span·class="p"·data-group-id="1042464590-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="1042464590-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·271,·SHA:·bb47f9a2d49723ca27c2fb9c31f70b215c2f088de8557e3754dab03a375baef1·...·]-3">)</span><span·class="p">,</span><span·class="w">202 ····</span><span·class="p"·data-group-id="1463396615-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="1463396615-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·271,·SHA:·f751c5a3ccbb3c04226ddc34f0070d2282a44f6d24a73ab1ca1ea72fddf1e2f0·...·]-3">)</span><span·class="p">,</span><span·class="w">
203 ····</span><span·class="nf">foreach</span><span·class="p"·data-group-id="1042464590-4">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="1042464590-5">(</span><span·class="n">File</span><span·class="p"·data-group-id="1042464590-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="1463396615-4">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="1463396615-5">(</span><span·class="n">File</span><span·class="p"·data-group-id="1463396615-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="1042464590-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="1042464590-7">[</[·...·truncated·by·diffoscope;·len:·126,·SHA:·83ca71187b27594f98aaeb87c41d9dd50f3c73e02955a48a3634ba0fc83addc3·...·]-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="1463396615-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="1463396615-7">[</[·...·truncated·by·diffoscope;·len:·126,·SHA:·bcd103e4a3cc12dd007ff14a6fdd8dd1be38a3975df6433afe1f1c83fc027501·...·]-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="1042464590-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="1463396615-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="1042464590-8">(</span><span·class="n">Stream</span><span·class="p"·data-group-id="1042464590-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="1463396615-8">(</span><span·class="n">Stream</span><span·class="p"·data-group-id="1463396615-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="1885249056-1">(</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="1885249056-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="7325492738-1">(</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="7325492738-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="1885249056-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="1885249056-3">(</span><span·class="n">X</span><span·class="p"·data-group-id="1885249056-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="7325492738-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="7325492738-3">(</span><span·class="n">X</span><span·class="p"·data-group-id="7325492738-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="1885249056-4">(</span><span·class="p">_</span><span·class="p"·data-group-id="1885249056-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">219 ···········</span><span·class="p"·data-group-id="7325492738-4">(</span><span·class="p">_</span><span·class="p"·data-group-id="7325492738-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="1885249056-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="7325492738-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="8057177190-1">(</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="8057177190-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="2600455218-1">(</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="2600455218-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="8057177190-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="8057177190-3">(</span><span·class="n">Y</span><span·class="p"·data-group-id="8057177190-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="2600455218-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="2600455218-3">(</span><span·class="n">Y</span><span·class="p"·data-group-id="2600455218-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="8057177190-4">(</span><span·class="p">_</span><span·class="p"·data-group-id="8057177190-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">226 ···········</span><span·class="p"·data-group-id="2600455218-4">(</span><span·class="p">_</span><span·class="p"·data-group-id="2600455218-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="8057177190-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="2600455218-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>
235 <p>The·following·examples·show·a·dialogue·with·the·Erlang·shell.·All·the·higher235 <p>The·following·examples·show·a·dialogue·with·the·Erlang·shell.·All·the·higher
236 order·functions·discussed·are·exported·from·the·module·<a·href="../../lib/stdlib-6.2.2/doc/html/lists.html"><code·class="inline">lists</code></a>.</p><h3·id="map-1"·class="section-heading">236 order·functions·discussed·are·exported·from·the·module·<a·href="../../lib/stdlib-6.2.2/doc/html/lists.html"><code·class="inline">lists</code></a>.</p><h3·id="map-1"·class="section-heading">
237 ··<a·href="#map-1"·class="hover-link">237 ··<a·href="#map-1"·class="hover-link">
Max diff block lines reached; 152701/218554 bytes (69.87%) 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="7477770016-1">(</span><span·class="ss">ch3</span><span·class="p"·data-group-id="7477770016-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="3393043401-1">(</span><span·class="ss">ch3</span><span·class="p"·data-group-id="3393043401-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="7477770016-2">(</span><span·class="ss">gen_server</span><span·class="p"·data-group-id="7477770016-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="3393043401-2">(</span><span·class="ss">gen_server</span><span·class="p"·data-group-id="3393043401-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="7477770016-3">(</span><span·class="p"·data-group-id="7477770016-4">[</span><span·class="ss">start_link</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="7477770016-4">]</span><span·class="p"·data-group-id="7477770016-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="3393043401-3">(</span><span·class="p"·data-group-id="3393043401-4">[</span><span·class="ss">start_link</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="3393043401-4">]</span><span·class="p"·data-group-id="3393043401-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="7477770016-5">(</span><span·class="p"·data-group-id="7477770016-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:·b53ecdb41b7338e27924a31fcb0f7cb2fa1735fd2722f7fb492646978445968b·...·]-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="3393043401-5">(</span><span·class="p"·data-group-id="3393043401-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:·67485ddfa9a09917c732e5501c4441842a385f02037af7ac2f177502d3661a1f·...·]-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="7477770016-7">(</span><span·class="p"·data-group-id="7477770016-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:·44297ea3c54f095ce9558db8cd70223c9ec61a7281f6bcc5eddde0a4037b498e·...·]-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="3393043401-7">(</span><span·class="p"·data-group-id="3393043401-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:·c675951c52c4fe9ab246cc9407793f34425f9c8e18659fe696b68cc552748a3c·...·]-7">)</span><span·class="p">.</span><span·class="w">
  
170 </span><span·class="nf">start_link</span><span·class="p"·data-group-id="7477770016-9">(</span><span·class="p"·data-group-id="7477770016-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="3393043401-9">(</span><span·class="p"·data-group-id="3393043401-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="7477770016-10">(</span><span·class="p"·data-group-id="7477770016-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="7477770016-11">}</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·407,·SHA:·12fa5b687da3e72fc0ae15e61016036668aefc6bbee4457f61753abb25e7c10f·...·]-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="3393043401-10">(</span><span·class="p"·data-group-id="3393043401-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="3393043401-11">}</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·407,·SHA:·a688eece3c73e105206b33491f6118f9018698b2bbdf2ba90a3483a4e974a5d3·...·]-10">)</span><span·class="p">.</span><span·class="w">
  
172 </span><span·class="nf">alloc</span><span·class="p"·data-group-id="7477770016-14">(</span><span·class="p"·data-group-id="7477770016-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="3393043401-14">(</span><span·class="p"·data-group-id="3393043401-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="7477770016-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="7477770016-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="3393043401-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="3393043401-15">)</span><span·class="p">.</span><span·class="w">
  
174 </span><span·class="nf">free</span><span·class="p"·data-group-id="7477770016-16">(</span><span·class="n">Ch</span><span·class="p"·data-group-id="7477770016-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="3393043401-16">(</span><span·class="n">Ch</span><span·class="p"·data-group-id="3393043401-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="7477770016-17">(</span><span·class="ss">ch3</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7477770016-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:·546a6dedba411d40dd1c8a493a217e0a1a3bc5594f242d96b00a0f100e90899b·...·]-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="3393043401-17">(</span><span·class="ss">ch3</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3393043401-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:·d8b8b5c16ee73d169432de850ccbb9097b0d43aa952c5b9b95032b5c3cd37e5a·...·]-17">)</span><span·class="p">.</span><span·class="w">
  
176 </span><span·class="nf">init</span><span·class="p"·data-group-id="7477770016-19">(</span><span·class="p">_</span><span·class="n">Args</span><span·class="p"·data-group-id="7477770016-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="3393043401-19">(</span><span·class="p">_</span><span·class="n">Args</span><span·class="p"·data-group-id="3393043401-19">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
177 ····</span><span·class="p"·data-group-id="7477770016-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="7477770016-21">(</span><span·class="p"·data-group-id="7477770016-21">)</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·0ba39cd81bc0220162e0753e7e6e9c45656f2cbb679c92020d1359feb8ca246f·...·]-20">}</span><span·class="p">.</span><span·class="w">177 ····</span><span·class="p"·data-group-id="3393043401-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="3393043401-21">(</span><span·class="p"·data-group-id="3393043401-21">)</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·bee61a7b09c7a046b2a2b829e1761219939990bc96a0d5ae2f7dc9a50b50b568·...·]-20">}</span><span·class="p">.</span><span·class="w">
  
178 </span><span·class="nf">handle_call</span><span·class="p"·data-group-id="7477770016-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:·3e5209476a470cac3eb9b79835e19540be20668f6331370c044b2189a3d19a23·...·]-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="3393043401-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:·98469d743808679132a2deb2ea7a1ec68d709ae7c5c615d3ef0c0b7237a63554·...·]-22">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
179 ····</span><span·class="p"·data-group-id="7477770016-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="7477770016-23">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·143,·SHA:·247ad73616abb9a6e17abf9e83d688791e3bd159160cb986504f67abbc73e657·...·]-24">)</span><span·class="p">,</span><span·class="w">179 ····</span><span·class="p"·data-group-id="3393043401-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="3393043401-23">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·143,·SHA:·e25b4d4ce4ff1131773e3fd7382c2e3e0572da01697efd8f2a952a11dd451c67·...·]-24">)</span><span·class="p">,</span><span·class="w">
180 ····</span><span·class="p"·data-group-id="7477770016-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="7477770016-25">}</span><span·class="p">.</span><span·class="w">180 ····</span><span·class="p"·data-group-id="3393043401-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="3393043401-25">}</span><span·class="p">.</span><span·class="w">
  
181 </span><span·class="nf">handle_cast</span><span·class="p"·data-group-id="7477770016-26">(</span><span·class="p"·data-group-id="7477770016-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="7477770016-27">}</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·91,·SHA:·d3bcef9478a62454ad794950c2d49b48650ec12c7febf3c2c25f83db53ba89ba·...·]-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="3393043401-26">(</span><span·class="p"·data-group-id="3393043401-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="3393043401-27">}</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·91,·SHA:·7b9adff01fc5fcbe88b503cef78c00e380f744ff4c9df5a051ad36123de0f8a7·...·]-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="7477770016-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="7477770016-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="3393043401-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="3393043401-28">)</span><span·class="p">,</span><span·class="w">
183 ····</span><span·class="p"·data-group-id="7477770016-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="7477770016-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="3393043401-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="3393043401-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="5303225517-1">(</span><span·class="p"·data-group-id="5303225517-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="0644506301-1">(</span><span·class="p"·data-group-id="0644506301-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="5303225517-2">(</span><span·class="p"·data-group-id="5303225517-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="5303225517-3">}</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·682,·SHA:·87bc98753790db759083d4a8871371d36354a7c822e1d663653491b0f9734567·...·]-6">}</span></code></pre><p><code·class="inline">start_link/0</code>·calls·function·<a·href="../../lib/stdlib-6.2.2/doc/html/gen_server.html#start_link/4"><code·class="inline">gen_server:start_link/4</code></a>.··This·function191 ····</span><span·class="nc">gen_server</span><span·class="p">:</span><span·class="nf">start_link</span><span·class="p"·data-group-id="0644506301-2">(</span><span·class="p"·data-group-id="0644506301-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="0644506301-3">}</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·682,·SHA:·ddebc479f24c9267e5a2c81a2d2c0f7a90f8c9a91edccc5e8bf5d23a782309b6·...·]-6">}</span></code></pre><p><code·class="inline">start_link/0</code>·calls·function·<a·href="../../lib/stdlib-6.2.2/doc/html/gen_server.html#start_link/4"><code·class="inline">gen_server:start_link/4</code></a>.··This·function
192 spawns·and·links·to·a·new·process,·a·<code·class="inline">gen_server</code>.</p><ul><li><p>The·first·argument,·<code·class="inline">{local,·ch3}</code>,·specifies·the·name.192 spawns·and·links·to·a·new·process,·a·<code·class="inline">gen_server</code>.</p><ul><li><p>The·first·argument,·<code·class="inline">{local,·ch3}</code>,·specifies·the·name.
193 The·gen_server·is·then·locally·registered·as·<code·class="inline">ch3</code>.</p><p>If·the·name·is·omitted,·the·<code·class="inline">gen_server</code>·is·not·registered.·Instead·its·pid193 The·gen_server·is·then·locally·registered·as·<code·class="inline">ch3</code>.</p><p>If·the·name·is·omitted,·the·<code·class="inline">gen_server</code>·is·not·registered.·Instead·its·pid
194 must·be·used.·The·name·can·also·be·given·as·<code·class="inline">{global,·Name}</code>,·in·which·case194 must·be·used.·The·name·can·also·be·given·as·<code·class="inline">{global,·Name}</code>,·in·which·case
195 the·<code·class="inline">gen_server</code>·is·registered·using·<a·href="../../lib/kernel-10.2.6/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.6/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.2/doc/html/gen_server.html"><code·class="inline">gen_server</code></a>201 argument.</p></li><li><p>The·fourth·argument,·<code·class="inline">[]</code>,·is·a·list·of·options.·See·<a·href="../../lib/stdlib-6.2.2/doc/html/gen_server.html"><code·class="inline">gen_server</code></a>
202 for·the·available·options.</p></li></ul><p>If·name·registration·succeeds,·the·new·<code·class="inline">gen_server</code>·process·calls·the·callback202 for·the·available·options.</p></li></ul><p>If·name·registration·succeeds,·the·new·<code·class="inline">gen_server</code>·process·calls·the·callback
203 function·<code·class="inline">ch3:init([])</code>.·<code·class="inline">init</code>·is·expected·to·return·<code·class="inline">{ok,·State}</code>,·where203 function·<code·class="inline">ch3:init([])</code>.·<code·class="inline">init</code>·is·expected·to·return·<code·class="inline">{ok,·State}</code>,·where
204 <code·class="inline">State</code>·is·the·internal·state·of·the·<code·class="inline">gen_server</code>.·In·this·case,·the·state·is204 <code·class="inline">State</code>·is·the·internal·state·of·the·<code·class="inline">gen_server</code>.·In·this·case,·the·state·is
205 the·available·channels.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">init</span><span·class="p"·data-group-id="0777731315-1">(</span><span·class="p">_</span><span·class="n">Args</span><span·class="p"·data-group-id="0777731315-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="7651200626-1">(</span><span·class="p">_</span><span·class="n">Args</span><span·class="p"·data-group-id="7651200626-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
206 ····</span><span·class="p"·data-group-id="0777731315-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="0777731315-3">(</span><span·class="p"·data-group-id="0777731315-3">)</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·19,·SHA:·c3f8f0d81b80f77ad1c4bcb41b6e64e0be3f077f1add8ae3196489892563ae2a·...·]-2">}</span><span·class="p">.</span></code></pre><p><a·href="../../lib/stdlib-6.2.2/doc/html/gen_server.html#start_link/4"><code·class="inline">gen_server:start_link/4</code></a>·is·synchronous.·It·does·not·return·until·the206 ····</span><span·class="p"·data-group-id="7651200626-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="7651200626-3">(</span><span·class="p"·data-group-id="7651200626-3">)</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·19,·SHA:·216c5c926c0476acc2afbd6744a0ec068d85048ec0c790a6b55b8583989bb3e8·...·]-2">}</span><span·class="p">.</span></code></pre><p><a·href="../../lib/stdlib-6.2.2/doc/html/gen_server.html#start_link/4"><code·class="inline">gen_server:start_link/4</code></a>·is·synchronous.·It·does·not·return·until·the
207 <code·class="inline">gen_server</code>·has·been·initialized·and·is·ready·to·receive·requests.</p><p><a·href="../../lib/stdlib-6.2.2/doc/html/gen_server.html#start_link/4"><code·class="inline">gen_server:start_link/4</code></a>·must·be·used·if·the·<code·class="inline">gen_server</code>·is·part·of207 <code·class="inline">gen_server</code>·has·been·initialized·and·is·ready·to·receive·requests.</p><p><a·href="../../lib/stdlib-6.2.2/doc/html/gen_server.html#start_link/4"><code·class="inline">gen_server:start_link/4</code></a>·must·be·used·if·the·<code·class="inline">gen_server</code>·is·part·of
208 a·supervision·tree,·meaning·that·it·was·started·by·a·supervisor.·There208 a·supervision·tree,·meaning·that·it·was·started·by·a·supervisor.·There
209 is·another·function,·<a·href="../../lib/stdlib-6.2.2/doc/html/gen_server.html#start/4"><code·class="inline">gen_server:start/4</code></a>,·to·start·a·standalone209 is·another·function,·<a·href="../../lib/stdlib-6.2.2/doc/html/gen_server.html#start/4"><code·class="inline">gen_server:start/4</code></a>,·to·start·a·standalone
210 <code·class="inline">gen_server</code>·that·is·not·part·of·a·supervision·tree.</p><h2·id="synchronous-requests-call"·class="section-heading">210 <code·class="inline">gen_server</code>·that·is·not·part·of·a·supervision·tree.</p><h2·id="synchronous-requests-call"·class="section-heading">
211 ··<a·href="#synchronous-requests-call"·class="hover-link">211 ··<a·href="#synchronous-requests-call"·class="hover-link">
212 ····<i·class="ri-link-m"·aria-hidden="true"></i>212 ····<i·class="ri-link-m"·aria-hidden="true"></i>
213 ··</a>213 ··</a>
Offset 221, 32 lines modifiedOffset 221, 32 lines modified
221 </h2>221 </h2>
222 <p>The·synchronous·request·<code·class="inline">alloc()</code>·is·implemented·using·<a·href="../../lib/stdlib-6.2.2/doc/html/gen_server.html#call/2"><code·class="inline">gen_server:call/2</code></a>:</p><pre><code·class="text">alloc()·-&gt;222 <p>The·synchronous·request·<code·class="inline">alloc()</code>·is·implemented·using·<a·href="../../lib/stdlib-6.2.2/doc/html/gen_server.html#call/2"><code·class="inline">gen_server:call/2</code></a>:</p><pre><code·class="text">alloc()·-&gt;
223 ····gen_server:call(ch3,·alloc).</code></pre><p><code·class="inline">ch3</code>·is·the·name·of·the·<code·class="inline">gen_server</code>·and·must·agree·with·the·name223 ····gen_server:call(ch3,·alloc).</code></pre><p><code·class="inline">ch3</code>·is·the·name·of·the·<code·class="inline">gen_server</code>·and·must·agree·with·the·name
224 used·to·start·it.·<code·class="inline">alloc</code>·is·the·actual·request.</p><p>The·request·is·made·into·a·message·and·sent·to·the·<code·class="inline">gen_server</code>.224 used·to·start·it.·<code·class="inline">alloc</code>·is·the·actual·request.</p><p>The·request·is·made·into·a·message·and·sent·to·the·<code·class="inline">gen_server</code>.
225 When·the·request·is·received,·the·<code·class="inline">gen_server</code>·calls225 When·the·request·is·received,·the·<code·class="inline">gen_server</code>·calls
226 <code·class="inline">handle_call(Request,·From,·State)</code>,·which·is·expected·to·return226 <code·class="inline">handle_call(Request,·From,·State)</code>,·which·is·expected·to·return
227 a·tuple·<code·class="inline">{reply,Reply,State1}</code>.·<code·class="inline">Reply</code>·is·the·reply·that·is·to·be·sent·back227 a·tuple·<code·class="inline">{reply,Reply,State1}</code>.·<code·class="inline">Reply</code>·is·the·reply·that·is·to·be·sent·back
228 to·the·client,·and·<code·class="inline">State1</code>·is·a·new·value·for·the·state·of·the·<code·class="inline">gen_server</code>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">handle_call</span><span·class="p"·data-group-id="0940696765-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:·b43f414fee7818656bf1c45159930d2de7916b6b3d713ddb0c205ec5e9f8c465·...·]5-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="4914538635-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="4[·...·truncated·by·diffoscope;·len:·8,·SHA:·c683ff54c1711671da32d94bdb728f6bbd44001575596785da8063b91db71bb7·...·]5-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
229 ····</span><span·class="p"·data-group-id="0940696765-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="0940696765-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·139,·SHA:·7a33f10d941aad65bffbbaad1895d1cc282164c9984327317d3c07ffd97523a8·...·]5-3">)</span><span·class="p">,</span><span·class="w">229 ····</span><span·class="p"·data-group-id="4914538635-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="4914538635-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·139,·SHA:·6c58248b3a5d11d5b2b02b751a6da6a37dbe98c1af5582594d3659329a7f7884·...·]5-3">)</span><span·class="p">,</span><span·class="w">
230 ····</span><span·class="p"·data-group-id="0940696765-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="0940696765-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="4914538635-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="4914538635-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.2/doc/html/gen_server.html#cast/2"><code·class="inline">gen_server:cast/2</code></a>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">free</span><span·class="p"·data-group-id="3019829174-1">(</span><span·class="n">Ch</span><span·class="p"·data-group-id="3019829174-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.2/doc/html/gen_server.html#cast/2"><code·class="inline">gen_server:cast/2</code></a>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">free</span><span·class="p"·data-group-id="0902850514-1">(</span><span·class="n">Ch</span><span·class="p"·data-group-id="0902850514-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="3019829174-2">(</span><span·class="ss">ch3</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3019829174-3">{</span><span·class="ss">free</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ch</span><span[·...·truncated·by·diffoscope;·len:·88,·SHA:·09f299d17bfe22f81557f0cec070fa4cd52492c7188597aa9668c87acca2a578·...·]4-2">)</span><span·class="p">.</span></code></pre><p><code·class="inline">ch3</code>·is·the·name·of·the·<code·class="inline">gen_server</code>.·<code·class="inline">{free,·Ch}</code>·is·the·actual·request.</p><p>The·request·is·made·into·a·message·and·sent·to·the·<code·class="inline">gen_server</code>.240 ····</span><span·class="nc">gen_server</span><span·class="p">:</span><span·class="nf">cast</span><span·class="p"·data-group-id="0902850514-2">(</span><span·class="ss">ch3</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0902850514-3">{</span><span·class="ss">free</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Ch</span><span[·...·truncated·by·diffoscope;·len:·88,·SHA:·7fdeacd5dc87d3db227d62d45913606fdc6404d1fa33989de1176b3cd0b7fdbd·...·]4-2">)</span><span·class="p">.</span></code></pre><p><code·class="inline">ch3</code>·is·the·name·of·the·<code·class="inline">gen_server</code>.·<code·class="inline">{free,·Ch}</code>·is·the·actual·request.</p><p>The·request·is·made·into·a·message·and·sent·to·the·<code·class="inline">gen_server</code>.
241 <code·class="inline">cast</code>,·and·thus·<code·class="inline">free</code>,·then·returns·<code·class="inline">ok</code>.</p><p>When·the·request·is·received,·the·<code·class="inline">gen_server</code>·calls241 <code·class="inline">cast</code>,·and·thus·<code·class="inline">free</code>,·then·returns·<code·class="inline">ok</code>.</p><p>When·the·request·is·received,·the·<code·class="inline">gen_server</code>·calls
242 <code·class="inline">handle_cast(Request,·State)</code>,·which·is·expected·to·return·a·tuple242 <code·class="inline">handle_cast(Request,·State)</code>,·which·is·expected·to·return·a·tuple
243 <code·class="inline">{noreply,State1}</code>.·<code·class="inline">State1</code>·is·a·new·value·for·the·state·of·the·<code·class="inline">gen_server</code>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">handle_cast</span><span·class="p"·data-group-id="9355588992-1">(</span><span·class="p"·data-group-id="9355588992-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="9355588992-2">}</span><span·class="p">,</span><sp[·...·truncated·by·diffoscope;·len:·87,·SHA:·3f9a7022f348eeff91f59b7e2c956525f6c5153e1961952b658e641a3bb2ea10·...·]2-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="4446540712-1">(</span><span·class="p"·data-group-id="4446540712-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="4446540712-2">}</span><span·class="p">,</span><sp[·...·truncated·by·diffoscope;·len:·87,·SHA:·96f88bdc70d6b00e9b2f5f6eb61ca303bfdccf8e770b71d9763e2f4e7cc4ef29·...·]2-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="9355588992-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="9355588992-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="4446540712-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="4446540712-3">)</span><span·class="p">,</span><span·class="w">
245 ····</span><span·class="p"·data-group-id="9355588992-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="9355588992-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="4446540712-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="4446540712-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="9630146453-1">(</span><span·class="n">Args</span><span·class="p"·data-group-id="9630146453-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="4123010892-1">(</span><span·class="n">Args</span><span·class="p"·data-group-id="4123010892-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="9630146453-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="9630146453-2">)</span><span·class="p">,</span><span·class="w">266 ····</span><span·class="nf">process_flag</span><span·class="p"·data-group-id="4123010892-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="4123010892-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="9630146453-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="9630146453-3">}</span><span·class="p">.</span><span·class="w">268 ····</span><span·class="p"·data-group-id="4123010892-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="4123010892-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="9630146453-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="9630146453-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="4123010892-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="4123010892-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="7106032504-1">(</span><span·class="p"·data-group-id="7106032504-2">[</span><span·class="ss">stop</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="7106032504-2">]</span><span·class="p"·data-group-id="7106032504-1">)</span><span·class="p">.</span><span·class="w">281 </span><span·class="nf">export</span><span·class="p"·data-group-id="4235121349-1">(</span><span·class="p"·data-group-id="4235121349-2">[</span><span·class="ss">stop</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="4235121349-2">]</span><span·class="p"·data-group-id="4235121349-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="7106032504-3">(</span><span·class="p"·data-group-id="7106032504-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="4235121349-3">(</span><span·class="p"·data-group-id="4235121349-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="1868366260-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="0976499841-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="1868366260-2">[</span><span·class="p"·data-group-id="1868366260-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="1868366260-3">}</span><span·class="p">,</span><span·class="w">169 ·</span><span·class="p"·data-group-id="0976499841-2">[</span><span·class="p"·data-group-id="0976499841-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="0976499841-3">}</span><span·class="p">,</span><span·class="w">
170 ··</span><span·class="p"·data-group-id="1868366260-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="1868366260-4">}</span><span·class="p">,</span><span·class="w">170 ··</span><span·class="p"·data-group-id="0976499841-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="0976499841-4">}</span><span·class="p">,</span><span·class="w">
171 ··</span><span·class="p"·data-group-id="1868366260-5">{</span><span·class="ss">modules</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1868366260-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:·f40df04780daf2db31bdd54a1b304cb405f71b5bc69bb97fb45fac47eb64316f·...·]-5">}</span><span·class="p">,</span><span·class="w">171 ··</span><span·class="p"·data-group-id="0976499841-5">{</span><span·class="ss">modules</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0976499841-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:·8df701e442b7f4994dce568504e3708a17e6aa9978b9185ea32f0d9a73a7ef76·...·]-5">}</span><span·class="p">,</span><span·class="w">
172 ··</span><span·class="p"·data-group-id="1868366260-7">{</span><span·class="ss">registered</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1868366260-8">[</span><span·class="ss">prim_app_server</span><span·class="p"·data-group-id="1868366260-8">]</span><span·c[·...·truncated·by·diffoscope;·len:·34,·SHA:·e763c63cce04eb58b3b86b46e7a80be245edbe32844a32290f522b8b0d84dd51·...·]-7">}</span><span·class="p">,</span><span·class="w">172 ··</span><span·class="p"·data-group-id="0976499841-7">{</span><span·class="ss">registered</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0976499841-8">[</span><span·class="ss">prim_app_server</span><span·class="p"·data-group-id="0976499841-8">]</span><span·c[·...·truncated·by·diffoscope;·len:·34,·SHA:·01e3afa9a60ea31505901d70a4ca101875018ba9758eb74a41af68a923cb1042·...·]-7">}</span><span·class="p">,</span><span·class="w">
173 ··</span><span·class="p"·data-group-id="1868366260-9">{</span><span·class="ss">included_applications</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1868366260-10">[</span><span·class="ss">incl_app</span><span·class="p"·data-group-id="1868366260-10">]</span><[·...·truncated·by·diffoscope;·len:·40,·SHA:·44d7aa0668b300ae6c5d96ec9690782201243dd7ce36defcf5c5cb9eb6c695b3·...·]-9">}</span><span·class="p">,</span><span·class="w">173 ··</span><span·class="p"·data-group-id="0976499841-9">{</span><span·class="ss">included_applications</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0976499841-10">[</span><span·class="ss">incl_app</span><span·class="p"·data-group-id="0976499841-10">]</span><[·...·truncated·by·diffoscope;·len:·40,·SHA:·7b9befb0d93264c712a8a252cbec6c82ecb36f0e2642b32116a8bb36c9694d08·...·]-9">}</span><span·class="p">,</span><span·class="w">
174 ··</span><span·class="p"·data-group-id="1868366260-11">{</span><span·class="ss">applications</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1868366260-12">[</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·184,·SHA:·47632405d5fefa7ca632c94a8223fcd4665dcfd4e1b07122818a9af08dc15105·...·]-11">}</span><span·class="p">,</span><span·class="w">174 ··</span><span·class="p"·data-group-id="0976499841-11">{</span><span·class="ss">applications</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0976499841-12">[</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·184,·SHA:·6defc584fe0d01ebcd1bdb0b92a34510b034ecb62c2b4de51d69a3aeb71b61d3·...·]-11">}</span><span·class="p">,</span><span·class="w">
175 ··</span><span·class="p"·data-group-id="1868366260-13">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1868366260-14">{</span><span·class="ss">prim_app_cb</span><span·class="p">,</span><span·class="p"·data-group-id="1868366260-15"[·...·truncated·by·diffoscope;·len:·158,·SHA:·3920438ff4a68e59cd8ffb389853df541d5f773db5e5eca38d1231e8a175686e·...·]-13">}</span><span·class="p">,</span><span·class="w">175 ··</span><span·class="p"·data-group-id="0976499841-13">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0976499841-14">{</span><span·class="ss">prim_app_cb</span><span·class="p">,</span><span·class="p"·data-group-id="0976499841-15"[·...·truncated·by·diffoscope;·len:·158,·SHA:·b8819d6365322e2729444a3a8fc7037bd317d4d25485e9ad2f6e67074a90fda8·...·]-13">}</span><span·class="p">,</span><span·class="w">
176 ··</span><span·class="p"·data-group-id="1868366260-16">{</span><span·class="ss">env</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1868366260-17">[</span><span·class="p"·data-group-id="1868366260-18">{</span><span·class="ss">file</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·224,·SHA:·9ca784b15974e6f28a39d0311a1bea5f12e73b8a13cc8e24cbb28f56fa005068·...·]-16">}</span><span·class="w">176 ··</span><span·class="p"·data-group-id="0976499841-16">{</span><span·class="ss">env</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0976499841-17">[</span><span·class="p"·data-group-id="0976499841-18">{</span><span·class="ss">file</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·224,·SHA:·d645665667aea124093332c0808b2c669d7010577d89fb1e804f173b7d8f6d93·...·]-16">}</span><span·class="w">
177 ·</span><span·class="p"·data-group-id="1868366260-2">]</span><span·class="p"·data-group-id="1868366260-1">}</span><span·class="p">.</span></code></pre><h2·id="synchronizing-processes-during-startup"·class="section-heading">177 ·</span><span·class="p"·data-group-id="0976499841-2">]</span><span·class="p"·data-group-id="0976499841-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="2193207056-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="2737440716-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="2193207056-2">[</span><span·class="p"·data-group-id="2193207056-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="2193207056-3">}</span><span·class="p">,</span><span·class="w">192 ·</span><span·class="p"·data-group-id="2737440716-2">[</span><span·class="p"·data-group-id="2737440716-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="2737440716-3">}</span><span·class="p">,</span><span·class="w">
193 ··</span><span·class="p"·data-group-id="2193207056-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="2193207056-4">}</span><span·class="p">,</span><span·class="w">193 ··</span><span·class="p"·data-group-id="2737440716-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="2737440716-4">}</span><span·class="p">,</span><span·class="w">
194 ··</span><span·class="p"·data-group-id="2193207056-5">{</span><span·class="ss">modules</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2193207056-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:·196,·SHA:·402034989d6b610109a83a5fbb79f72cabc1263adb21bbc0586c93e8cb3ba9c1·...·]6-5">}</span><span·class="p">,</span><span·class="w">194 ··</span><span·class="p"·data-group-id="2737440716-5">{</span><span·class="ss">modules</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2737440716-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:·196,·SHA:·cd4f8b47af0a51270427d8155738552c1936dcc526862aad350c1259a8bd3ca3·...·]6-5">}</span><span·class="p">,</span><span·class="w">
195 ··</span><span·class="p"·data-group-id="2193207056-7">{</span><span·class="ss">registered</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2193207056-8">[</span><span·class="ss">prim_app_server</span><span·class="p"·data-group-id="2193207056-8">]</span><span·cl[·...·truncated·by·diffoscope;·len:·32,·SHA:·fb40b86bf02eb8c3d050f8f43926e8e6de3ac5a93de9754687a57c8457a59b51·...·]6-7">}</span><span·class="p">,</span><span·class="w">195 ··</span><span·class="p"·data-group-id="2737440716-7">{</span><span·class="ss">registered</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2737440716-8">[</span><span·class="ss">prim_app_server</span><span·class="p"·data-group-id="2737440716-8">]</span><span·cl[·...·truncated·by·diffoscope;·len:·32,·SHA:·50af89a6a35fdd0683ceabeef7d85dcea3d6d2642227b86855713c196c508c93·...·]6-7">}</span><span·class="p">,</span><span·class="w">
196 ··</span><span·class="p"·data-group-id="2193207056-9">{</span><span·class="ss">included_applications</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2193207056-10">[</span><span·class="ss">incl_app</span><span·class="p"·data-group-id="2193207056-10">]</span><s[·...·truncated·by·diffoscope;·len:·38,·SHA:·5889b137ca2266e407ca3fe84ff7af7488b6e793bdbb32c710f514ce52125b50·...·]6-9">}</span><span·class="p">,</span><span·class="w">196 ··</span><span·class="p"·data-group-id="2737440716-9">{</span><span·class="ss">included_applications</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2737440716-10">[</span><span·class="ss">incl_app</span><span·class="p"·data-group-id="2737440716-10">]</span><s[·...·truncated·by·diffoscope;·len:·38,·SHA:·804a32a915d7fea35dca640245628e94868fe46757bb5b0e12bb66a11e6f2dcc·...·]6-9">}</span><span·class="p">,</span><span·class="w">
197 ··</span><span·class="p"·data-group-id="2193207056-11">{</span><span·class="ss">start_phases</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2193207056-12">[</span><span·class="p"·data-group-id="2193207056-13">{</span><span·class="ss">init</span><span·class="p[·...·truncated·by·diffoscope;·len:·580,·SHA:·f359c3ebb42f1af450f9016572c8393a670fbcac6d9e96cfe55167443b1f6b22·...·]6-11">}</span><span·class="p">,</span><span·class="w">197 ··</span><span·class="p"·data-group-id="2737440716-11">{</span><span·class="ss">start_phases</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2737440716-12">[</span><span·class="p"·data-group-id="2737440716-13">{</span><span·class="ss">init</span><span·class="p[·...·truncated·by·diffoscope;·len:·580,·SHA:·82407744d2f28918f697a8e0696054b4afb27024484f798ecf9eae2bacd79e00·...·]6-11">}</span><span·class="p">,</span><span·class="w">
198 ··</span><span·class="p"·data-group-id="2193207056-17">{</span><span·class="ss">applications</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2193207056-18">[</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">s[·...·truncated·by·diffoscope;·len:·182,·SHA:·d184077daeaa2e07df53183be3eadaa375dc5b226b5dd9b9844a9c0dcbd4a68b·...·]6-17">}</span><span·class="p">,</span><span·class="w">198 ··</span><span·class="p"·data-group-id="2737440716-17">{</span><span·class="ss">applications</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2737440716-18">[</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">s[·...·truncated·by·diffoscope;·len:·182,·SHA:·a02c704dd324824921b14c4f7219ff08807d9250e9384e72d14a4154c631344a·...·]6-17">}</span><span·class="p">,</span><span·class="w">
199 ··</span><span·class="p"·data-group-id="2193207056-19">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2193207056-20">{</span><span·class="ss">application_starter</span><span·class="p">,</span><span·class="p"·data-group-id="2193207056-21">[</span><span·class="ss">prim_app_cb</span><span·class="p">,</span><span·class="p"·data-group-id="2193207056-22">[</span><span·class="p"·data-group-id="2193207056-22">]</span><span·class="p"·data-group-id="2193207056-21">]</span><span·class="p"·data-group-id="2193207056-20">}</span><span·class="p"·data-group-id="2193207056-19">}</span><span·class="p">,</span><span·class="w"> 
200 ··</span><span·class="p"·data-group-id="2193207056-23">{</span><span·class="ss">env</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2193207056-24">[</span><span·class="p"·data-group-id="2193207056-25">{</span><span·class="ss">file</span><span·class="p">,</span[·...·truncated·by·diffoscope;·len:·229,·SHA:·ccb963643fdfedfde46df03391c89d017e4284cb11969edae6fe38fb54ec8bdd·...·]</span><span·class="w">199 ··</span><span·class="p"·data-group-id="2737440716-19">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2737440716-20">{</span><span·class="ss">application_starter</span><span·class="p">,</span><span·class="p"·data-group-id="2737440[·...·truncated·by·diffoscope;·len:·362,·SHA:·f5ba1eed912776228ef2c3825c09c778779091f2be0c910d77c91ea576de2b73·...·]</span><span·class="w">
 200 ··</span><span·class="p"·data-group-id="2737440716-23">{</span><span·class="ss">env</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2737440716-24">[</span><span·class="p"·data-group-id="2737440716-25">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;/usr/local/log&quot;</span><span·class="p"·data-group-id="2737440716-25">}</span><span·class="p"·data-group-id="2737440716-24">]</span><span·class="p"·data-group-id="2737440716-23">}</span><span·class="w">
201 ·</span><span·class="p"·data-group-id="2193207056-2">]</span><span·class="p"·data-group-id="2193207056-1">}</span><span·class="p">.</span><span·class="w">201 ·</span><span·class="p"·data-group-id="2737440716-2">]</span><span·class="p"·data-group-id="2737440716-1">}</span><span·class="p">.</span><span·class="w">
  
202 </span><span·class="p"·data-group-id="2193207056-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="2737440716-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="2193207056-27">[</span><span·class="p"·data-group-id="2193207056-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="2193207056-28">}</span><span·class="p">,</span><span·class="w">203 ·</span><span·class="p"·data-group-id="2737440716-27">[</span><span·class="p"·data-group-id="2737440716-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="2737440716-28">}</span><span·class="p">,</span><span·class="w">
204 ··</span><span·class="p"·data-group-id="2193207056-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="2193207056-29">}</span><span·class="p">,</span><span·class="w">204 ··</span><span·class="p"·data-group-id="2737440716-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="2737440716-29">}</span><span·class="p">,</span><span·class="w">
205 ··</span><span·class="p"·data-group-id="2193207056-30">{</span><span·class="ss">modules</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2193207056-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:·199,·SHA:·bda1e37bacbca0c91bb000a858b429581a69574e715b8fd08cdf1bd05c5dc9b4·...·]6-30">}</span><span·class="p">,</span><span·class="w">205 ··</span><span·class="p"·data-group-id="2737440716-30">{</span><span·class="ss">modules</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2737440716-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:·199,·SHA:·ba6b5c0d9fbf45d86c72ac331603bd9315dabe7fa49dcccedf0923c89c9c45dc·...·]6-30">}</span><span·class="p">,</span><span·class="w">
206 ··</span><span·class="p"·data-group-id="2193207056-32">{</span><span·class="ss">registered</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2193207056-33">[</span><span·class="p"·data-group-id="2193207056-33">]</span><span·class="p"·data-group-id="2193207056-32">}</span><span·class="p">,</span><span·class="w">206 ··</span><span·class="p"·data-group-id="2737440716-32">{</span><span·class="ss">registered</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2737440716-33">[</span><span·class="p"·data-group-id="2737440716-33">]</span><span·class="p"·data-group-id="2737440716-32">}</span><span·class="p">,</span><span·class="w">
207 ··</span><span·class="p"·data-group-id="2193207056-34">{</span><span·class="ss">start_phases</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2193207056-35">[</span><span·class="p"·data-group-id="2193207056-36">{</span><span·class="ss">go</span><span·class="p">[·...·truncated·by·diffoscope;·len:·264,·SHA:·45afe21f1b9033bfb6cdab57f830e5719a5c1d7d60be66eb51cda8af275d1616·...·]6-34">}</span><span·class="p">,</span><span·class="w">207 ··</span><span·class="p"·data-group-id="2737440716-34">{</span><span·class="ss">start_phases</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2737440716-35">[</span><span·class="p"·data-group-id="2737440716-36">{</span><span·class="ss">go</span><span·class="p">[·...·truncated·by·diffoscope;·len:·264,·SHA:·5450e91f59baf176af22ba7074cfff1241e82ccc15eb58f126910848fb4a24d4·...·]6-34">}</span><span·class="p">,</span><span·class="w">
208 ··</span><span·class="p"·data-group-id="2193207056-38">{</span><span·class="ss">applications</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2193207056-39">[</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">s[·...·truncated·by·diffoscope;·len:·182,·SHA:·eb360d03d9dcbac19fa74972412618c96a3cd2030c179d6dcd54a3f0ac1e734d·...·]6-38">}</span><span·class="p">,</span><span·class="w">208 ··</span><span·class="p"·data-group-id="2737440716-38">{</span><span·class="ss">applications</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2737440716-39">[</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">s[·...·truncated·by·diffoscope;·len:·182,·SHA:·7f76c0ff9f80c41a225127a230ab199f94e8987fcdc82d5f640469e0ff3cbd38·...·]6-38">}</span><span·class="p">,</span><span·class="w">
209 ··</span><span·class="p"·data-group-id="2193207056-40">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2193207056-41">{</span><span·class="ss">incl_app_cb</span><span·class="p">,</span><span·class="p"·data-group-id="2193207056-42">[·...·truncated·by·diffoscope;·len:·156,·SHA:·747cd7f1981941c928deab0793e1ac6d290cd2d0a9f3a5f8160cbe9bb27faada·...·]6-40">}</span><span·class="w">209 ··</span><span·class="p"·data-group-id="2737440716-40">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2737440716-41">{</span><span·class="ss">incl_app_cb</span><span·class="p">,</span><span·class="p"·data-group-id="2737440716-42">[·...·truncated·by·diffoscope;·len:·156,·SHA:·0f68a082070a4dd86f8e3ec42fe240a03df3591cba476c495a60ba7cbc8bc7bd·...·]6-40">}</span><span·class="w">
210 ·</span><span·class="p"·data-group-id="2193207056-27">]</span><span·class="p"·data-group-id="2193207056-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="2737440716-27">]</span><span·class="p"·data-group-id="2737440716-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="7712335688-1">(</span><span·class="ss">prim_app</span><span·class="p"·data-group-id="7712335688-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="3620110066-1">(</span><span·class="ss">prim_app</span><span·class="p"·data-group-id="3620110066-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="7712335688-2">(</span><span·class="ss">normal</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7712335688-3">[</span><span·class="p"·data-group-id="7712335688-3">]</span><span·class="p"·data-group-id="7712335688-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="3620110066-2">(</span><span·class="ss">normal</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3620110066-3">[</span><span·class="p"·data-group-id="3620110066-3">]</span><span·class="p"·data-group-id="3620110066-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="7712335688-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="7712335688-5">[</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·67,·SHA:·dd8f807fcc04359073528d8ff0975d44d867fe2bb5b75921cb24f275cf2dc9e2·...·]-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="3620110066-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="3620110066-5">[</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·67,·SHA:·829f2ef29b7727738c012968afb202aec62229d4fba62fa9154f706d5059a798·...·]-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="7712335688-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="7712335688-7">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·65,·SHA:·074551fa13f4199b52caf61b0dccb703aa41c1bb2151066acc4591b5eda47551·...·]-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="3620110066-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="3620110066-7">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·65,·SHA:·6092245111417856a5c1f527433d84ef7c81481a0eb89b52d1b260e011ae104f·...·]-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="7712335688-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="7712335688-9">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·65,·SHA:·617be4dca19a1f3f3005fcf482608469f83cfa54f0e73ed43dd6effdac8b8616·...·]-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="3620110066-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="3620110066-9">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·65,·SHA:·ccc23bb432cf1ae7e19cf922e37cba6ce11f6b3e988ba592417bd4320ec2b148·...·]-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="4216543794-1">(</span><span·class="ss">system_version</span><span·class="p"·data-group-id="4216543794-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="2815845498-1">(</span><span·class="ss">system_version</span><span·class="p"·data-group-id="2815845498-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="6325708601-1">(</span><span·class="p"·data-group-id="6325708601-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="0736635615-1">(</span><span·class="p"·data-group-id="0736635615-1">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
326 ····</span><span·class="p"·data-group-id="6325708601-2">{</span><span·class="ss">win32</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id="6325708601-2">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">326 ····</span><span·class="p"·data-group-id="0736635615-2">{</span><span·class="ss">win32</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id="0736635615-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="6325708601-3">(</span><span·class="p"·data-group-id="6325708601-3">)</span><span·class="p">;</span><span·class="w">327 ········</span><span·class="nf">do_windows_specific</span><span·class="p"·data-group-id="0736635615-3">(</span><span·class="p"·data-group-id="0736635615-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="6325708601-4">(</span><span·class="p"·data-group-id="6325708601-4">)</span><span·class="w">329 ········</span><span·class="nf">do_fallback_or_exit</span><span·class="p"·data-group-id="0736635615-4">(</span><span·class="p"·data-group-id="0736635615-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="6269955155-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="626995[·...·truncated·by·diffoscope;·len:·650,·SHA:·27b027d98260196dd948387acaf65ff85e2bd47c8de89fbab635dd0d2cf6faa2·...·]-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="2566224534-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="256622[·...·truncated·by·diffoscope;·len:·650,·SHA:·723df160f2f990d5f4d709360e95a9c0f68b29aa07e0356bae12b2c69a17eb77·...·]-1">]</span><span·class="p">.</span><span·class="w">
124 </span><span·class="p"·data-group-id="6269955155-3">[</span><span·class="ss">a</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="ss">b</span><span·class="p">,</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">6</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·52ce4f5dedb0b76702a26a9be2b0bf06adb1f7d2a759c84456ec1ac6daac6145·...·]-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="2566224534-3">[</span><span·class="ss">a</span><span·class="p">,</span><span·class="mi">4</span><span·class="p">,</span><span·class="ss">b</span><span·class="p">,</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">6</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·8861fbec74718a3a00d24f643b77725818d9eb8db8041988e551e90268e01b1b·...·]-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.6/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.6/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="2779726327-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="277972[·...·truncated·by·diffoscope;·len:·862,·SHA:·f2dced877a030c6897fe4e463ce2980289423f8d04bc2cf177193a9ef7b8c746·...·]-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="5220074550-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="522007[·...·truncated·by·diffoscope;·len:·862,·SHA:·ed6168dc55ed8f296b7ce3dea5c53078051fef3c795949d99f0f59ca29db45c5·...·]-1">]</span><span·class="p">.</span><span·class="w">
128 </span><span·class="p"·data-group-id="2779726327-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="2779726327-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="5220074550-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="5220074550-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="5325863946-1">[</span><span·class="p"·data-group-id="5325863946-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="5325863946-2">}</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·739,·SHA:·afdbf0600bee18ee8c3d833338299bdd193464d352d0b299c8007395049de683·...·]-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="1674674867-1">[</span><span·class="p"·data-group-id="1674674867-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="1674674867-2">}</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·739,·SHA:·e8eda98ef52f15ada603c98650742862534f7fcd21bd4a7a507242d407bfe53e·...·]-1">]</span><span·class="p">.</span><span·class="w">
130 </span><span·class="p"·data-group-id="5325863946-5">[</span><span·class="p"·data-group-id="5325863946-6">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="ss">a</span><span·class="p"·data-group-id="5325863946-6">}</span><span·class="p">,</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·1011,·SHA:·824d4c4617f48412660856e4126d02d5a0d97c10c827c4fb1183e88b0e5e7a92·...·]-5">]</span></code></pre><h2·id="quick-sort"·class="section-heading">130 </span><span·class="p"·data-group-id="1674674867-5">[</span><span·class="p"·data-group-id="1674674867-6">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="ss">a</span><span·class="p"·data-group-id="1674674867-6">}</span><span·class="p">,</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·1011,·SHA:·e626275841dfe6afd0e8a8f10089f8a136d5692145532b8e150407b5a19b98cd·...·]-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="0421113318-1">(</span><span·class="p"·data-group-id="0421113318-2">[</span><span·class="p"·data-group-id="0421113318-2">]</span><span·class="p"·data-group-id="0421113318-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·95,·SHA:·83fd4e5234303cb5ffc76c3f29956e52163702d0438c8b5b91e18f245e321b54·...·]-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="6212418869-1">(</span><span·class="p"·data-group-id="6212418869-2">[</span><span·class="p"·data-group-id="6212418869-2">]</span><span·class="p"·data-group-id="6212418869-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·95,·SHA:·c7b3ad65143febdc55b28726eca6f6f4ab157a5435aa55487a707f8ad75e2cc8·...·]-3">]</span><span·class="p">;</span><span·class="w">
137 </span><span·class="nf">sort</span><span·class="p"·data-group-id="0421113318-4">(</span><span·class="p"·data-group-id="0421113318-5">[</span><span·class="p">_</span><span·class="p"·data-group-id="0421113318-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:·1e2b4e89fed79eb94bb98687d453c9893bb0f84f2a3ebbc2a05975d6578f4704·...·]-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="6212418869-4">(</span><span·class="p"·data-group-id="6212418869-5">[</span><span·class="p">_</span><span·class="p"·data-group-id="6212418869-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:·7555e47514a59f816d18e6d08975c865ab383981c6ed4d68f9a72c76e0ef8020·...·]-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="0421113318-6">(</span><span·class="p"·data-group-id="0421113318-7">[</span><span·class="n">Pivot</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="0421113318-7">]</span><span·class="p"·data-group-id="0421113318-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="6212418869-6">(</span><span·class="p"·data-group-id="6212418869-7">[</span><span·class="n">Pivot</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="6212418869-7">]</span><span·class="p"·data-group-id="6212418869-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="0421113318-8">(</span><span·class="p"·data-group-id="0421113318-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:·04f48d0179d8ee34927d628b1b3a91c724597150bff77617240e76005b28c29f·...·]-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="6212418869-8">(</span><span·class="p"·data-group-id="6212418869-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:·a6812de7f2d7729aa135a2efe0d83c83ac0c2c7de377d05519fef0766abe7559·...·]-8">)</span><span·class="w">·</span><span·class="o">++</span><span·class="w">
140 ····</span><span·class="p"·data-group-id="0421113318-10">[</span><span·class="n">Pivot</span><span·class="p"·data-group-id="0421113318-10">]</span><span·class="w">·</span><span·class="o">++</span><span·class="w">140 ····</span><span·class="p"·data-group-id="6212418869-10">[</span><span·class="n">Pivot</span><span·class="p"·data-group-id="6212418869-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="0421113318-11">(</span><span·class="p"·data-group-id="0421113318-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:·c5318267a84ce2b6ced860aef5286ebe7a448b16b235ae52d914c13c10680f7f·...·]-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="6212418869-11">(</span><span·class="p"·data-group-id="6212418869-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:·26e10279b78af91c585b429a8879476b9a904b79a037e71e9df0567495c9eadd·...·]-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.2/doc/html/lists.html"><code·class="inline">lists</code></a>·module·contains·sorting·functions·that·are·implemented·in·a·more151 <a·href="../../lib/stdlib-6.2.2/doc/html/lists.html"><code·class="inline">lists</code></a>·module·contains·sorting·functions·that·are·implemented·in·a·more
152 efficient·way.</p></section><h2·id="permutations"·class="section-heading">152 efficient·way.</p></section><h2·id="permutations"·class="section-heading">
153 ··<a·href="#permutations"·class="hover-link">153 ··<a·href="#permutations"·class="hover-link">
154 ····<i·class="ri-link-m"·aria-hidden="true"></i>154 ····<i·class="ri-link-m"·aria-hidden="true"></i>
155 ··</a>155 ··</a>
156 ··<span·class="text">Permutations</span>156 ··<span·class="text">Permutations</span>
157 </h2>157 </h2>
158 <p>The·following·example·generates·all·permutations·of·the·elements·in·a·list:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">perms</span><span·class="p"·data-group-id="6619878519-1">(</span><span·class="p"·data-group-id="6619878519-2">[</span><span·class="p"·data-group-id="6619878519-2">]</span><span·class="p"·data-group-id="6619878519-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·200,·SHA:·a63434c080cc7beb49cee72b4d2c8f93dc7c200f2cb0e3b4bbd76e2fe7ad19f4·...·]9-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="9040164729-1">(</span><span·class="p"·data-group-id="9040164729-2">[</span><span·class="p"·data-group-id="9040164729-2">]</span><span·class="p"·data-group-id="9040164729-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·200,·SHA:·9c519e943773db3763916cdc80fc451720595ab6abd3cf4f4c35e177698812ba·...·]9-3">]</span><span·class="p">;</span><span·class="w">
159 </span><span·class="nf">perms</span><span·class="p"·data-group-id="6619878519-5">(</span><span·class="n">L</span><span·class="p"·data-group-id="6619878519-5">)</span><span·class="w">··</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="6619878519-6">[</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·850,·SHA:·0aa9da273d25cc1f4c76e6fa6cda71804ea7e4edbd8c746cc04028503cccfc67·...·]9-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="9040164729-5">(</span><span·class="n">L</span><span·class="p"·data-group-id="9040164729-5">)</span><span·class="w">··</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="9040164729-6">[</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·850,·SHA:·dde126a483207b13fe2b1de39773a4495daaccd30eda6445ac8b14a44ef2826b·...·]9-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="9974544194-1">(</span><span·class="p"·data-group-id="9974544194-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="9974544194-2">]</span><span[·...·truncated·by·diffoscope;·len:·35,·SHA:·04634643f73ac2f0a89af9fe207acf8cd69f1442aaf7365fb1f669014bba2e42·...·]4-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="5094682814-1">(</span><span·class="p"·data-group-id="5094682814-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="5094682814-2">]</span><span[·...·truncated·by·diffoscope;·len:·35,·SHA:·da1b4a0b78b7e40d5cd941e54ef847fe1347b0bb5e1e75f6ee4ad46d331abdc4·...·]4-1">)</span><span·class="p">.</span><span·class="w">
162 </span><span·class="p"·data-group-id="9974544194-3">[</span><span·class="p"·data-group-id="9974544194-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="9974544194-4">]</span><span[·...·truncated·by·diffoscope;·len:·1300,·SHA:·419706b647c4d4c75d8f776f417c3a8e98df4df17115e9d674b7b6083b5a9e51·...·]4-3">]</span></code></pre><h2·id="pythagorean-triplets"·class="section-heading">162 </span><span·class="p"·data-group-id="5094682814-3">[</span><span·class="p"·data-group-id="5094682814-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="5094682814-4">]</span><span[·...·truncated·by·diffoscope;·len:·1300,·SHA:·c3c7a1829a23e3d9443b0df17b0e687058d90bc7a64a9f8fb384844eae2487e8·...·]4-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="7354437608-1">(</span><span·class="n">N</span><span·class="p"·data-group-id="7354437608-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="9677278715-1">(</span><span·class="n">N</span><span·class="p"·data-group-id="9677278715-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
172 ····</span><span·class="p"·data-group-id="7354437608-2">[</span><span·class="w">·</span><span·class="p"·data-group-id="7354437608-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="735443[·...·truncated·by·diffoscope;·len:·4,·SHA:·beafd6443cf2f027ff50a4203abc18a27c185f95f7107b083f26e625f25b2724·...·]-3">}</span><span·class="w">·</span><span·class="p">||</span><span·class="w">172 ····</span><span·class="p"·data-group-id="9677278715-2">[</span><span·class="w">·</span><span·class="p"·data-group-id="9677278715-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="967727[·...·truncated·by·diffoscope;·len:·4,·SHA:·06ad5edd86e08ffe39a2bdb4873bc4a6533834bd7b859620ebcac5cb7c677231·...·]-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="7354437608-4">(</span><span·class="mi">1</span><span·class="p">,</span><span·class="n">N</span><span·class="p"·data-group-id="7354437608-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="9677278715-4">(</span><span·class="mi">1</span><span·class="p">,</span><span·class="n">N</span><span·class="p"·data-group-id="9677278715-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="7354437608-5">(</span><span·class="mi">1</span><span·class="p">,</span><span·class="n">N</span><span·class="p"·data-group-id="7354437608-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="9677278715-5">(</span><span·class="mi">1</span><span·class="p">,</span><span·class="n">N</span><span·class="p"·data-group-id="9677278715-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="7354437608-6">(</span><span·class="mi">1</span><span·class="p">,</span><span·class="n">N</span><span·class="p"·data-group-id="7354437608-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="9677278715-6">(</span><span·class="mi">1</span><span·class="p">,</span><span·class="n">N</span><span·class="p"·data-group-id="9677278715-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="7354437608-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="1011892614-1">(</span><span·class="mi">3</span><[·...·truncated·by·diffoscope;·len:·39,·SHA:·19e8d4523ea28c020f6133a3c5c3b194738830477a1c8627bde3052311b1bec6·...·]4-1">)</span><span·class="p">.</span><span·class="w">178 ····</span><span·class="p"·data-group-id="9677278715-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="5414626154-1">(</span><span·class="mi">3</span><[·...·truncated·by·diffoscope;·len:·39,·SHA:·d8127100618be573cea9f713b85e02e5bb3283faa14d1b079e8b9519a9c22c09·...·]4-1">)</span><span·class="p">.</span><span·class="w">
179 </span><span·class="p"·data-group-id="1011892614-2">[</span><span·class="p"·data-group-id="1011892614-2">]</span><span·class="p">.</span><span·class="gp·unselectable">179 </span><span·class="p"·data-group-id="5414626154-2">[</span><span·class="p"·data-group-id="5414626154-2">]</span><span·class="p">.</span><span·class="gp·unselectable">
180 &gt;·</span><span·class="nf">pyth</span><span·class="p"·data-group-id="1011892614-3">(</span><span·class="mi">11</span><span·class="p"·data-group-id="1011892614-3">)</span><span·class="p">.</span><span·class="w">180 &gt;·</span><span·class="nf">pyth</span><span·class="p"·data-group-id="5414626154-3">(</span><span·class="mi">11</span><span·class="p"·data-group-id="5414626154-3">)</span><span·class="p">.</span><span·class="w">
181 </span><span·class="p"·data-group-id="1011892614-4">[</span><span·class="p"·data-group-id="1011892614-4">]</span><span·class="p">.</span><span·class="gp·unselectable">181 </span><span·class="p"·data-group-id="5414626154-4">[</span><span·class="p"·data-group-id="5414626154-4">]</span><span·class="p">.</span><span·class="gp·unselectable">
182 &gt;·</span><span·class="nf">pyth</span><span·class="p"·data-group-id="1011892614-5">(</span><span·class="mi">12</span><span·class="p"·data-group-id="1011892614-5">)</span><span·class="p">.</span><span·class="w">182 &gt;·</span><span·class="nf">pyth</span><span·class="p"·data-group-id="5414626154-5">(</span><span·class="mi">12</span><span·class="p"·data-group-id="5414626154-5">)</span><span·class="p">.</span><span·class="w">
183 </span><span·class="p"·data-group-id="1011892614-6">[</span><span·class="p"·data-group-id="1011892614-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="1011892614-7">}</span><span[·...·truncated·by·diffoscope;·len:·288,·SHA:·f58b280e2ecfab9e6760a4073a82f17bfd58b1bd8c7efa86a05a364dc8e5e2a9·...·]4-6">]</span><span·class="gp·unselectable">183 </span><span·class="p"·data-group-id="5414626154-6">[</span><span·class="p"·data-group-id="5414626154-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="5414626154-7">}</span><span[·...·truncated·by·diffoscope;·len:·288,·SHA:·20f68b4a94cb7b69f173bb385e5e399b807ec6248f6c6d978fa6cc4bb00ce7c3·...·]4-6">]</span><span·class="gp·unselectable">
184 &gt;·</span><span·class="nf">pyth</span><span·class="p"·data-group-id="1011892614-9">(</span><span·class="mi">50</span><span·class="p"·data-group-id="1011892614-9">)</span><span·class="p">.</span><span·class="w">184 &gt;·</span><span·class="nf">pyth</span><span·class="p"·data-group-id="5414626154-9">(</span><span·class="mi">50</span><span·class="p"·data-group-id="5414626154-9">)</span><span·class="p">.</span><span·class="w">
185 </span><span·class="p"·data-group-id="1011892614-10">[</span><span·class="p"·data-group-id="1011892614-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="1011892614-11">}</span><span·class="p">,</span><span·class="w">185 </span><span·class="p"·data-group-id="5414626154-10">[</span><span·class="p"·data-group-id="5414626154-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="5414626154-11">}</span><span·class="p">,</span><span·class="w">
186 ·</span><span·class="p"·data-group-id="1011892614-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="1011892614-12">}</span><span·class="p">,</span><span·class="w">186 ·</span><span·class="p"·data-group-id="5414626154-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="5414626154-12">}</span><span·class="p">,</span><span·class="w">
187 ·</span><span·class="p"·data-group-id="1011892614-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="1011892614-13">}</span><span·class="p">,</span><span·class="w">187 ·</span><span·class="p"·data-group-id="5414626154-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="5414626154-13">}</span><span·class="p">,</span><span·class="w">
188 ·</span><span·class="p"·data-group-id="1011892614-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="1011892614-14">}</span><span·class="p">,</span><span·class="w">188 ·</span><span·class="p"·data-group-id="5414626154-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="5414626154-14">}</span><span·class="p">,</span><span·class="w">
189 ·</span><span·class="p"·data-group-id="1011892614-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="1011892614-15">}</span><span·class="p">,</span><span·class="w">189 ·</span><span·class="p"·data-group-id="5414626154-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="5414626154-15">}</span><span·class="p">,</span><span·class="w">
190 ·</span><span·class="p"·data-group-id="1011892614-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="1011892614-16">}</span><span·class="p">,</span><span·class="w">190 ·</span><span·class="p"·data-group-id="5414626154-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="5414626154-16">}</span><span·class="p">,</span><span·class="w">
191 ·</span><span·class="p"·data-group-id="1011892614-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="1011892614-17">}</span><span·class="p">,</span><span·class="w">191 ·</span><span·class="p"·data-group-id="5414626154-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="5414626154-17">}</span><span·class="p">,</span><span·class="w">
192 ·</span><span·class="p"·data-group-id="1011892614-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="1011892614-18">}</span><span·class="p">,</span><span·class="w">192 ·</span><span·class="p"·data-group-id="5414626154-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="5414626154-18">}</span><span·class="p">,</span><span·class="w">
193 ·</span><span·class="p"·data-group-id="1011892614-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="1011892614-19">}</span><span·class="p">,</span><span·class="w">193 ·</span><span·class="p"·data-group-id="5414626154-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="5414626154-19">}</span><span·class="p">,</span><span·class="w">
194 ·</span><span·class="p"·data-group-id="1011892614-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="1011892614-20">}</span><span·class="p">,</span><span·class="w">194 ·</span><span·class="p"·data-group-id="5414626154-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="5414626154-20">}</span><span·class="p">,</span><span·class="w">
195 ·</span><span·class="p"·data-group-id="1011892614-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="1011892614-21">}</span><span·class="p">,</span><span·class="w">195 ·</span><span·class="p"·data-group-id="5414626154-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="5414626154-21">}</span><span·class="p">,</span><span·class="w">
196 ·</span><span·class="p"·data-group-id="1011892614-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="1011892614-22">}</span><span·class="p"·data-group-id="1011892614-10">]</span[·...·truncated·by·diffoscope;·len:·282,·SHA:·4e6c96e5d853d18b6e89944732be988bd6b6a2c679530edd640d1391ca9cafa7·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">196 ·</span><span·class="p"·data-group-id="5414626154-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="5414626154-22">}</span><span·class="p"·data-group-id="5414626154-10">]</span[·...·truncated·by·diffoscope;·len:·282,·SHA:·8ed590f9af25e0f1effd0378babffdaae30a5d789de502d258a358d0eb1d8a53·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
197 ···</span><span·class="p"·data-group-id="8635219234-2">[</span><span·class="p"·data-group-id="8635219234-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="8635219234-3">}</span><span·class="w">·</span><span·class="p">||</span><span·class="w">197 ···</span><span·class="p"·data-group-id="1408387783-2">[</span><span·class="p"·data-group-id="1408387783-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="1408387783-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="8635219234-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="8635219234-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="1408387783-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="1408387783-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="8635219234-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="8635219234-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="1408387783-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="1408387783-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="8635219234-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="8635219234-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="1408387783-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="1408387783-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="8635219234-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="1408387783-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="5577671276-1">(</span><span·class="n">L</span><span·class="p"·data-group-id="5577671276-1">)</span><span·class="w">···</span><span·class="p">-&gt;</span><span·class="w">··</span><span·class="p"·data-group-id="5577671276-2">[</span><span·class="n">X</span><[·...·truncated·by·diffoscope;·len:·411,·SHA:·be32da1e27128be2fbc761a5f80d5a9dcde9776b5d26d19e7c5eb87aed5ad51f·...·]-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="1094894875-1">(</span><span·class="n">L</span><span·class="p"·data-group-id="1094894875-1">)</span><span·class="w">···</span><span·class="p">-&gt;</span><span·class="w">··</span><span·class="p"·data-group-id="1094894875-2">[</span><span·class="n">X</span><[·...·truncated·by·diffoscope;·len:·411,·SHA:·0f936ee178536d837c56e738b2de5d6527a1759426d1b84c43daa9e72ac471b8·...·]-2">]</span><span·class="p">.</span><span·class="w">
210 </span><span·class="nf">map</span><span·class="p"·data-group-id="5577671276-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="5577671276-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·440,·SHA:·26331e931979699a6003e5ecfdc947adc138e3962840072163001051f816ffe4·...·]-4">]</span><span·class="p">.</span><span·class="w">210 </span><span·class="nf">map</span><span·class="p"·data-group-id="1094894875-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="1094894875-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·440,·SHA:·15ca4b4e4114e3fb33bba1d4d94d5c37fa37abceb7c9690b3c52b947cdb15245·...·]-4">]</span><span·class="p">.</span><span·class="w">
211 </span><span·class="nf">filter</span><span·class="p"·data-group-id="5577671276-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="5577671276-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·514,·SHA:·32c529c56ba374c641b7401716eb3959f56b5309778de4ecbaa87f3543b32b74·...·]-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="1094894875-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="1094894875-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·514,·SHA:·c0be884c98947f70f663af1a3000c95b2e43a494eb5ca1412e37ab2acd8cc9ec·...·]-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="9862353593-1">(</span><span·class="ss">b</span><span·class="p">,</span><span·class="p"·data-group-id="9862353593-2">[</span><span·class="p"·data-group-id="9862353593-3">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="mi">1</span><span[·...·truncated·by·diffoscope;·len:·754,·SHA:·60250cbecad87aef3804a5c8ebbbb3e51b04b11086f613c8770ee533121c1ee6·...·]-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="1631700168-1">(</span><span·class="ss">b</span><span·class="p">,</span><span·class="p"·data-group-id="1631700168-2">[</span><span·class="p"·data-group-id="1631700168-3">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="mi">1</span><span[·...·truncated·by·diffoscope;·len:·754,·SHA:·83fbfb4d93042577c2379622b83ecba80a9cbf3788dfa208fd0134364b75a37d·...·]-1">)</span><span·class="p">.</span><span·class="w">
224 </span><span·class="p"·data-group-id="9862353593-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="9862353593-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="1631700168-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="1631700168-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="8409388611-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="8409388611-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">··</span><span·cla[·...·truncated·by·diffoscope;·len:·655,·SHA:·be36df1e656b210b41730831567e0060cd542b2dee84e845589a9f4f136c1945·...·]-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="8951183538-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="8951183538-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">··</span><span·cla[·...·truncated·by·diffoscope;·len:·655,·SHA:·51feebb62a79000f90c26bf136fb0fa754b841f163bb644c37013acc2e3629f6·...·]-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="6551344188-1">(</span><span·class="ss">b</span><span·class="p">,</span><span·class="p"·data-group-id="6551344188-2">[</span><span·class="p"·data-group-id="6551344188-3">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="6551344188-3">}</span><span·class="p">,</span><span·class="p"·data-group-id="6551344188-4">{</span><span·class="ss">b</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="6551344188-4">}</span><span·class="p">,</span><span·class="p"·data-group-id="6551344188-5">{</span><span·class="ss">c</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="6551344188-5">}</span><span·class="p">,</span><span·class="p"·data-group-id="6551344188-6">{</span><span·class="ss">b</span><span·class="p">,</span><span·class="mi">7</span><span·class="p"·data-group-id="6551344188-6">}</span><span·class="p"·data-group-id="6551344188-2">]</span><span·class="p"·data-group-id="6551344188-1">)</span><span·class="p">.</span><span·class="w"> 
227 </span><span·class="p"·data-group-id="6551344188-7">[</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">7</span><span·class="p"·data-group-id="6551344188-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="1975610147-1">[</span><span·class="p"·data-group-id="1975610147-2">{</span><span·class="n">X</span><span·class="p">,</span><span·class="n">Y</span><span·class="p"·data-group-id="1975610147-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="1975610147-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="1975610147-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="1975610147-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="1975610147-4">]</span><span·class="p"·data-group-id="1975610147-1">]</span><span·class="p">.</span><span·class="w"> 
229 </span><span·class="p"·data-group-id="1975610147-5">[</span><span·class="p"·data-group-id="1975610147-6">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">a</span><span·class="p"·data-group-id="1975610147-6">}</span><span·class="p">[·...·truncated·by·diffoscope;·len:·1775,·SHA:·1e1ef2be78766923cb79f0c99c452f076d3c4c06826ecd4273123ce8767d845d·...·]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="8576733201-1">(</span><span·class="ss">b</span><span·cla[·...·truncated·by·diffoscope;·len:·1006,·SHA:·26aaddc4aaa8f8190cc8fba7a31ee7a5bd0796f30c69a0e175f50de315060e24·...·]
 227 </span><span·class="p"·data-group-id="8576733201-7">[</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">7</span><span·class="p"·data-group-id="8576733201-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="8041644000-1">[</span><span·class="p"·data-group-id="8041644000-2">{</span><span·class="n">X</span><span·class="p">,</span><span·class="n">Y</span><span·class="p"·data-group-id="8041644000-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="8041644000-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="8041644000-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="8041644000-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="8041644000-4">]</span><span·class="p"·data-group-id="8041644000-1">]</span><span·class="p">.</span><span·class="w">
 229 </span><span·class="p"·data-group-id="8041644000-5">[</span><span·class="p"·data-group-id="8041644000-6">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">a</span><span·class="p"·data-group-id="8041644000-6">}</span><span·class="p">,</span><span·class="p"·data-group-id="8041644000-7">{</span><span·class="ss">b</span><span·class="p">,</span><span·class="ss">b</span><span·class="p"·data-group-id="8041644000-7">}</span><span·class="p">,</span><span·class="p"·data-group-id="8041644000-8">{</span><span·class="ss">c</span><span·class="p">,</span><span·class="ss">c</span><span·class="p"·data-group-id="8041644000-8">}</span><span·class="p">,</span><span·class="p"·data-group-id="8041644000-9">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">a</span><span·class="p"·data-group-id="8041644000-9">}</span><span·class="p">,</span><span·class="p"·data-group-id="8041644000-10">{</span><span·class="ss">b</span><span·class="p">,</span><span·class="ss">b</span><span·class="p"·data-group-id="8041644000-10">}</span><span·class="p">,</span><span·class="p"·data-group-id="8041644000-11">{</span><span·class="ss">c</span><span·class="p">,</span><span·class="ss">c</span><span·class="p"·data-group-id="8041644000-11">}</span><span·class="p">,</span><span·class="p"·data-group-id="8041644000-12">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">a</span><span·class="p"·data-group-id="8041644000-12">}</span><span·class="p">,</span><span·class="p"·data-group-id="8041644000-13">{</span><span·class="ss">b</span><span·class="p">,</span><span·class="ss">b</span><span·class="p"·data-group-id="8041644000-13">}</span><span·class="p">,</span><span·class="p"·data-group-id="8041644000-14">{</span><span·class="ss">c</span><span·class="p">,</span><span·class="ss">c</span><span·class="p"·data-group-id="8041644000-14">}</span><span·class="p"·data-group-id="8041644000-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="4403975944-1">(</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="4403975944-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="5585484742-1">(</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="5585484742-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="4403975944-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:·a5390eb271fa1bcff94cb9b2e85b6db9d20efc2738942a7c825920e19b248132·...·]-2">]</span><span·class="w">233 ····</span><span·class="p"·data-group-id="5585484742-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:·06b31554d383187187e3a585e7b6a889d05455092de5527867e127ea833a1536·...·]-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="9255619238-1">(</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="9255619238-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="3211980959-1">(</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="3211980959-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="9255619238-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:·220e033eb368db46f3f1f2938260367edbf0976e993d8450748a5c19b17043a6·...·]-2">]</span><span·class="w">236 ····</span><span·class="p"·data-group-id="3211980959-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:·b9787c358be3a0200b89c7a55ccd463bb80e6fafe7eca0de6af6c0fdf1738cf5·...·]-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.2/doc/html/lists.html#append/2"><code·class="inline">lists:append/2</code></a>·or·<code·class="inline">++</code>·would·be·implemented·in·plain·Erlang,126 is·a·copy·of·the·elements·in·<code·class="inline">List1</code>,·followed·by·<code·class="inline">List2</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">List1</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="n">List2</span></code></pre><p>Looking·at·how·<a·href="../../lib/stdlib-6.2.2/doc/html/lists.html#append/2"><code·class="inline">lists:append/2</code></a>·or·<code·class="inline">++</code>·would·be·implemented·in·plain·Erlang,
127 clearly·the·first·list·is·copied:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">append</span><span·class="p"·data-group-id="8777679113-1">(</span><span·class="p"·data-group-id="8777679113-2">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="8777679113-2">]</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·60,·SHA:·00910277eaccbfcce57acea24da81bf8d1f433758325bca6eaf1c5fc318627d1·...·]-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="7323066392-1">(</span><span·class="p"·data-group-id="7323066392-2">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="7323066392-2">]</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·60,·SHA:·89b757ccb476cbcd8d92012cc788ac65c84626d705b2456019f2292ce294f167·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
128 ····</span><span·class="p"·data-group-id="8777679113-3">[</span><span·class="n">H</span><span·class="p">|</span><span·class="nf">append</span><span·class="p"·data-group-id="8777679113-4">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tail</span><spa[·...·truncated·by·diffoscope;·len:·90,·SHA:·3b0b737c939e92d7826dbfe67a59bfb259a8b4c4bd0b88f5fe997895a542607b·...·]-3">]</span><span·class="p">;</span><span·class="w">128 ····</span><span·class="p"·data-group-id="7323066392-3">[</span><span·class="n">H</span><span·class="p">|</span><span·class="nf">append</span><span·class="p"·data-group-id="7323066392-4">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tail</span><spa[·...·truncated·by·diffoscope;·len:·90,·SHA:·e5fdc84c577cf78f95fcf5d34baf07fa6f2ab19cedac75b182b27c7d0bd28a39·...·]-3">]</span><span·class="p">;</span><span·class="w">
129 </span><span·class="nf">append</span><span·class="p"·data-group-id="8777679113-5">(</span><span·class="p"·data-group-id="8777679113-6">[</span><span·class="p"·data-group-id="8777679113-6">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tail</span><span·class="p"·data-group-id="8777679113-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="7323066392-5">(</span><span·class="p"·data-group-id="7323066392-6">[</span><span·class="p"·data-group-id="7323066392-6">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tail</span><span·class="p"·data-group-id="7323066392-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="4494478963-1">(</span><span·class="n">N</span><span·class="p"·data-group-id="4494478963-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="6508279395-1">(</span><span·class="n">N</span><span·class="p"·data-group-id="6508279395-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="4494478963-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:·405a880dba935d6b182f92e9c3af6eb617c54f32ffc290d2bf69f7932bdbdf1b·...·]-2">)</span><span·class="p">.</span><span·class="w">133 ····</span><span·class="nf">bad_fib</span><span·class="p"·data-group-id="6508279395-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:·e0f2af14174e25561de07751855cf01ca25438421c872e6ac8ac03a84ee69889·...·]-2">)</span><span·class="p">.</span><span·class="w">
  
134 </span><span·class="nf">bad_fib</span><span·class="p"·data-group-id="4494478963-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:·acc1615a845b839aa2d4cd0ac3a26456101b65d772826a2c07efff54292a2cf5·...·]-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="6508279395-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:·8988794c99cdfc2ed426725ba272511784acc8f8748d1b568bd5894c882abdc1·...·]-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="4494478963-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:·7cde7566b87e2099c743db5967ad67251c415ce4a98e85471d15513fda42ecc4·...·]-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="6508279395-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:·06eba7aa762e93ebda9bc4a9a9769a1d73aae4018ea1f53d4092980ffa4a3fa6·...·]-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="4494478963-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:·1bfb5df6c434246c09cc264cd0c766b9439d57d777fa21953ed5c3de375b615f·...·]-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="6508279395-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:·18dd64dd8fef4ac18f4acac4dca419a467c0552a07f390579f76a2209e7b627d·...·]-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="4981740372-1">(</span><span·class="n">N</span><span·class="p"·data-group-id="4981740372-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="7610910875-1">(</span><span·class="n">N</span><span·class="p"·data-group-id="7610910875-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="4981740372-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:·b3a700b6a1c8161e1aa693a0e02232d36a1558d7721df66da48c1ecc9ec7e338·...·]-2">)</span><span·class="p">.</span><span·class="w">140 ····</span><span·class="nf">tail_recursive_fib</span><span·class="p"·data-group-id="7610910875-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:·6cedcfd1dc5376aa4004babf5c4624643dffe3d4746ead5f519c50725b6ffba2·...·]-2">)</span><span·class="p">.</span><span·class="w">
  
141 </span><span·class="nf">tail_recursive_fib</span><span·class="p"·data-group-id="4981740372-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:·6aa5029471c84b6a50974505c7bfc93bea244321d55508b2a98167fbe49213f9·...·]-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="7610910875-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:·a15abc0e8d6368a1af63eec4bd1e12fa94863e4704776f4de7ec31fc010a2389·...·]-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="4981740372-5">(</span><span·class="n">Fibs</span><span·class="p"·data-group-id="4981740372-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="7610910875-5">(</span><span·class="n">Fibs</span><span·class="p"·data-group-id="7610910875-5">)</span><span·class="p">;</span><span·class="w">
143 </span><span·class="nf">tail_recursive_fib</span><span·class="p"·data-group-id="4981740372-6">(</span><span·class="n">N</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Current</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Next</span><span·class="p">,</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·59,·SHA:·d73ad72b22f398e25300437f754b13f4ef7d43ff98b209559b03db9a1e485ce3·...·]-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="7610910875-6">(</span><span·class="n">N</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Current</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Next</span><span·class="p">,</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·59,·SHA:·41a41f10dde0fff068c8f302d1cd18473605f4e8b7c19251ee93db38d63c3c72·...·]-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="4981740372-7">(</span><span·class="n">N</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Next</span><span·class="p">,</span><span·class="w[·...·truncated·by·diffoscope;·len:·415,·SHA:·b8404fa681b9846a677ff2345a5fa753eaccfea68e7c7438fa5963f34ee9d556·...·]-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="7610910875-7">(</span><span·class="n">N</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Next</span><span·class="p">,</span><span·class="w[·...·truncated·by·diffoscope;·len:·415,·SHA:·80c061f94d17272df3b570abb4b747b2c1b9755101c3d234964f3ae368cd7c5a·...·]-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="6393073439-1">[</span><span·class="n">Expr</span><span·class="p"·data-group-id="6393073439-2">(</span><span·class="n">E</span><span·class="p"·data-group-id="6393073439-2">)</span><span·class="w">·</span><span·class="p">||</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·676,·SHA:·6c8fb07feee30e20d7797b1196c5d2a39281819f43d7d4060ddc52ad711f5540·...·]-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="1701889002-1">[</span><span·class="n">Expr</span><span·class="p"·data-group-id="1701889002-2">(</span><span·class="n">E</span><span·class="p"·data-group-id="1701889002-2">)</span><span·class="w">·</span><span·class="p">||</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·676,·SHA:·3fb40fe3d5067b628fda906d513a040031be31de3e1cfcd954da5c4995751bce·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
151 ····</span><span·class="p"·data-group-id="4155704011-3">[</span><span·class="n">Expr</span><span·class="p"·data-group-id="4155704011-4">(</span><span·class="n">E</span><span·class="p"·data-group-id="4155704011-4">)</span><span·class="p">|</span><span·class="nf">&#39;lc^0&#39;</span><span·class="p"[·...·truncated·by·diffoscope;·len:·234,·SHA:·591f3a261c0a756dd6cbbf43ad10756369c26eb8682d9e301d44549401179407·...·]-3">]</span><span·class="p">;</span><span·class="w">151 ····</span><span·class="p"·data-group-id="6459973010-3">[</span><span·class="n">Expr</span><span·class="p"·data-group-id="6459973010-4">(</span><span·class="n">E</span><span·class="p"·data-group-id="6459973010-4">)</span><span·class="p">|</span><span·class="nf">&#39;lc^0&#39;</span><span·class="p"[·...·truncated·by·diffoscope;·len:·234,·SHA:·7ec16b29f5dbad482e2a6c3280abbe55ba439640d91e9935a9cdb1b12de491d9·...·]-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="4155704011-6">(</span><span·class="p"·data-group-id="4155704011-7">[</span><span·class="p"·data-group-id="4155704011-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="4155704011-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="4155704011-8">[</span><span·class="p"·data-group-id="4155704011-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="0362861874-1">[</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">put_chars</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·406,·SHA:·c335c8bdd249459d634f42ba6aefb3f59187c1fe72c07162db68b09ba2db54b8·...·]152 </span><span·class="nf">&#39;lc^0&#39;</span><span·class="p"·data-group-id="6459973010-6">(</span><span·class="p"·data-group-id="6459973010-7">[</span><span·class="p"·data-group-id="6459973010-7">]</span><span·class="p">,</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·405,·SHA:·e2478ec3b40f234d22d6b6ca94aa0352b52641ef78dcb95586e1e9e79577a8b6·...·]
 153 will·not·be·constructed.·For·example,·in·this·code:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="8003787573-1">[</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">put_chars</span><span·class="p"·data-group-id="8003787573-2">(</span><span·class="n">E</span><span·class="p"·data-group-id="8003787573-2">)</span><span·class="w">·</span><span·class="p">||</span><span·class="w">·</span><span·class="n">E</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="w">·</span><span·class="n">List</span><span·class="p"·data-group-id="8003787573-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="0114176630-1">[</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">put_chars</span><span·class="p"·data-group-id="0114176630-2">(</span><span·class="n">E</span><span·class="p"·data-group-id="0114176630-2">)</span><span·class="w">·</sp[·...·truncated·by·diffoscope;·len:·220,·SHA:·ad0bb9f32668b687a34a4afbdffe202ab1ebd64bf36ab259f9ca516911c87a07·...·]-1">]</span><span·class="p">;</span><span·class="w">156 ········</span><span·class="p"·data-group-id="6273932417-1">[</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">put_chars</span><span·class="p"·data-group-id="6273932417-2">(</span><span·class="n">E</span><span·class="p"·data-group-id="6273932417-2">)</span><span·class="w">·</sp[·...·truncated·by·diffoscope;·len:·220,·SHA:·679a3335851965c4428d9ce8f2edc0619f93b80f5527a80d1630679ecccd12c8·...·]-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="0114176630-3">(</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="0114176630-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="6273932417-3">(</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="6273932417-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="5484376093-1">(</span><span·class="p"·data-group-id="5484376093-2">[</span><span·class="n">E</span><span·class="p">|</span><span·class="n">Tail</span><span·class="p"·data-group-id="5484376093-2">]</span><span·class="p">,</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·63,·SHA:·55566a24789ab56102ab858955bfd72f88735644ce1149a3174abd4a450648e1·...·]-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="6645643564-1">(</span><span·class="p"·data-group-id="6645643564-2">[</span><span·class="n">E</span><span·class="p">|</span><span·class="n">Tail</span><span·class="p"·data-group-id="6645643564-2">]</span><span·class="p">,</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·63,·SHA:·179596a2fda9db12a78eec73596bcbacf2e681eb2e76c8b8d951289a7e9e80f9·...·]-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="5484376093-3">(</span><span·class="n">E</span><span·class="p"·data-group-id="5484376093-3">)</span><span·class="p">,</span><span·class="w">162 ····</span><span·class="n">Expr</span><span·class="p"·data-group-id="6645643564-3">(</span><span·class="n">E</span><span·class="p"·data-group-id="6645643564-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="5484376093-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="5484376093-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="6645643564-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="6645643564-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="5484376093-5">(</span><span·class="p"·data-group-id="5484376093-6">[</span><span·class="p"·data-group-id="5484376093-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="5484376093-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="5484376093-7">[</span><span·class="p"·data-group-id="5484376093-7">]</span><span·class="p">.</span></code></pre><p>The·compiler·also·understands·that·assigning·to·<code·class="inline">_</code>·means·that·the·value·will 
165 not·be·used.·Therefore,·the·code·in·the·following·example·will·also·be·optimized:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">_</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·532,·SHA:·ae47bcef5153e0709fde5f7fe22cb2d35ef846e5952a570450b5846973449f2a·...·]164 </span><span·class="nf">&#39;lc^0&#39;</span><span·class="p"·data-group-id="6645643564-5">(</span><span·class="p"·data-group-id="6645643564-6">[</span><span·class="p"·data-group-id="6645643564-6">]</span><span·class="p">,</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·425,·SHA:·a3fd0f142ac16883803975058fef16addc7c13d2f2cb8f842e38cef0991cf148·...·]
 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="3482276777-1">[</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">put_chars</span><span·class="p"·data-group-id="3482276777-2">(</span><span·class="n">E</span><span·class="p"·data-group-id="3482276777-2">)</span><span·class="w">·</span><span·class="p">||</span><span·class="w">·</span><span·class="n">E</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="w">·</span><span·class="n">List</span><span·class="p"·data-group-id="3482276777-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.2/doc/html/lists.html#flatten/1"><code·class="inline">lists:flatten/1</code></a>·builds·an·entirely·new·list.·It·is·therefore·expensive,·and172 <p><a·href="../../lib/stdlib-6.2.2/doc/html/lists.html#flatten/1"><code·class="inline">lists:flatten/1</code></a>·builds·an·entirely·new·list.·It·is·therefore·expensive,·and
173 even·<em>more</em>·expensive·than·the·<code·class="inline">++</code>·operator·(which·copies·its·left·argument,173 even·<em>more</em>·expensive·than·the·<code·class="inline">++</code>·operator·(which·copies·its·left·argument,
174 but·not·its·right·argument).</p><p>In·the·following·situations·it·is·unnecessary·to·call·<a·href="../../lib/stdlib-6.2.2/doc/html/lists.html#flatten/1"><code·class="inline">lists:flatten/1</code></a>:</p><ul><li>When·sending·data·to·a·port.·Ports·understand·deep·lists·so·there·is·no·reason174 but·not·its·right·argument).</p><p>In·the·following·situations·it·is·unnecessary·to·call·<a·href="../../lib/stdlib-6.2.2/doc/html/lists.html#flatten/1"><code·class="inline">lists:flatten/1</code></a>:</p><ul><li>When·sending·data·to·a·port.·Ports·understand·deep·lists·so·there·is·no·reason
175 to·flatten·the·list·before·sending·it·to·the·port.</li><li>When·calling·BIFs·that·accept·deep·lists,·such·as175 to·flatten·the·list·before·sending·it·to·the·port.</li><li>When·calling·BIFs·that·accept·deep·lists,·such·as
176 <a·href="../../erts-15.2.6/doc/html/erlang.html#list_to_binary/1"><code·class="inline">list_to_binary/1</code></a>·or176 <a·href="../../erts-15.2.6/doc/html/erlang.html#list_to_binary/1"><code·class="inline">list_to_binary/1</code></a>·or
177 <a·href="../../erts-15.2.6/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.2/doc/html/lists.html#append/1"><code·class="inline">lists:append/1</code></a>177 <a·href="../../erts-15.2.6/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.2/doc/html/lists.html#append/1"><code·class="inline">lists:append/1</code></a>
178 instead.</li></ul><p><em>Examples:</em></p><p><strong>DO</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">port_command</span><span·class="p"·data-group-id="3273655073-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="3273655073-1">)</span></code></pre><p><strong>DO·NOT</strong></p><pre><code·class="makeup·erlang"[·...·truncated·by·diffoscope;·len:·954,·SHA:·944ad2ee66c59a8b66e24d5c0b3cf6dd9c3bb70b6478588e2cf8e5faea63b555·...·]-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="7434783604-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="7434783604-1">)</span></code></pre><p><strong>DO·NOT</strong></p><pre><code·class="makeup·erlang"[·...·truncated·by·diffoscope;·len:·954,·SHA:·9b873126cc6ab3d0fd891b73c7f6eceb261ee49313a3f8697349b54e38a24e87·...·]-1">]</span><span·class="p">,</span><span·class="w">
179 </span><span·class="nf">port_command</span><span·class="p"·data-group-id="9766875318-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="9766875318-2">)</span></code></pre><p>Instead:</p><p><strong>DO</strong></p><pre><code·class[·...·truncated·by·diffoscope;·len:·336,·SHA:·76623ea2649794fc24b5e19d883ba7bb7c7c676d5f260d726930aa76656ea928·...·]-1">]</span><span·class="p">,</span><span·class="w">179 </span><span·class="nf">port_command</span><span·class="p"·data-group-id="1746166519-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="1746166519-2">)</span></code></pre><p>Instead:</p><p><strong>DO</strong></p><pre><code·class[·...·truncated·by·diffoscope;·len:·336,·SHA:·d03b8c695852f8e2fba2aeb0049a3e3180b49fbabce369ae0f297e8ad92824e6·...·]-1">]</span><span·class="p">,</span><span·class="w">
180 </span><span·class="nf">port_command</span><span·class="p"·data-group-id="5708662017-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="5708662017-2">)</span></code></pre><p><strong>DO</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">append</span><span·class="p"·data-group-id="3609484721-1">(</span><span·class="p"·data-group-id="3609484721-2">[</span><span·class="p"·data-group-id="3609484721-3">[</span><span·class="mi">1</span><span·class="p"·data-group-id="3609484721-3">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3609484721-4">[</span><span·class="mi">2</span><span·class="p"·data-group-id="3609484721-4">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3609484721-5">[</span><span·class="mi">3</span><span·class="p"·data-group-id="3609484721-5">]</span><span·class="p"·data-group-id="3609484721-2">]</span><span·class="p"·data-group-id="3609484721-1">)</span><span·class="p">.</span><span·class="w"> 
181 </span><span·class="p"·data-group-id="3609484721-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="3609484721-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="9809526753-1">(</span><span·class="p"·data-group-id="9809526753-2">[</span><span·class="p"·data-group-id="9809526753-3">[</span><span·class="mi">1</span><span·class="p"·data-group-id="9809526753-3">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9809526753-4">[</span><span·class="mi">2</span><span·class="p"·data-group-id="9809526753-4">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9809526753-5">[</span><span·class="mi">3</span><span·class="p"·data-group-id="9809526753-5">]</span><span·class="p"·data-group-id="9809526753-2">]</span><span·class="p"·data-group-id="9809526753-1">)</span><span·class="p">.</span><span·class="w"> 
182 </span><span·class="p"·data-group-id="9809526753-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="9809526753-6">]</span></code></pre><h2·id="recursive-list-func[·...·truncated·by·diffoscope;·len:·29,·SHA:·4a97f155337d912116f87b534666017ee54bb6a09ff913e0b6272dafbe3ba7c0·...·]">180 </span><span·class="nf">port_command</span><span·class="p"·data-group-id="1135746126-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="1135746126-2">)</span></code></pre><p>[·...·truncated·by·diffoscope;·len:·936,·SHA:·d0adfe9b79a6e3cf774a107c86b523ec985d8db774f0a1581777af618dcde258·...·]">
 181 </span><span·class="p"·data-group-id="1176446944-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="1176446944-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="5445810111-1">(</span><span·class="p"·data-group-id="5445810111-2">[</span><span·class="p"·data-group-id="5445810111-3">[</span><span·class="mi">1</span><span·class="p"·data-group-id="5445810111-3">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5445810111-4">[</span><span·class="mi">2</span><span·class="p"·data-group-id="5445810111-4">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5445810111-5">[</span><span·class="mi">3</span><span·class="p"·data-group-id="5445810111-5">]</span><span·class="p"·data-group-id="5445810111-2">]</span><span·class="p"·data-group-id="5445810111-1">)</span><span·class="p">.</span><span·class="w">
 182 </span><span·class="p"·data-group-id="5445810111-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="5445810111-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="6748806571-1">(</span><span·class="p"·data-group-id="6748806571-2">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="6748806571-2">]</span><span·class="p"·data-group-id="6748806571-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="5560319708-1">(</span><span·class="p"·data-group-id="5560319708-2">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="5560319708-2">]</span><span·class="p"·data-group-id="5560319708-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
191 ····</span><span·class="p"·data-group-id="6748806571-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:·5b0e2e0007a122e8a50fa2d62ab98f35635c8299ab60efa22b1a6fb79ad60d2a·...·]-3">]</span><span·class="p">;</span><span·class="w">191 ····</span><span·class="p"·data-group-id="5560319708-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:·0b0bec0041b0152fed642744fb90fad2efbdbe24c168bf169898aee6c9a64c01·...·]-3">]</span><span·class="p">;</span><span·class="w">
192 </span><span·class="nf">add_42_body</span><span·class="p"·data-group-id="6748806571-5">(</span><span·class="p"·data-group-id="6748806571-6">[</span><span·class="p"·data-group-id="6748806571-6">]</span><span·class="p"·data-group-id="6748806571-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="5560319708-5">(</span><span·class="p"·data-group-id="5560319708-6">[</span><span·class="p"·data-group-id="5560319708-6">]</span><span·class="p"·data-group-id="5560319708-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
193 ····</span><span·class="p"·data-group-id="6748806571-7">[</span><span·class="p"·data-group-id="6748806571-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="5560319708-7">[</span><span·class="p"·data-group-id="5560319708-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="2490911334-1">(</span><span·class="n">List</span><span·class="p"·data-group-id="2490911334-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="8847336501-1">(</span><span·class="n">List</span><span·class="p"·data-group-id="8847336501-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="2490911334-2">(</span><span·class="n">List</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2490911334-3">[</span><span·class="p"·data-group-id="2490911334-3">]</span><span·class="p"·data-group-id="2490911334-2">)</span><span·class="p">.</span><span·class="w">195 ····</span><span·class="nf">add_42_tail</span><span·class="p"·data-group-id="8847336501-2">(</span><span·class="n">List</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8847336501-3">[</span><span·class="p"·data-group-id="8847336501-3">]</span><span·class="p"·data-group-id="8847336501-2">)</span><span·class="p">.</span><span·class="w">
  
196 </span><span·class="nf">add_42_tail</span><span·class="p"·data-group-id="2490911334-4">(</span><span·class="p"·data-group-id="2490911334-5">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="2490911334-5">]</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·59,·SHA:·ad0c56443adad2c525882b28bdc4773d8e7166cd7640e50a339dd995c0fb8784·...·]-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="8847336501-4">(</span><span·class="p"·data-group-id="8847336501-5">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="8847336501-5">]</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·59,·SHA:·f09715642a3a6d5f1c2d74e7159efeee7a26a5b081e71d03a7441d461c8cbf5a·...·]-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="2490911334-6">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2490911334-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:·f8665d54e770e5e8b194241de6dc810a986cc75a31837a31baef2e5c598f3b93·...·]-6">)</span><span·class="p">;</span><span·class="w">197 ····</span><span·class="nf">add_42_tail</span><span·class="p"·data-group-id="8847336501-6">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8847336501-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:·a95aa3f03bf50d6e27f326009e838d6e80af795fb5918a2dc15e9f10ca4c691e·...·]-6">)</span><span·class="p">;</span><span·class="w">
198 </span><span·class="nf">add_42_tail</span><span·class="p"·data-group-id="2490911334-8">(</span><span·class="p"·data-group-id="2490911334-9">[</span><span·class="p"·data-group-id="2490911334-9">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="p"·data-group-id="2490911334-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="8847336501-8">(</span><span·class="p"·data-group-id="8847336501-9">[</span><span·class="p"·data-group-id="8847336501-9">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="p"·data-group-id="8847336501-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="2490911334-10">(</span><span·class="n">Acc</span><span·class="p"·data-group-id="2490911334-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="8847336501-10">(</span><span·class="n">Acc</span><span·class="p"·data-group-id="8847336501-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="3644858228-1">(</span><span·class="p"·data-group-id="3644858228-2">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="3644858228-2">]</span><span·class="p"·data-group-id="3644858228-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="3644858228-3">(</span><span·class="n">T</span><span·class="p"·data-group-id="3644858228-3">)</span><span·class="p">;</span><span·class="w"> 
211 </span><span·class="nf">recursive_sum</span><span·class="p"·data-group-id="3644858228-4">(</span><span·class="p"·data-group-id="3644858228-5">[</span><span·class="p"·data-group-id="3644858228-5">]</span><span·class="p"·data-group-id="3644858228-4">)</span>[·...·truncated·by·diffoscope;·len:·710,·SHA:·ac1800854e44496034437534da25642078c80eaaa2f300d152c1cb0e0a44f4a5·...·]</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="5064984936-1">(</span><span·class="p"·data-group-id="5064984936-2">[</span><span·class="n">H</span[·...·truncated·by·diffoscope;·len:·463,·SHA:·113f42adc0034eddf0a14f23bdcd27c555f921b9f0db7fe85cb4ee3b1fa7d849·...·]</span><span·class="w">
 211 </span><span·class="nf">recursive_sum</span><span·class="p"·data-group-id="5064984936-4">(</span><span·class="p"·data-group-id="5064984936-5">[</span><span·class="p"·data-group-id="5064984936-5">]</span><span·class="p"·data-group-id="5064984936-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="1399081479-1">(</span><span·class="n">L</span><span·class="p"·data-group-id="1399081479-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="1399081479-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="1399081479-2">)</span><span·class="p">.</span><span·class="w">
  
212 </span><span·class="nf">sum</span><span·class="p"·data-group-id="2328564941-3">(</span><span·class="p"·data-group-id="2328564941-4">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="2328564941-4">]</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·462,·SHA:·be276f7ecdd90c128a5c99d84a9362d197e10dbf180190ea5797099a281f5d1a·...·]-5">)</span><span·class="p">;</span><span·class="w">212 </span><span·class="nf">sum</span><span·class="p"·data-group-id="1399081479-3">(</span><span·class="p"·data-group-id="1399081479-4">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="1399081479-4">]</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·462,·SHA:·171ad04b625b41557536a22a24f5edde91e0bde67bfbf9c5b31816649ed47e1d·...·]-5">)</span><span·class="p">;</span><span·class="w">
213 </span><span·class="nf">sum</span><span·class="p"·data-group-id="2328564941-6">(</span><span·class="p"·data-group-id="2328564941-7">[</span><span·class="p"·data-group-id="2328564941-7">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Sum</span><span·class="p"·data-group-id="2328564941-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="1399081479-6">(</span><span·class="p"·data-group-id="1399081479-7">[</span><span·class="p"·data-group-id="1399081479-7">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Sum</span><span·class="p"·data-group-id="1399081479-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="3509906581-1">(</span><span·class="n">File</span><span·class="p"·data-group-id="3509906581-1">)</span><span·class="p">.</span><span·class="w">123 <p>A·file·can·be·included·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">include</span><span·class="p"·data-group-id="3698460446-1">(</span><span·class="n">File</span><span·class="p"·data-group-id="3698460446-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="3509906581-2">(</span><span·class="n">File</span><span·class="p"·data-group-id="3509906581-2">)</span><span·class="p">.</span></code></pre><p><code·class="inline">File</code>,·a·string,·is·to·point·out·a·file.·The·contents·of·this·file·are·included124 </span><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="3698460446-2">(</span><span·class="n">File</span><span·class="p"·data-group-id="3698460446-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.6/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.6/doc/html/erlc_cmd.html">erlc</a>·in·ERTS·and
133 <a·href="../../lib/compiler-8.6.1/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="9770543385-1">(</span><span·class="s">&quot;my_records.hrl&quot;</span><span·class="p"·data-group-id="9770543385-1">)</span><span·class="p">.</span><span·class="w">133 <a·href="../../lib/compiler-8.6.1/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="4193078809-1">(</span><span·class="s">&quot;my_records.hrl&quot;</span><span·class="p"·data-group-id="4193078809-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="9770543385-2">(</span><span·class="s">&quot;incdir/my_records.hrl&quot;</span><span·class="p"·data-group-id="9770543385-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="4193078809-2">(</span><span·class="s">&quot;incdir/my_records.hrl&quot;</span><span·class="p"·data-group-id="4193078809-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="9770543385-3">(</span><span·class="s">&quot;/home/user/proj/my_records.hrl&quot;</span><span·class="p"·data-group-id="9770543385-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="4193078809-3">(</span><span·class="s">&quot;/home/user/proj/my_records.hrl&quot;</span><span·class="p"·data-group-id="4193078809-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="9770543385-4">(</span><span·class="s">&quot;$PROJ_ROOT/my_records.hrl&quot;</span><span·class="p"·data-group-id="9770543385-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="4193078809-4">(</span><span·class="s">&quot;$PROJ_ROOT/my_records.hrl&quot;</span><span·class="p"·data-group-id="4193078809-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="2414702714-1">(</span><span·class="s">&quot;kernel/include/file.hrl&quot;</span><span·class="p"·data-group-id="2414702714-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="2864487653-1">(</span><span·class="s">&quot;kernel/include/file.hrl&quot;</span><span·class="p"·data-group-id="2864487653-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="4116223361-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="4116223361-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="4116223361-2">(</span><span·class="n">Func</span><span·class="p"·data-group-id="4116223361-3">(</span><span·class="n">Var1</span><span·class="p">,</span><span·class=[·...·truncated·by·diffoscope;·len:·414,·SHA:·4809b4f34c9bb30470a7fcb2e668d95951b6df4d82c129b0e9e1e52f2cbe0ae4·...·]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="2432355545-1">(</span><span·class="n">Const</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·138,·SHA:·daf902820afc7d7715b4c73d4897d97d6d2991129698c7b07d1f3b898f74b624·...·]
 147 </span><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="2432355545-2">(</span><span·class="n">Func</span><span·class="p"·data-group-id="2432355545-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="2432355545-3">)</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Replacement</span><span·class="p"·data-group-id="2432355545-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="8938720073-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="8938720073-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="5638460964-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="5638460964-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="8938720073-2">(</span><span·class="n">Request</span><span·class="p"·data-group-id="8938720073-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="5638460964-2">(</span><span·class="n">Request</span><span·class="p"·data-group-id="5638460964-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="8938720073-3">(</span><span·class="ss">refserver</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Request</span><span·class="p">,</span><span·class="w">·</span><span·class="o">?</span><span·class="n">TIMEOUT</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·296,·SHA:·07f4b42e042104ac026c07b00e20b52f17e90930e10d83126dc91b2c4f05afc2·...·]-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="5638460964-3">(</span><span·class="ss">refserver</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Request</span><span·class="p">,</span><span·class="w">·</span><span·class="o">?</span><span·class="n">TIMEOUT</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·296,·SHA:·0575fd38354c8ec2922b8983d6dc6803997a06ae0e1024cb78b7028a195410ac·...·]-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="2426981547-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="2426981547-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="7509432300-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="7509432300-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="8225648514-1">(</span><span·class="n">MACRO1</span><span·class="p"·data-group-id="8225648514-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="8225648514-2">)</span><sp[·...·truncated·by·diffoscope;·len:·434,·SHA:·15a37004ef4b6004c0b30cdade8e58846eff168d00f05c77159778f9c43bcfc4·...·]-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="4550046141-1">(</span><span·class="n">MACRO1</span><span·class="p"·data-group-id="4550046141-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="4550046141-2">)</span><sp[·...·truncated·by·diffoscope;·len:·434,·SHA:·2be2b569280d0c9e02228fd38ea0e4f7479d52e8ad12f9c05efed9816b9e8fb0·...·]-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="8225648514-4">(</span><span·class="n">X</span><span·class="p"·data-group-id="8225648514-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="4550046141-4">(</span><span·class="n">X</span><span·class="p"·data-group-id="4550046141-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="8225648514-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="8225648514-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="4550046141-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="4550046141-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="8225648514-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="8225648514-6">)</span></code></pre><p>This·is·expanded·to:</p><pre><code·class="makeup·erlang"·translate[·...·truncated·by·diffoscope;·len:·151,·SHA:·07f04538ed82331c93e65beda3dd47ab81a0c96f6eea996c8ddee1900f2f775a·...·]-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="4550046141-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="4550046141-6">)</span></code></pre><p>This·is·expanded·to:</p><pre><code·class="makeup·erlang"·translate[·...·truncated·by·diffoscope;·len:·151,·SHA:·4ad808bc44edeec3f3802cc297d4cde30e1a4e4b899149c48eede45f34680295·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
163 ····</span><span·class="p"·data-group-id="5482592768-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="5482592768-2">}</span><span·class="p">,</span><span·class="w">163 ····</span><span·class="p"·data-group-id="1202749363-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="1202749363-2">}</span><span·class="p">,</span><span·class="w">
164 ····</span><span·class="p"·data-group-id="5482592768-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="5482592768-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="1202749363-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="1202749363-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="7900530527-1">(</span><span·class="n">F0</span><span·class="p"·data-group-id="7900530527-2">(</span><span·class="p"·data-group-id="7900530527-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:·8f9ca1c9cff751070480bd7a3f60e1c47e5315916c1a835615923c5cce3337b9·...·]-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="4974066990-1">(</span><span·class="n">F0</span><span·class="p"·data-group-id="4974066990-2">(</span><span·class="p"·data-group-id="4974066990-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:·b2f993046efbc8a8d914dc4f71c7571a42952f153761d71270582f76b01c495d·...·]-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="7900530527-3">(</span><span·class="n">F1</span><span·class="p"·data-group-id="7900530527-4">(</span><span·class="n">A</span><span·class="p"·data-group-id="7900530527-4">)</span><span·class="p">,</span><span·class="w">·</span><span·class="n">A</span><span·c[·...·truncated·by·diffoscope;·len:·34,·SHA:·623c44005f1566f47b6bfd35a208a07bdbe0dad8f5ba9af3e96fe6778858e243·...·]-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="4974066990-3">(</span><span·class="n">F1</span><span·class="p"·data-group-id="4974066990-4">(</span><span·class="n">A</span><span·class="p"·data-group-id="4974066990-4">)</span><span·class="p">,</span><span·class="w">·</span><span·class="n">A</span><span·c[·...·truncated·by·diffoscope;·len:·34,·SHA:·f7c393f54ecb4f7c68c0652917229040e1a248345aba6cb37741bce58a159e81·...·]-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="7900530527-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="7900530527-5">)</span><span·class="p">.</span></code></pr[·...·truncated·by·diffoscope;·len:·205,·SHA:·72497e5c7d804dbf9dddbc7a46b1b48fb13f76b5d97646b328394a1522d7587d·...·]-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="4974066990-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="4974066990-5">)</span><span·class="p">.</span></code></pr[·...·truncated·by·diffoscope;·len:·205,·SHA:·f1a1597a7ed5292f7554bb0a4e1374561af2ccfe7c4ecd7e28491a2c5df686ad·...·]-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="7885623028-2">(</span><span·class="n">A</span><span·class="p"·data-group-id="7885623028-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="0588503361-2">(</span><span·class="n">A</span><span·class="p"·data-group-id="0588503361-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="7885623028-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="7885623028-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="0588503361-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="0588503361-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="6319358819-1">(</span><span·class="p"·data-group-id="6319358819-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="2135491016-1">(</span><span·class="p"·data-group-id="2135491016-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="6319358819-2">(</span><span·class="p"·data-group-id="6319358819-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="2135491016-2">(</span><span·class="p"·data-group-id="2135491016-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="3443778336-1">(</span><span·class="n">Macro</span><span·class="p"·data-group-id="3443778336-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="8823133165-1">(</span><span·class="n">Macro</span><span·class="p"·data-group-id="8823133165-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="0626809036-1">(</span><span·class="ss">m</span><span·class="p"·data-group-id="0626809036-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="9195787215-1">(</span><span·class="ss">m</span><span·class="p"·data-group-id="9195787215-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="0626809036-2">(</span><span·class="ss">debug</span><span·class="p"·data-group-id="0626809036-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="9195787215-2">(</span><span·class="ss">debug</span><span·class="p"·data-group-id="9195787215-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="0626809036-3">(</span><span·class="n">LOG</span><span·class="p"·data-group-id="0626809036-4">(</span><span·class="n">X</span><span·class="p"·data-group-id="0626809036-4">)</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">io</span><spa[·...·truncated·by·diffoscope;·len:·740,·SHA:·9a080191d1fd0a01d598224bed9a967552d1443b1844d3d667dbe3730acf43a7·...·]-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="9195787215-3">(</span><span·class="n">LOG</span><span·class="p"·data-group-id="9195787215-4">(</span><span·class="n">X</span><span·class="p"·data-group-id="9195787215-4">)</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">io</span><spa[·...·truncated·by·diffoscope;·len:·740,·SHA:·28b46776b4dab3ebb8c270a1546874f9e341a6357f87301ba6f8a3951fcc3dde·...·]-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="0626809036-7">(</span><span·class="n">LOG</span><span·class="p"·data-group-id="0626809036-8">(</span><span·class="n">X</span><span·class="p"·data-group-id="0626809036-8">)</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">true</span><s[·...·truncated·by·diffoscope;·len:·39,·SHA:·3624b34f52e2fbbbbc040c93a92d932af0d7a8c56634b9027083606949ccf582·...·]-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="9195787215-7">(</span><span·class="n">LOG</span><span·class="p"·data-group-id="9195787215-8">(</span><span·class="n">X</span><span·class="p"·data-group-id="9195787215-8">)</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">true</span><s[·...·truncated·by·diffoscope;·len:·39,·SHA:·1c34ae352f1072b6d8253dccd23e2a0c7a45a2094712d19db61b31e5512d4833·...·]-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="5265461109-1">(</span><span·class="ss">m</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5265461109-2">{</span><span·class="ss">d</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">debug</span><span·c[·...·truncated·by·diffoscope;·len:·87,·SHA:·960a11f153c61fa7e60db861f5cd17b9cfa026c1a6ffdd721c8310c06269b6d7·...·]-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="5855448502-1">(</span><span·class="ss">m</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5855448502-2">{</span><span·class="ss">d</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">debug</span><span·c[·...·truncated·by·diffoscope;·len:·87,·SHA:·c92aaafd4bc87977ea884b00648aa67b6123414cc1ea03f46b6a6cf392e1a7d4·...·]-1">)</span><span·class="p">.</span><span·class="w">
238 </span><span·class="p"·data-group-id="5265461109-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">m</span><span·class="p"·data-group-id="5265461109-3">}</span></code></pre><p><code·class="inline">?LOG(Arg)</code>·is·then·expanded·to·a·call·to·<a·href="../../lib/stdlib-6.2.2/doc/html/io.html#format/2"><code·class="inline">io:format/2</code></a>·and·provide·the·user238 </span><span·class="p"·data-group-id="5855448502-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">m</span><span·class="p"·data-group-id="5855448502-3">}</span></code></pre><p><code·class="inline">?LOG(Arg)</code>·is·then·expanded·to·a·call·to·<a·href="../../lib/stdlib-6.2.2/doc/html/io.html#format/2"><code·class="inline">io:format/2</code></a>·and·provide·the·user
239 with·some·simple·trace·output.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="5881645500-1">(</span><span·class="ss">m</span><span·class="p"·data-group-id="5881645500-1">)</span><span·class="w">239 with·some·simple·trace·output.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="5221500715-1">(</span><span·class="ss">m</span><span·class="p"·data-group-id="5221500715-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="5881645500-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="5881645500-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="5221500715-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="5221500715-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="5881645500-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="5881645500-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="5221500715-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="5221500715-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="1920819366-1">(</span><span·class="ss">m</span><span·class="p"·data-group-id="1920819366-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="0236505312-1">(</span><span·class="ss">m</span><span·class="p"·data-group-id="0236505312-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="1920819366-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:·8d22381e46b64e794be6927f085695384f88a9ce59ba8402ccee5ab8e8a72033·...·]-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="0236505312-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:·fd03b38792f1016e49cefd4a401b84324ccb537c0d4d3d5f08ca814e7a5a2098·...·]-2">)</span><span·class="p">.</span><span·class="w">
252 </span><span·class="c1">%%·Debugging·code·that·requires·OTP·26·or·later.</span><span·class="w">252 </span><span·class="c1">%%·Debugging·code·that·requires·OTP·26·or·later.</span><span·class="w">
253 </span><span·class="p">-</span><span·class="na">else</span><span·class="p">.</span><span·class="w">253 </span><span·class="p">-</span><span·class="na">else</span><span·class="p">.</span><span·class="w">
254 </span><span·class="c1">%%·Non-debug·code·that·works·in·any·release.</span><span·class="w">254 </span><span·class="c1">%%·Non-debug·code·that·works·in·any·release.</span><span·class="w">
Max diff block lines reached; 18102/59707 bytes (30.32%) of diff not shown.
34.8 KB
./usr/share/doc/erlang-doc/html/doc/system/maps.html
    
Offset 148, 16 lines modifiedOffset 148, 16 lines modified
148 single·function·that·constructs·the·map·using·the·map·syntax·and·always·use148 single·function·that·constructs·the·map·using·the·map·syntax·and·always·use
149 it.</p></li><li><p>Always·update·the·map·using·the·<code·class="inline">:=</code>·operator·(that·is,·requiring·that·an149 it.</p></li><li><p>Always·update·the·map·using·the·<code·class="inline">:=</code>·operator·(that·is,·requiring·that·an
150 element·with·that·key·already·exists).·The·<code·class="inline">:=</code>·operator·is·slightly·more150 element·with·that·key·already·exists).·The·<code·class="inline">:=</code>·operator·is·slightly·more
151 efficient,·and·it·helps·catching·mispellings·of·keys.</p></li><li><p>Whenever·possible,·match·multiple·map·elements·at·once.</p></li><li><p>Whenever·possible,·update·multiple·map·elements·at·once.</p></li><li><p>Avoid·default·values·and·the·<a·href="../../lib/stdlib-6.2.2/doc/html/maps.html#get/3"><code·class="inline">maps:get/3</code></a>·function.·If·there·are·default151 efficient,·and·it·helps·catching·mispellings·of·keys.</p></li><li><p>Whenever·possible,·match·multiple·map·elements·at·once.</p></li><li><p>Whenever·possible,·update·multiple·map·elements·at·once.</p></li><li><p>Avoid·default·values·and·the·<a·href="../../lib/stdlib-6.2.2/doc/html/maps.html#get/3"><code·class="inline">maps:get/3</code></a>·function.·If·there·are·default
152 values,·sharing·of·keys·between·different·instances·of·the·map·will·be·less152 values,·sharing·of·keys·between·different·instances·of·the·map·will·be·less
153 effective,·and·it·is·not·possible·to·match·multiple·elements·having·default153 effective,·and·it·is·not·possible·to·match·multiple·elements·having·default
154 values·in·one·go.</p></li><li><p>To·avoid·having·to·deal·with·a·map·that·may·lack·some·keys,·<a·href="../../lib/stdlib-6.2.2/doc/html/maps.html#merge/2"><code·class="inline">maps:merge/2</code></a>·can154 values·in·one·go.</p></li><li><p>To·avoid·having·to·deal·with·a·map·that·may·lack·some·keys,·<a·href="../../lib/stdlib-6.2.2/doc/html/maps.html#merge/2"><code·class="inline">maps:merge/2</code></a>·can
155 efficiently·add·multiple·default·values.·For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">DefaultMap</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="6972600161-1">#{</span><span·class="ss">shoe_size</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">42</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">editor</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·126,·SHA:·37f377fe9de65218ed923f74aec2d6bbd556fe80ea687f6f2562528c63cf2801·...·]-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="7509908082-1">#{</span><span·class="ss">shoe_size</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">42</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">editor</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·126,·SHA:·c56a5f0b60aa5b74de30e29beb586867d2fae94e6c71da30ec36407a73b7ab73·...·]-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="6972600161-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="6972600161-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="7509908082-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="7509908082-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.2/doc/html/sets.html"><code·class="inline">sets</code></a>·module·has·an·option·to·represent·sets·as·maps.173 <p>Starting·in·OTP·24,·the·<a·href="../../lib/stdlib-6.2.2/doc/html/sets.html"><code·class="inline">sets</code></a>·module·has·an·option·to·represent·sets·as·maps.
174 Examples:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">sets</span><span·class="p">:</span><span·class="nf">new</span><span·class="p"·data-group-id="8180847640-1">(</span><span·class="p"·data-group-id="8180847640-2">[</span><span·class="p"·data-group-id="8180847640-3">{</span><span·class="ss">version</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="8180847640-3">}</[·...·truncated·by·diffoscope;·len:·99,·SHA:·f9be236070b146e88f10a0dec031fb5d4d87f4331ae0571f93cd1f9e0a52b5f8·...·]-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="0392185432-1">(</span><span·class="p"·data-group-id="0392185432-2">[</span><span·class="p"·data-group-id="0392185432-3">{</span><span·class="ss">version</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="0392185432-3">}</[·...·truncated·by·diffoscope;·len:·99,·SHA:·89f09887191968130e6ba05e5fa34c952fb7cbc7c8f1ca1216d592c4f1fa12a2·...·]-1">)</span><span·class="p">.</span><span·class="w">
175 </span><span·class="p"·data-group-id="8180847640-4">#{</span><span·class="p"·data-group-id="8180847640-4">}</span><span·class="gp·unselectable">175 </span><span·class="p"·data-group-id="0392185432-4">#{</span><span·class="p"·data-group-id="0392185432-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="8180847640-5">(</span><span·class="p"·data-group-id="8180847640-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="8180847640-6">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8180847640-7">[</span><span·class="p"·data-group-id="8180847640-8">{</span><span·class="ss">version</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="8180847640-8">}</span><span·class="p"·data-group-id="8180847640-7">]</span><span·class="p"·data-group-id="8180847640-5">)</span><span·class="p">.</span><span·class="w"> 
177 </span><span·class="p"·data-group-id="8180847640-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="8180847640-10">[</span><span·class="p"·data-group-id="818084764[·...·truncated·by·diffoscope;·len:·655,·SHA:·233b7149a1b8dceb1048f51a946eecfb64249faffb88b2a83687d5dd66bf35ec·...·]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="0392185432-5">(</span><span·class="p"·data-group-id="0392185432-6">[</span><span·class="ss">x</span><span·class="p">,</span><sp[·...·truncated·by·diffoscope;·len:·557,·SHA:·a753f4c4743e8000bef94b89d762bd8e20e188451de7e9dc9de7a90c9014ed30·...·]
 177 </span><span·class="p"·data-group-id="0392185432-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="0392185432-10">[</span><span·class="p"·data-group-id="0392185432-10">]</span><span·class="p">,</span><span·class="ss">y</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="0392185432-11">[</span><span·class="p"·data-group-id="0392185432-11">]</span><span·class="p">,</span><span·class="ss">z</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="0392185432-12">[</span><span·class="p"·data-group-id="0392185432-12">]</span><span·class="p"·data-group-id="0392185432-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.2/doc/html/ordsets.html#intersection/2"><code·class="inline">ordsets:intersection/2</code></a>·can·be·more·efficient·than·<a·href="../../lib/stdlib-6.2.2/doc/html/sets.html#intersection/2"><code·class="inline">sets:intersection/2</code></a>.·If178 few·possible·exceptions:</p><ul><li><a·href="../../lib/stdlib-6.2.2/doc/html/ordsets.html#intersection/2"><code·class="inline">ordsets:intersection/2</code></a>·can·be·more·efficient·than·<a·href="../../lib/stdlib-6.2.2/doc/html/sets.html#intersection/2"><code·class="inline">sets:intersection/2</code></a>.·If
179 the·intersection·operation·is·frequently·used·and·operations·that·operate·on·a179 the·intersection·operation·is·frequently·used·and·operations·that·operate·on·a
180 single·element·in·a·set·(such·as·<code·class="inline">is_element/2</code>)·are·avoided,·<a·href="../../lib/stdlib-6.2.2/doc/html/ordsets.html"><code·class="inline">ordsets</code></a>·can180 single·element·in·a·set·(such·as·<code·class="inline">is_element/2</code>)·are·avoided,·<a·href="../../lib/stdlib-6.2.2/doc/html/ordsets.html"><code·class="inline">ordsets</code></a>·can
181 be·a·better·choice·than·<a·href="../../lib/stdlib-6.2.2/doc/html/sets.html"><code·class="inline">sets</code></a>.</li><li>If·the·intersection·operation·is·frequently·used·and·operations·that·operate181 be·a·better·choice·than·<a·href="../../lib/stdlib-6.2.2/doc/html/sets.html"><code·class="inline">sets</code></a>.</li><li>If·the·intersection·operation·is·frequently·used·and·operations·that·operate
182 on·a·single·element·in·a·set·(such·as·<code·class="inline">is_element/2</code>)·must·also·be·efficient,182 on·a·single·element·in·a·set·(such·as·<code·class="inline">is_element/2</code>)·must·also·be·efficient,
183 <a·href="../../lib/stdlib-6.2.2/doc/html/gb_sets.html"><code·class="inline">gb_sets</code></a>·can·potentially·be·a·better·choice·than·<a·href="../../lib/stdlib-6.2.2/doc/html/sets.html"><code·class="inline">sets</code></a>.</li><li>If·the·elements·of·the·set·are·integers·in·a·fairly·compact·range,·the·set·can183 <a·href="../../lib/stdlib-6.2.2/doc/html/gb_sets.html"><code·class="inline">gb_sets</code></a>·can·potentially·be·a·better·choice·than·<a·href="../../lib/stdlib-6.2.2/doc/html/sets.html"><code·class="inline">sets</code></a>.</li><li>If·the·elements·of·the·set·are·integers·in·a·fairly·compact·range,·the·set·can
184 be·represented·as·an·integer·where·each·bit·represents·an·element·in·the·set.184 be·represented·as·an·integer·where·each·bit·represents·an·element·in·the·set.
Offset 203, 18 lines modifiedOffset 203, 18 lines modified
203 for·the·runtime·system).</p></li><li><p><strong>N</strong>·-·The·number·of·elements·in·the·map.</p></li><li><p><strong>Keys</strong>·-·A·tuple·with·keys·of·the·map:·<code·class="inline">{Key1,...,KeyN}</code>.·The·keys·are203 for·the·runtime·system).</p></li><li><p><strong>N</strong>·-·The·number·of·elements·in·the·map.</p></li><li><p><strong>Keys</strong>·-·A·tuple·with·keys·of·the·map:·<code·class="inline">{Key1,...,KeyN}</code>.·The·keys·are
204 sorted.</p></li><li><p><strong>Value1</strong>·-·The·value·corresponding·to·the·first·key·in·the·key·tuple.</p></li><li><p><strong>ValueN</strong>·-·The·value·corresponding·to·the·last·key·in·the·key·tuple.</p></li></ul><p>As·an·example,·let·us·look·at·how·the·map·<code·class="inline">#{a·=&gt;·foo,·z·=&gt;·bar}</code>·is204 sorted.</p></li><li><p><strong>Value1</strong>·-·The·value·corresponding·to·the·first·key·in·the·key·tuple.</p></li><li><p><strong>ValueN</strong>·-·The·value·corresponding·to·the·last·key·in·the·key·tuple.</p></li></ul><p>As·an·example,·let·us·look·at·how·the·map·<code·class="inline">#{a·=&gt;·foo,·z·=&gt;·bar}</code>·is
205 represented:</p><table><thead><tr><th·style="text-align:·center;">0</th><th·style="text-align:·left;">1</th><th·style="text-align:·center;">2</th><th·style="text-align:·center;">3</th><th·style="text-align:·left;">4</th></tr></thead><tbody><tr><td·style="text-align:·center;"><strong>FLATMAP</strong></td><td·style="text-align:·left;"><em>2</em></td><td·style="text-align:·center;"><code·class="inline">{a,z}</code></td><td·style="text-align:·center;"><code·class="inline">foo</code></td><td·style="text-align:·left;"><code·class="inline">bar</code></td></tr></tbody></table><p><em>Table:·#{a·=&gt;·foo,·z·=&gt;·bar}</em></p><p>Let·us·update·the·map:·<code·class="inline">M#{q·=&gt;·baz}</code>.·The·map·now·looks·like·this:</p><table><thead><tr><th·style="text-align:·center;">0</th><th·style="text-align:·left;">1</th><th·style="text-align:·center;">2</th><th·style="text-align:·center;">3</th><th·style="text-align:·center;">4</th><th·style="text-align:·center;">5</th></tr></thead><tbody><tr><td·style="text-align:·center;"><strong>FLATMAP</strong></td><td·style="text-align:·left;"><em>3</em></td><td·style="text-align:·center;"><code·class="inline">{a,q,z}</code></td><td·style="text-align:·center;"><code·class="inline">foo</code></td><td·style="text-align:·center;"><code·class="inline">baz</code></td><td·style="text-align:·center;"><code·class="inline">bar</code></td></tr></tbody></table><p><em>Table:·#{a·=&gt;·foo,·q·=&gt;·baz,·z·=&gt;·bar}</em></p><p>Finally,·change·the·value·of·one·element:·<code·class="inline">M#{z·:=·bird}</code>.·The·map·now·looks205 represented:</p><table><thead><tr><th·style="text-align:·center;">0</th><th·style="text-align:·left;">1</th><th·style="text-align:·center;">2</th><th·style="text-align:·center;">3</th><th·style="text-align:·left;">4</th></tr></thead><tbody><tr><td·style="text-align:·center;"><strong>FLATMAP</strong></td><td·style="text-align:·left;"><em>2</em></td><td·style="text-align:·center;"><code·class="inline">{a,z}</code></td><td·style="text-align:·center;"><code·class="inline">foo</code></td><td·style="text-align:·left;"><code·class="inline">bar</code></td></tr></tbody></table><p><em>Table:·#{a·=&gt;·foo,·z·=&gt;·bar}</em></p><p>Let·us·update·the·map:·<code·class="inline">M#{q·=&gt;·baz}</code>.·The·map·now·looks·like·this:</p><table><thead><tr><th·style="text-align:·center;">0</th><th·style="text-align:·left;">1</th><th·style="text-align:·center;">2</th><th·style="text-align:·center;">3</th><th·style="text-align:·center;">4</th><th·style="text-align:·center;">5</th></tr></thead><tbody><tr><td·style="text-align:·center;"><strong>FLATMAP</strong></td><td·style="text-align:·left;"><em>3</em></td><td·style="text-align:·center;"><code·class="inline">{a,q,z}</code></td><td·style="text-align:·center;"><code·class="inline">foo</code></td><td·style="text-align:·center;"><code·class="inline">baz</code></td><td·style="text-align:·center;"><code·class="inline">bar</code></td></tr></tbody></table><p><em>Table:·#{a·=&gt;·foo,·q·=&gt;·baz,·z·=&gt;·bar}</em></p><p>Finally,·change·the·value·of·one·element:·<code·class="inline">M#{z·:=·bird}</code>.·The·map·now·looks
206 like·this:</p><table><thead><tr><th·style="text-align:·center;">0</th><th·style="text-align:·left;">1</th><th·style="text-align:·center;">2</th><th·style="text-align:·center;">3</th><th·style="text-align:·center;">4</th><th·style="text-align:·center;">5</th></tr></thead><tbody><tr><td·style="text-align:·center;"><strong>FLATMAP</strong></td><td·style="text-align:·left;"><em>3</em></td><td·style="text-align:·center;"><code·class="inline">{a,q,z}</code></td><td·style="text-align:·center;"><code·class="inline">foo</code></td><td·style="text-align:·center;"><code·class="inline">baz</code></td><td·style="text-align:·center;"><code·class="inline">bird</code></td></tr></tbody></table><p><em>Table:·#{a·=&gt;·foo,·q·=&gt;·baz,·z·=&gt;·bird}</em></p><p>When·the·value·for·an·existing·key·is·updated,·the·key·tuple·is·not·updated,206 like·this:</p><table><thead><tr><th·style="text-align:·center;">0</th><th·style="text-align:·left;">1</th><th·style="text-align:·center;">2</th><th·style="text-align:·center;">3</th><th·style="text-align:·center;">4</th><th·style="text-align:·center;">5</th></tr></thead><tbody><tr><td·style="text-align:·center;"><strong>FLATMAP</strong></td><td·style="text-align:·left;"><em>3</em></td><td·style="text-align:·center;"><code·class="inline">{a,q,z}</code></td><td·style="text-align:·center;"><code·class="inline">foo</code></td><td·style="text-align:·center;"><code·class="inline">baz</code></td><td·style="text-align:·center;"><code·class="inline">bird</code></td></tr></tbody></table><p><em>Table:·#{a·=&gt;·foo,·q·=&gt;·baz,·z·=&gt;·bird}</em></p><p>When·the·value·for·an·existing·key·is·updated,·the·key·tuple·is·not·updated,
207 allowing·the·key·tuple·to·be·shared·with·other·instances·of·the·map·that·have207 allowing·the·key·tuple·to·be·shared·with·other·instances·of·the·map·that·have
208 the·same·keys.·In·fact,·the·key·tuple·can·be·shared·between·all·maps·with·the208 the·same·keys.·In·fact,·the·key·tuple·can·be·shared·between·all·maps·with·the
209 same·keys·with·some·care.·To·arrange·that,·define·a·function·that·returns·a·map.209 same·keys·with·some·care.·To·arrange·that,·define·a·function·that·returns·a·map.
210 For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">new</span><span·class="p"·data-group-id="2251530047-1">(</span><span·class="p"·data-group-id="2251530047-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="1541179372-1">(</span><span·class="p"·data-group-id="1541179372-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
211 ····</span><span·class="p"·data-group-id="2251530047-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:·516c7e77e76dfd4595130cb2e9060cfa9dc4fba2e69004e8029653e79c5766c1·...·]-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="1541179372-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:·2d0e2d1388415a9685a63dac29d3560fb044aa05ed70bbe483b7b5d7f0211fed·...·]-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="0838811444-1">(</span><span·class="n">SOME_MODULE</span><span·class="p">:</span><span·class="nf">new</span><span·class="p"·data-group-id="0838811444-2">(</span><span·class="p"·data-group-id="0838811444-2">)</span><span·class="p"·data-group-id="0838811444-1[·...·truncated·by·diffoscope;·len:·229,·SHA:·a91cd261a896bbc0aa76c326380b4b2d413be80e8fc6b2bce3cbddd22c9baa10·...·]-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="6260287150-1">(</span><span·class="n">SOME_MODULE</span><span·class="p">:</span><span·class="nf">new</span><span·class="p"·data-group-id="6260287150-2">(</span><span·class="p"·data-group-id="6260287150-2">)</span><span·class="p"·data-group-id="6260287150-1[·...·truncated·by·diffoscope;·len:·229,·SHA:·f1739a1f3b36d95de497e25fde9441a68de6248e50280ac914d3d7d0d29161f0·...·]-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.2/doc/html/maps.html"><code·class="inline">maps</code></a>·module.</p><p>The·gain·in·efficiency·for·the·map·syntax·is·more·noticeable·for·the·following247 corresponding·function·in·the·<a·href="../../lib/stdlib-6.2.2/doc/html/maps.html"><code·class="inline">maps</code></a>·module.</p><p>The·gain·in·efficiency·for·the·map·syntax·is·more·noticeable·for·the·following
248 operations·that·can·only·be·achieved·using·the·map·syntax:</p><ul><li>Matching·multiple·literal·keys</li><li>Updating·multiple·literal·keys</li><li>Adding·multiple·literal·keys·to·a·map</li></ul><p>For·example:</p><p><strong>DO</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Map</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Map1</span><span·class="p"·data-group-id="7995023913-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:·9e892c7636ff107762e6dcf93f6876e531ad7c7ee82ed87b2528c25e18950de8·...·]-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="5131598216-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:·dc499bd179904796f8553955f8477e59f52d8bd3445fcd8bb303e21bc5b55526·...·]-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="5931828567-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="5931828567-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="7939251508-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="7939251508-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="5931828567-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="5931828567-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="7939251508-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="7939251508-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="0886007810-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:·1cbcaea531252a3f8c35e09c6128e5660ba6901bc49e1cefd4c7284979ee869c·...·]-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="5078477449-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:·8f819d836a5bf57ea03408ad56ec663dc3dadb48dfe7dec859ba88f535983bc7·...·]-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="8652468474-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="8652468474-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="1869493513-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="1869493513-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="8652468474-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="8652468474-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="1869493513-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="1869493513-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="8652468474-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="8652468474-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="1869493513-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="1869493513-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.2/doc/html/maps.html#get/3"><code·class="inline">maps:get/3</code></a>·to·Erlang311 <p>As·an·optimization,·the·compiler·will·rewrite·a·call·to·<a·href="../../lib/stdlib-6.2.2/doc/html/maps.html#get/3"><code·class="inline">maps:get/3</code></a>·to·Erlang
312 code·similar·to·the·following:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Result</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="k">case</span><span·class="w">·</span><span·class="n">Map</span><span·class="w">·</span><span·class="k">of</span><span·class="w">312 code·similar·to·the·following:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Result</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="k">case</span><span·class="w">·</span><span·class="n">Map</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
313 ·············</span><span·class="p"·data-group-id="6381996387-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="6381996387-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="2555812385-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="2555812385-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="6381996387-2">#{</span><span·class="p"·data-group-id="6381996387-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="2555812385-2">#{</span><span·class="p"·data-group-id="2555812385-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.2/doc/html/maps.html#get/3"><code·class="inline">maps:get/3</code></a>318 not·storing·default·values·in·the·map.</p><p>If·default·values·are·nevertheless·required,·instead·of·calling·<a·href="../../lib/stdlib-6.2.2/doc/html/maps.html#get/3"><code·class="inline">maps:get/3</code></a>
319 multiple·times,·consider·putting·the·default·values·in·a·map·and·merging·that319 multiple·times,·consider·putting·the·default·values·in·a·map·and·merging·that
320 map·with·the·other·map:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">DefaultMap</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9810622829-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:·c2b192e4b814532ba2f97f420cdbc1fe3fdd287952233d02f48dfb1a6ab3d6be·...·]-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="4390806986-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:·4b4e8d2fd84e501dcf977359a49bac1e0df3314db295d76e17daf02e6ba8a25e·...·]-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="9810622829-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="9810622829-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="4390806986-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="4390806986-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.2/doc/html/maps.html#get/3"><code·class="inline">maps:get/3</code></a>·multiple·times·depends·on·the·size·of·the·map·and·the·number·of324 <a·href="../../lib/stdlib-6.2.2/doc/html/maps.html#get/3"><code·class="inline">maps:get/3</code></a>·multiple·times·depends·on·the·size·of·the·map·and·the·number·of
325 default·values.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Change</h4><p>Before·OTP·26.0·<a·href="../../lib/stdlib-6.2.2/doc/html/maps.html#get/3"><code·class="inline">maps:get/3</code></a>·was·implemented·by·calling·the·function·instead325 default·values.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Change</h4><p>Before·OTP·26.0·<a·href="../../lib/stdlib-6.2.2/doc/html/maps.html#get/3"><code·class="inline">maps:get/3</code></a>·was·implemented·by·calling·the·function·instead
326 of·rewriting·it·as·an·Erlang·expression.·It·is·now·slightly·faster·but·can·no326 of·rewriting·it·as·an·Erlang·expression.·It·is·now·slightly·faster·but·can·no
327 longer·be·traced.</p></section><h3·id="maps-intersect-2-maps-intersect_with-3"·class="section-heading">327 longer·be·traced.</p></section><h3·id="maps-intersect-2-maps-intersect_with-3"·class="section-heading">
328 ··<a·href="#maps-intersect-2-maps-intersect_with-3"·class="hover-link">328 ··<a·href="#maps-intersect-2-maps-intersect_with-3"·class="hover-link">
23.9 KB
./usr/share/doc/erlang-doc/html/doc/system/modules.html
    
Offset 118, 20 lines modifiedOffset 118, 20 lines modified
118 <h2·id="module-syntax"·class="section-heading">118 <h2·id="module-syntax"·class="section-heading">
119 ··<a·href="#module-syntax"·class="hover-link">119 ··<a·href="#module-syntax"·class="hover-link">
120 ····<i·class="ri-link-m"·aria-hidden="true"></i>120 ····<i·class="ri-link-m"·aria-hidden="true"></i>
121 ··</a>121 ··</a>
122 ··<span·class="text">Module·Syntax</span>122 ··<span·class="text">Module·Syntax</span>
123 </h2>123 </h2>
124 <p>Erlang·code·is·divided·into·<em>modules</em>.·A·module·consists·of·a·sequence·of124 <p>Erlang·code·is·divided·into·<em>modules</em>.·A·module·consists·of·a·sequence·of
125 attributes·and·function·declarations,·each·terminated·by·a·period·(<code·class="inline">.</code>).</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="0759748171-1">(</span><span·class="ss">m</span><span·class="p"·data-group-id="0759748171-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="1654774824-1">(</span><span·class="ss">m</span><span·class="p"·data-group-id="1654774824-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="0759748171-2">(</span><span·class="p"·data-group-id="0759748171-3">[</span><span·class="ss">fact</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="0759748171-3">]</span><span·class="p"·data-group-id="0759748171-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="1654774824-2">(</span><span·class="p"·data-group-id="1654774824-3">[</span><span·class="ss">fact</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="1654774824-3">]</span><span·class="p"·data-group-id="1654774824-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="0759748171-4">(</span><span·class="n">N</span><span·class="p"·data-group-id="0759748171-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="1654774824-4">(</span><span·class="n">N</span><span·class="p"·data-group-id="1654774824-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="0759748171-5">(</span><span·class="n">N</span><span·class="o">-</span><span·class="mi">1</span><span·class="p"·data-group-id="0759748171-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="1654774824-5">(</span><span·class="n">N</span><span·class="o">-</span><span·class="mi">1</span><span·class="p"·data-group-id="1654774824-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="0759748171-6">(</span><span·class="mi">0</span><span·class="p"·data-group-id="0759748171-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="1654774824-6">(</span><span·class="mi">0</span><span·class="p"·data-group-id="1654774824-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="8639998751-1">(</span><span·class="n">Behaviour</span><span·class="p"·data-group-id="8639998751-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="0482981786-1">(</span><span·class="n">Behaviour</span><span·class="p"·data-group-id="0482981786-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="4853646432-1">(</span><span·class="ss">callbacks</span><span·class="p"·data-group-id="4853646432-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:·a26033f23ee11a9c2a8938396830952fb64004903f3bf7c116bd7089609221a5·...·]-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="5668910411-1">(</span><span·class="ss">callbacks</span><span·class="p"·data-group-id="5668910411-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:·e57636d445b62ea128a29360901dfa054af5a602639447b4e39801efc67e52a6·...·]-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="2206014564-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="2206014564-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="5586303536-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="5586303536-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="4602840235-1">(</span><span·class="s">&quot;SomeFile.hrl&quot;</span><span·class="p"·data-group-id="4602840235-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="2961455498-1">(</span><span·class="s">&quot;SomeFile.hrl&quot;</span><span·class="p"·data-group-id="2961455498-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="4602840235-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="4602840235-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="2961455498-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="2961455498-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="4247482589-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="4247482589-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="2205359610-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="2205359610-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="1377898826-1">(</span><span·class="p"·data-group-id="1377898826-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="1377898826-2">(</span><spa[·...·truncated·by·diffoscope;·len:·246,·SHA:·07b5ca5b91d425259de69d1e2b5598daefdc499daedc6e78291f1e06e72f8fac·...·]-3">)</span><span·class="p">.</span><span·class="w">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="6630994442-1">(</span><span·class="p"·data-group-id="6630994442-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="6630994442-2">(</span><spa[·...·truncated·by·diffoscope;·len:·246,·SHA:·00fb3b9578eb7d74e988bd358fa51368838d7287a22ee13b3b4c085939de8344·...·]-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="1377898826-4">(</span><span·class="nf">integer</span><span·class="p"·data-group-id="1377898826-5">(</span><span·class="p"·data-group-id="1377898826-5">)</span><span·class="p"·data-group-id="1377898826-4">)</span><span·class="w">·</span><span·class="p">-&gt[·...·truncated·by·diffoscope;·len:·157,·SHA:·6c71684b83e469f0cc6c35e995bc3e7110b6c1c4d98d8d3cb93ea6c3b8c75423·...·]-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·on221 </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="6630994442-4">(</span><span·class="nf">integer</span><span·class="p"·data-group-id="6630994442-5">(</span><span·class="p"·data-group-id="6630994442-5">)</span><span·class="p"·data-group-id="6630994442-4">)</span><span·class="w">·</span><span·class="p">-&gt[·...·truncated·by·diffoscope;·len:·157,·SHA:·800db718cfc6bc8f7076fdd1839a57eef397d803bced48f4c859cd0a8760ecc4·...·]-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="6034321277-1">(</span><span·class="s">&quot;Example·documentation&quot;</span><span·class="p"·data-group-id="6034321277-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="6651442717-1">(</span><span·class="s">&quot;Example·documentation&quot;</span><span·class="p"·data-group-id="6651442717-1">)</span><span·class="p">.</span><span·class="w">
231 </span><span·class="nf">example</span><span·class="p"·data-group-id="6034321277-2">(</span><span·class="p"·data-group-id="6034321277-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="6651442717-2">(</span><span·class="p"·data-group-id="6651442717-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="0691401429-1">(</span><span·class="s">&quot;Example·\&quot;docs\&quot;&quot;</span><span·class="p"·data-group-id="0691401429-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="3794096594-1">(</span><span·class="s">&quot;Example·\&quot;docs\&quot;&quot;</span><span·class="p"·data-group-id="3794096594-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="0691401429-2">(</span><span·class="p"·data-group-id="0691401429-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="0691401429-3">&gt;&gt;</span><[·...·truncated·by·diffoscope;·len:·40,·SHA:·ae30769cf76ac063c50ce92a3e785cae2dd79bb16e3927263038c3a9d3df1b50·...·]-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="3794096594-2">(</span><span·class="p"·data-group-id="3794096594-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="3794096594-3">&gt;&gt;</span><[·...·truncated·by·diffoscope;·len:·40,·SHA:·e14d98e36e2ff902e30fc4eaa1ef5f430e56c31e10a123a76774c1a072217e76·...·]-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.6/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.6/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="0169095976-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:·21,·SHA:·3d85bdceef866415c446f497f417a19241edd1e1360a71c3c3157dfb2d9eb81a·...·]6-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="9147855136-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:·21,·SHA:·d03f85ce216f9c430149fedae4ae627bd0e975e91db3b033e2b700b43d69136d·...·]6-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.6/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.6/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="7031842125-1">(</span><span·class="ss">complex6</span><span·class="p"·data-group-id="7031842125-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="2494591433-1">(</span><span·class="ss">complex6</span><span·class="p"·data-group-id="2494591433-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="7031842125-2">(</span><span·class="p"·data-group-id="7031842125-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:·65b7f8e6202e589c90d432c00dbc5cc916f5dcd64fbac0352fdbec6adbfce368·...·]-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="2494591433-2">(</span><span·class="p"·data-group-id="2494591433-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:·5644561b8fddff390af13ea7255dfd08aadaedacdbb6ba22cf039aee0c510fec·...·]-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="7031842125-4">(</span><span·class="p"·data-group-id="7031842125-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:·c5722f1d519de189dd293d851dc2bf94afa5c17c8cdb1222b171df796a96c39a·...·]-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="2494591433-4">(</span><span·class="p"·data-group-id="2494591433-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:·527727943e58d0d777aec16bdf75367717ce83b13c44aa34df8609fb25291ca8·...·]-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="7031842125-6">(</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="7031842125-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="2494591433-6">(</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="2494591433-6">)</span><span·class="p">.</span><span·class="w">
  
144 </span><span·class="nf">init</span><span·class="p"·data-group-id="7031842125-7">(</span><span·class="p"·data-group-id="7031842125-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="2494591433-7">(</span><span·class="p"·data-group-id="2494591433-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="7031842125-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="7031842125-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="2494591433-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="2494591433-8">)</span><span·class="p">.</span><span·class="w">
  
146 </span><span·class="nf">foo</span><span·class="p"·data-group-id="7031842125-9">(</span><span·class="p">_</span><span·class="n">X</span><span·class="p"·data-group-id="7031842125-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="2494591433-9">(</span><span·class="p">_</span><span·class="n">X</span><span·class="p"·data-group-id="2494591433-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="7031842125-10">(</span><span·class="ss">nif_library_not_loaded</span><span·class="p"·data-group-id="7031842125-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="2494591433-10">(</span><span·class="ss">nif_library_not_loaded</span><span·class="p"·data-group-id="2494591433-10">)</span><span·class="p">.</span><span·class="w">
148 </span><span·class="nf">bar</span><span·class="p"·data-group-id="7031842125-11">(</span><span·class="p">_</span><span·class="n">Y</span><span·class="p"·data-group-id="7031842125-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="2494591433-11">(</span><span·class="p">_</span><span·class="n">Y</span><span·class="p"·data-group-id="2494591433-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="7031842125-12">(</span><span·class="ss">nif_library_not_loaded</span><span·class="p"·data-group-id="7031842125-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="2494591433-12">(</span><span·class="ss">nif_library_not_loaded</span><span·class="p"·data-group-id="2494591433-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="3259028119-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="3259028119-1">)</span><span·class="w">·</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·1129,·SHA:·af6a0ddff52e9e29915cab0c707cee7440b1b6a8728a60c98fb27a76d20f9cd2·...·]9-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="1925847369-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="1925847369-1">)</span><span·class="w">·</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·1129,·SHA:·7d3f795c2d8f253e8f1c3aa5252fb525534cc80dc78297203bec76c9cd4d5052·...·]9-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="3259028119-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="3259028119-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="1925847369-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="1925847369-7">)</span><span·class="gp·unselectable">
218 1&gt;·</span><span·class="nf">c</span><span·class="p"·data-group-id="3259028119-8">(</span><span·class="ss">complex6</span><span·class="p"·data-group-id="3259028119-8">)</span><span·class="p">.</span><span·class="w">218 1&gt;·</span><span·class="nf">c</span><span·class="p"·data-group-id="1925847369-8">(</span><span·class="ss">complex6</span><span·class="p"·data-group-id="1925847369-8">)</span><span·class="p">.</span><span·class="w">
219 </span><span·class="p"·data-group-id="3259028119-9">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">complex6</span><span·class="p"·data-group-id="3259028119-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:·9dc8ea2722d205e797d07111d34f4f69fa51886ff2732a5acd02ff1180c97e85·...·]-1">)</span><span·class="p">.</span><span·class="w">219 </span><span·class="p"·data-group-id="1925847369-9">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">complex6</span><span·class="p"·data-group-id="1925847369-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:·eb4967702fa4d94aed01abc823c5d853d296983bab7e10e980fcd68d3b28a28e·...·]-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="2893298915-2">(</span><span·class="mi">5</span><span·class="p"·data-group-id="2893298915-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="0035023046-2">(</span><span·class="mi">5</span><span·class="p"·data-group-id="0035023046-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="2893298915-3">(</span><span·class="s">&quot;not·an·integer&quot;</span><span·class="p"·data-group-id="2893298915-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="0035023046-3">(</span><span·class="s">&quot;not·an·integer&quot;</span><span·class="p"·data-group-id="0035023046-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.2/doc/html/sets.html#t:set/0"><code·class="inline">sets:set()</code></a>·data·type.·This·type·<em>was</em>128 the·example·of·the·<a·href="../../lib/stdlib-6.2.2/doc/html/sets.html#t:set/0"><code·class="inline">sets:set()</code></a>·data·type.·This·type·<em>was</em>
129 defined·in·the·<code·class="inline">sets</code>·module·like·this:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">opaque</span><span·class="w">·</span><span·class="nf">set</span><span·class="p"·data-group-id="6240982378-1">(</span><span·class="n">Element</span><span·class="p"·data-group-id="6240982378-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="6240982378-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="6240982378-3">(</span><span·class="n">Element</span><span·class="p"·data-group-id="6240982378-3">)</span><span·class="p"·data-group-id="6240982378-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</[·...·truncated·by·diffoscope;·len:·1135,·SHA:·c2d7c6b7e33db54a2a095718de49761cc207d21039a0026cb60da1fc473606f9·...·]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="190[·...·truncated·by·diffoscope;·len:·732,·SHA:·22efcf3b801cbd7dee4b80f37a4939e1b3764f37a24d761ccb880969ae95280a·...·]
 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="5490784595-1">(</span><span·class="n">Element</span><span·class="p"·data-group-id="5490784595-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="5490784595-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="5490784595-3">(</span><span·class="n">Element</span><span·class="p"·data-group-id="5490784595-3">)</span><span·class="p"·data-group-id="5490784595-2">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="5490784595-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="5490784595-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="8996539057-1">(</span><span·class="p"·data-group-id="8996539057-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="1599125691-1">(</span><span·class="p"·data-group-id="1599125691-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="8996539057-2">(</span><span·class="n">Set</span><span·class="p"·data-group-id="8996539057-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="1599125691-2">(</span><span·class="n">Set</span><span·class="p"·data-group-id="1599125691-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="8996539057-3">(</span><span·class="s">&quot;ok&quot;</span><span·class="p"·data-group-id="8996539057-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="1599125691-3">(</span><span·class="s">&quot;ok&quot;</span><span·class="p"·data-group-id="1599125691-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.6/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.6/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.2/doc/html/sets.html#new/0"><code·class="inline">sets:new/0</code></a>,·<a·href="../../lib/stdlib-6.2.2/doc/html/sets.html#add_element/2"><code·class="inline">sets:add_element/2</code></a>,142 example,·<code·class="inline">sets</code>·module·provides·<a·href="../../lib/stdlib-6.2.2/doc/html/sets.html#new/0"><code·class="inline">sets:new/0</code></a>,·<a·href="../../lib/stdlib-6.2.2/doc/html/sets.html#add_element/2"><code·class="inline">sets:add_element/2</code></a>,
143 <a·href="../../lib/stdlib-6.2.2/doc/html/sets.html#is_element/2"><code·class="inline">sets:is_element/2</code></a>,·and·so·on.</li><li><p><a·href="../../lib/stdlib-6.2.2/doc/html/sets.html#t:set/1"><code·class="inline">sets:set(a)</code></a>·is·a·subtype·of·<code·class="inline">sets:set(a·|·b)</code>·and·not·the143 <a·href="../../lib/stdlib-6.2.2/doc/html/sets.html#is_element/2"><code·class="inline">sets:is_element/2</code></a>,·and·so·on.</li><li><p><a·href="../../lib/stdlib-6.2.2/doc/html/sets.html#t:set/1"><code·class="inline">sets:set(a)</code></a>·is·a·subtype·of·<code·class="inline">sets:set(a·|·b)</code>·and·not·the
144 other·way·around.·Generally,·you·can·rely·on·the·property·that·<code·class="inline">the_opaque(T)</code>144 other·way·around.·Generally,·you·can·rely·on·the·property·that·<code·class="inline">the_opaque(T)</code>
145 is·a·subtype·of·<code·class="inline">the_opaque(U)</code>·when·T·is·a·subtype·of·U.</p></li></ul><p><strong>When·defining·your·own·opaques,·here·are·some·recommendations:</strong></p><ul><li>Since·consumers·are·expected·to·not·rely·on·the·definition·of·the·opaque·type,145 is·a·subtype·of·<code·class="inline">the_opaque(U)</code>·when·T·is·a·subtype·of·U.</p></li></ul><p><strong>When·defining·your·own·opaques,·here·are·some·recommendations:</strong></p><ul><li>Since·consumers·are·expected·to·not·rely·on·the·definition·of·the·opaque·type,
1.62 KB
./usr/share/doc/erlang-doc/html/doc/system/otp-patch-apply.html
    
Offset 201, 15 lines modifiedOffset 201, 15 lines modified
201 ··</a>201 ··</a>
202 ··<span·class="text">Sanity·check</span>202 ··<span·class="text">Sanity·check</span>
203 </h2>203 </h2>
204 <p>The·application·dependencies·can·be·checked·using·the·Erlang·shell.204 <p>The·application·dependencies·can·be·checked·using·the·Erlang·shell.
205 Application·dependencies·are·verified·among·installed·applications·by205 Application·dependencies·are·verified·among·installed·applications·by
206 <code·class="inline">otp_patch_apply</code>,·but·these·are·not·necessarily·those·actually·loaded.206 <code·class="inline">otp_patch_apply</code>,·but·these·are·not·necessarily·those·actually·loaded.
207 By·calling·<code·class="inline">system_information:sanity_check()</code>·one·can·validate207 By·calling·<code·class="inline">system_information:sanity_check()</code>·one·can·validate
208 dependencies·among·applications·actually·loaded.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">system_information</span><span·class="p">:</span><span·class="nf">sanity_check</span><span·class="p"·data-group-id="0298982615-1">(</span><span·class="p"·data-group-id="0298982615-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="6387659880-1">(</span><span·class="p"·data-group-id="6387659880-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="1042197913-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="1042197913-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="[·...·truncated·by·diffoscope;·len:·179,·SHA:·c63df7840db5f4584140f1663a32b21fccea7859ca3136e428efad4ffb89ef18·...·]-2">}</span><span·class="p">.</span><span·class="w">135 4&gt;·</span><span·class="p"·data-group-id="3301081135-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="3301081135-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="[·...·truncated·by·diffoscope;·len:·179,·SHA:·a6294386cc91f2e98d04101b6229094e246aa8de11980e8e21b2364c04cfea51·...·]-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="1042197913-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="1042197913-3">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="[·...·truncated·by·diffoscope;·len:·179,·SHA:·9c7f9c62fb54a488909c58bbc29274ee1e19af272f6cdcc52d97210d7c3e94fa·...·]-4">}</span><span·class="p">.</span><span·class="w">137 5&gt;·</span><span·class="p"·data-group-id="3301081135-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="3301081135-3">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="[·...·truncated·by·diffoscope;·len:·179,·SHA:·02b4ff7f04e5f1121c9774858bb970e8dab51d38c749a63ff2f509d896ff0192·...·]-4">}</span><span·class="p">.</span><span·class="w">
138 </span><span·class="p"·data-group-id="1042197913-5">{</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="1042197913-5">}</span><span·class="gp·unselectable">138 </span><span·class="p"·data-group-id="3301081135-5">{</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="3301081135-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="5232490807-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="5232490807-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="7911689247-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="7911689247-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="5232490807-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="5232490807-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="7911689247-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="7911689247-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="2001131678-1">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2001131678-2">{</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">phone</spa[·...·truncated·by·diffoscope;·len:·174,·SHA:·c4c296892216fdfbad3e8ccab2833adc95fed1ba9bab3c84efb579d06429879e·...·]8-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="8482744728-1">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8482744728-2">{</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">phone</spa[·...·truncated·by·diffoscope;·len:·174,·SHA:·df815c01073bb1a60309f28457731c0dd1a74a52c485225e6983c5a2fc3df635·...·]8-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="9273953121-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:·e722efde1d7371d76145a0b30afc5c45150573d5b4bf87fdc8317a2959882b28·...·]-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="2040416940-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:·0b99f07f3ad995674ad16c186682162581c58ff99d75ba1ba9f684ce4771d260·...·]-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="5453783811-1">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5453783811-2">{</span><span·class="ss">name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·460,·SHA:·bc968081b549a48c8c5e7f73dc440e62cc137e1d2f3501a89330a9427adcc6b3·...·]-1">)</span><span·class="p">.</span></code></pre><p>The·record·must·be·defined·in·the·shell·to·enable·use·of·the·record·syntax·in149 field:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="7804556032-1">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7804556032-2">{</span><span·class="ss">name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·460,·SHA:·ef4d336330df1a4654770d1045288c6ffaa15c45cafbfc3ad6fd21b3b9804322·...·]-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="8311413335-1">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8311413335-2">{</span><span·class="ss">name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·459,·SHA:·beef48cd19b1eb655a158d3974092c06a25ccfe8b18ccc64578701a79eda69e4·...·]5-1">)</span><span·class="p">.</span><span·class="w">150 the·examples:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nf">rd</span><span·class="p"·data-group-id="0268973365-1">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0268973365-2">{</span><span·class="ss">name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·459,·SHA:·ae599fbc2dde9f2317d2b3289871ec2c99fd9a2d58000619dfedecef5bc34ef5·...·]5-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.2/doc/html/shell.html"><code·class="inline">shell</code></a>·manual·page·in152 runtime.·For·details·on·records·in·the·shell,·see·the·<a·href="../../lib/stdlib-6.2.2/doc/html/shell.html"><code·class="inline">shell</code></a>·manual·page·in
153 STDLIB.</p><h2·id="creating-a-record"·class="section-heading">153 STDLIB.</p><h2·id="creating-a-record"·class="section-heading">
154 ··<a·href="#creating-a-record"·class="hover-link">154 ··<a·href="#creating-a-record"·class="hover-link">
155 ····<i·class="ri-link-m"·aria-hidden="true"></i>155 ····<i·class="ri-link-m"·aria-hidden="true"></i>
156 ··</a>156 ··</a>
157 ··<span·class="text">Creating·a·Record</span>157 ··<span·class="text">Creating·a·Record</span>
158 </h2>158 </h2>
159 <p>A·new·<code·class="inline">person</code>·record·is·created·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="2289996386-1">{</span><span·class="ss">phone</span><span·class="o">=</span><span·class="p"·data-group-id="2289996386-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·c[·...·truncated·by·diffoscope;·len:·473,·SHA:·644ae4f8fa46120080fe46b774ef8603c08fc2fa98c6a167c3aeecfb788de8eb·...·]-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="2265056885-1">{</span><span·class="ss">phone</span><span·class="o">=</span><span·class="p"·data-group-id="2265056885-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·c[·...·truncated·by·diffoscope;·len:·473,·SHA:·1a9dd96a64fb66adeba9068717a3f58175e35a2a58fb33bfdfbf853b9fcee091·...·]-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="2289996386-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:·705,·SHA:·c413358a76b4eb81dda549c50665ac38e3f8c59d4d2c0bee185b2c365c2028a2·...·]-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="2265056885-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:·705,·SHA:·7ca709651f1b872c537d7967408ec934e4e03adaaf498d98d194d8648855c16f·...·]-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="4033271152-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:·3ffa81b27348692c8495f3819ee26733b70c7b284ac49891f23a79ad4efd360e·...·]-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="7757030851-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:·752fd4e9f302d967f31f0df8124494b27e60b3545314bb58956e934145f816b8·...·]-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="4033271152-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:·238eb8523370c7c9298632df1a118e06d5aaf1ad063381fc856218c8417a5fd6·...·]-2">}</span></code></pre><p>It·is·primarily·intended·to·be·used·in·<a·href="../../lib/stdlib-6.2.2/doc/html/ets.html#match/2"><code·class="inline">ets:match/2</code></a>·and162 </span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="7757030851-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:·75432b12d6a3b5e7163d5f778bed93f59b7e40690e689ecf88ce9fef81cd73cb·...·]-2">}</span></code></pre><p>It·is·primarily·intended·to·be·used·in·<a·href="../../lib/stdlib-6.2.2/doc/html/ets.html#match/2"><code·class="inline">ets:match/2</code></a>·and
163 <a·href="../../lib/mnesia-4.23.5/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.5/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.2/doc/html/ets.html#match/2"><code·class="inline">ets:match/2</code></a>.)</p><h2·id="accessing-a-record-field"·class="section-heading">164 wildcard·in·<a·href="../../lib/stdlib-6.2.2/doc/html/ets.html#match/2"><code·class="inline">ets:match/2</code></a>.)</p><h2·id="accessing-a-record-field"·class="section-heading">
165 ··<a·href="#accessing-a-record-field"·class="hover-link">165 ··<a·href="#accessing-a-record-field"·class="hover-link">
166 ····<i·class="ri-link-m"·aria-hidden="true"></i>166 ····<i·class="ri-link-m"·aria-hidden="true"></i>
167 ··</a>167 ··</a>
168 ··<span·class="text">Accessing·a·Record·Field</span>168 ··<span·class="text">Accessing·a·Record·Field</span>
169 </h2>169 </h2>
170 <p>The·following·example·shows·how·to·access·a·record·field:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="n">P</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="2246325452-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">·</s[·...·truncated·by·diffoscope;·len:·567,·SHA:·dc0777115044a5260de146638f457c5e57ac3d7a9c174f3e84c6f69595363c3b·...·]-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="2647512039-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">·</s[·...·truncated·by·diffoscope;·len:·567,·SHA:·211b9775f13c2281c400f064ecf9b105f03410e2d4a911eb22da978a40b070b5·...·]-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="2246325452-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">=</s[·...·truncated·by·diffoscope;·len:·703,·SHA:·9edc3ecc6e7a4a684a9b7048e1e57896665164db8128646a35dad195c1b56664·...·]-3">}</span><span·class="gp·unselectable">171 </span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="2647512039-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">=</s[·...·truncated·by·diffoscope;·len:·703,·SHA:·bc94bd8992284b975e455dddf4395e24c445b6c1a158cff9f192e901c095691c·...·]-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="2303101105-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="2303101105-2[·...·truncated·by·diffoscope;·len:·373,·SHA:·86b12afa93563acda96e6001f14b7560077c92f07563feaef1174d0d5253a7d7·...·]-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="6993505813-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="6993505813-2[·...·truncated·by·diffoscope;·len:·373,·SHA:·dc2f08b73ade79f74c090a790f0046a7c010b5f125163254e74b17dc31121458·...·]-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="2303101105-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:·734821046a859f46b14b21db43d1a333f4ffbe4d825fc75fa696a652f086c228·...·]-3">}</span><span·class="gp·unselectable">180 </span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="6993505813-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:·bf9d8ee5cd51e97b4e08044b223bed25c7d47711dd2c00eca47f916273e0311d·...·]-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="2303101105-5">{</span><span·class="ss">name</span><span·class="o">=</span><span·class="s">&quot;Robert&quot;</span><span·class="p"·data-group-id="2303101105-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="6993505813-5">{</span><span·class="ss">name</span><span·class="o">=</span><span·class="s">&quot;Robert&quot;</span><span·class="p"·data-group-id="6993505813-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="2303101105-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:·5b628a6f19c72f1c02815da02bf49f52a5d88e632c51e6e2e715195de21bc22c·...·]-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="6993505813-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:·c80d2e313f1efa92f9d24777a32430b83991e96d8eb4e7f640e18b0745dbe48e·...·]-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="0832670210-1">(</span><span·class="n">P</span><span·class="p"·data-group-id="0832670210-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="0832670210-2">(</s[·...·truncated·by·diffoscope;·len:·146,·SHA:·5224d595022463cd33efcd77fdb638dfee8bc88d95972afd434ef290b9b56eeb·...·]0-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="2134330730-1">(</span><span·class="n">P</span><span·class="p"·data-group-id="2134330730-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="2134330730-2">(</s[·...·truncated·by·diffoscope;·len:·146,·SHA:·834d9c46ac0b31935d6c9095ac53b3a8121adee0dd801f18a577cdd38da851e7·...·]0-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="0832670210-3">(</span><span·class="p">_</span><span·class="p"·data-group-id="0832670210-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="2134330730-3">(</span><span·class="p">_</span><span·class="p"·data-group-id="2134330730-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="6195631301-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="6195631301-2[·...·truncated·by·diffoscope;·len:·373,·SHA:·d6ff46986ac339e47ad858c5f9019b3120e96c98b39cda26b449753b298be6c6·...·]-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="5487249568-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="5487249568-2[·...·truncated·by·diffoscope;·len:·373,·SHA:·887bf5acf28787929d140ffd3575a8b52fc971cab4c85f1a881eec2b2b8c4ac4·...·]-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="6195631301-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:·1bb7b8e212ec96133e5d75491cc825748b06f62ebc116414a95cf39ef9f47771·...·]-3">}</span><span·class="gp·unselectable">198 </span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="5487249568-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:·4159584530be458ecc74ef7aa814db06138518a165087033062e3096755beccb·...·]-3">}</span><span·class="gp·unselectable">
199 &gt;·</span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="6195631301-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="6195631301-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="5487249568-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="5487249568-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="7397182016-1">(</span><span·class="p"·data-group-id="7397182016-2">[</span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="7397182016-3">{</span><span·class="ss">name</span><span·class="o">=</span><span·class="n">Name</[·...·truncated·by·diffoscope;·len:·452,·SHA:·359c072fdd002bcfd1ae7c81f25eae23dd49c62351261675c72cd8ad489da04c·...·]-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="4841990147-1">(</span><span·class="p"·data-group-id="4841990147-2">[</span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="4841990147-3">{</span><span·class="ss">name</span><span·class="o">=</span><span·class="n">Name</[·...·truncated·by·diffoscope;·len:·452,·SHA:·9f0bd8105aa8e1facf8325461f7b09bbdbf25aa8bac5ea0502fc75684fab0349·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
202 ····</span><span·class="p"·data-group-id="7397182016-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="7397182016-4">}</span><span·class="p">;</span><span·class="w">202 ····</span><span·class="p"·data-group-id="4841990147-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="4841990147-4">}</span><span·class="p">;</span><span·class="w">
203 </span><span·class="nf">find_phone</span><span·class="p"·data-group-id="7397182016-5">(</span><span·class="p"·data-group-id="7397182016-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="7397182016-6">]</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·84,·SHA:·66d0dcd3a94bb01dc36233838a74a523c9cd9fad1499ea31f963d500975fe2cf·...·]-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="4841990147-5">(</span><span·class="p"·data-group-id="4841990147-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="4841990147-6">]</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·84,·SHA:·a2a46438364b98c64cfdc440c05b668b01600958a14cb87ed212c3d79086ac18·...·]-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="7397182016-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="7397182016-7">)</span><span·class="p">;</span><span·class="w">204 ····</span><span·class="nf">find_phone</span><span·class="p"·data-group-id="4841990147-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="4841990147-7">)</span><span·class="p">;</span><span·class="w">
205 </span><span·class="nf">find_phone</span><span·class="p"·data-group-id="7397182016-8">(</span><span·class="p"·data-group-id="7397182016-9">[</span><span·class="p"·data-group-id="7397182016-9">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Name</span><span·class="p"·data-group-id="7397182016-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="4841990147-8">(</span><span·class="p"·data-group-id="4841990147-9">[</span><span·class="p"·data-group-id="4841990147-9">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Name</span><span·class="p"·data-group-id="4841990147-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="1559742526-1">(</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1559742526-2">{</span><span·class="ss">first</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·322,·SHA:·d73e187d98119e73d20b86e224c9e942bfba2cfd5bd72166d537eaf47ff3b0db·...·]-1">)</span><span·class="p">.</span><span·class="w">214 example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="6089519761-1">(</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6089519761-2">{</span><span·class="ss">first</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·322,·SHA:·80a73db9ba209314e0c9c54f2911511f34aa8b3ffd5f495a2c428f6dcc090f21·...·]-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="1559742526-3">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1559742526-4">{</span><span·class="ss">name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·326,·SHA:·c80a18c726bc74d410a4c2bb9dbb81534380d1821b1cf4497bb3f6b04683fcb6·...·]-3">)</span><span·class="p">.</span><span·class="w">215 </span><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="6089519761-3">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6089519761-4">{</span><span·class="ss">name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·326,·SHA:·52bce06fe9aee85300be5493188f092750b6467f99d7d22fa8cf50514f6be048·...·]-3">)</span><span·class="p">.</span><span·class="w">
  
216 </span><span·class="nf">demo</span><span·class="p"·data-group-id="1559742526-6">(</span><span·class="p"·data-group-id="1559742526-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="6089519761-6">(</span><span·class="p"·data-group-id="6089519761-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="1559742526-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="1559742526-8">{</span><span·class="ss">first</span><span·class="o">=</span>[·...·truncated·by·diffoscope;·len:·381,·SHA:·a7a5868220903b274d1bdc518580fed2a9d9a8a3a507c2ffae0fdc2ef9d04c2e·...·]-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="6089519761-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="6089519761-8">{</span><span·class="ss">first</span><span·class="o">=</span>[·...·truncated·by·diffoscope;·len:·381,·SHA:·19ccea69fd0c61296bc7c055c1cf2da26f389bd1ea40575b988b3d853bdc0df4·...·]-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="1559742526-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="1559742526-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="6089519761-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="6089519761-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="7117672953-1">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7117672953-2">{</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">age</span><[·...·truncated·by·diffoscope;·len:·877,·SHA:·9c9f3f30f0056a889fcb623d52405a91e32dd286217c65def3f0668a6d9e0fcb·...·]-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="7012654500-1">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7012654500-2">{</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">age</span><[·...·truncated·by·diffoscope;·len:·877,·SHA:·7ac857ac639bec86442da947dec6ac1dce1344375fb1a61e4737a179f14314b4·...·]-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="8196297598-2">(</span><span·class="s">&quot;person.hrl&quot;</span><span·class="p"·data-group-id="8196297598-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="8354339233-2">(</span><span·class="s">&quot;person.hrl&quot;</span><span·class="p"·data-group-id="8354339233-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="8196297598-3">(</span><span·class="ss">export_all</span><span·class="p"·data-group-id="8196297598-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="8354339233-3">(</span><span·class="ss">export_all</span><span·class="p"·data-group-id="8354339233-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="8196297598-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="8196297598-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="8354339233-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="8354339233-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="8196297598-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="8354339233-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="8196297598-6">[</span><span·class="p"·data-group-id="8196297598-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="8196297598-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="8354339233-6">[</span><span·class="p"·data-group-id="8354339233-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="8354339233-7">}</span><span·class="p">,</span><span·class="w">
246 ···················</span><span·class="p"·data-group-id="8196297598-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="8196297598-8">}</span><span·class="p"·data-group-id="8196297598-6">]</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·18,·SHA:·c90c92ded3b58529383fea4f23493e7e6fe5b3d390bbd2c2af380833e5147e4c·...·]-5">}</span><span·class="p">.</span><span·class="w">246 ···················</span><span·class="p"·data-group-id="8354339233-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="8354339233-8">}</span><span·class="p"·data-group-id="8354339233-6">]</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·18,·SHA:·f5f954d9bfbd61d380081ac5505be7bc82eedfc9a65bf098a904d2b1eb0d25dd·...·]-5">}</span><span·class="p">.</span><span·class="w">
  
247 </span><span·class="c1">%%·This·demonstrates·matching·in·arguments</span><span·class="w">247 </span><span·class="c1">%%·This·demonstrates·matching·in·arguments</span><span·class="w">
Max diff block lines reached; 12478/71623 bytes (17.42%) of diff not shown.
84.1 KB
./usr/share/doc/erlang-doc/html/doc/system/records_macros.html
    
Offset 124, 40 lines modifiedOffset 124, 40 lines modified
124 </h2>124 </h2>
125 <p>To·illustrate·this,·the·messenger·example·from·the·previous·section·is·divided125 <p>To·illustrate·this,·the·messenger·example·from·the·previous·section·is·divided
126 into·the·following·five·files:</p><ul><li><p><code·class="inline">mess_config.hrl</code></p><p>Header·file·for·configuration·data</p></li><li><p><code·class="inline">mess_interface.hrl</code></p><p>Interface·definitions·between·the·client·and·the·messenger</p></li><li><p><code·class="inline">user_interface.erl</code></p><p>Functions·for·the·user·interface</p></li><li><p><code·class="inline">mess_client.erl</code></p><p>Functions·for·the·client·side·of·the·messenger</p></li><li><p><code·class="inline">mess_server.erl</code></p><p>Functions·for·the·server·side·of·the·messenger</p></li></ul><p>While·doing·this,·the·message·passing·interface·between·the·shell,·the·client,126 into·the·following·five·files:</p><ul><li><p><code·class="inline">mess_config.hrl</code></p><p>Header·file·for·configuration·data</p></li><li><p><code·class="inline">mess_interface.hrl</code></p><p>Interface·definitions·between·the·client·and·the·messenger</p></li><li><p><code·class="inline">user_interface.erl</code></p><p>Functions·for·the·user·interface</p></li><li><p><code·class="inline">mess_client.erl</code></p><p>Functions·for·the·client·side·of·the·messenger</p></li><li><p><code·class="inline">mess_server.erl</code></p><p>Functions·for·the·server·side·of·the·messenger</p></li></ul><p>While·doing·this,·the·message·passing·interface·between·the·shell,·the·client,
127 and·the·server·is·cleaned·up·and·is·defined·using·<em>records</em>.·Also,·<em>macros</em>·are127 and·the·server·is·cleaned·up·and·is·defined·using·<em>records</em>.·Also,·<em>macros</em>·are
128 introduced:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%%----FILE·mess_config.hrl----</span><span·class="w">128 introduced:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%%----FILE·mess_config.hrl----</span><span·class="w">
  
129 </span><span·class="c1">%%%·Configure·the·location·of·the·server·node,</span><span·class="w">129 </span><span·class="c1">%%%·Configure·the·location·of·the·server·node,</span><span·class="w">
130 </span><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="2071230650-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="2071230650-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="1271623833-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="1271623833-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="4809586136-1">(</span><span·class="ss">logon</span><span·class="p">,</span><span·class="p"·data-group-id="4809586136-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:·1ee55ae632088d92159071039abb7a35de5f04d2e926e211c219687298360561·...·]-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="3924030961-1">(</span><span·class="ss">logon</span><span·class="p">,</span><span·class="p"·data-group-id="3924030961-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:·e10704b94365dc9c085a66ddba7be6f3ad4c81a83076ce83ae9f3f47757ef720·...·]-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="4809586136-3">(</span><span·class="ss">message</span><span·class="p">,</span><span·class="p"·data-group-id="4809586136-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:·72bc1e9596211ac46b9ed00872c0dff84e970e09ad1303733e8d4176f0a3d261·...·]-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="3924030961-3">(</span><span·class="ss">message</span><span·class="p">,</span><span·class="p"·data-group-id="3924030961-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:·a9654481cbbf01c3125454a7bece23f4ec3b6d9da64c249efbaf7282f0054a72·...·]-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="4809586136-5">(</span><span·class="ss">abort_client</span><span·class="p">,</span><span·class="p"·data-group-id="4809586136-6">{</span><span·class="ss">message</span><span·class="p"·data-group-id="4809586136-6">}</span><span·class="p"·data-group-id="480958[·...·truncated·by·diffoscope;·len:·4,·SHA:·516454e884d776861937932a9c1bec7c17dff16bdc1de43b6af889c974713427·...·]-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="3924030961-5">(</span><span·class="ss">abort_client</span><span·class="p">,</span><span·class="p"·data-group-id="3924030961-6">{</span><span·class="ss">message</span><span·class="p"·data-group-id="3924030961-6">}</span><span·class="p"·data-group-id="392403[·...·truncated·by·diffoscope;·len:·4,·SHA:·8d446288575d5c12fcf6a25fe7efe8cd66923f68db19fcbdcc3d8445d54f784b·...·]-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="4809586136-7">(</span><span·class="ss">server_reply</span><span·class="p">,</span><span·class="p"·data-group-id="4809586136-8">{</span><span·class="ss">message</span><span·class="p"·data-group-id="4809586136-8">}</span><span·class="p"·data-group-id="480958[·...·truncated·by·diffoscope;·len:·4,·SHA:·516454e884d776861937932a9c1bec7c17dff16bdc1de43b6af889c974713427·...·]-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="3924030961-7">(</span><span·class="ss">server_reply</span><span·class="p">,</span><span·class="p"·data-group-id="3924030961-8">{</span><span·class="ss">message</span><span·class="p"·data-group-id="3924030961-8">}</span><span·class="p"·data-group-id="392403[·...·truncated·by·diffoscope;·len:·4,·SHA:·8d446288575d5c12fcf6a25fe7efe8cd66923f68db19fcbdcc3d8445d54f784b·...·]-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="4809586136-9">(</span><span·class="ss">message_from</span><span·class="p">,</span><span·class="p"·data-group-id="4809586136-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:·f08922de1de835024a32058b66464ceda679e5bfece4004007616ce43c3f2df3·...·]-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="3924030961-9">(</span><span·class="ss">message_from</span><span·class="p">,</span><span·class="p"·data-group-id="3924030961-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:·49eed18ad20e30776fcd34b0c83bbabf8e382046df79b42b1dcd17646d5eebfc·...·]-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="4809586136-11">(</span><span·class="ss">message_to</span><span·class="p">,</span><span·class="p"·data-group-id="4809586136-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:·05f2088b54f9f5e1778c431afae323e9f93698f1942d069b9d03afc08f3fb2ff·...·]-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="3924030961-11">(</span><span·class="ss">message_to</span><span·class="p">,</span><span·class="p"·data-group-id="3924030961-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:·70dafdca4362045a762799364ccf95158ba80d672c75bd9d5a28854378cb6bdd·...·]-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="9851230893-1">(</span><span·class="ss">user_interface</span><span·class="p"·data-group-id="9851230893-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="2582366796-1">(</span><span·class="ss">user_interface</span><span·class="p"·data-group-id="2582366796-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="9851230893-2">(</span><span·class="p"·data-group-id="9851230893-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:·c0a70310cd1ed53a3117fb4a5c5b184062fbcae25cd64165595e38324d569499·...·]-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="2582366796-2">(</span><span·class="p"·data-group-id="2582366796-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:·6842ad4103ce019fa8349cde800af97423731c4588ca6306d726284a4cc0a808·...·]-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="9851230893-4">(</span><span·class="s">&quot;mess_interface.hrl&quot;</span><span·class="p"·data-group-id="9851230893-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="2582366796-4">(</span><span·class="s">&quot;mess_interface.hrl&quot;</span><span·class="p"·data-group-id="2582366796-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="9851230893-5">(</span><span·class="s">&quot;mess_config.hrl&quot;</span><span·class="p"·data-group-id="9851230893-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="2582366796-5">(</span><span·class="s">&quot;mess_config.hrl&quot;</span><span·class="p"·data-group-id="2582366796-5">)</span><span·class="p">.</span><span·class="w">
  
180 </span><span·class="nf">logon</span><span·class="p"·data-group-id="9851230893-6">(</span><span·class="n">Name</span><span·class="p"·data-group-id="9851230893-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="2582366796-6">(</span><span·class="n">Name</span><span·class="p"·data-group-id="2582366796-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="9851230893-7">(</span><span·class="ss">mess_client</span><span·class="p"·data-group-id="9851230893-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="2582366796-7">(</span><span·class="ss">mess_client</span><span·class="p"·data-group-id="2582366796-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="9851230893-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="2582366796-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="9851230893-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="9851230893-10">[</span><span·class="o">?</[·...·truncated·by·diffoscope;·len:·263,·SHA:·a7e0a08e2728b755e33b400a88192f804889a524e90a563687327e2f459d4a07·...·]-8">)</span><span·class="p">;</span><span·class="w">184 ·····················</span><span·class="nf">spawn</span><span·class="p"·data-group-id="2582366796-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="2582366796-10">[</span><span·class="o">?</[·...·truncated·by·diffoscope;·len:·263,·SHA:·afda96471358f48b59662ad31a9af734d3e960c228fb329b35a490230d24f0e7·...·]-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="9851230893-11">(</span><span·class="p"·data-group-id="9851230893-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="2582366796-11">(</span><span·class="p"·data-group-id="2582366796-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="9851230893-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="9851230893-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="2582366796-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="2582366796-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="9851230893-13">(</span><span·class="ss">mess_client</span><span·class="p"·data-group-id="9851230893-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="2582366796-13">(</span><span·class="ss">mess_client</span><span·class="p"·data-group-id="2582366796-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="9851230893-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:·67a084c56393c2ce8c9e9844bef76c81b33cc432876a0c0a6ffd5b52c63aa5ac·...·]-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="2582366796-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:·b667c8d7f01eef2c22bf450964c8ee7516a55cc6e2d87cc08840b8b7dba54052·...·]-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="8405734875-1">(</span><span·class="ss">mess_client</span><span·class="p"·data-group-id="8405734875-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="1756252749-1">(</span><span·class="ss">mess_client</span><span·class="p"·data-group-id="1756252749-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="8405734875-2">(</span><span·class="p"·data-group-id="8405734875-3">[</span><span·class="ss">client</span><span·class="p">/</span><span·class="mi">2</span><span·class="p"·data-group-id="8405734875-3">]</span><span·class="p"·data-group-id="8405734875-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="1756252749-2">(</span><span·class="p"·data-group-id="1756252749-3">[</span><span·class="ss">client</span><span·class="p">/</span><span·class="mi">2</span><span·class="p"·data-group-id="1756252749-3">]</span><span·class="p"·data-group-id="1756252749-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="8405734875-4">(</span><span·class="s">&quot;mess_interface.hrl&quot;</span><span·class="p"·data-group-id="8405734875-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="1756252749-4">(</span><span·class="s">&quot;mess_interface.hrl&quot;</span><span·class="p"·data-group-id="1756252749-4">)</span><span·class="p">.</span><span·class="w">
  
202 </span><span·class="nf">client</span><span·class="p"·data-group-id="8405734875-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="8405734875-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="1756252749-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="1756252749-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
203 ····</span><span·class="p"·data-group-id="8405734875-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="8405734875-6">}</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·<[·...·truncated·by·diffoscope;·len:·476,·SHA:·bd8b0d662dbc3107ecbcd6e28507814f8ec35d6012ad66e287393edeb0235c34·...·]-7">}</span><span·class="p">,</span><span·class="w">203 ····</span><span·class="p"·data-group-id="1756252749-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="1756252749-6">}</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·<[·...·truncated·by·diffoscope;·len:·476,·SHA:·12b61903160516bc991572aa956732ae06a50712f5494a5afce07ea683e1cdb0·...·]-7">}</span><span·class="p">,</span><span·class="w">
204 ····</span><span·class="nf">await_result</span><span·class="p"·data-group-id="8405734875-9">(</span><span·class="p"·data-group-id="8405734875-9">)</span><span·class="p">,</span><span·class="w">204 ····</span><span·class="nf">await_result</span><span·class="p"·data-group-id="1756252749-9">(</span><span·class="p"·data-group-id="1756252749-9">)</span><span·class="p">,</span><span·class="w">
205 ····</span><span·class="nf">client</span><span·class="p"·data-group-id="8405734875-10">(</span><span·class="n">Server_Node</span><span·class="p"·data-group-id="8405734875-10">)</span><span·class="p">.</span><span·class="w">205 ····</span><span·class="nf">client</span><span·class="p"·data-group-id="1756252749-10">(</span><span·class="n">Server_Node</span><span·class="p"·data-group-id="1756252749-10">)</span><span·class="p">.</span><span·class="w">
  
206 </span><span·class="nf">client</span><span·class="p"·data-group-id="8405734875-11">(</span><span·class="n">Server_Node</span><span·class="p"·data-group-id="8405734875-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="1756252749-11">(</span><span·class="n">Server_Node</span><span·class="p"·data-group-id="1756252749-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="8405734875-12">(</span><span·class="ss">normal</span><span·class="p"·data-group-id="8405734875-12">)</span><span·class="p">;</span><span·class="w">209 ············</span><span·class="nf">exit</span><span·class="p"·data-group-id="1756252749-12">(</span><span·class="ss">normal</span><span·class="p"·data-group-id="1756252749-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="8405734875-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"·[·...·truncated·by·diffoscope;·len:·25,·SHA:·468ab938c4e9189ee3bcbeef33ef15bf1a22573071c4c2cb2b9899d2168e0fe8·...·]-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="1756252749-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"·[·...·truncated·by·diffoscope;·len:·25,·SHA:·f34006ad1352d54e513688a95b275cd519f410b0f1d89519da0d4d354d3dc667·...·]-13">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
211 ············</span><span·class="p"·data-group-id="8405734875-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="8405734875-14">}</span><span·class="w">·</span><span·class="o">!</span><span·class="w">211 ············</span><span·class="p"·data-group-id="1756252749-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="1756252749-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="8405734875-15">{</span><span·class="ss">client_pid</span><span·class="o">=</span><span·class="nf">self</span><span·class="p"·data-group-id="8405734875-16">(</span><span·class="p"·data-group-id="8405734875-16">)</span><span·class="p">,</span><span·class="w"[·...·truncated·by·diffoscope;·len:·267,·SHA:·cd4ed3e70f9ed6d735a8967a0fd9de7597008a09250c89f7779d69ef706f6596·...·]-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="1756252749-15">{</span><span·class="ss">client_pid</span><span·class="o">=</span><span·class="nf">self</span><span·class="p"·data-group-id="1756252749-16">(</span><span·class="p"·data-group-id="1756252749-16">)</span><span·class="p">,</span><span·class="w"[·...·truncated·by·diffoscope;·len:·267,·SHA:·7abacb3727af9dfd1f0d003d685023b125d3c5ac479f5c550cc1dae7d63c9696·...·]-15">}</span><span·class="p">,</span><span·class="w">
213 ············</span><span·class="nf">await_result</span><span·class="p"·data-group-id="8405734875-17">(</span><span·class="p"·data-group-id="8405734875-17">)</span><span·class="p">;</span><span·class="w">213 ············</span><span·class="nf">await_result</span><span·class="p"·data-group-id="1756252749-17">(</span><span·class="p"·data-group-id="1756252749-17">)</span><span·class="p">;</span><span·class="w">
214 ········</span><span·class="p"·data-group-id="8405734875-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="840573487[·...·truncated·by·diffoscope;·len:·1,·SHA:·ef2d127de37b942baad06145e54b0c619a1f22327b2ebbcfbec78f5564afe39d·...·]-18">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">214 ········</span><span·class="p"·data-group-id="1756252749-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="175625274[·...·truncated·by·diffoscope;·len:·1,·SHA:·19581e27de7ced00ff1ce50b2047e7a567c76b1cbaebabe5ef03f7c3017bb5b7·...·]-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="8405734875-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:·247,·SHA:·76de61554f4f25421313fd5f016ebd3b86564490992e8b71ba8a06f16c328a6a·...·]-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="1756252749-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:·247,·SHA:·a432bd6fba8965d1a4719acf59207f28d61dbc404107903ab0af9421149c3931·...·]-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="8405734875-21">(</span><span·class="n">Server_Node</span><span·class="p"·data-group-id="8405734875-21">)</span><span·class="p">.</span><span·class="w">217 ····</span><span·class="nf">client</span><span·class="p"·data-group-id="1756252749-21">(</span><span·class="n">Server_Node</span><span·class="p"·data-group-id="1756252749-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="8405734875-22">(</span><span·class="p"·data-group-id="8405734875-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="1756252749-22">(</span><span·class="p"·data-group-id="1756252749-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="8405734875-23">{</span><span·class="ss">message</span><span·class="o">=</span><span·class="n">Why</span><span·class="p"·data-group-id="8405734875-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="1756252749-23">{</span><span·class="ss">message</span><span·class="o">=</span><span·class="n">Why</span><span·class="p"·data-group-id="1756252749-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="8405734875-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="8405734875-25">[</span><span·class="n">Why</[·...·truncated·by·diffoscope;·len:·100,·SHA:·ed4f4bf53974be2d3b5e41ec8f302aeed3a2dc984c82c89a277e3e32f5e297ba·...·]-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="1756252749-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="1756252749-25">[</span><span·class="n">Why</[·...·truncated·by·diffoscope;·len:·100,·SHA:·d833cba0ed7b2e3f68787dfec9488ebcc24b66c70bd32058e76832194f3165f0·...·]-24">)</span><span·class="p">,</span><span·class="w">
223 ············</span><span·class="nf">exit</span><span·class="p"·data-group-id="8405734875-26">(</span><span·class="ss">normal</span><span·class="p"·data-group-id="8405734875-26">)</span><span·class="p">;</span><span·class="w">223 ············</span><span·class="nf">exit</span><span·class="p"·data-group-id="1756252749-26">(</span><span·class="ss">normal</span><span·class="p"·data-group-id="1756252749-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="8405734875-27">{</span><span·class="ss">message</span><span·class="o">=</span><span·class="n">What</span><span·class="p"·data-group-id="8405734875-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="1756252749-27">{</span><span·class="ss">message</span><span·class="o">=</span><span·class="n">What</span><span·class="p"·data-group-id="1756252749-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="8405734875-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="8405734875-29">[</span><span·class="n">What<[·...·truncated·by·diffoscope;·len:·101,·SHA:·fb8b5eeaa452c6e5e9d27457db513bbb88d8e0ece091f1f17fbee8f1b9c3b15f·...·]-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="1756252749-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="1756252749-29">[</span><span·class="n">What<[·...·truncated·by·diffoscope;·len:·101,·SHA:·6742b9b90174b69d635b68db37de1e5ad36a5aa410451c10df4c9529e97c354e·...·]-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="8405734875-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="8405734875-31">[</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·71,·SHA:·94bd383ed9fb7840ee48c6a4d72a3203023e6bba08ac5327444df09c288a4a06·...·]-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="1756252749-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="1756252749-31">[</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·71,·SHA:·1a66180df9c2fb4856bd4fe4cb691138e9ef8cdc64b72982e1f783b51675716f·...·]-30">)</span><span·class="p">,</span><span·class="w">
228 ············</span><span·class="nf">exit</span><span·class="p"·data-group-id="8405734875-32">(</span><span·class="ss">timeout</span><span·class="p"·data-group-id="8405734875-32">)</span><span·class="w">228 ············</span><span·class="nf">exit</span><span·class="p"·data-group-id="1756252749-32">(</span><span·class="ss">timeout</span><span·class="p"·data-group-id="1756252749-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="5278527168-1">(</span><span·class="ss">mess_server</span><span·class="p"·data-group-id="5278527168-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="2012261479-1">(</span><span·class="ss">mess_server</span><span·class="p"·data-group-id="2012261479-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="5278527168-2">(</span><span·class="p"·data-group-id="5278527168-3">[</span><span·class="ss">start_server</span><span·class="p">/</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">server</span><span·class="p">/<[·...·truncated·by·diffoscope;·len:·125,·SHA:·a7c34ad59c5678f3df5f2704da1ec3ac371c44bda66b1c531f78cec400e14293·...·]-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="2012261479-2">(</span><span·class="p"·data-group-id="2012261479-3">[</span><span·class="ss">start_server</span><span·class="p">/</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">server</span><span·class="p">/<[·...·truncated·by·diffoscope;·len:·125,·SHA:·43bcc7c9266c23ce945758217186d4f719b33cd144790a5411851397c6b8670b·...·]-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="5278527168-4">(</span><span·class="s">&quot;mess_interface.hrl&quot;</span><span·class="p"·data-group-id="5278527168-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="2012261479-4">(</span><span·class="s">&quot;mess_interface.hrl&quot;</span><span·class="p"·data-group-id="2012261479-4">)</span><span·class="p">.</span><span·class="w">
  
236 </span><span·class="nf">server</span><span·class="p"·data-group-id="5278527168-5">(</span><span·class="p"·data-group-id="5278527168-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="2012261479-5">(</span><span·class="p"·data-group-id="2012261479-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="5278527168-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="5278527168-6">)</span><span·class="p">,</span><span·class="w">237 ····</span><span·class="nf">process_flag</span><span·class="p"·data-group-id="2012261479-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="2012261479-6">)</span><span·class="p">,</span><span·class="w">
238 ····</span><span·class="nf">server</span><span·class="p"·data-group-id="5278527168-7">(</span><span·class="p"·data-group-id="5278527168-8">[</span><span·class="p"·data-group-id="5278527168-8">]</span><span·class="p"·data-group-id="5278527168-7">)</span><span·class="p">.</span><span·class="w">238 ····</span><span·class="nf">server</span><span·class="p"·data-group-id="2012261479-7">(</span><span·class="p"·data-group-id="2012261479-8">[</span><span·class="p"·data-group-id="2012261479-8">]</span><span·class="p"·data-group-id="2012261479-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="5278527168-9">(</span><span·class="n">User_List</span><span·class="p"·data-group-id="5278527168-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="2012261479-9">(</span><span·class="n">User_List</span><span·class="p"·data-group-id="2012261479-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="5278527168-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="5278527168-11">[</span><span·cla[·...·truncated·by·diffoscope;·len:·118,·SHA:·5847352b4a5cccbeabe72a59f5144e4945c22976f6f55731124c495698e00e7f·...·]-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="2012261479-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="2012261479-11">[</span><span·cla[·...·truncated·by·diffoscope;·len:·118,·SHA:·421454a680d2562599076b76aa7900628047b2aa1ba3d70324f4ffed017ec998·...·]-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="8289326972-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="8289326972-1">)</sp[·...·truncated·by·diffoscope;·len:·204,·SHA:·c9c0e847fc7727e0f4574e960a4394da3241fcd5088ab673fa9b8bfcb203a135·...·]-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="3969457590-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="3969457590-1">)</sp[·...·truncated·by·diffoscope;·len:·204,·SHA:·1efd09326d90683d8fa249aca49b265fe77a4cc3332a651b27a688e80b4d98df·...·]-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="8289326972-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="8289326972-3">)</sp[·...·truncated·by·diffoscope;·len:·204,·SHA:·362a28457d1f889285f3bea16c7d9edc05ef3258bb4c537a0e1574cccf5dc7a9·...·]-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="3969457590-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="3969457590-3">)</sp[·...·truncated·by·diffoscope;·len:·204,·SHA:·db66c1e03a1424ad6b7d2ff226b120493cef6d9d0aeb28a0cc58ae809bfe519e·...·]-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="1401288203-1">(</span><span·class="n">N</span><span·class="p"·data-group-id="1401288203-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="7877785936-1">(</span><span·class="n">N</span><span·class="p"·data-group-id="7877785936-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="1401288203-2">(</span><span·class="n">N</span><span·class="o">-</span><span·class="mi">1</span><span·class="p"·data-group-id="1401288203-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="7877785936-2">(</span><span·class="n">N</span><span·class="o">-</span><span·class="mi">1</span><span·class="p"·data-group-id="7877785936-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="1401288203-3">(</span><span·class="mi">0</span><span·class="p"·data-group-id="1401288203-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="7877785936-3">(</span><span·class="mi">0</span><span·class="p"·data-group-id="7877785936-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="6827319016-1">(</span><span·class="ss">mod</span><span·class="p"·data-group-id="6827319016-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="1528161253-1">(</span><span·class="ss">mod</span><span·class="p"·data-group-id="1528161253-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="6827319016-2">(</span><span·class="p"·data-group-id="6827319016-3">[</span><span·class="ss">fact</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="6827319016-3">]</span><span·class="p"·data-group-id="6827319016-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="1528161253-2">(</span><span·class="p"·data-group-id="1528161253-3">[</span><span·class="ss">fact</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="1528161253-3">]</span><span·class="p"·data-group-id="1528161253-2">)</span><span·class="p">.</span><span·class="w">
  
155 </span><span·class="nf">fact</span><span·class="p"·data-group-id="6827319016-4">(</span><span·class="n">N</span><span·class="p"·data-group-id="6827319016-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="1528161253-4">(</span><span·class="n">N</span><span·class="p"·data-group-id="1528161253-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="6827319016-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="6827319016-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="1528161253-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="1528161253-5">)</span><span·class="p">;</span><span·class="w">
157 </span><span·class="nf">fact</span><span·class="p"·data-group-id="6827319016-6">(</span><span·class="mi">0</span><span·class="p"·data-group-id="6827319016-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="1528161253-6">(</span><span·class="mi">0</span><span·class="p"·data-group-id="1528161253-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="6619396512-1">(</span><span·class="n">N</span><span·class="o">-</span><span·class="mi">1</span><span·class="p"·data-group-id="6619396512-1">)</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="6[·...·truncated·by·diffoscope;·len:·288,·SHA:·2cfceb1e1197d42f797a45e04fd6778338137445ebcb897a249ddb1e362014e9·...·]-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="0025648926-1">(</span><span·class="n">N</span><span·class="o">-</span><span·class="mi">1</span><span·class="p"·data-group-id="0025648926-1">)</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="0[·...·truncated·by·diffoscope;·len:·288,·SHA:·6c73874955e8ed8597c6b377aa7bce9da9653be844cea159caf56f389b8faa4d·...·]-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="6619396512-3">(</span><span·class="mi">0</span><span·class="p"·data-group-id="6619396512-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="0025648926-3">(</span><span·class="mi">0</span><span·class="p"·data-group-id="0025648926-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="1256043024-1">(</span><span·class="n">N</span><span·class="p"·data-group-id="1256043024-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="6369891290-1">(</span><span·class="n">N</span><span·class="p"·data-group-id="6369891290-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="1256043024-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="1256043024-3">[</span><span·class="n">N</span[·...·truncated·by·diffoscope;·len:·95,·SHA:·dd0849bb84e8f29ae802e486a75d8a2424cb8c6c77457cffe1bd04a5f145476a·...·]-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="6369891290-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="6369891290-3">[</span><span·class="n">N</span[·...·truncated·by·diffoscope;·len:·95,·SHA:·2ef473049a45ba33be2e80edd2025d30845817eeea45721b446e445c68ab2bcd·...·]-2">)</span><span·class="p">,</span><span·class="w">
182 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="1256043024-4">(</span><span·class="n">N</span><span·class="o">+</span><span·class="mi">1</span><span·class="p"·data-group-id="1256043024-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="6369891290-4">(</span><span·class="n">N</span><span·class="o">+</span><span·class="mi">1</span><span·class="p"·data-group-id="6369891290-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.6/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.6/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.2/doc/html/lists.html"><code·class="inline">lists</code></a>193 are·also·BIFs·belonging·to·a·few·other·modules,·for·example·<a·href="../../lib/stdlib-6.2.2/doc/html/lists.html"><code·class="inline">lists</code></a>
194 and·<a·href="../../lib/stdlib-6.2.2/doc/html/ets.html"><code·class="inline">ets</code></a>.</p><p>The·most·commonly·used·BIFs·belonging·to·<a·href="../../erts-15.2.6/doc/html/erlang.html"><code·class="inline">erlang</code></a>·are·<em>auto-imported</em>.·They·do194 and·<a·href="../../lib/stdlib-6.2.2/doc/html/ets.html"><code·class="inline">ets</code></a>.</p><p>The·most·commonly·used·BIFs·belonging·to·<a·href="../../erts-15.2.6/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.6/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.6/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="3136291445-1">(</span><span·class="p"·data-group-id="3136291445-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="3136291445-2">}</span><span[·...·truncated·by·diffoscope;·len:·36,·SHA:·aff9d5629b8f291e29e49710c4901c6a7bd2aad5f17e23a1fdf4b3fb00ebb6ca·...·]-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="4028485880-1">(</span><span·class="p"·data-group-id="4028485880-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="4028485880-2">}</span><span[·...·truncated·by·diffoscope;·len:·36,·SHA:·89585856b2f0e3634259d3d0354ab5b120f6c3f2008e9cfd019355e670c19dc6·...·]-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="3136291445-3">(</span><span·class="ss">&#39;Erlang&#39;</span><span·class="p"·data-group-id="3136291445-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="4028485880-3">(</span><span·class="ss">&#39;Erlang&#39;</span><span·class="p"·data-group-id="4028485880-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.6/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="4344662927-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="4344662927-1">)</span><s[·...·truncated·by·diffoscope;·len:·195,·SHA:·75212c25b0ac8fbe6b7b02c03bfc2abde18318c9331abbc95fe3ee4dae3109db·...·]-2">)</span><span·class="w">132 <p>A·process·is·created·by·calling·<a·href="../../erts-15.2.6/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="2368982065-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="2368982065-1">)</span><s[·...·truncated·by·diffoscope;·len:·195,·SHA:·10b74f6b8f9774ac276905f5544acede97833fa12dfa949f3680f4bc873ca50e·...·]-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="4344662927-3">(</span><span·class="p"·data-group-id="4344662927-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="2368982065-3">(</span><span·class="p"·data-group-id="2368982065-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="4344662927-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="4344662927-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="2368982065-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="2368982065-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="4344662927-5">(</span><span·class="p"·data-group-id="4344662927-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="2368982065-5">(</span><span·class="p"·data-group-id="2368982065-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.6/doc/html/erlang.html#spawn/4"><code·class="inline">spawn/1,2,3,4</code></a></li><li><a·href="../../erts-15.2.6/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.6/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.6/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.6/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.6/doc/html/erlang.html#spawn/4"><code·class="inline">spawn/1,2,3,4</code></a></li><li><a·href="../../erts-15.2.6/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.6/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.6/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.6/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="6856054645-1">(</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6856054645-2">{</span><span·class="n">Field1</span><span·class="w">·</span><span·class="p"·data-group-id="6856054645-3">[</span>[·...·truncated·by·diffoscope;·len:·117,·SHA:·fbecf18464d541238a12e596298571331a3e7c4d09f5904c1338f1a3ca29c78b·...·]-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="4668606754-1">(</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4668606754-2">{</span><span·class="n">Field1</span><span·class="w">·</span><span·class="p"·data-group-id="4668606754-3">[</span>[·...·truncated·by·diffoscope;·len:·117,·SHA:·5ccf7038d008f9a66fa6e92e37ecc21b04e35319d6155d7a7b7ecbf2e4bd2810·...·]-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="6856054645-4">[</span><span·class="o">=</span><span·class="w">·</span><span·class="n">ExprN</span><span·class="p"·data-group-id="6856054645-4">]</span><span·class="p"·data-group-id="6856054645-2">}</span><span·class="p"·data-group-id="6856054645-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="4668606754-4">[</span><span·class="o">=</span><span·class="w">·</span><span·class="n">ExprN</span><span·class="p"·data-group-id="4668606754-4">]</span><span·class="p"·data-group-id="4668606754-2">}</span><span·class="p"·data-group-id="4668606754-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.2/doc/html/shell.html"><code·class="inline">shell</code></a>·built-in·function·<code·class="inline">rd/2</code>.</p></section><h2·id="creating-records"·class="section-heading">138 necessary·to·use·the·<a·href="../../lib/stdlib-6.2.2/doc/html/shell.html"><code·class="inline">shell</code></a>·built-in·function·<code·class="inline">rd/2</code>.</p></section><h2·id="creating-records"·class="section-heading">
139 ··<a·href="#creating-records"·class="hover-link">139 ··<a·href="#creating-records"·class="hover-link">
Offset 143, 32 lines modifiedOffset 143, 32 lines modified
143 </h2>143 </h2>
144 <p>The·following·expression·creates·a·new·<code·class="inline">Name</code>·record·where·the·value·of·each144 <p>The·following·expression·creates·a·new·<code·class="inline">Name</code>·record·where·the·value·of·each
145 field·<code·class="inline">FieldI</code>·is·the·value·of·evaluating·the·corresponding·expression·<code·class="inline">ExprI</code>:</p><pre><code·class="text">#Name{Field1=Expr1,·...,·FieldK=ExprK}</code></pre><p>The·fields·can·be·in·any·order,·not·necessarily·the·same·order·as·in·the·record145 field·<code·class="inline">FieldI</code>·is·the·value·of·evaluating·the·corresponding·expression·<code·class="inline">ExprI</code>:</p><pre><code·class="text">#Name{Field1=Expr1,·...,·FieldK=ExprK}</code></pre><p>The·fields·can·be·in·any·order,·not·necessarily·the·same·order·as·in·the·record
146 definition,·and·fields·can·be·omitted.·Omitted·fields·get·their·respective146 definition,·and·fields·can·be·omitted.·Omitted·fields·get·their·respective
147 default·value·instead.</p><p>If·several·fields·are·to·be·assigned·the·same·value,·the·following·construction147 default·value·instead.</p><p>If·several·fields·are·to·be·assigned·the·same·value,·the·following·construction
148 can·be·used:</p><pre><code·class="text">#Name{Field1=Expr1,·...,·FieldK=ExprK,·_=ExprL}</code></pre><p>Omitted·fields·then·get·the·value·of·evaluating·<code·class="inline">ExprL</code>·instead·of·their·default148 can·be·used:</p><pre><code·class="text">#Name{Field1=Expr1,·...,·FieldK=ExprK,·_=ExprL}</code></pre><p>Omitted·fields·then·get·the·value·of·evaluating·<code·class="inline">ExprL</code>·instead·of·their·default
149 values.·This·feature·is·primarily·intended·to·be·used·to·create·patterns·for·ETS149 values.·This·feature·is·primarily·intended·to·be·used·to·create·patterns·for·ETS
150 and·Mnesia·match·functions.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="8716325913-1">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8716325913-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:·3b43c4c643abaa748d3f1c86e3d0c480284db8d664bd9f05194e6216b84ae331·...·]-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="2931775515-1">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2931775515-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:·6ddc44b043933138953091ddf13425041dc02ff248736a680074af0a34a28356·...·]-1">)</span><span·class="p">.</span><span·class="w">
  
151 </span><span·class="nf">lookup</span><span·class="p"·data-group-id="8716325913-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="8716325913-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="2931775515-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="2931775515-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="8716325913-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="8716325913-5">{</span><span·class="ss">name</span><span·class="o">=</span><[·...·truncated·by·diffoscope;·len:·251,·SHA:·9ed9c6a2f3bd78dc260a120478b54f0c33e419a83fb542c984a1f76d74a5d17b·...·]-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="2931775515-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="2931775515-5">{</span><span·class="ss">name</span><span·class="o">=</span><[·...·truncated·by·diffoscope;·len:·251,·SHA:·b6b5058c765781073b02b0ee9789b46ab24a8d02ad18918481d5da8f64d3c563·...·]-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="5110721972-1">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5110721972-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:·3d7159bd638069dae387ec10550ac2de955a0c9482ba3f8fea976873b86895de·...·]-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="7048188621-1">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7048188621-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:·e47bc2b3c7a50147a740927228dd58850fd7da83178a9ee539eaa585bb9dadcc·...·]-1">)</span><span·class="p">.</span><span·class="w">
  
160 </span><span·class="nf">get_person_name</span><span·class="p"·data-group-id="5110721972-3">(</span><span·class="n">Person</span><span·class="p"·data-group-id="5110721972-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="7048188621-3">(</span><span·class="n">Person</span><span·class="p"·data-group-id="7048188621-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="1613826066-1">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1613826066-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:·4300a6e8a2a005ee2281f7cca0ff8c26a9aa987b5c77a221ef6cda34f7e8b696·...·]-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="4960919954-1">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4960919954-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:·dccac6b2734b658804ee6959618973471f9d66e7450cb10abcf343bd4bc983f4·...·]-1">)</span><span·class="p">.</span><span·class="w">
  
163 </span><span·class="nf">lookup</span><span·class="p"·data-group-id="1613826066-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="1613826066-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="4960919954-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="4960919954-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="1613826066-4">(</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">person</span><span·class="p">.</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·63,·SHA:·30d9a6ab71fdecdecef1415062184fdc7707fca9236464d20d1aa9b4ef7bc787·...·]-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="4960919954-4">(</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">person</span><span·class="p">.</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·63,·SHA:·e4f5d393db3315b5001ab82db42d0bf9dd247fe5fd2b9f8ed61588492c9daaee·...·]-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="4916217608-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="4916217608-1">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·442,·SHA:·681a5467e4208a705aeef2bf4bb7d7ed82c2da5b27e07a10bc662e2997fffc4e·...·]-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="9433432353-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="9433432353-1">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·442,·SHA:·9768a3805ddf6a5ef6923eb3cbdbee44af3b7af239f2bd9526bedea685aa6731·...·]-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="4916217608-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="4916217608-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="9433432353-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="9433432353-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.6/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="6067071004-1">(</span><span·class="n">P</span><span·class="p"·data-group-id="6067071004-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="6067071004-2">(</s[·...·truncated·by·diffoscope;·len:·147,·SHA:·81b4bd8da98c553d09fbe8bc38444a175b3d153f7a37aa41b2a7a3a909306b12·...·]-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.6/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="4851832890-1">(</span><span·class="n">P</span><span·class="p"·data-group-id="4851832890-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="4851832890-2">(</s[·...·truncated·by·diffoscope;·len:·147,·SHA:·9da95a43409b4a316278f09f994ea9632f12e7036fd365a2ecae242c98d5f7dc·...·]-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="6067071004-3">(</span><span·class="p">_</span><span·class="n">P</span><span·class="p"·data-group-id="6067071004-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="4851832890-3">(</span><span·class="p">_</span><span·class="n">P</span><span·class="p"·data-group-id="4851832890-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="5234957042-1">(</span><span·class="ss">nrec0</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5234957042-2">{</span><span·class="ss">name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·130,·SHA:·e578f83b785790477a50cbe91dc3639ffdb3d2e58b6423053fea44be8a3eb23e·...·]-1">)</span><span·class="p">.</span><span·class="w">204 <p>Assume·the·following·record·definitions:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="5269829985-1">(</span><span·class="ss">nrec0</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5269829985-2">{</span><span·class="ss">name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·130,·SHA:·320cd53df1b5579d69d17f806b39f15f2cd18e614f3ef1183bb191f3de52ce0e·...·]-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="5234957042-3">(</span><span·class="ss">nrec1</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5234957042-4">{</span><span·class="ss">name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·390,·SHA:·7e146beb51f942587283ba3fd72bb2130564693edd312f51352a18a48891be68·...·]-3">)</span><span·class="p">.</span><span·class="w">205 </span><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="5269829985-3">(</span><span·class="ss">nrec1</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5269829985-4">{</span><span·class="ss">name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·390,·SHA:·699bbd4cffba2e6c9f0aadebd9abb51e90fbfd46bbcff899b44483bbae506941·...·]-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="5234957042-6">(</span><span·class="ss">nrec2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5234957042-7">{</span><span·class="ss">name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·390,·SHA:·d49d532626aa7774002a1fd29d186874c782ca29704d1be7b894ec3b278f47d7·...·]-6">)</span><span·class="p">.</span><span·class="w">206 </span><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="5269829985-6">(</span><span·class="ss">nrec2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5269829985-7">{</span><span·class="ss">name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·390,·SHA:·4cae2d1a76d7574444d4793a495c305e08623c922e22cf3c4fcc2911e0e99f54·...·]-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="5234957042-9">{</span><span·class="p"·data-group-id="5234957042-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="5269829985-9">{</span><span·class="p"·data-group-id="5269829985-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="3684871099-1">(</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3684871099-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:·f8fbb0a1925412f597a78f0ad057eca1e2e512fe94b78618faf549818c430e32·...·]-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="4228778133-1">(</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4228778133-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:·c19ba9b7930b390139dcdac9014a9ccdadf1dbedd53e2df2367a492813b83ffe·...·]-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="0581321434-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="0581321434-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="0581321434-2">[</span><span·class="n">Field</span><span·class="p"·data-group-id="0581321434-2">]</span><span·class="w"> 
219 </span><span·class="nf">record_info</span><span·class="p"·data-group-id="0581321434-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="0581321434-3">)</span><sp[·...·truncated·by·diffoscope;·len:·216,·SHA:·dbe5cd2b032485dac7384e2d3ff22e1357da302e3c3e9f59d7f5b684c3d56890·...·]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="1792158675-1">(</span><span·class="ss">fields</span><span·class="p">,</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·303,·SHA:·a8a548cfc8f93095ece461afb242cc0c8ac7505ce5acacf42a5d307a10a2c485·...·]
 219 </span><span·class="nf">record_info</span><span·class="p"·data-group-id="1792158675-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="1792158675-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.2/doc/html/gen_server.html"><code·class="inline">gen_server</code></a>,·simple·code·replacement·is·not·sufficient.226 the·internal·state·of·a·<a·href="../../lib/stdlib-6.2.2/doc/html/gen_server.html"><code·class="inline">gen_server</code></a>,·simple·code·replacement·is·not·sufficient.
227 Instead,·it·is·necessary·to:</p><ul><li>Suspend·the·processes·using·the·module·(to·avoid·that·they·try·to·handle·any227 Instead,·it·is·necessary·to:</p><ul><li>Suspend·the·processes·using·the·module·(to·avoid·that·they·try·to·handle·any
228 requests·before·the·code·replacement·is·completed).</li><li>Ask·them·to·transform·the·internal·state·format·and·switch·to·the·new·version228 requests·before·the·code·replacement·is·completed).</li><li>Ask·them·to·transform·the·internal·state·format·and·switch·to·the·new·version
229 of·the·module.</li><li>Remove·the·old·version.</li><li>Resume·the·processes.</li></ul><p>This·is·called·<em>synchronized·code·replacement</em>·and·for·this·the·following229 of·the·module.</li><li>Remove·the·old·version.</li><li>Resume·the·processes.</li></ul><p>This·is·called·<em>synchronized·code·replacement</em>·and·for·this·the·following
230 instructions·are·used:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="5760015710-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="5760015710-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="5760015710-2">}</span><span·class="p"·data-group-id="5760015710-1">}</span><span·class="w"> 
231 </span><span·class="p"·data-group-id="5760015710-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:·2d61ef3afde4864462e8b920e8340ff527a88af9313a0e518ea7c7d72c4abd16·...·]230 instructions·are·used:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="6161706601-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:·f14b1f6e2020cd036821e958dc7fd114a6b50fbabfaeb679e619a949b96d223c·...·]
 231 </span><span·class="p"·data-group-id="6161706601-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="6161706601-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="4163673665-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:·8545faa04f9e6f61f2d675893d096ddb5a2a375d19d9158f2c3e1d0eb06f6242·...·]-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="5759166046-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:·9ca465d0f290329af49cae4e3c9969a9433deec77bc99f5526d77751e611bf01·...·]-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="7488465097-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="7488465097-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="3679912479-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="3679912479-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="5850451596-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="5850451596-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="1937080567-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="1937080567-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="3312191596-1">(</span><span·class="ss">ch3</span><span·class="p"·data-group-id="3312191596-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="2461038947-1">(</span><span·class="ss">ch3</span><span·class="p"·data-group-id="2461038947-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="3312191596-2">(</span><span·class="ss">gen_server</span><span·class="p"·data-group-id="3312191596-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="2461038947-2">(</span><span·class="ss">gen_server</span><span·class="p"·data-group-id="2461038947-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="3312191596-3">(</span><span·class="p"·data-group-id="3312191596-4">[</span><span·class="ss">start_link</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="3312191596-4">]</span><span·class="p"·data-group-id="3312191596-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="2461038947-3">(</span><span·class="p"·data-group-id="2461038947-4">[</span><span·class="ss">start_link</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="2461038947-4">]</span><span·class="p"·data-group-id="2461038947-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="3312191596-5">(</span><span·class="p"·data-group-id="3312191596-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:·472c2ee162c81fa96937dc581db9df08bf6294e6a5819291385e7c79b72e84a9·...·]-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="2461038947-5">(</span><span·class="p"·data-group-id="2461038947-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:·2261db41199eefc5b81b403190ef47fb0270f83564a23830d088142a999cfb41·...·]-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="3312191596-7">(</span><span·class="p"·data-group-id="3312191596-8">[</span><span·class="ss">available</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="3312191596-8">]</span><span·class="p"·data-group-id="3312191596-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="2461038947-7">(</span><span·class="p"·data-group-id="2461038947-8">[</span><span·class="ss">available</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="2461038947-8">]</span><span·class="p"·data-group-id="2461038947-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="3312191596-9">(</span><span·class="p"·data-group-id="3312191596-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:·06707dc0f05f76122bba36e5dd0dfaa50b8ba75b1fbcf1fa0f3ab7b7e5e6aedf·...·]-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="2461038947-9">(</span><span·class="p"·data-group-id="2461038947-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:·fe51620e4fda258fc88f870cf95434e3a3b9aab93de6255befd746f8c3715ef3·...·]-9">)</span><span·class="p">.</span><span·class="w">
  
355 </span><span·class="nf">start_link</span><span·class="p"·data-group-id="3312191596-11">(</span><span·class="p"·data-group-id="3312191596-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="2461038947-11">(</span><span·class="p"·data-group-id="2461038947-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="3312191596-12">(</span><span·class="p"·data-group-id="3312191596-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="3312191596-13">}</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·407,·SHA:·757b89fabcff310acfcaa53e0a6dcb4badb2ae3ecb9ca69078dd63182b0bb910·...·]-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="2461038947-12">(</span><span·class="p"·data-group-id="2461038947-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="2461038947-13">}</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·407,·SHA:·95c11bb0a5ec264322045966c7f3fff52c22de3059d39f427a3056dd58fe4385·...·]-12">)</span><span·class="p">.</span><span·class="w">
  
357 </span><span·class="nf">alloc</span><span·class="p"·data-group-id="3312191596-16">(</span><span·class="p"·data-group-id="3312191596-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="2461038947-16">(</span><span·class="p"·data-group-id="2461038947-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="3312191596-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="3312191596-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="2461038947-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="2461038947-17">)</span><span·class="p">.</span><span·class="w">
  
359 </span><span·class="nf">free</span><span·class="p"·data-group-id="3312191596-18">(</span><span·class="n">Ch</span><span·class="p"·data-group-id="3312191596-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="2461038947-18">(</span><span·class="n">Ch</span><span·class="p"·data-group-id="2461038947-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="3312191596-19">(</span><span·class="ss">ch3</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3312191596-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:·84a165d48e9c670c97df2d1606c5b5ad736d4dd766aead9fdcf9fe968e49c59e·...·]-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="2461038947-19">(</span><span·class="ss">ch3</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2461038947-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:·52f7e246c7f42af6e1e8a0efe9156c0042da511be4a4052d492ff0021e4df838·...·]-19">)</span><span·class="p">.</span><span·class="w">
  
361 </span><span·class="nf">available</span><span·class="p"·data-group-id="3312191596-21">(</span><span·class="p"·data-group-id="3312191596-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="2461038947-21">(</span><span·class="p"·data-group-id="2461038947-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="3312191596-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="3312191596-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="2461038947-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="2461038947-22">)</span><span·class="p">.</span><span·class="w">
  
363 </span><span·class="nf">init</span><span·class="p"·data-group-id="3312191596-23">(</span><span·class="p">_</span><span·class="n">Args</span><span·class="p"·data-group-id="3312191596-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="2461038947-23">(</span><span·class="p">_</span><span·class="n">Args</span><span·class="p"·data-group-id="2461038947-23">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
364 ····</span><span·class="p"·data-group-id="3312191596-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="3312191596-25">(</span><span·class="p"·data-group-id="3312191596-25">)</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·3ad77792d83b350a2fcb242b4169fbcfea3ae84027ce37565869de0bf38642f5·...·]-24">}</span><span·class="p">.</span><span·class="w">364 ····</span><span·class="p"·data-group-id="2461038947-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="2461038947-25">(</span><span·class="p"·data-group-id="2461038947-25">)</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·9619bef91eadb732111b33b8bf6309ce29e280971818e375322e6778f9a598bc·...·]-24">}</span><span·class="p">.</span><span·class="w">
  
365 </span><span·class="nf">handle_call</span><span·class="p"·data-group-id="3312191596-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:·457552176621ed176c7d2bb843e46cbbd52ce9f1011210aa8bf59a0e6223a9bd·...·]-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="2461038947-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:·c19a3be70ae9945c7c9738b73455a6473d7e8527a0d55650cc0dc0be919f8839·...·]-26">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
366 ····</span><span·class="p"·data-group-id="3312191596-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="3312191596-27">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·143,·SHA:·621b4a5adb17d03dd3d011245686713c27a7e74535f4c5d725e06c9e677754f6·...·]-28">)</span><span·class="p">,</span><span·class="w">366 ····</span><span·class="p"·data-group-id="2461038947-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="2461038947-27">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·143,·SHA:·2c4c62b9543f57bd159a82272c3b6a09d68dada49d68a3340d712b8acecad522·...·]-28">)</span><span·class="p">,</span><span·class="w">
367 ····</span><span·class="p"·data-group-id="3312191596-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="3312191596-29">}</span><span·class="p">;</span><span·class="w">367 ····</span><span·class="p"·data-group-id="2461038947-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="2461038947-29">}</span><span·class="p">;</span><span·class="w">
368 </span><span·class="nf">handle_call</span><span·class="p"·data-group-id="3312191596-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:·7cc649ad687444228fee16d87825aa2f29cef8f4c938e6f47aa57a94452e8e8c·...·]-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="2461038947-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:·00694cb0dc265d08662d9dfc2a51e8a8afc6f3a2e7b3010335ef60ee292e0740·...·]-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="3312191596-31">(</span><span·class="n">Chs</span><span·class="p"·data-group-id="3312191596-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="2461038947-31">(</span><span·class="n">Chs</span><span·class="p"·data-group-id="2461038947-31">)</span><span·class="p">,</span><span·class="w">
370 ····</span><span·class="p"·data-group-id="3312191596-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="3312191596-32">}</span><span·class="p">.</span><span·class="w">370 ····</span><span·class="p"·data-group-id="2461038947-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="2461038947-32">}</span><span·class="p">.</span><span·class="w">
  
371 </span><span·class="nf">handle_cast</span><span·class="p"·data-group-id="3312191596-33">(</span><span·class="p"·data-group-id="3312191596-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="3312191596-34">}</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·91,·SHA:·c9a994a8c1d80ba07e0f973b173400b7322e693f0123d23403086bcbef36a3de·...·]-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="2461038947-33">(</span><span·class="p"·data-group-id="2461038947-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="2461038947-34">}</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·91,·SHA:·cd919a4b3dfe19c2c6c1a2ae335a2a3909327695b857d699a074ed9809bfe2b4·...·]-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="3312191596-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="3312191596-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="2461038947-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="2461038947-35">)</span><span·class="p">,</span><span·class="w">
373 ····</span><span·class="p"·data-group-id="3312191596-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="3312191596-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="2461038947-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="2461038947-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="8706559336-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="4654894431-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="8706559336-2">[</span><span·class="p"·data-group-id="8706559336-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="8706559336-3">}</span><span·class="p">,</span><span·class="w">375 ·</span><span·class="p"·data-group-id="4654894431-2">[</span><span·class="p"·data-group-id="4654894431-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="4654894431-3">}</span><span·class="p">,</span><span·class="w">
376 ··</span><span·class="p"·data-group-id="8706559336-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="8706559336-4">}</span><span·class="p">,</span><span·class="w">376 ··</span><span·class="p"·data-group-id="4654894431-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="4654894431-4">}</span><span·class="p">,</span><span·class="w">
377 ··</span><span·class="p"·data-group-id="8706559336-5">{</span><span·class="ss">modules</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8706559336-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:·7c018fc182987d5fef21c387d044a77f83d50453b8ed7d3c111c496b3b58289e·...·]-5">}</span><span·class="p">,</span><span·class="w">377 ··</span><span·class="p"·data-group-id="4654894431-5">{</span><span·class="ss">modules</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4654894431-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:·02bdd0d7b4cb4f46abee6dbd7196681d2a946bf02379eab00bf35b48c05cab0c·...·]-5">}</span><span·class="p">,</span><span·class="w">
378 ··</span><span·class="p"·data-group-id="8706559336-7">{</span><span·class="ss">registered</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8706559336-8">[</span><span·class="ss">ch3</span><span·class="p"·data-group-id="8706559336-8">]</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·279fbc7cfe9295cfe317d5d9ba0b9ea082473b5c15c0f0c958d9fed4016ccc70·...·]-7">}</span><span·class="p">,</span><span·class="w">378 ··</span><span·class="p"·data-group-id="4654894431-7">{</span><span·class="ss">registered</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4654894431-8">[</span><span·class="ss">ch3</span><span·class="p"·data-group-id="4654894431-8">]</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·602b4070657410779466702c849fb01868334adc480ca80514229d4a26f54017·...·]-7">}</span><span·class="p">,</span><span·class="w">
379 ··</span><span·class="p"·data-group-id="8706559336-9">{</span><span·class="ss">applications</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8706559336-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:·31f8d317816ddbcf43aee8c047b6ee92c667264d16da680f5f4a01cc92e871e0·...·]-9">}</span><span·class="p">,</span><span·class="w">379 ··</span><span·class="p"·data-group-id="4654894431-9">{</span><span·class="ss">applications</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4654894431-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:·1788d2d9ac8bada694f6f4c33e0ca3b52bb318ac84377e9ffa5778519b2ad140·...·]-9">}</span><span·class="p">,</span><span·class="w">
380 ··</span><span·class="p"·data-group-id="8706559336-11">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8706559336-12">{</span><span·class="ss">ch_app</span><span·class="p">,</span><span·class="p"·data-group-id="8706559336-13">[</s[·...·truncated·by·diffoscope;·len:·153,·SHA:·39b19a68bbb57e61ee202de1f2b8ae5334a9e8d4ec0545783b59212e753f4861·...·]-11">}</span><span·class="w">380 ··</span><span·class="p"·data-group-id="4654894431-11">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4654894431-12">{</span><span·class="ss">ch_app</span><span·class="p">,</span><span·class="p"·data-group-id="4654894431-13">[</s[·...·truncated·by·diffoscope;·len:·153,·SHA:·2c892cdd1c5eb1189f48a8efcc03fa885c6d52c731066a6cac201347319210b1·...·]-11">}</span><span·class="w">
381 ·</span><span·class="p"·data-group-id="8706559336-2">]</span><span·class="p"·data-group-id="8706559336-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="4654894431-2">]</span><span·class="p"·data-group-id="4654894431-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="1950590403-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="5070402507-1">{</span><span·class="s">&quot;2&quot;</span><span·class="p">,</span><span·class="w">
384 ·</span><span·class="p"·data-group-id="1950590403-2">[</span><span·class="p"·data-group-id="1950590403-3">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1950590403-4">[</span><span·class="p"·data-group-id="1950590403-5"[·...·truncated·by·diffoscope;·len:·319,·SHA:·27deb3ce6c4fc54024cda2f9a5ec3877fd9576b69f8002533da21861f51dc020·...·]-2">]</span><span·class="p">,</span><span·class="w">384 ·</span><span·class="p"·data-group-id="5070402507-2">[</span><span·class="p"·data-group-id="5070402507-3">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5070402507-4">[</span><span·class="p"·data-group-id="5070402507-5"[·...·truncated·by·diffoscope;·len:·319,·SHA:·0a94dbb31d34cc877a7feb2f75df656f4986973fe509191ad0481636955b721e·...·]-2">]</span><span·class="p">,</span><span·class="w">
385 ·</span><span·class="p"·data-group-id="1950590403-6">[</span><span·class="p"·data-group-id="1950590403-7">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1950590403-8">[</span><span·class="p"·data-group-id="1950590403-9"[·...·truncated·by·diffoscope;·len:·319,·SHA:·56b24d8fb47277faa9e67ff668d1e7f5a741892af70c415e4d17564cfa1a0423·...·]-6">]</span><span·class="w">385 ·</span><span·class="p"·data-group-id="5070402507-6">[</span><span·class="p"·data-group-id="5070402507-7">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5070402507-8">[</span><span·class="p"·data-group-id="5070402507-9"[·...·truncated·by·diffoscope;·len:·319,·SHA:·e0efb98cd3a1aa045fc191fb64389ccd329c5d3a9456d1c274367f8f991cc3d7·...·]-6">]</span><span·class="w">
386 </span><span·class="p"·data-group-id="1950590403-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="5070402507-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="8901159069-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="0480859145-1">{</span><span·class="ss">release</span><span·class="p">,</span><span·class="w">
413 ·</span><span·class="p"·data-group-id="8901159069-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="8901159069-2">}</span><span·class="p">,</span><span·class="w">413 ·</span><span·class="p"·data-group-id="0480859145-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="0480859145-2">}</span><span·class="p">,</span><span·class="w">
414 ·</span><span·class="p"·data-group-id="8901159069-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="8901159069-3">}</span><span·class="p">,</span><span·class="w">414 ·</span><span·class="p"·data-group-id="0480859145-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="0480859145-3">}</span><span·class="p">,</span><span·class="w">
415 ·</span><span·class="p"·data-group-id="8901159069-4">[</span><span·class="p"·data-group-id="8901159069-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="8901159069-5">}</span><span·class="p">,</span><span·class="w">415 ·</span><span·class="p"·data-group-id="0480859145-4">[</span><span·class="p"·data-group-id="0480859145-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="0480859145-5">}</span><span·class="p">,</span><span·class="w">
416 ··</span><span·class="p"·data-group-id="8901159069-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="8901159069-6">}</span><span·class="p">,</span><span·class="w">416 ··</span><span·class="p"·data-group-id="0480859145-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="0480859145-6">}</span><span·class="p">,</span><span·class="w">
417 ··</span><span·class="p"·data-group-id="8901159069-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="8901159069-7">}</span><span·class="p">,</span><span·class="w">417 ··</span><span·class="p"·data-group-id="0480859145-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="0480859145-7">}</span><span·class="p">,</span><span·class="w">
418 ··</span><span·class="p"·data-group-id="8901159069-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="8901159069-8">}</span><span·class="p"·data-group-id="8901159069-4">]</span><span·class="w">418 ··</span><span·class="p"·data-group-id="0480859145-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="0480859145-8">}</span><span·class="p"·data-group-id="0480859145-4">]</span><span·class="w">
419 </span><span·class="p"·data-group-id="8901159069-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="0480859145-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="8632251324-1">{</span><span·class="ss">release</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8632251324-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:·3e32a62a4ae6549ddc17e6b95a978951cd3373522fb4d082c9a379f0586610c1·...·]-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="4323707028-1">{</span><span·class="ss">release</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4323707028-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:·e444f32a9a67d22ced69991b5a3342dd26dbe2ed824137538e6ed8291323bd7b·...·]-3">}</span><span·class="p">,</span><span·class="w">
144 ·</span><span·class="p"·data-group-id="8632251324-4">[</span><span·class="p"·data-group-id="8632251324-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="8632251324-5">}</span><span·class="p">,</span><span·class="w">144 ·</span><span·class="p"·data-group-id="4323707028-4">[</span><span·class="p"·data-group-id="4323707028-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="4323707028-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="8632251324-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="8632251324-6">}</span><span·class="p"·data-group-id="8632251324-4">]</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·8073194f564b356b5004ad781d308e56b6f6e03c5d4bd1ec3d278cae5d602584·...·]-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="4323707028-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="4323707028-6">}</span><span·class="p"·data-group-id="4323707028-4">]</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·2081d8a200aff62a455fc6577e0a4f14466b42033148518b9723aca678ff80ff·...·]-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="7360041931-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="5539355673-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="7360041931-2">[</span><span·class="p"·data-group-id="7360041931-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="7360041931-3">}</span><span·class="p">,</span><span·class="w">151 ·</span><span·class="p"·data-group-id="5539355673-2">[</span><span·class="p"·data-group-id="5539355673-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="5539355673-3">}</span><span·class="p">,</span><span·class="w">
152 ··</span><span·class="p"·data-group-id="7360041931-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="7360041931-4">}</span><span·class="p">,</span><span·class="w">152 ··</span><span·class="p"·data-group-id="5539355673-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="5539355673-4">}</span><span·class="p">,</span><span·class="w">
153 ··</span><span·class="p"·data-group-id="7360041931-5">{</span><span·class="ss">modules</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7360041931-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:·862ae9bc261d1ef493713e31188b5812667a54312bd8b81241a414a2d9d496dc·...·]-5">}</span><span·class="p">,</span><span·class="w">153 ··</span><span·class="p"·data-group-id="5539355673-5">{</span><span·class="ss">modules</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5539355673-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:·e73b4c1a863c5ad40664914a81df377c69ffb803f36a609e706ba30ac4fb7e20·...·]-5">}</span><span·class="p">,</span><span·class="w">
154 ··</span><span·class="p"·data-group-id="7360041931-7">{</span><span·class="ss">registered</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7360041931-8">[</span><span·class="ss">ch3</span><span·class="p"·data-group-id="7360041931-8">]</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·0a722b7ffb66a214a4fa062c77251d8c44aca4da53f4d23ed207830c99205f88·...·]-7">}</span><span·class="p">,</span><span·class="w">154 ··</span><span·class="p"·data-group-id="5539355673-7">{</span><span·class="ss">registered</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5539355673-8">[</span><span·class="ss">ch3</span><span·class="p"·data-group-id="5539355673-8">]</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·e1de73bf57dae76829c1f3141b1c42414b881c8357fe942058655809b84cbe89·...·]-7">}</span><span·class="p">,</span><span·class="w">
155 ··</span><span·class="p"·data-group-id="7360041931-9">{</span><span·class="ss">applications</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7360041931-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:·457c18a3be2c7e3b225eb3a2061e668ff87f76ba7cc1f25e70d30993c51c6902·...·]-9">}</span><span·class="p">,</span><span·class="w">155 ··</span><span·class="p"·data-group-id="5539355673-9">{</span><span·class="ss">applications</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5539355673-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:·91ef02308688fbf959f4b24856cdf902e1b4ebbbf2c17faf035ffa8425149f36·...·]-9">}</span><span·class="p">,</span><span·class="w">
156 ··</span><span·class="p"·data-group-id="7360041931-11">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7360041931-12">{</span><span·class="ss">ch_app</span><span·class="p">,</span><span·class="p"·data-group-id="7360041931-13">[</s[·...·truncated·by·diffoscope;·len:·153,·SHA:·a0cb683632bfbb4b9e28834888ac97618856a85a42bd0a5ecf0ef80a04051a22·...·]-11">}</span><span·class="w">156 ··</span><span·class="p"·data-group-id="5539355673-11">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5539355673-12">{</span><span·class="ss">ch_app</span><span·class="p">,</span><span·class="p"·data-group-id="5539355673-13">[</s[·...·truncated·by·diffoscope;·len:·153,·SHA:·250f6f5bc062648afc3d04d7e3775031db284187030b8e15025100562ae81385·...·]-11">}</span><span·class="w">
157 ·</span><span·class="p"·data-group-id="7360041931-2">]</span><span·class="p"·data-group-id="7360041931-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="5539355673-2">]</span><span·class="p"·data-group-id="5539355673-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="8305142583-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="4468146001-1">{</span><span·class="ss">release</span><span·class="p">,</span><span·class="w">
159 ·</span><span·class="p"·data-group-id="8305142583-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="8305142583-2">}</span><span·class="p">,</span><span·class="w">159 ·</span><span·class="p"·data-group-id="4468146001-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="4468146001-2">}</span><span·class="p">,</span><span·class="w">
160 ·</span><span·class="p"·data-group-id="8305142583-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="8305142583-3">}</span><span·class="p">,</span><span·class="w">160 ·</span><span·class="p"·data-group-id="4468146001-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="4468146001-3">}</span><span·class="p">,</span><span·class="w">
161 ·</span><span·class="p"·data-group-id="8305142583-4">[</span><span·class="p"·data-group-id="8305142583-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="8305142583-5">}</span><span·class="p">,</span><span·class="w">161 ·</span><span·class="p"·data-group-id="4468146001-4">[</span><span·class="p"·data-group-id="4468146001-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="4468146001-5">}</span><span·class="p">,</span><span·class="w">
162 ··</span><span·class="p"·data-group-id="8305142583-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="8305142583-6">}</span><span·class="p">,</span><span·class="w">162 ··</span><span·class="p"·data-group-id="4468146001-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="4468146001-6">}</span><span·class="p">,</span><span·class="w">
163 ··</span><span·class="p"·data-group-id="8305142583-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="8305142583-7">}</span><span·class="p">,</span><span·class="w">163 ··</span><span·class="p"·data-group-id="4468146001-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="4468146001-7">}</span><span·class="p">,</span><span·class="w">
164 ··</span><span·class="p"·data-group-id="8305142583-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="8305142583-8">}</span><span·class="p"·data-group-id="8305142583-4">]</span><span·class="w">164 ··</span><span·class="p"·data-group-id="4468146001-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="4468146001-8">}</span><span·class="p"·data-group-id="4468146001-4">]</span><span·class="w">
165 </span><span·class="p"·data-group-id="8305142583-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="4468146001-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="2703113504-1">(</span><span·class="s">&quot;ch_rel-1&quot;</span><span·class="p"·data-group-id="2703113504-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="8159024797-1">(</span><span·class="s">&quot;ch_rel-1&quot;</span><span·class="p"·data-group-id="8159024797-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="2703113504-2">(</span><span·class="s">&quot;ch_rel-1&quot;</span><span·class="p"·data-group-id="2703113504-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="8159024797-2">(</span><span·class="s">&quot;ch_rel-1&quot;</span><span·class="p"·data-group-id="8159024797-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="1070206525-1">(</span><span·class="ss">tut19</span><span·class="p"·data-group-id="1070206525-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="3439053064-1">(</span><span·class="ss">tut19</span><span·class="p"·data-group-id="3439053064-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="1070206525-2">(</span><span·class="p"·data-group-id="1070206525-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:·7e51fce751f1ba14edb93c9438c2ed20fe74dba379afe832cbe1d8295d11f245·...·]-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="3439053064-2">(</span><span·class="p"·data-group-id="3439053064-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:·7e2357cd5ffb9affb6b65377ff132defa7332456d4d77dc57e6faf868fb5c9d0·...·]-2">)</span><span·class="p">.</span><span·class="w">
  
138 </span><span·class="nf">ping</span><span·class="p"·data-group-id="1070206525-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="1070206525-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="3439053064-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="3439053064-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="1070206525-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="1070206525-6">[</span><span·class="p"·data-group-id="10702[·...·truncated·by·diffoscope;·len:·58,·SHA:·4e49b88c87221511a46eeadf1cbe334514a0f33b01c73dac8be6b9b377b96abc·...·]-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="3439053064-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="3439053064-6">[</span><span·class="p"·data-group-id="34390[·...·truncated·by·diffoscope;·len:·58,·SHA:·74ca16184e452777aff2c5c811a7d28cde127dae8a43b1e3fc50365988fb950b·...·]-5">)</span><span·class="p">;</span><span·class="w">
  
140 </span><span·class="nf">ping</span><span·class="p"·data-group-id="1070206525-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="1070206525-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="3439053064-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="3439053064-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
141 ····</span><span·class="p"·data-group-id="1070206525-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="1070206525-8">}</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·305,·SHA:·616a2ec6dd14a97a602ab30d407211aa4ede9cf3c6e5098df46f1c8334666b9e·...·]-9">}</span><span·class="p">,</span><span·class="w">141 ····</span><span·class="p"·data-group-id="3439053064-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="3439053064-8">}</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·305,·SHA:·fff0468f0a56c989af7f98c961eb9c598604c5b44d54c97831055e982d5c6010·...·]-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="1070206525-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="1070206525-12">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·66,·SHA:·ad8691d83eadbf576510c3dfb51d8eb74e7cd85506998efd915fdd3fff080bb7·...·]-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="3439053064-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="3439053064-12">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·66,·SHA:·cbe8b3f8866ee5775cf9ee808d803e1d7b0ece096824f3a44adce7eac18d7934·...·]-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="1070206525-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="1[·...·truncated·by·diffoscope;·len:·9,·SHA:·cf69807a1887239dd414b1820acb5103e52bd980d8b3c988c5cb3a068109d253·...·]-13">)</span><span·class="p">.</span><span·class="w">146 ····</span><span·class="nf">ping</span><span·class="p"·data-group-id="3439053064-13">(</span><span·class="n">N</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pong_Node</span><span·class="p"·data-group-id="3[·...·truncated·by·diffoscope;·len:·9,·SHA:·a902752c0df1a251f38b92d7ac566206597f3aa5a18578b3c69e98ef8f0a6293·...·]-13">)</span><span·class="p">.</span><span·class="w">
  
147 </span><span·class="nf">pong</span><span·class="p"·data-group-id="1070206525-14">(</span><span·class="p"·data-group-id="1070206525-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="3439053064-14">(</span><span·class="p"·data-group-id="3439053064-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="1070206525-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="1070206525-15">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">149 ········</span><span·class="p"·data-group-id="3439053064-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="3439053064-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="1070206525-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="1070206525-17">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·66,·SHA:·f2a8b62c6a1c807e5846f74115e715f9a4d9c47a409ba92fdbe0e00b873517a3·...·]-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="3439053064-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="3439053064-17">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·66,·SHA:·3bd25c1c66adf0952459f63228ce0e0da0111137a77a444ddcfc1131eb0a20a5·...·]-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="1070206525-18">(</span><span·class="p"·data-group-id="1070206525-18">)</span><span·class="w">152 ············</span><span·class="nf">pong</span><span·class="p"·data-group-id="3439053064-18">(</span><span·class="p"·data-group-id="3439053064-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="1070206525-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="1070206525-20">[</span><span·class="p"·data-group-id="10[·...·truncated·by·diffoscope;·len:·62,·SHA:·9e7d7eb194aee13776638e5f6b04d0e74022481e350885d12e779ddfd9938c02·...·]-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="3439053064-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="3439053064-20">[</span><span·class="p"·data-group-id="34[·...·truncated·by·diffoscope;·len:·62,·SHA:·104044d8377c16dba0614d81314e21ea5aa1411a8df2b0c6e2196cf9cdc46cea·...·]-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="1070206525-21">(</span><span·class="p"·data-group-id="1070206525-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="3439053064-21">(</span><span·class="p"·data-group-id="3439053064-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="1070206525-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="1070206525-23">(</span><span·class="ss">tut19</span><span·class="p">,</span><span·class="w">·</sp[·...·truncated·by·diffoscope;·len:·282,·SHA:·836434b014b02302b39168389ae8b19229d0f7d8b74c2ef50ff1caca36d053ad·...·]-22">)</span><span·class="p">.</span><span·class="w">157 ····</span><span·class="nf">register</span><span·class="p"·data-group-id="3439053064-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="3439053064-23">(</span><span·class="ss">tut19</span><span·class="p">,</span><span·class="w">·</sp[·...·truncated·by·diffoscope;·len:·282,·SHA:·29aa417677b7bbb9734182532a68d759bae71eaf63ccb514cbcc26473f50a1b9·...·]-22">)</span><span·class="p">.</span><span·class="w">
  
158 </span><span·class="nf">start_ping</span><span·class="p"·data-group-id="1070206525-25">(</span><span·class="n">Pong_Node</span><span·class="p"·data-group-id="1070206525-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="3439053064-25">(</span><span·class="n">Pong_Node</span><span·class="p"·data-group-id="3439053064-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="1070206525-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="1070206525-27">[</span><span·class="mi">3</span><[·...·truncated·by·diffoscope;·len:·174,·SHA:·6ca804258a696bc3f9437233bf4e27c3c3c63ac53895f88fe1ba66309c69d876·...·]-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="3439053064-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="3439053064-27">[</span><span·class="mi">3</span><[·...·truncated·by·diffoscope;·len:·174,·SHA:·89d377ffa3eb191969867f20db0943ae3603a840cc4f2f17cead11c1f38fc3e9·...·]-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="0774215437-1">(</span><span·class="p"·data-group-id="0774215437-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="4528036470-1">(</span><span·class="p"·data-group-id="4528036470-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="0774215437-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="0774215437-2">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">172 ········</span><span·class="p"·data-group-id="4528036470-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="4528036470-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="0774215437-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="0774215437-4">[</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·63,·SHA:·6584bf410ed62570985953bfde373ec584cf5b0a347142c9a1cc98474ed662ef·...·]-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="4528036470-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="4528036470-4">[</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·63,·SHA:·485550e91c6290ac5c5c8d1c4455d3df634e8211fa763adcb3766a59d4048170·...·]-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="0774215437-5">(</span><span·class="p"·data-group-id="0774215437-5">)</span><span·class="w">175 ············</span><span·class="nf">pong</span><span·class="p"·data-group-id="4528036470-5">(</span><span·class="p"·data-group-id="4528036470-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="0774215437-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="0774215437-7">[</span><span·class="p"·data-group-id="0774[·...·truncated·by·diffoscope;·len:·59,·SHA:·04d4f831bab92e6d8e863ce06ca45f5c49f9ca4032e85d5c2ce2afb8aa861dc4·...·]-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="4528036470-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="4528036470-7">[</span><span·class="p"·data-group-id="4528[·...·truncated·by·diffoscope;·len:·59,·SHA:·8a8a8d184080a8734e2c23069823633430895cbef9be6d853c783db047bf08a7·...·]-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="2519160580-1">(</span><span·class="p"·data-group-id="2519160580-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="4905464486-1">(</span><span·class="p"·data-group-id="4905464486-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.6/doc/html/erlang.html#spawn_link/1">spawn_link</a>·that·does·the215 time,·there·is·a·special·BIF,·<a·href="../../erts-15.2.6/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="6916513620-1">(</span><span·class="ss">tut20</span><span·class="p"·data-group-id="6916513620-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="7750520003-1">(</span><span·class="ss">tut20</span><span·class="p"·data-group-id="7750520003-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="6916513620-2">(</span><span·class="p"·data-group-id="6916513620-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:·df0e93846c18a7ab8390ff554c5545f2dc6e84b357e83a62ec46a1208e1bcbeb·...·]-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="7750520003-2">(</span><span·class="p"·data-group-id="7750520003-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:·02114a031b4be130a6df36192999a2cf92460a58a36b39435bc8434883f4dfa2·...·]-2">)</span><span·class="p">.</span><span·class="w">
  
219 </span><span·class="nf">ping</span><span·class="p"·data-group-id="6916513620-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="6916513620-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="7750520003-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="7750520003-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="6916513620-5">(</span><span·class="n">Pong_Pid</span><span·class="p"·data-group-id="6916513620-5">)</span><span·class="p">,</span><span·class="w">220 ····</span><span·class="nf">link</span><span·class="p"·data-group-id="7750520003-5">(</span><span·class="n">Pong_Pid</span><span·class="p"·data-group-id="7750520003-5">)</span><span·class="p">,</span><span·class="w">
221 ····</span><span·class="nf">ping1</span><span·class="p"·data-group-id="6916513620-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="6916513620-6">)</span><span·class="p">.</span><span·class="w">221 ····</span><span·class="nf">ping1</span><span·class="p"·data-group-id="7750520003-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="7750520003-6">)</span><span·class="p">.</span><span·class="w">
  
222 </span><span·class="nf">ping1</span><span·class="p"·data-group-id="6916513620-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="6916513620-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="7750520003-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="7750520003-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="6916513620-8">(</span><span·class="ss">ping</span><span·class="p"·data-group-id="6916513620-8">)</span><span·class="p">;</span><span·class="w">223 ····</span><span·class="nf">exit</span><span·class="p"·data-group-id="7750520003-8">(</span><span·class="ss">ping</span><span·class="p"·data-group-id="7750520003-8">)</span><span·class="p">;</span><span·class="w">
  
224 </span><span·class="nf">ping1</span><span·class="p"·data-group-id="6916513620-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="6916513620-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="7750520003-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="7750520003-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="6916513620-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="6916513620-11">(</span><span·class="p"·data-group-id="6916513620-11">)</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·f1afbfd49ecbed92b5fb46a34469ecfbfd2c5aa5bb0919e9b2b62c425f45e8be·...·]-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="7750520003-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="7750520003-11">(</span><span·class="p"·data-group-id="7750520003-11">)</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·2d7c17ff05fddfcc00226dfab017f33586385d943b2bf74ff9dc054cb6440790·...·]-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="6916513620-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="6916513620-13">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·66,·SHA:·fee7f02f122d3386c009a9e9a2e1d89e030628413d870b809f22afdb02f3e4d4·...·]-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="7750520003-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="7750520003-13">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·66,·SHA:·d19fb373f32d4f27029844a492f189b7a079c214e8cd9b2d54a08d10655ded89·...·]-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="6916513620-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="69[·...·truncated·by·diffoscope;·len:·8,·SHA:·15bf46685a57e29cc5677bd676e5daec01b124d989262dc1e5eec33bd0f8dda0·...·]-14">)</span><span·class="p">.</span><span·class="w">230 ····</span><span·class="nf">ping1</span><span·class="p"·data-group-id="7750520003-14">(</span><span·class="n">N</span><span·class="w">·</span><span·class="o">-</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pong_Pid</span><span·class="p"·data-group-id="77[·...·truncated·by·diffoscope;·len:·8,·SHA:·4967fa86350f0878ec1002af844b6862064957721d905fd2f93789015fe39f72·...·]-14">)</span><span·class="p">.</span><span·class="w">
  
231 </span><span·class="nf">pong</span><span·class="p"·data-group-id="6916513620-15">(</span><span·class="p"·data-group-id="6916513620-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="7750520003-15">(</span><span·class="p"·data-group-id="7750520003-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="6916513620-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="6916513620-16">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">233 ········</span><span·class="p"·data-group-id="7750520003-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="7750520003-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="6916513620-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="6916513620-18">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·66,·SHA:·6249a03a89b7d93db4ba389443dfbc35d36f87c961d0fa001dc6542c7bc7e61b·...·]-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="7750520003-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="7750520003-18">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·66,·SHA:·423f87d60e255fb361e48d31df15b671101cf6cfca0bdd63a588501a358133ee·...·]-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="6916513620-19">(</span><span·class="p"·data-group-id="6916513620-19">)</span><span·class="w">236 ············</span><span·class="nf">pong</span><span·class="p"·data-group-id="7750520003-19">(</span><span·class="p"·data-group-id="7750520003-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="6916513620-20">(</span><span·class="n">Ping_Node</span><span·class="p"·data-group-id="6916513620-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="7750520003-20">(</span><span·class="n">Ping_Node</span><span·class="p"·data-group-id="7750520003-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="6916513620-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="6916513620-22">[</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·69,·SHA:·523705248a366043dd84564abe8cb99ab5c09b09b737598801176b83e0345025·...·]-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="7750520003-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="7750520003-22">[</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·69,·SHA:·33491e7f15f86b692067ac081599f2960b797f2af8c610ccf46766a49d04cc68·...·]-21">)</span><span·class="p">,</span><span·class="w">
240 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="6916513620-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:·afa59ed575c9199197a4dd418842cee07d9bb6231f47041983fdc8ac552ca257·...·]-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="7750520003-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:·8aac1c984a92c0de4a59fc485c754b9679966ac9ab8b341b00e34844ac1e322a·...·]-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.6/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.6/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="0857866664-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="0857866664-1">)</span></code></pre><p>There·are·several·other·process·flags,·see·<a·href="../../erts-15.2.6/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="5408288670-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="5408288670-1">)</span></code></pre><p>There·are·several·other·process·flags,·see·<a·href="../../erts-15.2.6/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="3157416786-1">(</span><span·class="ss">tut21</span><span·class="p"·data-group-id="3157416786-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="0383845789-1">(</span><span·class="ss">tut21</span><span·class="p"·data-group-id="0383845789-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="3157416786-2">(</span><span·class="p"·data-group-id="3157416786-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:·6550a60af17d78b05f408ebdcbcef968acf897517fd33e78e51c1df1796a2144·...·]-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="0383845789-2">(</span><span·class="p"·data-group-id="0383845789-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:·0f22ce8c9a8dd55173019b3107d6281f85a5f488138faa62b7ecc2d0cf6b76ce·...·]-2">)</span><span·class="p">.</span><span·class="w">
  
260 </span><span·class="nf">ping</span><span·class="p"·data-group-id="3157416786-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="3157416786-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="0383845789-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="0383845789-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.6/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.6/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="9651854338-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="9651854338-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="7023445324-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="7023445324-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.6/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="6465757259-1">(</span><span·class="p"·data-group-id="6465757259-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.6/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="6870449646-1">(</span><span·class="p"·data-group-id="6870449646-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="9854232977-1">(</span><span·class="ss">tut</span><span·class="p"·data-group-id="9854232977-1">)</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="5023091757-1">(</span><span·class="ss">tut</span><span·class="p"·data-group-id="5023091757-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="9854232977-2">(</span><span·class="p"·data-group-id="9854232977-3">[</span><span·class="ss">double</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="9854232977-3">]</span><span·class="p"·data-group-id="9854232977-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="5023091757-2">(</span><span·class="p"·data-group-id="5023091757-3">[</span><span·class="ss">double</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="5023091757-3">]</span><span·class="p"·data-group-id="5023091757-2">)</span><span·class="p">.</span><span·class="w">
  
165 </span><span·class="nf">double</span><span·class="p"·data-group-id="9854232977-4">(</span><span·class="n">X</span><span·class="p"·data-group-id="9854232977-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="5023091757-4">(</span><span·class="n">X</span><span·class="p"·data-group-id="5023091757-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="1160442506-1">(</span><span·class="ss">tut</span><span·class="p"·data-group-id="1160442506-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="3078416275-1">(</span><span·class="ss">tut</span><span·class="p"·data-group-id="3078416275-1">)</span><span·class="p">.</span><span·class="w">
169 </span><span·class="p"·data-group-id="1160442506-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">tut</span><span·class="p"·data-group-id="1160442506-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="3078416275-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">tut</span><span·class="p"·data-group-id="3078416275-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="7881392835-1">(</span><span·class="mi">10</span><span·class="p"·data-group-id="7881392835-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="5318551041-1">(</span><span·class="mi">10</span><span·class="p"·data-group-id="5318551041-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="5312621005-1">(</span><span·class="ss">tut</span><span·class="p"·data-group-id="5312621005-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="4904210732-1">(</span><span·class="ss">tut</span><span·class="p"·data-group-id="4904210732-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="8422278244-1">(</span><span·class="mi">10</span><span·class="p"·data-group-id="8422278244-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="5744904783-1">(</span><span·class="mi">10</span><span·class="p"·data-group-id="5744904783-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="3542597208-1">(</span><span·class="p"·data-group-id="3542597208-2">[</span><span·class="ss">double</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="3542597208-2">]</span><span·class="p"·data-group-id="3542597208-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="6097327781-1">(</span><span·class="p"·data-group-id="6097327781-2">[</span><span·class="ss">double</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="6097327781-2">]</span><span·class="p"·data-group-id="6097327781-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="6979018181-1">(</span><span·class="ss">tut1</span><span·class="p"·data-group-id="6979018181-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="7372621755-1">(</span><span·class="ss">tut1</span><span·class="p"·data-group-id="7372621755-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="6979018181-2">(</span><span·class="p"·data-group-id="6979018181-3">[</span><span·class="ss">fac</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="6979018181-3">]</span><span·class="p"·data-group-id="6979018181-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="7372621755-2">(</span><span·class="p"·data-group-id="7372621755-3">[</span><span·class="ss">fac</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="7372621755-3">]</span><span·class="p"·data-group-id="7372621755-2">)</span><span·class="p">.</span><span·class="w">
  
186 </span><span·class="nf">fac</span><span·class="p"·data-group-id="6979018181-4">(</span><span·class="mi">1</span><span·class="p"·data-group-id="6979018181-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="7372621755-4">(</span><span·class="mi">1</span><span·class="p"·data-group-id="7372621755-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="6979018181-5">(</span><span·class="n">N</span><span·class="p"·data-group-id="6979018181-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="7372621755-5">(</span><span·class="n">N</span><span·class="p"·data-group-id="7372621755-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="6979018181-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="6979018181-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="7372621755-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="7372621755-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="2660616635-1">(</span><span·class="mi">1</span><span·class="p"·data-group-id="2660616635-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="2964012823-1">(</span><span·class="mi">1</span><span·class="p"·data-group-id="2964012823-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="6099924077-1">(</span><span·class="n">N</span><span·class="p"·data-group-id="6099924077-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">193 N·-·1:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">fac</span><span·class="p"·data-group-id="9800885596-1">(</span><span·class="n">N</span><span·class="p"·data-group-id="9800885596-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="6099924077-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="6099924077-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="1910972827-1">(</span><span·class="ss">tut1</span><span·class="p"·data-group-id="1910972827-1">)</span><span·class="p">.</span><span·class="w"> 
196 </span><span·class="p"·data-group-id="1910972827-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">tut1</span><span·class="p"·data-group-id="1910972827-2">}</span></code></pre><p>And·now·calculate·the·factorial·of·4.</p><pre><co[·...·truncated·by·diffoscope;·len:·333,·SHA:·901d595b8891588183c42a70192534599e7cea9c27532d1bfe6c3d2c5fc541b5·...·]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="9800885596-2">(</span><span·class="n">N</span><span·class="w">·</span><span·class="o">-</sp[·...·truncated·by·diffoscope;·len:·247,·SHA:·cc4dc84921c2e75a9953e7609a425ce6f6e6d4683ad559d692003a8fdaeb7d8b·...·]
 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="2769192240-1">(</span><span·class="ss">tut1</span><span·class="p"·data-group-id="2769192240-1">)</span><span·class="p">.</span><span·class="w">
 196 </span><span·class="p"·data-group-id="2769192240-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">tut1</span><span·class="p"·data-group-id="2769192240-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="4459300938-1">(</span><span·class="mi">4</span><span·class="p"·data-group-id="4459300938-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="8797504935-1">(</span><span·class="ss">tut1</span><span·class="p"·data-group-id="8797504935-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="6588723811-1">(</span><span·class="ss">tut1</span><span·class="p"·data-group-id="6588723811-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="8797504935-2">(</span><span·class="p"·data-group-id="8797504935-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:·97c2ceb0723a5e716765965c03ec53cf636841392c3e2acd19a64de2ede54a62·...·]-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="6588723811-2">(</span><span·class="p"·data-group-id="6588723811-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:·1643937fb8446f4086611315a8d2a4076e65e5b77ddfc781a74cd0e2f1fcbda4·...·]-2">)</span><span·class="p">.</span><span·class="w">
  
200 </span><span·class="nf">fac</span><span·class="p"·data-group-id="8797504935-4">(</span><span·class="mi">1</span><span·class="p"·data-group-id="8797504935-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="6588723811-4">(</span><span·class="mi">1</span><span·class="p"·data-group-id="6588723811-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="8797504935-5">(</span><span·class="n">N</span><span·class="p"·data-group-id="8797504935-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="6588723811-5">(</span><span·class="n">N</span><span·class="p"·data-group-id="6588723811-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="8797504935-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="8797504935-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="6588723811-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="6588723811-6">)</span><span·class="p">.</span><span·class="w">
  
204 </span><span·class="nf">mult</span><span·class="p"·data-group-id="8797504935-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="8797504935-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="6588723811-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="6588723811-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="2595618729-1">(</span><span·class="ss">tut1</span><span·class="p"·data-group-id="2595618729-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="2880085846-1">(</span><span·class="ss">tut1</span><span·class="p"·data-group-id="2880085846-1">)</span><span·class="p">.</span><span·class="w">
207 </span><span·class="p"·data-group-id="2595618729-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">tut1</span><span·class="p"·data-group-id="2595618729-2">}</span></code></pre><p>Try·out·the·new·function·<code·class="inline">mult</code>:</p><pre><code·class="makeup·e[·...·truncated·by·diffoscope;·len:·313,·SHA:·6ca1a552249fddd8e6a869e6f19a19c9d99e989b72bbac5b7a73defc255cb489·...·]-1">)</span><span·class="p">.</span><span·class="w">207 </span><span·class="p"·data-group-id="2880085846-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">tut1</span><span·class="p"·data-group-id="2880085846-2">}</span></code></pre><p>Try·out·the·new·function·<code·class="inline">mult</code>:</p><pre><code·class="makeup·e[·...·truncated·by·diffoscope;·len:·313,·SHA:·2e3818841c83e923a2b4a356fb51bf5b71dea187a026e2dc05f808e991a726fa·...·]-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="7000154059-1">(</span><span·class="ss">tut2</span><span·class="p"·data-group-id="7000154059-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="0447867880-1">(</span><span·class="ss">tut2</span><span·class="p"·data-group-id="0447867880-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="7000154059-2">(</span><span·class="p"·data-group-id="7000154059-3">[</span><span·class="ss">convert</span><span·class="p">/</span><span·class="mi">2</span><span·class="p"·data-group-id="7000154059-3">]</span><span·class="p"·data-group-id="7000154059-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="0447867880-2">(</span><span·class="p"·data-group-id="0447867880-3">[</span><span·class="ss">convert</span><span·class="p">/</span><span·class="mi">2</span><span·class="p"·data-group-id="0447867880-3">]</span><span·class="p"·data-group-id="0447867880-2">)</span><span·class="p">.</span><span·class="w">
  
223 </span><span·class="nf">convert</span><span·class="p"·data-group-id="7000154059-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="7000154059-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="0447867880-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="0447867880-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="7000154059-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="7000154059-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="0447867880-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="0447867880-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="8381456678-1">(</span><span·class="ss">tut2</span><span·class="p"·data-group-id="8381456678-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="8845797757-1">(</span><span·class="ss">tut2</span><span·class="p"·data-group-id="8845797757-1">)</span><span·class="p">.</span><span·class="w">
227 </span><span·class="p"·data-group-id="8381456678-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">tut2</span><span·class="p"·data-group-id="8381456678-2">}</span></code></pre><p>Test:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1[·...·truncated·by·diffoscope;·len:·291,·SHA:·f4f05ea643afc9bffdf93fa8485e0fee17c5383996d675d4990816bf85b4765e·...·]-1">)</span><span·class="p">.</span><span·class="w">227 </span><span·class="p"·data-group-id="8845797757-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">tut2</span><span·class="p"·data-group-id="8845797757-2">}</span></code></pre><p>Test:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1[·...·truncated·by·diffoscope;·len:·291,·SHA:·06d4ebca20a0198e774887f38500593d31c13da6114791fc5d8f192ba99239cb·...·]-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="7188444984-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="7188444984-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="0177005301-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="0177005301-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="1702765253-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="1702765253-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="5857643334-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="5857643334-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="9544090264-1">(</span><span·class="mi">12</span><span·class="p"·data-group-id="9544090264-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="8467081600-1">(</span><span·class="mi">12</span><span·class="p"·data-group-id="8467081600-1">)</span><span·class="p">.</span><span·class="w">
238 </span><span·class="p"·data-group-id="9544090264-2">{</span><span·class="ss">&#39;EXIT&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="9544090264-3">{</span><span·class="ss">function_clause</span><span·class="p">,</span><span·class="p"·data-group-id="9544090264-4">[</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·171e9a07708ffa78ec51c29b2441ff87b3f58f9677acd881791621dc1c55e4fe·...·]-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="8467081600-2">{</span><span·class="ss">&#39;EXIT&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="8467081600-3">{</span><span·class="ss">function_clause</span><span·class="p">,</span><span·class="p"·data-group-id="8467081600-4">[</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·091d065a9dc3392e313ed81e8fe2fa7f4a0c37a5d3e6517057649e8dd1731666·...·]-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="9544090264-6">[</span><span·class="mi">3</span><span·class="p">,</span><span·class="ss">miles</span><span·class="p"·data-group-id="9544090264-6">]</span><span·class="p">,</span><span·class="w">239 ································</span><span·class="p"·data-group-id="8467081600-6">[</span><span·class="mi">3</span><span·class="p">,</span><span·class="ss">miles</span><span·class="p"·data-group-id="8467081600-6">]</span><span·class="p">,</span><span·class="w">
240 ································</span><span·class="p"·data-group-id="9544090264-7">[</span><span·class="p"·data-group-id="9544090264-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="9544090264-8">}</span><span·class="p">,</span><span·cla[·...·truncated·by·diffoscope;·len:·268,·SHA:·d5af43e76135dd130e26324d2daecba25f5a48ce745c4733bc78661249f7a1c3·...·]-5">}</span><span·class="p">,</span><span·class="w">240 ································</span><span·class="p"·data-group-id="8467081600-7">[</span><span·class="p"·data-group-id="8467081600-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="8467081600-8">}</span><span·class="p">,</span><span·cla[·...·truncated·by·diffoscope;·len:·268,·SHA:·8fa72643a09b3a6a1d07150874da346ba09f83dda9e0a26c865d858de102c59c·...·]-5">}</span><span·class="p">,</span><span·class="w">
241 ··························</span><span·class="p"·data-group-id="9544090264-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="8467081600-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="9544090264-11">[</span><span·class="p"·data-group-id="9544090264-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="9544090264-12">}</span><span·class="p">,</span><span·class="p"·data-group-id="9544090264-13">{</span><span·class="ss">line</span><span·class="p">,</span><span·class="mi">677</span><span·class="p"·data-group-id="9544090264-13">}</span><span·class="p"·data-group-id="9544090264-11">]</span><span·class="p"·data-group-id="9544090264-10">}</span><span·class="p">,</span><span·class="w"> 
243 ··························</span><span·class="p"·data-group-id="9544090264-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="9544090264-15">[</span><span·class="p"·data-group-id="9544090264-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="9544090264-16">}</span><span·class="p">,</span><span·class="p"·data-group-id="9544090264-17">{</span><span·class="ss">line</span><span·class="p">,</span><span·class="mi">687</span><span·class="p"·data-group-id="9544090264-17">}</span><span·class="p"·data-group-id="9544090264-15">]</span><span·class="p"·data-group-id="9544090264-14">}</span><span·class="p">,</span><span·class="w"> 
244 ··························</span><span·class="p"·data-group-id="9544090264-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="9544[·...·truncated·by·diffoscope;·len:·532,·SHA:·36d6cc0d0c0a3ff0713fe37e0ab0f3da10ce03334974ad118304003021133411·...·]">}</span><span·class="p">,</span><span·class="w">242 ····································</span><span·class="p"·data-group-id="8467081600-11">[</span><span·class="p"·data-group-id="8467081600-12">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="s">&quot;erl_eval.erl&quot;</span><span·class="p"·data-group-id="8[·...·truncated·by·diffoscope;·len:·331,·SHA:·92ad64450ef9660443da77f6106775b267a0549f5197dd2e6073324f920eca28·...·]">}</span><span·class="p">,</span><span·class="w">
 243 ··························</span><span·class="p"·data-group-id="8467081600-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="8467081600-15">[</span><span·class="p"·data-group-id="8467081600-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="8467081600-16">}</span><span·class="p">,</span><span·class="p"·data-group-id="8467081600-17">{</span><span·class="ss">line</span><span·class="p">,</span><span·class="mi">687</span><span·class="p"·data-group-id="8467081600-17">}</span><span·class="p"·data-group-id="8467081600-15">]</span><span·class="p"·data-group-id="8467081600-14">}</span><span·class="p">,</span><span·class="w">
 244 ··························</span><span·class="p"·data-group-id="8467081600-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="8467081600-19">[</span><span·class="p"·data-group-id="8467081600-20">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="s">&quot;shell.erl&quot;</span><span·class="p"·data-group-id="8467081600-20">}</span><span·class="p">,</span><span·class="p"·data-group-id="8467081600-21">{</span><span·class="ss">line</span><span·class="p">,</span><span·class="mi">642</span><span·class="p"·data-group-id="8467081600-21">}</span><span·class="p"·data-group-id="8467081600-19">]</span><span·class="p"·data-group-id="8467081600-18">}</span><span·class="p">,</span><span·class="w">
245 ··························</span><span·class="p"·data-group-id="9544090264-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="8467081600-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="9544090264-23">[</span><span·class="p"·data-group-id="9544090264-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="9544090264-24">}</span><span·class="p">,</span><span[·...·truncated·by·diffoscope;·len:·437,·SHA:·6ec487795894544a454f2c04ae4bf3a9990687e89cad423c17277942422db059·...·]-2">}</span></code></pre><h2·id="tuples"·class="section-heading">246 ·································</span><span·class="p"·data-group-id="8467081600-23">[</span><span·class="p"·data-group-id="8467081600-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="8467081600-24">}</span><span·class="p">,</span><span[·...·truncated·by·diffoscope;·len:·437,·SHA:·1af5ad394527802fc694d35cc24118cc26e55d796ae573ca1e70cb842828df1e·...·]-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>
252 <p>Now·the·<code·class="inline">tut2</code>·program·is·hardly·good·programming·style.·Consider:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">tut2</span><span·class="p">:</span><span·class="nf">convert</span><span·class="p"·data-group-id="9106153637-1">(</span><span·class="mi">3</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">inch</span><span·class="p"·data-group-id="9106153637-1">)</span><span·class="p">.</span></code></pre><p>Does·this·mean·that·3·is·in·inches?·Or·does·it·mean·that·3·is·in·centimeters·and252 <p>Now·the·<code·class="inline">tut2</code>·program·is·hardly·good·programming·style.·Consider:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">tut2</span><span·class="p">:</span><span·class="nf">convert</span><span·class="p"·data-group-id="6386955035-1">(</span><span·class="mi">3</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">inch</span><span·class="p"·data-group-id="6386955035-1">)</span><span·class="p">.</span></code></pre><p>Does·this·mean·that·3·is·in·inches?·Or·does·it·mean·that·3·is·in·centimeters·and
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.2/doc/html/sys.html"><code·class="inline">sys</code></a>·module·has·functions·for·simple·debugging·of·processes·implemented128 <p>The·<a·href="../../lib/stdlib-6.2.2/doc/html/sys.html"><code·class="inline">sys</code></a>·module·has·functions·for·simple·debugging·of·processes·implemented
129 using·behaviours.·The·<code·class="inline">code_lock</code>·example·from129 using·behaviours.·The·<code·class="inline">code_lock</code>·example·from
130 <a·href="statem.html#example">gen_statem·Behaviour</a>·is·used·to·illustrate·this:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Erlang</span><span·class="o">/</span><span·class="n">OTP</span><span·class="w">·</span><span·class="mi">27</span><span·class="w">·</span><span·class="p"·data-group-id="6069258559-1">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">15.0</span><span·class="p"·data-group-id="6069258559-1">]</span><span·class="w">·</span><span·class="p"·data-group-id="6069258559-2">[</span><span·class="mi">64</spa[·...·truncated·by·diffoscope;·len:·1073,·SHA:·1ee7e357e3e92cd9fed54f5bbcde3b6f65f867928a68aa62e26cc50d86cf5cb2·...·]-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="2287897088-1">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">15.0</span><span·class="p"·data-group-id="2287897088-1">]</span><span·class="w">·</span><span·class="p"·data-group-id="2287897088-2">[</span><span·class="mi">64</spa[·...·truncated·by·diffoscope;·len:·1073,·SHA:·8a3b425053a4f2fe7b49d29b708a7f1260cfc8522a7e6f5d3f5016ee0f406aa9·...·]-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="6069258559-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:·9bc91ffa8d25ba35efe95f34fe533d178f0c3ba3b09d9cc5b6dd1180d4c3c619·...·]-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="2287897088-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:·9e07c026019ad3820bae2e547347d833d956802115f66030b46752e24315dd6b·...·]-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="6069258559-9">(</span><span·class="p"·data-group-id="6069258559-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:·4ea5a0adfe8bf1b95bc5593d926019546e402c39ab047255abfd5ff0f1a0e8a2·...·]-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="2287897088-9">(</span><span·class="p"·data-group-id="2287897088-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:·84b20f2ea607a68f4630f02f88c4902945abc089065b289b366322bddab40a73·...·]-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="6069258559-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="6069258559-11">}</span><span·class="gp·unselectable">134 </span><span·class="p"·data-group-id="2287897088-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="2287897088-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="6069258559-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="6069258559-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="2287897088-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="2287897088-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="6069258559-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="6069258559-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="2287897088-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="2287897088-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="6069258559-14">(</span><span·class="mi">1</span><span·class="p"·data-group-id="6069258559-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="2287897088-14">(</span><span·class="mi">1</span><span·class="p"·data-group-id="2287897088-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="6069258559-15">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="6069258559-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="2287897088-15">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="2287897088-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="6069258559-16">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="6069258559-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="2287897088-16">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="2287897088-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="6069258559-17">(</span><span·class="mi">2</span><span·class="p"·data-group-id="6069258559-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="2287897088-17">(</span><span·class="mi">2</span><span·class="p"·data-group-id="2287897088-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="6069258559-18">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="6069258559-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="2287897088-18">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="2287897088-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="6069258559-19">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="6069258559-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="2287897088-19">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="2287897088-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="6069258559-20">(</span><span·class="mi">3</span><span·class="p"·data-group-id="6069258559-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="2287897088-20">(</span><span·class="mi">3</span><span·class="p"·data-group-id="2287897088-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="6069258559-21">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="6069258559-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="2287897088-21">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="2287897088-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="6069258559-22">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="6069258559-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="2287897088-22">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="2287897088-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="6069258559-23">(</span><span·class="mi">4</span><span·class="p"·data-group-id="6069258559-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="2287897088-23">(</span><span·class="mi">4</span><span·class="p"·data-group-id="2287897088-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="6069258559-24">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="mi">4</span><span·class="p"·data-group-id="6069258559-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="2287897088-24">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="mi">4</span><span·class="p"·data-group-id="2287897088-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="6069258559-25">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="mi">4</span><span·class="p"·data-group-id="6069258559-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="2287897088-25">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="mi">4</span><span·class="p"·data-group-id="2287897088-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="6069258559-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="6069258559-27">[</span><span·class="[·...·truncated·by·diffoscope;·len:·82,·SHA:·f18d03ecfde5320dc418c6d3e402ca864d4ebfae873b9c4672ed6601dda830a6·...·]-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="2287897088-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="2287897088-27">[</span><span·class="[·...·truncated·by·diffoscope;·len:·82,·SHA:·8771b6007449142fc1718f0671837185c1d4c051f6e211b376833d40961d99c2·...·]-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="6069258559-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="6069258559-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="2287897088-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="2287897088-28">)</span><span·class="p">.</span><span·class="w">
161 </span><span·class="p"·data-group-id="6069258559-29">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="6069258559-30">[</span><span·class="p"·data-group-id="6069258559-31">{</span><span·class="ss">start_time</span><span·class="p">,</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·622,·SHA:·719618adfd419d23df39eb07aaa5d2fa5b6fe4f8b5dfc8ddd8b06ed61f6de56f·...·]-31">}</span><span·class="p">,</span><span·class="w">161 </span><span·class="p"·data-group-id="2287897088-29">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2287897088-30">[</span><span·class="p"·data-group-id="2287897088-31">{</span><span·class="ss">start_time</span><span·class="p">,</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·622,·SHA:·9f008826daef2b40a6febd656f2012bcf185973eb1f2b7ffef81e52efadc89af·...·]-31">}</span><span·class="p">,</span><span·class="w">
162 ·····</span><span·class="p"·data-group-id="6069258559-35">{</span><span·class="ss">current_time</span><span·class="p">,</span><span·class="p"·data-group-id="6069258559-36">{</span><span·class="p"·data-group-id="6069258559-37">{</span><span·class="mi">2024</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·467,·SHA:·78618a30bc662908fe989a8e47c891b836ab70c08b34c4b5261621affd5623c0·...·]-35">}</span><span·class="p">,</span><span·class="w">162 ·····</span><span·class="p"·data-group-id="2287897088-35">{</span><span·class="ss">current_time</span><span·class="p">,</span><span·class="p"·data-group-id="2287897088-36">{</span><span·class="p"·data-group-id="2287897088-37">{</span><span·class="mi">2024</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·467,·SHA:·ca110b62882417d01bd0fef55f5ea1f1d67504a237d935fd56b363ac02e31714·...·]-35">}</span><span·class="p">,</span><span·class="w">
163 ·····</span><span·class="p"·data-group-id="6069258559-39">{</span><span·class="ss">reductions</span><span·class="p">,</span><span·class="mi">4098</span><span·class="p"·data-group-id="6069258559-39">}</span><span·class="p">,</span><span·class="w">163 ·····</span><span·class="p"·data-group-id="2287897088-39">{</span><span·class="ss">reductions</span><span·class="p">,</span><span·class="mi">4098</span><span·class="p"·data-group-id="2287897088-39">}</span><span·class="p">,</span><span·class="w">
164 ·····</span><span·class="p"·data-group-id="6069258559-40">{</span><span·class="ss">messages_in</span><span·class="p">,</span><span·class="mi">5</span><span·class="p"·data-group-id="6069258559-40">}</span><span·class="p">,</span><span·class="w">164 ·····</span><span·class="p"·data-group-id="2287897088-40">{</span><span·class="ss">messages_in</span><span·class="p">,</span><span·class="mi">5</span><span·class="p"·data-group-id="2287897088-40">}</span><span·class="p">,</span><span·class="w">
165 ·····</span><span·class="p"·data-group-id="6069258559-41">{</span><span·class="ss">messages_out</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="6069258559-41">}</span><span·class="p"·data-group-id="6069258559-30">]</span><span·class="p"·data-group-id="606925855[·...·truncated·by·diffoscope;·len:·1,·SHA:·19581e27de7ced00ff1ce50b2047e7a567c76b1cbaebabe5ef03f7c3017bb5b7·...·]-29">}</span><span·class="gp·unselectable">165 ·····</span><span·class="p"·data-group-id="2287897088-41">{</span><span·class="ss">messages_out</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="2287897088-41">}</span><span·class="p"·data-group-id="2287897088-30">]</span><span·class="p"·data-group-id="228789708[·...·truncated·by·diffoscope;·len:·1,·SHA:·2c624232cdd221771294dfbb310aca000a0df6ac8b66b696d90ef06fdefb64a3·...·]-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="6069258559-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="6069258559-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="2287897088-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="2287897088-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="6069258559-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="6069258559-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="2287897088-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="2287897088-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="6069258559-44">(</span><span·class="ss">code_lock</span><span·class="p"·data-group-id="6069258559-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="2287897088-44">(</span><span·class="ss">code_lock</span><span·class="p"·data-group-id="2287897088-44">)</span><span·class="p">.</span><span·class="w">
171 </span><span·class="p"·data-group-id="6069258559-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="2287897088-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="6069258559-46">{</span><span·class="ss">module</span><span·class="p">,</span><span·class="ss">gen_statem</span><span·class="p"·data-group-id="6069258559-46">}</span><span·class="p">,</span><span·class="w">172 ········</span><span·class="p"·data-group-id="2287897088-46">{</span><span·class="ss">module</span><span·class="p">,</span><span·class="ss">gen_statem</span><span·class="p"·data-group-id="2287897088-46">}</span><span·class="p">,</span><span·class="w">
173 ········</span><span·class="p"·data-group-id="6069258559-47">[</span><span·class="p"·data-group-id="6069258559-48">[</span><span·class="p"·data-group-id="6069258559-49">{</span><span·class="ss">&#39;$initial_call&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="6069258559-50">{</span>[·...·truncated·by·diffoscope;·len:·229,·SHA:·16bdb90e41b6a797e4068f679505ce155d2cb587b931721a81c1969ed2e4b9b9·...·]-49">}</span><span·class="p">,</span><span·class="w">173 ········</span><span·class="p"·data-group-id="2287897088-47">[</span><span·class="p"·data-group-id="2287897088-48">[</span><span·class="p"·data-group-id="2287897088-49">{</span><span·class="ss">&#39;$initial_call&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="2287897088-50">{</span>[·...·truncated·by·diffoscope;·len:·229,·SHA:·2959474900cdad1ae211130fe801cfde1e01201d335b99b48ebfd2567fafa5ad·...·]-49">}</span><span·class="p">,</span><span·class="w">
174 ··········</span><span·class="p"·data-group-id="6069258559-51">{</span><span·class="ss">&#39;$ancestors&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="6069258559-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="2287897088-51">{</span><span·class="ss">&#39;$ancestors&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="2287897088-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="6069258559-52">]</span><span·class="p"·data-group-id="6069258559-51">}</span><span·class="p"·data-group-id="6069258559-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="2287897088-52">]</span><span·class="p"·data-group-id="2287897088-51">}</span><span·class="p"·data-group-id="2287897088-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="6069258559-53">[</span><span·class="p"·data-group-id="6069258559-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="2287897088-53">[</span><span·class="p"·data-group-id="2287897088-53">]</span><span·class="p">,</span><span·class="w">
177 ·········</span><span·class="p"·data-group-id="6069258559-54">[</span><span·class="p"·data-group-id="6069258559-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="6069258559-55">}</span><span·class="p">,</span><span·class="w">177 ·········</span><span·class="p"·data-group-id="2287897088-54">[</span><span·class="p"·data-group-id="2287897088-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="2287897088-55">}</span><span·class="p">,</span><span·class="w">
178 ··········</span><span·class="p"·data-group-id="6069258559-56">{</span><span·class="ss">data</span><span·class="p">,</span><span·class="p"·data-group-id="6069258559-57">[</span><span·class="p"·data-group-id="6069258559-58">{</span><span·class="s">&quot;Status&quot;</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·64,·SHA:·5a668d7356543443dc987b83b101dde58e10003d963d57823c89e96bf03e9ace·...·]-58">}</span><span·class="p">,</span><span·class="w">178 ··········</span><span·class="p"·data-group-id="2287897088-56">{</span><span·class="ss">data</span><span·class="p">,</span><span·class="p"·data-group-id="2287897088-57">[</span><span·class="p"·data-group-id="2287897088-58">{</span><span·class="s">&quot;Status&quot;</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·64,·SHA:·1d6b92353c63a944c5f54f6919f8f7deb3cd31f3ae8ef2c9f8bb4c4f3af2af68·...·]-58">}</span><span·class="p">,</span><span·class="w">
179 ·················</span><span·class="p"·data-group-id="6069258559-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="606925[·...·truncated·by·diffoscope;·len:·4,·SHA:·d97e1bd72e23f2269d06278d25558fad825fb0039d27cfab71eee2cf220873ab·...·]-59">}</span><span·class="p">,</span><span·class="w">179 ·················</span><span·class="p"·data-group-id="2287897088-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="228789[·...·truncated·by·diffoscope;·len:·4,·SHA:·13c9370b295bef6567cbfc8586a3fd67c33c79581faf1e9be872a59c212e2b88·...·]-59">}</span><span·class="p">,</span><span·class="w">
180 ·················</span><span·class="p"·data-group-id="6069258559-60">{</span><span·class="s">&quot;Modules&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="6069258559-61">[</span><span·class="ss">code_lock</span><span·class="p"·data-group-id="6069258559-61">]</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·53fae5c29378a7e67c219475a153d4c3198080cbc559f024f03924abc47b6e6b·...·]-60">}</span><span·class="p">,</span><span·class="w">180 ·················</span><span·class="p"·data-group-id="2287897088-60">{</span><span·class="s">&quot;Modules&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="2287897088-61">[</span><span·class="ss">code_lock</span><span·class="p"·data-group-id="2287897088-61">]</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·c857507ce7bee27d6dbb0840c63438132b34c46f514f46893bc3f7ff3f5c31ff·...·]-60">}</span><span·class="p">,</span><span·class="w">
181 ·················</span><span·class="p"·data-group-id="6069258559-62">{</span><span·class="s">&quot;Time-outs&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="6069258559-63">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="p"·data-group-id="6069258559-64">[</span><span·cl[·...·truncated·by·diffoscope;·len:·141,·SHA:·00a22ee55a0c616fdf196b49310d8b822d1606191dd5df651c1fdade006e758b·...·]-62">}</span><span·class="p">,</span><span·class="w">181 ·················</span><span·class="p"·data-group-id="2287897088-62">{</span><span·class="s">&quot;Time-outs&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="2287897088-63">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="p"·data-group-id="2287897088-64">[</span><span·cl[·...·truncated·by·diffoscope;·len:·141,·SHA:·5b3fc800d308b764b569ddb7db57d8600ca54728b8995119f89ffb1b8936c0a6·...·]-62">}</span><span·class="p">,</span><span·class="w">
182 ·················</span><span·class="p"·data-group-id="6069258559-65">{</span><span·class="s">&quot;Logged·Events&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="6069258559-66">[</span><span·class="p"·data-group-id="6069258559-66">]</span><span·class="p"·data-group-id="6069258559-65">}</span><span·class="p">,</span><span·class="w"> 
183 ·················</span><span·class="p"·data-group-id="6069258559-67">{</span><span·class="s">&quot;Postponed&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="6069258559-68">[</span><span·class="p"·data-group-id="6069258559-68">]</span><span·class="p"·data-group-id="6069258559-67">}</span><sp[·...·truncated·by·diffoscope;·len:·95,·SHA:·3ce887d94bfe9017f64fec249853c28a92a2e928c6a5b815c3cc7c692977c794·...·]">}</span><span·class="p">,</span><span·class="w">182 ·················</span><span·class="p"·data-group-id="2287897088-65">{</span><span·class="s">&quot;Logged·Events&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="2287897088-66">[</span><span·class="p"·data-group-id="2287897088-66">]</span><span·class="p"·data-group-id="2287897088-65">}</span><span·class="p">,</span><span·class="w">
 183 ·················</span><span·class="p"·data-group-id="2287897088-67">{</span><span·class="s">&quot;Postponed&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="2287897088-68">[</span><span·class="p"·data-group-id="2287897088-68">]</span><span·class="p"·data-group-id="2287897088-67">}</span><span·class="p"·data-group-id="2287897088-57">]</span><span·class="p"·data-group-id="2287897088-56">}</span><span·class="p">,</span><span·class="w">
184 ··········</span><span·class="p"·data-group-id="6069258559-69">{</span><span·class="ss">data</span><span·class="p">,</span><span·class="p"·data-group-id="6069258559-70">[</span><span·class="p"·data-group-id="6069258559-71">{</span><span·class="s">&quot;State&quot;</span><span·class="p">,</span><span·class="w">184 ··········</span><span·class="p"·data-group-id="2287897088-69">{</span><span·class="ss">data</span><span·class="p">,</span><span·class="p"·data-group-id="2287897088-70">[</span><span·class="p"·data-group-id="2287897088-71">{</span><span·class="s">&quot;State&quot;</span><span·class="p">,</span><span·class="w">
185 ··················</span><span·class="p"·data-group-id="6069258559-72">{</span><span·class="ss">locked</span><span·class="p">,</span><span·class="p"·data-group-id="6069258559-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:·324d2d747f874a5a22ac80829c4eb3b21f435a52f9790eef9aff9fa951104223·...·]-74">]</span><span·class="p">,</span><span·class="w">185 ··················</span><span·class="p"·data-group-id="2287897088-72">{</span><span·class="ss">locked</span><span·class="p">,</span><span·class="p"·data-group-id="2287897088-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:·378d13db41d7ec414e845fa8838631799c4fd7833b1b47b5bab68b9ebac1d74c·...·]-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="6069258559-75">[</span><span·class="p"·data-group-id="6069258559-75">]</span><span·class="p"·data-group-id="6069258559-73">}</span><span·class="p"·data-group-id="6069258559-72">}</span><span·class="p"·data-group-id="6069258559-71">}</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·240,·SHA:·189f12307db44b48bbae2096126d742199d907ef79c483901160b664b2c32e8f·...·]-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="2287897088-75">[</span><span·class="p"·data-group-id="2287897088-75">]</span><span·class="p"·data-group-id="2287897088-73">}</span><span·class="p"·data-group-id="2287897088-72">}</span><span·class="p"·data-group-id="2287897088-71">}</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·240,·SHA:·b0a9b905acb68033b2ea9580cebbbb0fb2e67185f562c34a824294687dede55d·...·]-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="3896298766-1">(</span><span·class="ss">ch4</span><span·class="p"·data-group-id="3896298766-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="2546064934-1">(</span><span·class="ss">ch4</span><span·class="p"·data-group-id="2546064934-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="3896298766-2">(</span><span·class="p"·data-group-id="3896298766-3">[</span><span·class="ss">start_link</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="3896298766-3">]</span><span·class="p"·data-group-id="3896298766-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="2546064934-2">(</span><span·class="p"·data-group-id="2546064934-3">[</span><span·class="ss">start_link</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="2546064934-3">]</span><span·class="p"·data-group-id="2546064934-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="3896298766-4">(</span><span·class="p"·data-group-id="3896298766-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:·7ac62a12360d64c8173375eb10a55d92a9bc1bdbcc39875212426d11a4abdfaa·...·]-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="2546064934-4">(</span><span·class="p"·data-group-id="2546064934-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:·5e456a2474f49142123309c99d5f73be086437a2309f02e2d02f5fe30bd162fa·...·]-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="3896298766-6">(</span><span·class="p"·data-group-id="3896298766-7">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="3896298766-7">]</span><span·class="p"·data-group-id="3896298766-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="2546064934-6">(</span><span·class="p"·data-group-id="2546064934-7">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="2546064934-7">]</span><span·class="p"·data-group-id="2546064934-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="3896298766-8">(</span><span·class="p"·data-group-id="3896298766-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="2546064934-8">(</span><span·class="p"·data-group-id="2546064934-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="3896298766-9">]</span><span·class="p"·data-group-id="3896298766-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="2546064934-9">]</span><span·class="p"·data-group-id="2546064934-8">)</span><span·class="p">.</span><span·class="w">
  
212 </span><span·class="nf">start_link</span><span·class="p"·data-group-id="3896298766-10">(</span><span·class="p"·data-group-id="3896298766-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="2546064934-10">(</span><span·class="p"·data-group-id="2546064934-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="3896298766-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="3896298766-12">[</span><span·class="nf">self</span>[·...·truncated·by·diffoscope;·len:·203,·SHA:·293b6635d4218f06ee1629ca849b8da2e1e3c984cfeae1f2cf568912549e270d·...·]-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="2546064934-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="2546064934-12">[</span><span·class="nf">self</span>[·...·truncated·by·diffoscope;·len:·203,·SHA:·85c7ed0978f5085f82caef8c14fb1c4df44c0817fd80cbd94eaf2c7c52617d9e·...·]-11">)</span><span·class="p">.</span><span·class="w">
  
214 </span><span·class="nf">alloc</span><span·class="p"·data-group-id="3896298766-14">(</span><span·class="p"·data-group-id="3896298766-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="2546064934-14">(</span><span·class="p"·data-group-id="2546064934-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="3896298766-15">{</span><span·class="nf">self</span><span·class="p"·data-group-id="3896298766-16">(</span><span·class="p"·data-group-id="3896298766-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:·4551324c708eeacea7afaf25be090490175edb1cf3ee800a9c78a2fdf4d88455·...·]-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="2546064934-15">{</span><span·class="nf">self</span><span·class="p"·data-group-id="2546064934-16">(</span><span·class="p"·data-group-id="2546064934-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:·7674fbcc5fee254528a8e25c4c79fdd369198ee2090c447ce2137a825bf2923e·...·]-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="3896298766-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="3896298766-17">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">217 ········</span><span·class="p"·data-group-id="2546064934-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="2546064934-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="3896298766-18">(</span><span·class="n">Ch</span><span·class="p"·data-group-id="3896298766-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="2546064934-18">(</span><span·class="n">Ch</span><span·class="p"·data-group-id="2546064934-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="3896298766-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="3896298766-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="2546064934-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="2546064934-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="3896298766-20">(</span><span·class="n">Parent</span><span·class="p"·data-group-id="3896298766-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="2546064934-20">(</span><span·class="n">Parent</span><span·class="p"·data-group-id="2546064934-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="3896298766-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="3896298766-22">(</span><span·class="p"·data-group-id="3896298766-22">)</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·19,·SHA:·56cd88f21a6af41f631bc55d3875bf173516eb6fceb09ee2e4635743cd5107f7·...·]-21">)</span><span·class="p">,</span><span·class="w">224 ····</span><span·class="nf">register</span><span·class="p"·data-group-id="2546064934-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="2546064934-22">(</span><span·class="p"·data-group-id="2546064934-22">)</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·19,·SHA:·eef15dd4a595004618fd9d2c435663dd3c3ca727e6a1d3905f742ada0c33e8c4·...·]-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="3896298766-23">(</span><span·class="p"·data-group-id="3896298766-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="2546064934-23">(</span><span·class="p"·data-group-id="2546064934-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="3896298766-24">(</span><span·class="p"·data-group-id="3896298766-25">[</span><span·class="p"·data-group-id="3896298766-25">]</span><span·class="p"·data-group-id="3896298766-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="2546064934-24">(</span><span·class="p"·data-group-id="2546064934-25">[</span><span·class="p"·data-group-id="2546064934-25">]</span><span·class="p"·data-group-id="2546064934-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="3896298766-26">(</span><span·class="n">Parent</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3896298766-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:·1c1cdc416fb852b0637eb00cdaf27ffa9281536363fad15b596cc982924d76ea·...·]-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="2546064934-26">(</span><span·class="n">Parent</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2546064934-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:·d3fff663bb512bf56e50ca9d1946c48afa8208c0717a2e24a0837add8b13515d·...·]-26">)</span><span·class="p">,</span><span·class="w">
228 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="3896298766-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="3896298766-29">)</span><span·class="p">.</span><span·class="w">228 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="2546064934-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="2546064934-29">)</span><span·class="p">.</span><span·class="w">
  
229 </span><span·class="nf">loop</span><span·class="p"·data-group-id="3896298766-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="3896298766-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="2546064934-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="2546064934-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="3896298766-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="3896298766-31">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">231 ········</span><span·class="p"·data-group-id="2546064934-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="2546064934-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="3896298766-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="2546064934-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="3896298766-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="3896298766-33">}</span><[·...·truncated·by·diffoscope;·len:·40,·SHA:·77f01bb2461fa83d964105e0f4500794fea972e18af3ad6a57144b432ce236cc·...·]-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="2546064934-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="2546064934-33">}</span><[·...·truncated·by·diffoscope;·len:·40,·SHA:·004ede9fa4fe05d037ba8eccdf3cbd066964c00dc903a789d9cf0a51be2ce25c·...·]-32">)</span><span·class="p">,</span><span·class="w">
234 ············</span><span·class="p"·data-group-id="3896298766-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="3896298766-34">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·143,·SHA:·5da9a84807bef23c80913db6f37b3e924d5ca1bfc4e34c9189622e2b8bed2ee7·...·]-35">)</span><span·class="p">,</span><span·class="w">234 ············</span><span·class="p"·data-group-id="2546064934-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="2546064934-34">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·143,·SHA:·d88515f4895f81d0492b1f7bb74408040f4bcdb3f0b64e38574e25468f1cec32·...·]-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="3896298766-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="3896298766-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="2546064934-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="2546064934-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="3896298766-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="2546064934-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="3896298766-38">{</span><span·class="ss">out</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3896298766-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:·7c00278de102bfbd036b98cb08652b792cf89e70955e475c1434a0ba806179f9·...·]-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="2546064934-38">{</span><span·class="ss">out</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2546064934-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:·cd246aeef1979e9e8748eef7d56be1de6edfc62140efaf6060ea2276072918b1·...·]-37">)</span><span·class="p">,</span><span·class="w">
238 ············</span><span·class="nf">loop</span><span·class="p"·data-group-id="3896298766-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="3896298766-40">)</span><span·class="p">;</span><span·class="w">238 ············</span><span·class="nf">loop</span><span·class="p"·data-group-id="2546064934-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="2546064934-40">)</span><span·class="p">;</span><span·class="w">
239 ········</span><span·class="p"·data-group-id="3896298766-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="3896298766-41">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">239 ········</span><span·class="p"·data-group-id="2546064934-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="2546064934-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="3896298766-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="2546064934-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="3896298766-43">{</span><span·class="ss">in</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3896298766-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:·afabb0a39b21c5a9d9b2ef0a6071c0c916bce921040ae2f2925cb2ed00aafb7f·...·]-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="2546064934-43">{</span><span·class="ss">in</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2546064934-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:·e1b31da3d072e5010fe6c3daddec0ab50473fcbacc27e78dd7fd01c92911fd64·...·]-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="3896298766-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="3896298766-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="2546064934-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="2546064934-45">)</span><span·class="p">,</span><span·class="w">
243 ············</span><span·class="nf">loop</span><span·class="p"·data-group-id="3896298766-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="3896298766-46">)</span><span·class="p">;</span><span·class="w">243 ············</span><span·class="nf">loop</span><span·class="p"·data-group-id="2546064934-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="2546064934-46">)</span><span·class="p">;</span><span·class="w">
  
244 ········</span><span·class="p"·data-group-id="3896298766-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="3896298766-47">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">244 ········</span><span·class="p"·data-group-id="2546064934-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="2546064934-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="3618359924-1">(</span><span·class="n">S</span><span·class="p"·data-group-id="3618359924-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="3618359924-2">(</span><spa[·...·truncated·by·diffoscope;·len:·533,·SHA:·f22b396e2c6600a05e598e3ed464e6d27d186254e69f026c2d91345fe21ca2d4·...·]-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="3118862511-1">(</span><span·class="n">S</span><span·class="p"·data-group-id="3118862511-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="3118862511-2">(</span><spa[·...·truncated·by·diffoscope;·len:·533,·SHA:·69bdf67cc1517e12f0782639bc640789f51506c176429c36068eeeb2c61c3c3b·...·]-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.2/doc/html/gen_statem.html#t:state_enter/0"><em>state·callback</em></a>409 mode</em>,·automatically·call·the·<a·href="../../lib/stdlib-6.2.2/doc/html/gen_statem.html#t:state_enter/0"><em>state·callback</em></a>
410 with·special·arguments·whenever·the·state·changes,·so·you·can·write410 with·special·arguments·whenever·the·state·changes,·so·you·can·write
411 state·enter·actions·near·the·rest·of·the·<em>state·transition</em>·rules.411 state·enter·actions·near·the·rest·of·the·<em>state·transition</em>·rules.
412 It·typically·looks·like·this:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">StateName</span><span·class="p"·data-group-id="2748190615-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="2748190615-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="9907681693-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="9907681693-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="2748190615-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="2748190615-2">}</span><span·class="p">;</span><span·class="w">414 ····</span><span·class="p"·data-group-id="9907681693-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="9907681693-2">}</span><span·class="p">;</span><span·class="w">
415 </span><span·class="n">StateName</span><span·class="p"·data-group-id="2748190615-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="2748190615-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="9907681693-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="9907681693-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="2748190615-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="27481906[·...·truncated·by·diffoscope;·len:·2,·SHA:·e629fa6598d732768f7c726b4b621285f9c3b85303900aa912017db7617d8bdb·...·]-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="9907681693-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="99076816[·...·truncated·by·diffoscope;·len:·2,·SHA:·6e4001871c0cf27c7634ef1dc478408f642410fd3a444e2a88e301f5c4a35a4d·...·]-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.2/doc/html/gen_statem.html#c:init/1"><code·class="inline">gen_statem:init/1</code></a>·will·get421 <a·href="#callback-module"><em>callback·module</em></a>.</p><p>The·first·state·that·is·entered·after·<a·href="../../lib/stdlib-6.2.2/doc/html/gen_statem.html#c:init/1"><code·class="inline">gen_statem:init/1</code></a>·will·get
422 a·<em>state·enter·call</em>·with·<code·class="inline">OldState</code>·equal·to·the·current·state.</p><p>You·may·repeat·the·<em>state·enter·call</em>·using·the·<code·class="inline">{repeat_state,...}</code>·return422 a·<em>state·enter·call</em>·with·<code·class="inline">OldState</code>·equal·to·the·current·state.</p><p>You·may·repeat·the·<em>state·enter·call</em>·using·the·<code·class="inline">{repeat_state,...}</code>·return
423 value·from·the·<a·href="#state-callback"><em>state·callback</em></a>.·In·this·case423 value·from·the·<a·href="#state-callback"><em>state·callback</em></a>.·In·this·case
424 <code·class="inline">OldState</code>·will·also·be·equal·to·the·current·state.</p><p>Depending·on·how·your·state·machine·is·specified,·this·can·be·a·very·useful424 <code·class="inline">OldState</code>·will·also·be·equal·to·the·current·state.</p><p>Depending·on·how·your·state·machine·is·specified,·this·can·be·a·very·useful
Offset 499, 72 lines modifiedOffset 499, 72 lines modified
  
499 ····locked······--&gt;·check_code·:·{button, Button}\n* Collect·Buttons499 ····locked······--&gt;·check_code·:·{button, Button}\n* Collect·Buttons
500 ····check_code··--&gt;·locked·····:·Incorrect·code500 ····check_code··--&gt;·locked·····:·Incorrect·code
501 ····check_code··--&gt;·open·······:·Correct·code\n* do_unlock()\n* Clear·Buttons\n* Set·state_timeout·10·s501 ····check_code··--&gt;·open·······:·Correct·code\n* do_unlock()\n* Clear·Buttons\n* Set·state_timeout·10·s
  
502 ····open········--&gt;·open···:·{button, Digit}502 ····open········--&gt;·open···:·{button, Digit}
503 ····open········--&gt;·locked·:·state_timeout\n* do_lock()</code></pre><p>This·code·lock·state·machine·can·be·implemented·using·<a·href="../../lib/stdlib-6.2.2/doc/html/gen_statem.html"><code·class="inline">gen_statem</code></a>·with503 ····open········--&gt;·locked·:·state_timeout\n* do_lock()</code></pre><p>This·code·lock·state·machine·can·be·implemented·using·<a·href="../../lib/stdlib-6.2.2/doc/html/gen_statem.html"><code·class="inline">gen_statem</code></a>·with
504 the·following·<em>callback·module</em>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="5231444012-1">(</span><span·class="ss">code_lock</span><span·class="p"·data-group-id="5231444012-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="8902658848-1">(</span><span·class="ss">code_lock</span><span·class="p"·data-group-id="8902658848-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="5231444012-2">(</span><span·class="ss">gen_statem</span><span·class="p"·data-group-id="5231444012-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="8902658848-2">(</span><span·class="ss">gen_statem</span><span·class="p"·data-group-id="8902658848-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="5231444012-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="5231444012-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="8902658848-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="8902658848-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="5231444012-4">(</span><span·class="p"·data-group-id="5231444012-5">[</span><span·class="ss">start_link</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="5231444012-5">]</span><span·class="p"·data-group-id="5231444012-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="5231444012-6">(</span><span·class="p"·data-group-id="5231444012-7">[</span><span·class="ss">button</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="5231444012-7">]</span><span·class="p"·data-group-id="5231444012-6">)</span><span·class="p">.</span><span·class="w">508 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="8902658848-4">(</span><span·class="p"·data-group-id="8902658848-5">[</span><span·class="ss">start_link</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="8902658848-5">]</span><span·class="p"·data-group-id="8902658848-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="8902658848-6">(</span><span·class="p"·data-group-id="8902658848-7">[</span><span·class="ss">button</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="8902658848-7">]</span><span·class="p"·data-group-id="8902658848-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="5231444012-8">(</span><span·class="p"·data-group-id="5231444012-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:·93acccb441946eb90e7b25e6c4662f6a5a0f9da0d110f2c1f04e26f3cd0bb43a·...·]-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="8902658848-8">(</span><span·class="p"·data-group-id="8902658848-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:·123c9974b9c90d9c56565a876e48452d9f3cff61804328c194d2a886c3c2391d·...·]-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="5231444012-10">(</span><span·class="p"·data-group-id="5231444012-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:·2d653b109561d74e52544446cc1c10cf4111f3d9f56ca47e119ede41245745d5·...·]-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="8902658848-10">(</span><span·class="p"·data-group-id="8902658848-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:·d09af33d19e929117b6e26f5b2ff7c661b2f5ae0681d3c885838709fe031f488·...·]-10">)</span><span·class="p">.</span><span·class="w">
  
512 </span><span·class="nf">start_link</span><span·class="p"·data-group-id="5231444012-12">(</span><span·class="n">Code</span><span·class="p"·data-group-id="5231444012-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="8902658848-12">(</span><span·class="n">Code</span><span·class="p"·data-group-id="8902658848-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="5231444012-13">(</span><span·class="p"·data-group-id="5231444012-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="5231444012-14">}</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·352,·SHA:·a6fb972c3edd1361be45bf8fbb550e77273eb5a504d187320e987ca241ff0bf3·...·]-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="8902658848-13">(</span><span·class="p"·data-group-id="8902658848-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="8902658848-14">}</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·352,·SHA:·20163c89a5cf2673f6484d201320f722c771c7342cad149b1b769ecda702354f·...·]-13">)</span><span·class="p">.</span><span·class="w">
  
514 </span><span·class="nf">button</span><span·class="p"·data-group-id="5231444012-16">(</span><span·class="n">Button</span><span·class="p"·data-group-id="5231444012-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="8902658848-16">(</span><span·class="n">Button</span><span·class="p"·data-group-id="8902658848-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="5231444012-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="5231444012-18">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="n">Button</sp[·...·truncated·by·diffoscope;·len:·98,·SHA:·928fb5ddc4b56f9987e3003edfb97755bde38ba47753f246d442546153acdecd·...·]-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="8902658848-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="8902658848-18">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="n">Button</sp[·...·truncated·by·diffoscope;·len:·98,·SHA:·273b2df8a1c79fc7a1b9f1ab510cf1a0dfb9ee9e8503f957674d80b6c5473435·...·]-17">)</span><span·class="p">.</span><span·class="w">
  
516 </span><span·class="nf">init</span><span·class="p"·data-group-id="5231444012-19">(</span><span·class="n">Code</span><span·class="p"·data-group-id="5231444012-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="8902658848-19">(</span><span·class="n">Code</span><span·class="p"·data-group-id="8902658848-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="5231444012-20">(</span><span·class="p"·data-group-id="5231444012-20">)</span><span·class="p">,</span><span·class="w">517 ····</span><span·class="nf">do_lock</span><span·class="p"·data-group-id="8902658848-20">(</span><span·class="p"·data-group-id="8902658848-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="5231444012-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:·f8620e3d991b1cc6de6ec9a37c6fe961db2bbca70808198a0dfa6cd5c07229dc·...·]-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="8902658848-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:·5183b4f3e9d68bc165802fc6691bb9a5b02b4569d2d1740598b05e7880da80b5·...·]-21">}</span><span·class="p">,</span><span·class="w">
519 ····</span><span·class="p"·data-group-id="5231444012-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="5231444012-24">}</span><span·class="p">.</span><span·class="w">519 ····</span><span·class="p"·data-group-id="8902658848-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="8902658848-24">}</span><span·class="p">.</span><span·class="w">
  
520 </span><span·class="nf">callback_mode</span><span·class="p"·data-group-id="5231444012-25">(</span><span·class="p"·data-group-id="5231444012-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="8902658848-25">(</span><span·class="p"·data-group-id="8902658848-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="9943784835-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="1282495282-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="9943784835-2">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="n">Button</span><span·class="p"·data-group-id="9943784835-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="1282495282-2">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="n">Button</span><span·class="p"·data-group-id="1282495282-2">}</span><span·class="p">,</span><span·class="w">
523 ··</span><span·class="p"·data-group-id="9943784835-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:·5b3988c41232a8e24142f0d17a7c38298b4cc00c922f2aed175c5926155b4330·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">523 ··</span><span·class="p"·data-group-id="1282495282-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:·7cfae3bb71c6741e2368af9da2dc801f04370d478a9d914448ac91b1b4045232·...·]-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="9943784835-4">(</span><span·class="n">Buttons</span><span·class="p"·data-group-id="9943784835-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="1282495282-4">(</span><span·class="n">Buttons</span><span·class="p"·data-group-id="1282495282-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="9943784835-5">(</span><span·class="n">Buttons</span><span·class="p"·data-group-id="9943784835-5">)</span><span·class="w">529 ················</span><span·class="nf">tl</span><span·class="p"·data-group-id="1282495282-5">(</span><span·class="n">Buttons</span><span·class="p"·data-group-id="1282495282-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="9943784835-6">[</span><span·class="n">Button</span><span·class="p"·data-group-id="9943784835-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="1282495282-6">[</span><span·class="n">Button</span><span·class="p"·data-group-id="1282495282-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="9943784835-7">(</span><span·class="p"·data-group-id="9943784835-7">)</span><span·class="p">,</span><span·class="w">533 »       ····</span><span·class="nf">do_unlock</span><span·class="p"·data-group-id="1282495282-7">(</span><span·class="p"·data-group-id="1282495282-7">)</span><span·class="p">,</span><span·class="w">
534 ············</span><span·class="p"·data-group-id="9943784835-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="9943784835-9">#{</[·...·truncated·by·diffoscope;·len:·258,·SHA:·aa167013f31fd41c7b5931538e7c3243d9c9f2d7f3647a0656502175eb972e59·...·]-9">}</span><span·class="p">,</span><span·class="w">534 ············</span><span·class="p"·data-group-id="1282495282-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="1282495282-9">#{</[·...·truncated·by·diffoscope;·len:·258,·SHA:·12ff50b2723c43ec694d4ada030260a8361d4ca010bb85ab64c116ac83fa9661·...·]-9">}</span><span·class="p">,</span><span·class="w">
535 ·············</span><span·class="p"·data-group-id="9943784835-11">[</span><span·class="p"·data-group-id="9943784835-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:·f58ab071b463deb536b0ad63b813fcf5cebebc2bad80ee28d178ff12a0ee8c17·...·]-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="1282495282-11">[</span><span·class="p"·data-group-id="1282495282-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:·9aad0b594567e5b13e8beb33a524f8d3efa9906782f0ebd2cdbf133300c59e99·...·]-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="9943784835-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="9943784835-14">[·...·truncated·by·diffoscope;·len:·241,·SHA:·bef2fe26aba4b96ded77079d34c56e2227f81a43519358081178874ec1aee9ba·...·]-13">}</span><span·class="w">537 ············</span><span·class="p"·data-group-id="1282495282-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="1282495282-14">[·...·truncated·by·diffoscope;·len:·241,·SHA:·b351645ad1460025c14bb39a5bc45659e1c3c48e7e1e4ca0f9b23db05517effc·...·]-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="1059734156-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="1059734156-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="4065816452-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="4065816452-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="1059734156-2">(</span><span·class="p"·data-group-id="1059734156-2">)</span><span·class="p">,</span><span·class="w">539 ····</span><span·class="nf">do_lock</span><span·class="p"·data-group-id="4065816452-2">(</span><span·class="p"·data-group-id="4065816452-2">)</span><span·class="p">,</span><span·class="w">
540 ····</span><span·class="p"·data-group-id="1059734156-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="1059734156-3">}</span><span·class="p">;</span><span·class="w">540 ····</span><span·class="p"·data-group-id="4065816452-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="4065816452-3">}</span><span·class="p">;</span><span·class="w">
541 </span><span·class="nf">open</span><span·class="p"·data-group-id="1059734156-4">(</span><span·class="ss">cast</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1059734156-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:·97841763b4099c3752ae12410981ba9f241fea2dc28f4d7288b9cb809b266f50·...·]-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="4065816452-4">(</span><span·class="ss">cast</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4065816452-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:·3989b4e66b6be00ec08349d644afd96b2a391af5333ba74b1b9cedf3d98199a5·...·]-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
542 ····</span><span·class="p"·data-group-id="1059734156-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="1059734156-6">}</s[·...·truncated·by·diffoscope;·len:·214,·SHA:·ab1c900993b44d0a5017e1759a51e8705951eee7a6442b83b02e729ca357abb6·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">542 ····</span><span·class="p"·data-group-id="4065816452-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="4065816452-6">}</s[·...·truncated·by·diffoscope;·len:·214,·SHA:·83ac9bff1ad638cf23770b5e0bcc66dff46832e72db63369772b550fd6e61f5a·...·]-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="1272802045-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="1272802045-3">[</span><span·class="p"·data-group-id="1272802045-3">[·...·truncated·by·diffoscope;·len:·49,·SHA:·0564af203d7b31b1d4d9350a5f3390d5d18e20e472d45ed74bf3d00a7b9304a6·...·]-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="6322196228-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="6322196228-3">[</span><span·class="p"·data-group-id="6322196228-3">[·...·truncated·by·diffoscope;·len:·49,·SHA:·832bb52a67bfd6574fe576c18a26f5b817033ab9b88ce5ca77dd3d86624774e6·...·]-2">)</span><span·class="p">.</span><span·class="w">
544 </span><span·class="nf">do_unlock</span><span·class="p"·data-group-id="1272802045-4">(</span><span·class="p"·data-group-id="1272802045-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="6322196228-4">(</span><span·class="p"·data-group-id="6322196228-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="1272802045-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="1272802045-6">[</span><span·class="p"·data-group-id="1272802045-6[·...·truncated·by·diffoscope;·len:·51,·SHA:·7846208cd025f568cacd05c5f266bb795a30263d4bf43fa9c42396ba5883c682·...·]-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="6322196228-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="6322196228-6">[</span><span·class="p"·data-group-id="6322196228-6[·...·truncated·by·diffoscope;·len:·51,·SHA:·4c9a042b3688ac35679caa94e7c1c83fbf4f6da374fc51d6c732e18c5dedb84c·...·]-5">)</span><span·class="p">.</span><span·class="w">
  
546 </span><span·class="nf">terminate</span><span·class="p"·data-group-id="1272802045-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:·ac6b4fa0d036cfab21571ec232d6cd95416cb7be351ee3d49fd1413b2e29a1e3·...·]-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="6322196228-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:·f50f37297635eb6d461e56fe94e929278333c85a3411199db36dd601bbbef375·...·]-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="1272802045-8">(</span><span·class="p"·data-group-id="1272802045-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="6322196228-8">(</span><span·class="p"·data-group-id="6322196228-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="5745444424-1">(</span><span·class="n">Code</span><span·class="p"·data-group-id="5745444424-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="8241447734-1">(</span><span·class="n">Code</span><span·class="p"·data-group-id="8241447734-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="5745444424-2">(</span><span·class="p"·data-group-id="5745444424-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="5745444424-3">}</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·346,·SHA:·fdfdbf8b635cfbd615dd0a8f747e1dfb8d096193562f3acfc7646d36c35adbf1·...·]4-2">)</span><span·class="p">.</span></code></pre><p><code·class="inline">start_link/1</code>·calls·function·<a·href="../../lib/stdlib-6.2.2/doc/html/gen_statem.html#start_link/4"><code·class="inline">gen_statem:start_link/4</code></a>,556 ····</span><span·class="nc">gen_statem</span><span·class="p">:</span><span·class="nf">start_link</span><span·class="p"·data-group-id="8241447734-2">(</span><span·class="p"·data-group-id="8241447734-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="8241447734-3">}</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·346,·SHA:·ae88dd33ac96372fcb20a20daf3e6012be4f61ba3423331cf7646826dcab046f·...·]4-2">)</span><span·class="p">.</span></code></pre><p><code·class="inline">start_link/1</code>·calls·function·<a·href="../../lib/stdlib-6.2.2/doc/html/gen_statem.html#start_link/4"><code·class="inline">gen_statem:start_link/4</code></a>,
557 which·spawns·and·links·to·a·new·process,·a·<code·class="inline">gen_statem</code>.</p><ul><li><p>The·first·argument,·<code·class="inline">{local,?NAME}</code>,·specifies·the·name.·In·this·case,·the557 which·spawns·and·links·to·a·new·process,·a·<code·class="inline">gen_statem</code>.</p><ul><li><p>The·first·argument,·<code·class="inline">{local,?NAME}</code>,·specifies·the·name.·In·this·case,·the
558 <code·class="inline">gen_statem</code>·is·locally·registered·as·<code·class="inline">code_lock</code>·through·the·macro·<code·class="inline">?NAME</code>.</p><p>If·the·name·is·omitted,·the·<code·class="inline">gen_statem</code>·is·not·registered.·Instead·its·pid558 <code·class="inline">gen_statem</code>·is·locally·registered·as·<code·class="inline">code_lock</code>·through·the·macro·<code·class="inline">?NAME</code>.</p><p>If·the·name·is·omitted,·the·<code·class="inline">gen_statem</code>·is·not·registered.·Instead·its·pid
559 must·be·used.·The·name·can·also·be·specified·as·<code·class="inline">{global, Name}</code>,·then·the559 must·be·used.·The·name·can·also·be·specified·as·<code·class="inline">{global, Name}</code>,·then·the
560 <code·class="inline">gen_statem</code>·is·registered·using·<a·href="../../lib/kernel-10.2.6/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.6/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.2/doc/html/gen_statem.html#start_link/3"><code·class="inline">gen_statem:start_link/3</code></a>.</p></li></ul><p>If·name·registration·succeeds,·the·new·<code·class="inline">gen_statem</code>·process·calls·callback574 see·<a·href="../../lib/stdlib-6.2.2/doc/html/gen_statem.html#start_link/3"><code·class="inline">gen_statem:start_link/3</code></a>.</p></li></ul><p>If·name·registration·succeeds,·the·new·<code·class="inline">gen_statem</code>·process·calls·callback
575 function·<code·class="inline">code_lock:init(Code)</code>.·This·function·is·expected·to·return575 function·<code·class="inline">code_lock:init(Code)</code>.·This·function·is·expected·to·return
576 <code·class="inline">{ok,·State,·Data}</code>,·where·<code·class="inline">State</code>·is·the·initial·state·of·the·<code·class="inline">gen_statem</code>,576 <code·class="inline">{ok,·State,·Data}</code>,·where·<code·class="inline">State</code>·is·the·initial·state·of·the·<code·class="inline">gen_statem</code>,
577 in·this·case·<code·class="inline">locked</code>;·assuming·that·the·door·is·locked·to·begin·with.577 in·this·case·<code·class="inline">locked</code>;·assuming·that·the·door·is·locked·to·begin·with.
578 <code·class="inline">Data</code>·is·the·internal·server·data·of·the·<code·class="inline">gen_statem</code>.·Here·the·server·data578 <code·class="inline">Data</code>·is·the·internal·server·data·of·the·<code·class="inline">gen_statem</code>.·Here·the·server·data
579 is·a·<a·href="../../lib/stdlib-6.2.2/doc/html/maps.html"><code·class="inline">map()</code></a>·with·key·<code·class="inline">code</code>·that·stores·the·correct579 is·a·<a·href="../../lib/stdlib-6.2.2/doc/html/maps.html"><code·class="inline">map()</code></a>·with·key·<code·class="inline">code</code>·that·stores·the·correct
580 button·sequence,·key·<code·class="inline">length</code>·store·its·length,·and·key·<code·class="inline">buttons</code>580 button·sequence,·key·<code·class="inline">length</code>·store·its·length,·and·key·<code·class="inline">buttons</code>
581 that·stores·the·collected·buttons·up·to·the·same·length.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">init</span><span·class="p"·data-group-id="1963201626-1">(</span><span·class="n">Code</span><span·class="p"·data-group-id="1963201626-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="0748459080-1">(</span><span·class="n">Code</span><span·class="p"·data-group-id="0748459080-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="1963201626-2">(</span><span·class="p"·data-group-id="1963201626-2">)</span><span·class="p">,</span><span·class="w">582 ····</span><span·class="nf">do_lock</span><span·class="p"·data-group-id="0748459080-2">(</span><span·class="p"·data-group-id="0748459080-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="1963201626-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:·9b81c3c130ba0e499be016abf0c459037b60bf69a96110a6bf1c0aa01035b264·...·]-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="0748459080-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:·c98b8ca1c91b88161759dce71866f2f5273d3ac2490d468cb544a9a7d4112250·...·]-3">}</span><span·class="p">,</span><span·class="w">
584 ····</span><span·class="p"·data-group-id="1963201626-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="1963201626-6">}</span><span·class="p">.</span></code></pre><p>Function·<a·href="../../lib/stdlib-6.2.2/doc/html/gen_statem.html#start_link/3"><code·class="inline">gen_statem:start_link/3,4</code></a>584 ····</span><span·class="p"·data-group-id="0748459080-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="0748459080-6">}</span><span·class="p">.</span></code></pre><p>Function·<a·href="../../lib/stdlib-6.2.2/doc/html/gen_statem.html#start_link/3"><code·class="inline">gen_statem:start_link/3,4</code></a>
585 is·synchronous.·It·does·not·return·until·the·<code·class="inline">gen_statem</code>·is·initialized585 is·synchronous.·It·does·not·return·until·the·<code·class="inline">gen_statem</code>·is·initialized
586 and·is·ready·to·receive·events.</p><p>Function·<a·href="../../lib/stdlib-6.2.2/doc/html/gen_statem.html#start_link/3"><code·class="inline">gen_statem:start_link/3,4</code></a>586 and·is·ready·to·receive·events.</p><p>Function·<a·href="../../lib/stdlib-6.2.2/doc/html/gen_statem.html#start_link/3"><code·class="inline">gen_statem:start_link/3,4</code></a>
587 must·be·used·if·the·<code·class="inline">gen_statem</code>·is·part·of·a·supervision·tree,·that·is,587 must·be·used·if·the·<code·class="inline">gen_statem</code>·is·part·of·a·supervision·tree,·that·is,
588 started·by·a·supervisor.··Function,588 started·by·a·supervisor.··Function,
589 <a·href="../../lib/stdlib-6.2.2/doc/html/gen_statem.html#start/3"><code·class="inline">gen_statem:start/3,4</code></a>·can·be·used·to·start589 <a·href="../../lib/stdlib-6.2.2/doc/html/gen_statem.html#start/3"><code·class="inline">gen_statem:start/3,4</code></a>·can·be·used·to·start
Max diff block lines reached; 326310/377138 bytes (86.52%) 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="2400839984-1">(</span><span·class="ss">ch_sup</span><span·class="p"·data-group-id="2400839984-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="0310081262-1">(</span><span·class="ss">ch_sup</span><span·class="p"·data-group-id="0310081262-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="2400839984-2">(</span><span·class="ss">supervisor</span><span·class="p"·data-group-id="2400839984-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="0310081262-2">(</span><span·class="ss">supervisor</span><span·class="p"·data-group-id="0310081262-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="2400839984-3">(</span><span·class="p"·data-group-id="2400839984-4">[</span><span·class="ss">start_link</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="2400839984-4">]</span><span·class="p"·data-group-id="2400839984-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="2400839984-5">(</span><span·class="p"·data-group-id="2400839984-6">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="2400839984-6">]</span><span·class="p"·data-group-id="2400839984-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="0310081262-3">(</span><span·class="p"·data-group-id="0310081262-4">[</span><span·class="ss">start_link</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="0310081262-4">]</span><span·class="p"·data-group-id="0310081262-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="0310081262-5">(</span><span·class="p"·data-group-id="0310081262-6">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="0310081262-6">]</span><span·class="p"·data-group-id="0310081262-5">)</span><span·class="p">.</span><span·class="w">
  
140 </span><span·class="nf">start_link</span><span·class="p"·data-group-id="2400839984-7">(</span><span·class="p"·data-group-id="2400839984-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="0310081262-7">(</span><span·class="p"·data-group-id="0310081262-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="2400839984-8">(</span><span·class="ss">ch_sup</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2400839984-9">[</span><span·class="p"·data-group-id="2400839984-9">]</span><span·class="p"·data-group-id="2400839984-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="0310081262-8">(</span><span·class="ss">ch_sup</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0310081262-9">[</span><span·class="p"·data-group-id="0310081262-9">]</span><span·class="p"·data-group-id="0310081262-8">)</span><span·class="p">.</span><span·class="w">
  
142 </span><span·class="nf">init</span><span·class="p"·data-group-id="2400839984-10">(</span><span·class="p">_</span><span·class="n">Args</span><span·class="p"·data-group-id="2400839984-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="0310081262-10">(</span><span·class="p">_</span><span·class="n">Args</span><span·class="p"·data-group-id="0310081262-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="2400839984-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:·ada5f95595597ec16c4d2c68a50a9e2a6470d16f54169b2f17ef125667a74bb5·...·]-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="0310081262-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:·0307134eb2f609e31e278ce4d2ded1d86c3d99da3ce9c97a09c5560fbec3a3e5·...·]-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="2400839984-12">[</span><span·class="p"·data-group-id="2400839984-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="0310081262-12">[</span><span·class="p"·data-group-id="0310081262-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="2400839984-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="2400839984-15">[</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·73,·SHA:·606b240fec48f54e431e119f79e39f58a661b07d91eddbf26bc0fde7c82fc334·...·]-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="0310081262-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="0310081262-15">[</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·73,·SHA:·937384cadd23c880717c4ca05f2e9b83c28dd41ab0043ba06433a28b6ce23719·...·]-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="2400839984-16">[</span><span·class="ss">ch3</span><span·class="p"·data-group-id="2400839984-16">]</span><span·class="p"·data-group-id="2400839984-13">}</span><span·class="p"·data-group-id="2400839984-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="0310081262-16">[</span><span·class="ss">ch3</span><span·class="p"·data-group-id="0310081262-16">]</span><span·class="p"·data-group-id="0310081262-13">}</span><span·class="p"·data-group-id="0310081262-12">]</span><span·class="p">,</span><span·class="w">
150 ····</span><span·class="p"·data-group-id="2400839984-17">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2400839984-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:·55fcb6194eb66af831a57176cc5e16fc02d1fe138b81eec4ab2b8c364147208b·...·]-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="0310081262-17">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0310081262-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:·fd6c6232fd48ecff1ffdf90adbdc3af926853605302fae468659601538addc36·...·]-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="4979096106-1">(</span><span·class="p"·data-group-id="4979096106-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="4979096106-2">#{</span><span·class="ss">strategy</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·179,·SHA:·7039a82dc816db0d4182386fbc9c7035d0d61798fbba03155a09b65a2f19b41c·...·]-3">)</span><span·class="p">,</span><span·class="w">···········</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="1912032360-1">(</span><span·class="p"·data-group-id="1912032360-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="1912032360-2">#{</span><span·class="ss">strategy</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·179,·SHA:·534f7603708645ad90c95a52f5e239891ffb33c8ccf833e42c42e204ae7b5f90·...·]-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="4979096106-4">(</span><span·class="p"·data-group-id="4979096106-4">)</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="1912032360-4">(</span><span·class="p"·data-group-id="1912032360-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="4979096106-5">(</span><span·class="p"·data-group-id="4979096106-5">)</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="1912032360-5">(</span><span·class="p"·data-group-id="1912032360-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="4979096106-6">(</span><span·class="p"·data-group-id="4979096106-6">)</span><span·class="p"·data-group-id="4979096106-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="1912032360-6">(</span><span·class="p"·data-group-id="1912032360-6">)</span><span·class="p"·data-group-id="1912032360-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="4979096106-7">(</span><span·class="p"·data-group-id="4979096106-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="1912032360-7">(</span><span·class="p"·data-group-id="1912032360-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="4979096106-8">(</span><span·class="p"·data-group-id="4979096106-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="1912032360-8">(</span><span·class="p"·data-group-id="1912032360-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="7208744807-1">(</span><span·class="p"·data-group-id="7208744807-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="7208744807-2">#{</span><span·class="ss">id</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·173,·SHA:·5e750a7d989e5f937633a016d4f42a1c6e7352b3bc220d3bf1dc1d4b3def1ff2·...·]-3">)</span><span·class="p">,</span><span·class="w">·············</span><span·class="c1">%·mandatory</span><span·class="w">415 <p>The·type·definition·for·a·child·specification·is·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">child_spec</span><span·class="p"·data-group-id="6239012772-1">(</span><span·class="p"·data-group-id="6239012772-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="6239012772-2">#{</span><span·class="ss">id</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·173,·SHA:·ecff2bdb52a032eb4c80f3b088181a9b8d4287dbe35def9600537aa66f079d2c·...·]-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="7208744807-4">(</span><span·class="p"·data-group-id="7208744807-4">)</span><span·class="p">,</span><span·class="w">············</span><span·class="c1">%·mandatory</span><span·class="w">416 ·················</span><span·class="ss">start</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="nf">mfargs</span><span·class="p"·data-group-id="6239012772-4">(</span><span·class="p"·data-group-id="6239012772-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="7208744807-5">(</span><span·class="p"·data-group-id="7208744807-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="6239012772-5">(</span><span·class="p"·data-group-id="6239012772-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="7208744807-6">(</span><span·class="p"·data-group-id="7208744807-6">)</span><span·class="p">,</span><span·class="w">·</span><span·class="c1">%·optional</span><span·class="w">418 ·················</span><span·class="ss">significant</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="nf">significant</span><span·class="p"·data-group-id="6239012772-6">(</span><span·class="p"·data-group-id="6239012772-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="7208744807-7">(</span><span·class="p"·data-group-id="7208744807-7">)</span><span·class="p">,</span><span·class="w">·······</span><span·class="c1">%·optional</span><span·class="w">419 ·················</span><span·class="ss">shutdown</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="nf">shutdown</span><span·class="p"·data-group-id="6239012772-7">(</span><span·class="p"·data-group-id="6239012772-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="7208744807-8">(</span><span·class="p"·data-group-id="7208744807-8">)</span><span·class="p">,</span><span·class="w">·············</span><span·class="c1">%·optional</span><span·class="w">420 ·················</span><span·class="ss">type</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="nf">worker</span><span·class="p"·data-group-id="6239012772-8">(</span><span·class="p"·data-group-id="6239012772-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="7208744807-9">(</span><span·class="p"·data-group-id="7208744807-9">)</span><span·class="p"·data-group-id="7208744807-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="6239012772-9">(</span><span·class="p"·data-group-id="6239012772-9">)</span><span·class="p"·data-group-id="6239012772-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="7208744807-10">(</span><span·class="p"·data-group-id="7208744807-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="7208744807-11">(</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·b5bb3d6325b2bea3b8cdfce0ce2a66f68361202ad0ec49eeb2dacf485a3df0bb·...·]-11">)</span><span·class="w">422 ····</span><span·class="nf">child_id</span><span·class="p"·data-group-id="6239012772-10">(</span><span·class="p"·data-group-id="6239012772-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="6239012772-11">(</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·d95241f9238b936f622de61d31943cc4df0d8c7dea8d6d91338242d58f193293·...·]-11">)</span><span·class="w">
423 ····</span><span·class="nf">mfargs</span><span·class="p"·data-group-id="7208744807-12">(</span><span·class="p"·data-group-id="7208744807-12">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="7208744807-13">{</span><span·class="n">M</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·962,·SHA:·c2743d9379eac3ccb9b1609e7b3bcde5f480f7fd0808066c6f79b7049e6ee420·...·]-13">}</span><span·class="w">423 ····</span><span·class="nf">mfargs</span><span·class="p"·data-group-id="6239012772-12">(</span><span·class="p"·data-group-id="6239012772-12">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="6239012772-13">{</span><span·class="n">M</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·962,·SHA:·be5336f5dbe73d465daa0076c47184f8aafca4f0ea336b27613a5706edc868c3·...·]-13">}</span><span·class="w">
424 ····</span><span·class="nf">modules</span><span·class="p"·data-group-id="7208744807-18">(</span><span·class="p"·data-group-id="7208744807-18">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="7208744807-19">[</span><span·class="nf">module</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·126,·SHA:·5f1c6f04321b30339a5792033a6fc0cbdd7ae0662056a8de9b29d22bf1357c97·...·]-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="6239012772-18">(</span><span·class="p"·data-group-id="6239012772-18">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="6239012772-19">[</span><span·class="nf">module</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·126,·SHA:·6ca97761fe18e52aa3c89e3797e832662a65964666f1879520d96ddf2d36d2ce·...·]-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="7208744807-21">(</span><span·class="p"·data-group-id="7208744807-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="6239012772-21">(</span><span·class="p"·data-group-id="6239012772-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="7208744807-22">(</span><span·class="p"·data-group-id="7208744807-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="7208744807-23">(</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·19,·SHA:·1b93fd1b5cdf1f8b10b9295bc965a0cf27b2cf135428845accfcc7832a6d35ca·...·]-23">)</span><span·class="w">426 ····</span><span·class="nf">significant</span><span·class="p"·data-group-id="6239012772-22">(</span><span·class="p"·data-group-id="6239012772-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="6239012772-23">(</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·19,·SHA:·af5654b89d61ec4617dc21243c692097ab0c7b519a42d9a5639dec36248fa7e6·...·]-23">)</span><span·class="w">
427 ····</span><span·class="nf">shutdown</span><span·class="p"·data-group-id="7208744807-24">(</span><span·class="p"·data-group-id="7208744807-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:·faf6a214f1fe8bad3f04a0a8243db2694b4d30c32ff40d46fdc4d3b13c5443cf·...·]-25">)</span><span·class="w">427 ····</span><span·class="nf">shutdown</span><span·class="p"·data-group-id="6239012772-24">(</span><span·class="p"·data-group-id="6239012772-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:·70f4d995f1d1f18a7e19a8c997871aab7a2fc12e366c57b0e4e5829706057d98·...·]-25">)</span><span·class="w">
428 ····</span><span·class="nf">worker</span><span·class="p"·data-group-id="7208744807-26">(</span><span·class="p"·data-group-id="7208744807-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="6239012772-26">(</span><span·class="p"·data-group-id="6239012772-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.6/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.2/doc/html/supervisor.html#start_link/3"><code·class="inline">supervisor:start_link/2,3</code></a></li><li><a·href="../../lib/stdlib-6.2.2/doc/html/gen_server.html#start_link/4"><code·class="inline">gen_server:start_link/3,4</code></a></li><li><a·href="../../lib/stdlib-6.2.2/doc/html/gen_statem.html#start_link/4"><code·class="inline">gen_statem:start_link/3,4</code></a></li><li><a·href="../../lib/stdlib-6.2.2/doc/html/gen_event.html#start_link/2"><code·class="inline">gen_event:start_link/0,1,2</code></a></li><li>A·function·compliant·with·these·functions.·For·details,·see432 module-function-arguments·tuple·used·as·<a·href="../../erts-15.2.6/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.2/doc/html/supervisor.html#start_link/3"><code·class="inline">supervisor:start_link/2,3</code></a></li><li><a·href="../../lib/stdlib-6.2.2/doc/html/gen_server.html#start_link/4"><code·class="inline">gen_server:start_link/3,4</code></a></li><li><a·href="../../lib/stdlib-6.2.2/doc/html/gen_statem.html#start_link/4"><code·class="inline">gen_statem:start_link/3,4</code></a></li><li><a·href="../../lib/stdlib-6.2.2/doc/html/gen_event.html#start_link/2"><code·class="inline">gen_event:start_link/0,1,2</code></a></li><li>A·function·compliant·with·these·functions.·For·details,·see
433 <a·href="../../lib/stdlib-6.2.2/doc/html/supervisor.html"><code·class="inline">supervisor</code></a>.</li></ul><p>The·<code·class="inline">start</code>·key·is·mandatory.</p></li><li><p><a·href=""·id="restart"></a>·<code·class="inline">restart</code>·defines·when·a·terminated·child·process·is·to·be433 <a·href="../../lib/stdlib-6.2.2/doc/html/supervisor.html"><code·class="inline">supervisor</code></a>.</li></ul><p>The·<code·class="inline">start</code>·key·is·mandatory.</p></li><li><p><a·href=""·id="restart"></a>·<code·class="inline">restart</code>·defines·when·a·terminated·child·process·is·to·be
434 restarted.</p><ul><li>A·<code·class="inline">permanent</code>·child·process·is·always·restarted.</li><li>A·<code·class="inline">temporary</code>·child·process·is·never·restarted·(not·even·when·the·supervisor434 restarted.</p><ul><li>A·<code·class="inline">permanent</code>·child·process·is·always·restarted.</li><li>A·<code·class="inline">temporary</code>·child·process·is·never·restarted·(not·even·when·the·supervisor
435 restart·strategy·is·<code·class="inline">rest_for_one</code>·or·<code·class="inline">one_for_all</code>·and·a·sibling·death435 restart·strategy·is·<code·class="inline">rest_for_one</code>·or·<code·class="inline">one_for_all</code>·and·a·sibling·death
Offset 457, 53 lines modifiedOffset 457, 53 lines modified
457 <code·class="inline">supervisor</code>,·the·default·value·<code·class="inline">infinity</code>·will·be·used.</p></li><li><p><code·class="inline">type</code>·specifies·whether·the·child·process·is·a·supervisor·or·a·worker.</p><p>The·<code·class="inline">type</code>·key·is·optional.·If·it·is·not·given,·the·default·value·<code·class="inline">worker</code>457 <code·class="inline">supervisor</code>,·the·default·value·<code·class="inline">infinity</code>·will·be·used.</p></li><li><p><code·class="inline">type</code>·specifies·whether·the·child·process·is·a·supervisor·or·a·worker.</p><p>The·<code·class="inline">type</code>·key·is·optional.·If·it·is·not·given,·the·default·value·<code·class="inline">worker</code>
458 will·be·used.</p></li><li><p><code·class="inline">modules</code>·has·to·be·a·list·consisting·of·a·single·element.·The·value458 will·be·used.</p></li><li><p><code·class="inline">modules</code>·has·to·be·a·list·consisting·of·a·single·element.·The·value
459 of·that·element·depends·on·the·behaviour·of·the·process:</p><ul><li>If·the·child·process·is·a·<code·class="inline">gen_event</code>,·the·element·has·to·be·the·atom459 of·that·element·depends·on·the·behaviour·of·the·process:</p><ul><li>If·the·child·process·is·a·<code·class="inline">gen_event</code>,·the·element·has·to·be·the·atom
460 <code·class="inline">dynamic</code>.</li><li>Otherwise,·the·element·should·be·<code·class="inline">Module</code>,·where·<code·class="inline">Module</code>·is·the460 <code·class="inline">dynamic</code>.</li><li>Otherwise,·the·element·should·be·<code·class="inline">Module</code>,·where·<code·class="inline">Module</code>·is·the
461 name·of·the·callback·module.</li></ul><p>This·information·is·used·by·the·release·handler·during·upgrades·and461 name·of·the·callback·module.</li></ul><p>This·information·is·used·by·the·release·handler·during·upgrades·and
462 downgrades;·see·<a·href="release_handling.html">Release·Handling</a>.</p><p>The·<code·class="inline">modules</code>·key·is·optional.·If·it·is·not·given,·it·defaults·to·<code·class="inline">[M]</code>,·where462 downgrades;·see·<a·href="release_handling.html">Release·Handling</a>.</p><p>The·<code·class="inline">modules</code>·key·is·optional.·If·it·is·not·given,·it·defaults·to·<code·class="inline">[M]</code>,·where
463 <code·class="inline">M</code>·comes·from·the·child's·start·<code·class="inline">{M,F,A}</code>.</p></li></ul><p><em>Example:</em>·The·child·specification·to·start·the·server·<code·class="inline">ch3</code>·in·the·previous463 <code·class="inline">M</code>·comes·from·the·child's·start·<code·class="inline">{M,F,A}</code>.</p></li></ul><p><em>Example:</em>·The·child·specification·to·start·the·server·<code·class="inline">ch3</code>·in·the·previous
464 example·look·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="2317323469-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="2013503089-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="2317323469-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="2317323469-3">[</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·68,·SHA:·764f59c309efdd19e4c8d0038e78516966ac7be2843656a5601924dc9beb4ab9·...·]9-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="2013503089-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="2013503089-3">[</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·68,·SHA:·a852ea61822662c1e8276c796ee509a3f2493103dc8a72ba42c4944db21049b2·...·]9-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="2317323469-4">[</span><span·class="ss">ch3</span><span·class="p"·data-group-id="2317323469-4">]</span><span·class="p"·data-group-id="2317323469-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="2013503089-4">[</span><span·class="ss">ch3</span><span·class="p"·data-group-id="2013503089-4">]</span><span·class="p"·data-group-id="2013503089-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="6848431023-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="6036400451-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="6848431023-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="6848431023-3">[</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·291,·SHA:·04ce118a76e37ba57eb39b52910d6343a6735a1d183b26a1197c4b8bf704f46e·...·]-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="6036400451-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="6036400451-3">[</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·291,·SHA:·778d2a605eae084d789722b701effbeeaab08e2316e25dd77769738015d92233·...·]-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="6848431023-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="6036400451-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="8126594531-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="8588774868-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="8126594531-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="8126594531-3">[</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·69,·SHA:·e29ff20b30f62ed3fa622254b710e409c712952e8b97472f02f2f2c91b3698c7·...·]-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="8588774868-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="8588774868-3">[</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·69,·SHA:·a60eb84dd1dfa96ad4fc8e0d0c1827dae1666535503420f5bcfad837f3e4ffc4·...·]-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="8126594531-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="8588774868-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="5339051738-1">(</span><span·class="p"·data-group-id="5339051738-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="6894615351-1">(</span><span·class="p"·data-group-id="6894615351-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="5339051738-2">(</span><span·class="ss">ch_sup</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5339051738-3">[</span><span·class="p"·data-group-id="5339051738-3">]</span><span·class="p"·data-group-id="5339051738-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.2/doc/html/supervisor.html#start_link/2"><code·class="inline">supervisor:start_link/2</code></a>,·which·spawns·and489 ····</span><span·class="nc">supervisor</span><span·class="p">:</span><span·class="nf">start_link</span><span·class="p"·data-group-id="6894615351-2">(</span><span·class="ss">ch_sup</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6894615351-3">[</span><span·class="p"·data-group-id="6894615351-3">]</span><span·class="p"·data-group-id="6894615351-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.2/doc/html/supervisor.html#start_link/2"><code·class="inline">supervisor:start_link/2</code></a>,·which·spawns·and
490 links·to·a·new·process,·a·supervisor.</p><ul><li>The·first·argument,·<code·class="inline">ch_sup</code>,·is·the·name·of·the·callback·module,·that·is,·the490 links·to·a·new·process,·a·supervisor.</p><ul><li>The·first·argument,·<code·class="inline">ch_sup</code>,·is·the·name·of·the·callback·module,·that·is,·the
491 module·where·the·<code·class="inline">init</code>·callback·function·is·located.</li><li>The·second·argument,·<code·class="inline">[]</code>,·is·a·term·that·is·passed·as·is·to·the·callback491 module·where·the·<code·class="inline">init</code>·callback·function·is·located.</li><li>The·second·argument,·<code·class="inline">[]</code>,·is·a·term·that·is·passed·as·is·to·the·callback
492 function·<code·class="inline">init</code>.·Here,·<code·class="inline">init</code>·does·not·need·any·data·and·ignores·the·argument.</li></ul><p>In·this·case,·the·supervisor·is·not·registered.·Instead·its·pid·must·be·used.·A492 function·<code·class="inline">init</code>.·Here,·<code·class="inline">init</code>·does·not·need·any·data·and·ignores·the·argument.</li></ul><p>In·this·case,·the·supervisor·is·not·registered.·Instead·its·pid·must·be·used.·A
493 name·can·be·specified·by·calling493 name·can·be·specified·by·calling
494 <a·href="../../lib/stdlib-6.2.2/doc/html/supervisor.html#start_link/3"><code·class="inline">supervisor:start_link({local,·Name},·Module,·Args)</code></a>494 <a·href="../../lib/stdlib-6.2.2/doc/html/supervisor.html#start_link/3"><code·class="inline">supervisor:start_link({local,·Name},·Module,·Args)</code></a>
495 or495 or
496 <a·href="../../lib/stdlib-6.2.2/doc/html/supervisor.html#start_link/3"><code·class="inline">supervisor:start_link({global,·Name},·Module,·Args)</code></a>.</p><p>The·new·supervisor·process·calls·the·callback·function·<code·class="inline">ch_sup:init([])</code>.·<code·class="inline">init</code>496 <a·href="../../lib/stdlib-6.2.2/doc/html/supervisor.html#start_link/3"><code·class="inline">supervisor:start_link({global,·Name},·Module,·Args)</code></a>.</p><p>The·new·supervisor·process·calls·the·callback·function·<code·class="inline">ch_sup:init([])</code>.·<code·class="inline">init</code>
497 has·to·return·<code·class="inline">{ok,·{SupFlags,·ChildSpecs}}</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">init</span><span·class="p"·data-group-id="9716107027-1">(</span><span·class="p">_</span><span·class="n">Args</span><span·class="p"·data-group-id="9716107027-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="3922078970-1">(</span><span·class="p">_</span><span·class="n">Args</span><span·class="p"·data-group-id="3922078970-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="9716107027-2">#{</span><span·class="p"·data-group-id="9716107027-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="3922078970-2">#{</span><span·class="p"·data-group-id="3922078970-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="9716107027-3">[</span><span·class="p"·data-group-id="9716107027-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="3922078970-3">[</span><span·class="p"·data-group-id="3922078970-4">#{</span><span·class="ss">id</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">ch3</span><span·class="p">,</span><span·class="w">
500 ····················</span><span·class="ss">start</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="9716107027-5">{</span><span·class="ss">ch3</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">start_link</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9716107027-6">[</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·70,·SHA:·0914b180105e77521aa92218ac5683a384ace61623f91c693e18caa66849a86c·...·]-5">}</span><span·class="p">,</span><span·class="w">500 ····················</span><span·class="ss">start</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="3922078970-5">{</span><span·class="ss">ch3</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">start_link</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3922078970-6">[</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·70,·SHA:·b44b110de53e0b954c4d72a59add81f9fb5b73c88678136535f1ee6b27b3c9ab·...·]-5">}</span><span·class="p">,</span><span·class="w">
501 ····················</span><span·class="ss">shutdown</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">brutal_kill</span><span·class="p"·data-group-id="9716107027-4">}</span><span·class="p"·data-group-id="9716107027-3">]</span><span·class="p">,</span><span·class="w">501 ····················</span><span·class="ss">shutdown</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">brutal_kill</span><span·class="p"·data-group-id="3922078970-4">}</span><span·class="p"·data-group-id="3922078970-3">]</span><span·class="p">,</span><span·class="w">
502 ····</span><span·class="p"·data-group-id="9716107027-7">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9716107027-8">{</span><span·class="n">SupFlags</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ChildSpecs</[·...·truncated·by·diffoscope;·len:·99,·SHA:·acfa2abbc1a20e797d8a9a86376ba0a51c31f02a5ffb591bcf8e43c44d07b3dd·...·]-7">}</span><span·class="p">.</span></code></pre><p>Subsequently,·the·supervisor·starts·its·child·processes·according·to·the·child502 ····</span><span·class="p"·data-group-id="3922078970-7">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3922078970-8">{</span><span·class="n">SupFlags</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ChildSpecs</[·...·truncated·by·diffoscope;·len:·99,·SHA:·1d5b9d022b0c64cf80ace6c9a9aa781563a8f21d3afe55fe5745918311b76310·...·]-7">}</span><span·class="p">.</span></code></pre><p>Subsequently,·the·supervisor·starts·its·child·processes·according·to·the·child
503 specifications·in·the·start·specification.·In·this·case·there·is·a·single·child503 specifications·in·the·start·specification.·In·this·case·there·is·a·single·child
504 process,·called·<code·class="inline">ch3</code>.</p><p><a·href="../../lib/stdlib-6.2.2/doc/html/supervisor.html#start_link/3"><code·class="inline">supervisor:start_link/3</code></a>·is·synchronous.·It·does·not·return·until·all·child504 process,·called·<code·class="inline">ch3</code>.</p><p><a·href="../../lib/stdlib-6.2.2/doc/html/supervisor.html#start_link/3"><code·class="inline">supervisor:start_link/3</code></a>·is·synchronous.·It·does·not·return·until·all·child
Max diff block lines reached; 11700/65236 bytes (17.93%) 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="2546200774-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="2546200774-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="1205947767-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="1205947767-1">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
154 ····</span><span·class="p"·data-group-id="2546200774-2">[</span><span·class="p"·data-group-id="2546200774-2">]</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">154 ····</span><span·class="p"·data-group-id="1205947767-2">[</span><span·class="p"·data-group-id="1205947767-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="2546200774-3">[</span><span·class="p">_</span><span·class="p">|</span><span·class="p">_</span><span·class="p"·data-group-id="2546200774-3">]</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">156 ····</span><span·class="p"·data-group-id="1205947767-3">[</span><span·class="p">_</span><span·class="p">|</span><span·class="p">_</span><span·class="p"·data-group-id="1205947767-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="2546200774-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="2546200774-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="1205947767-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="1205947767-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="1098831268-1">(</span><span·class="n">PersonId</span><span·class="p"·data-group-id="1098831268-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="5067613303-1">(</span><span·class="n">PersonId</span><span·class="p"·data-group-id="5067613303-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="1098831268-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="1098831268-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="5067613303-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="5067613303-2">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
172 ········</span><span·class="p"·data-group-id="1098831268-3">[</span><span·class="n">Person</span><span·class="p"·data-group-id="1098831268-3">]</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">172 ········</span><span·class="p"·data-group-id="5067613303-3">[</span><span·class="n">Person</span><span·class="p"·data-group-id="5067613303-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="1098831268-4">(</span><span·class="n">Person</span><span·class="p"·data-group-id="1098831268-4">)</span><span·class="p">,</span><span·class="w">173 ············</span><span·class="nf">print_name</span><span·class="p"·data-group-id="5067613303-4">(</span><span·class="n">Person</span><span·class="p"·data-group-id="5067613303-4">)</span><span·class="p">,</span><span·class="w">
174 ············</span><span·class="nf">print_age</span><span·class="p"·data-group-id="1098831268-5">(</span><span·class="n">Person</span><span·class="p"·data-group-id="1098831268-5">)</span><span·class="p">,</span><span·class="w">174 ············</span><span·class="nf">print_age</span><span·class="p"·data-group-id="5067613303-5">(</span><span·class="n">Person</span><span·class="p"·data-group-id="5067613303-5">)</span><span·class="p">,</span><span·class="w">
175 ············</span><span·class="nf">print_occupation</span><span·class="p"·data-group-id="1098831268-6">(</span><span·class="n">Person</span><span·class="p"·data-group-id="1098831268-6">)</span><span·class="p">;</span><span·class="w">175 ············</span><span·class="nf">print_occupation</span><span·class="p"·data-group-id="5067613303-6">(</span><span·class="n">Person</span><span·class="p"·data-group-id="5067613303-6">)</span><span·class="p">;</span><span·class="w">
176 ········</span><span·class="p"·data-group-id="1098831268-7">[</span><span·class="p"·data-group-id="1098831268-7">]</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">176 ········</span><span·class="p"·data-group-id="5067613303-7">[</span><span·class="p"·data-group-id="5067613303-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="1098831268-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="1098831268-9">[</span><sp[·...·truncated·by·diffoscope;·len:·122,·SHA:·0d07eb9468488ef0108d6787b948d9c2c3bca46667c00fbfc788d683f076dafa·...·]-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="5067613303-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="5067613303-9">[</span><sp[·...·truncated·by·diffoscope;·len:·122,·SHA:·2750c99fd62e4c06b8d200d1dbb815c3a52c8781790cd33d9f7ee5e1b14c0490·...·]-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="1098831268-10">(</span><span·class="n">Person</span><span·class="p"·data-group-id="1098831268-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="5067613303-10">(</span><span·class="n">Person</span><span·class="p"·data-group-id="5067613303-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="1098831268-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="1098831268-12">[</span><span·class[·...·truncated·by·diffoscope;·len:·219,·SHA:·3458932f116718e8c9f1f1128317232fe4e4f440a2be776c825a957cfdbbbf9f·...·]-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="5067613303-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="5067613303-12">[</span><span·class[·...·truncated·by·diffoscope;·len:·219,·SHA:·91a9ce7a08d1324d416f395dbbc2f8d99d79dd0a1fe1fff6df5475ee3fe6ac1e·...·]-11">)</span><span·class="p">.</span><span·class="w">
  
182 </span><span·class="nf">print_age</span><span·class="p"·data-group-id="1098831268-13">(</span><span·class="n">Person</span><span·class="p"·data-group-id="1098831268-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="5067613303-13">(</span><span·class="n">Person</span><span·class="p"·data-group-id="5067613303-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="1098831268-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="1098831268-15">[</span><span·class[·...·truncated·by·diffoscope;·len:·218,·SHA:·a885068a7a58efe7408878d04b5f7f39a9084ad972cafe763e5ebee3682271bf·...·]-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="5067613303-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="5067613303-15">[</span><span·class[·...·truncated·by·diffoscope;·len:·218,·SHA:·5bf0c401064ab559f3987ff77d398b23dfc6f8dcc33dcac43166d041c2f12870·...·]-14">)</span><span·class="p">.</span><span·class="w">
  
184 </span><span·class="nf">print_occupation</span><span·class="p"·data-group-id="1098831268-16">(</span><span·class="n">Person</span><span·class="p"·data-group-id="1098831268-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="5067613303-16">(</span><span·class="n">Person</span><span·class="p"·data-group-id="5067613303-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="1098831268-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="1098831268-18">[</span><span·class[·...·truncated·by·diffoscope;·len:·225,·SHA:·06e69e9266dd0ad71c7557d440d950a50545e2eabdbe4f3f3d388001bbea4db3·...·]-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="5067613303-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="5067613303-18">[</span><span·class[·...·truncated·by·diffoscope;·len:·225,·SHA:·66a14dbcbbb59c7da5203c399f7b687dddcb57f531d7753bc393ee99e7b9b77c·...·]-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="6984441008-1">(</span><span·class="n">PersonId</span><span·class="p"·data-group-id="6984441008-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="3980025832-1">(</span><span·class="n">PersonId</span><span·class="p"·data-group-id="3980025832-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="6984441008-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="6984441008-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="3980025832-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="3980025832-2">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
189 ········</span><span·class="p"·data-group-id="6984441008-3">[</span><span·class="n">Person</span><span·class="p"·data-group-id="6984441008-3">]</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">189 ········</span><span·class="p"·data-group-id="3980025832-3">[</span><span·class="n">Person</span><span·class="p"·data-group-id="3980025832-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="6984441008-4">(</span><span·class="n">PersonID</span><span·class="p"·data-group-id="6984441008-4">)</span><span·class="p">,</span><span·class="w">190 ············</span><span·class="nf">print_name</span><span·class="p"·data-group-id="3980025832-4">(</span><span·class="n">PersonID</span><span·class="p"·data-group-id="3980025832-4">)</span><span·class="p">,</span><span·class="w">
191 ············</span><span·class="nf">print_age</span><span·class="p"·data-group-id="6984441008-5">(</span><span·class="n">PersonID</span><span·class="p"·data-group-id="6984441008-5">)</span><span·class="p">,</span><span·class="w">191 ············</span><span·class="nf">print_age</span><span·class="p"·data-group-id="3980025832-5">(</span><span·class="n">PersonID</span><span·class="p"·data-group-id="3980025832-5">)</span><span·class="p">,</span><span·class="w">
192 ············</span><span·class="nf">print_occupation</span><span·class="p"·data-group-id="6984441008-6">(</span><span·class="n">PersonID</span><span·class="p"·data-group-id="6984441008-6">)</span><span·class="p">;</span><span·class="w">192 ············</span><span·class="nf">print_occupation</span><span·class="p"·data-group-id="3980025832-6">(</span><span·class="n">PersonID</span><span·class="p"·data-group-id="3980025832-6">)</span><span·class="p">;</span><span·class="w">
193 ········</span><span·class="p"·data-group-id="6984441008-7">[</span><span·class="p"·data-group-id="6984441008-7">]</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">193 ········</span><span·class="p"·data-group-id="3980025832-7">[</span><span·class="p"·data-group-id="3980025832-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="6984441008-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="6984441008-9">[</span><sp[·...·truncated·by·diffoscope;·len:·122,·SHA:·7411f4e57bd6f087f7b08acc9fa21fcbda9f5d9783b7dc094bc470aa47b08b0a·...·]-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="3980025832-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="3980025832-9">[</span><sp[·...·truncated·by·diffoscope;·len:·122,·SHA:·073a76619c03f8399cdcafd2c8913c426e454d96e0080fe1c75da932b40f2678·...·]-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="6984441008-10">(</span><span·class="n">PersonID</span><span·class="p"·data-group-id="6984441008-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="3980025832-10">(</span><span·class="n">PersonID</span><span·class="p"·data-group-id="3980025832-10">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
198 ····</span><span·class="p"·data-group-id="6984441008-11">[</span><span·class="n">Person</span><span·class="p"·data-group-id="6984441008-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:·cb940a93ff206e5eaa7b6a64adf5979e91d841d027d1005c93494d875e0ce46f·...·]-12">)</span><span·class="p">,</span><span·class="w">198 ····</span><span·class="p"·data-group-id="3980025832-11">[</span><span·class="n">Person</span><span·class="p"·data-group-id="3980025832-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:·136bd569b6fad960460b3d0e6b18e370fb946edc2f5e4db87d379eed747d9cd5·...·]-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="6984441008-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="6984441008-14">[</span><span·class[·...·truncated·by·diffoscope;·len:·219,·SHA:·53037ab2188e17a43516e3c73b12fc3b8d6905e21586c7d1d9f3229d289fe35c·...·]-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="3980025832-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="3980025832-14">[</span><span·class[·...·truncated·by·diffoscope;·len:·219,·SHA:·05715c33913fb564abc870c4bc2fda72660668cf9abc4137c837c4002be5db6d·...·]-13">)</span><span·class="p">.</span><span·class="w">
  
200 </span><span·class="nf">print_age</span><span·class="p"·data-group-id="6984441008-15">(</span><span·class="n">PersonID</span><span·class="p"·data-group-id="6984441008-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="3980025832-15">(</span><span·class="n">PersonID</span><span·class="p"·data-group-id="3980025832-15">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
201 ····</span><span·class="p"·data-group-id="6984441008-16">[</span><span·class="n">Person</span><span·class="p"·data-group-id="6984441008-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:·b432e7c89fd4facbee75980e945e29bf48b86c857cbe4e60327c2b741c007c11·...·]-17">)</span><span·class="p">,</span><span·class="w">201 ····</span><span·class="p"·data-group-id="3980025832-16">[</span><span·class="n">Person</span><span·class="p"·data-group-id="3980025832-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:·acbf5cb2c8710338697ed622e95d9db93a5416ecf480ccb8fa8d668d2dc07786·...·]-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="6984441008-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="6984441008-19">[</span><span·class[·...·truncated·by·diffoscope;·len:·218,·SHA:·343a5d41f0de77c5b4263d4f9da3009bbf5defb534a0fc5f2fb2709bbdc915b8·...·]-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="3980025832-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="3980025832-19">[</span><span·class[·...·truncated·by·diffoscope;·len:·218,·SHA:·33dd3b7f3fbe8606cbc893e43ed6784246d0e059c4e7792ac8348ef3df708f2a·...·]-18">)</span><span·class="p">.</span><span·class="w">
  
203 </span><span·class="nf">print_occupation</span><span·class="p"·data-group-id="6984441008-20">(</span><span·class="n">PersonID</span><span·class="p"·data-group-id="6984441008-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="3980025832-20">(</span><span·class="n">PersonID</span><span·class="p"·data-group-id="3980025832-20">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
204 ····</span><span·class="p"·data-group-id="6984441008-21">[</span><span·class="n">Person</span><span·class="p"·data-group-id="6984441008-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:·9d00c77e0faa49c973e331192e64344e8d897b4495af5c062da6fcbe98415494·...·]-22">)</span><span·class="p">,</span><span·class="w">204 ····</span><span·class="p"·data-group-id="3980025832-21">[</span><span·class="n">Person</span><span·class="p"·data-group-id="3980025832-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:·a5fd88ab52bff66e18683f817f6eff8ead4d215461e556084d3aa3dcc0dea137·...·]-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="6984441008-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="6984441008-24">[</span><span·class[·...·truncated·by·diffoscope;·len:·225,·SHA:·57e049012a62ee80d43d2999cc21411524e0fc4dbd2b540743abce30343ab5ec·...·]-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="3980025832-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="3980025832-24">[</span><span·class[·...·truncated·by·diffoscope;·len:·225,·SHA:·5ab82437d02c4e86284eb101a72ab17dcfc3dcc1cdb4cb85d6ca7c4a3a569653·...·]-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.2/doc/html/ets.html#tab2list/1"><code·class="inline">ets:tab2list/1</code></a>.·However,·usually·you·are·only·interested·in·a·subset·of·the231 <a·href="../../lib/stdlib-6.2.2/doc/html/ets.html#tab2list/1"><code·class="inline">ets:tab2list/1</code></a>.·However,·usually·you·are·only·interested·in·a·subset·of·the
232 information·in·which·case·<a·href="../../lib/stdlib-6.2.2/doc/html/ets.html#tab2list/1"><code·class="inline">ets:tab2list/1</code></a>·is·expensive.·If·you·only·want·to232 information·in·which·case·<a·href="../../lib/stdlib-6.2.2/doc/html/ets.html#tab2list/1"><code·class="inline">ets:tab2list/1</code></a>·is·expensive.·If·you·only·want·to
233 extract·one·field·from·each·record,·for·example,·the·age·of·every·person,·then:</p><p><strong>DO</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">select</span><span·class="p"·data-group-id="7568322560-1">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7568322560-2">[</span><span·class="p"·data-group-id="7568322560-3">{</span><span·class="o">#</span><span·class="ss">person</span>[·...·truncated·by·diffoscope;·len:·41,·SHA:·ce2b8a269f48a1018ef5e14a0a707f5d1560db0d40a9cd9c7ecfb3f5159a366f·...·]-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="1465092533-1">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1465092533-2">[</span><span·class="p"·data-group-id="1465092533-3">{</span><span·class="o">#</span><span·class="ss">person</span>[·...·truncated·by·diffoscope;·len:·41,·SHA:·411e24b19225f2749df2b69ac341d1e917d4fb819f1f781529e53251afac019e·...·]-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="7568322560-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="1465092533-4">}</span><span·class="p">,</span><span·class="w">
237 ················</span><span·class="p"·data-group-id="7568322560-5">[</span><span·class="p"·data-group-id="7568322560-5">]</span><span·class="p">,</span><span·class="w">237 ················</span><span·class="p"·data-group-id="1465092533-5">[</span><span·class="p"·data-group-id="1465092533-5">]</span><span·class="p">,</span><span·class="w">
238 ················</span><span·class="p"·data-group-id="7568322560-6">[</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="7568322560-6">]</span><span·class="p"·data-group-id="7568322560-3">}</span><span·class="p"·data-group-id="7568322560-2">]</span><span·class="p"·data-group-id="7568322560-1">)</span><span·class="p">,</span></code></pre><p><strong>DO·NOT</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">TabList</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">tab2list</span><span·class="p"·data-group-id="9772081624-1">(</span><span·class="n">Tab</span><span·class="p"·data-group-id="9772081624-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="9772081624-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="9772081624-3">(</span><span·class="n">X</span><span·class=[·...·truncated·by·diffoscope;·len:·1129,·SHA:·030ec84f37c0e7966a3e761adf52cb328df853c4c575656b2955f7e370fd6a9e·...·]</span><span·class="p">,</span><span·class="w">238 ················</span><span·class="p"·data-group-id="1465092533-6">[</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="1465092533-6">]</span><span·class="p"·data-group-id="1465092533-3">}</span><span·class="p"·data-group-id="1465092[·...·truncated·by·diffoscope;·len:·493,·SHA:·4c8cc073aea70dd7cf24059bae09065950df1eebed2032d525d5faaf65928fe3·...·]</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="5011735508-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="5011735508-3">(</span><span·class="n">X</span><span·class="p"·data-group-id="5011735508-3">)</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="ss">person</span><span·class="p">.</span><span·class="ss">age</span><span·class="w">·</span><span·class="k">end</span><span·class="p">,</span><span·class="w">·</span><span·class="n">TabList</span><span·class="p"·data-group-id="5011735508-2">)</span><span·class="p">,</span></code></pre><p>If·you·are·only·interested·in·the·age·of·all·persons·named·&quot;Bryan&quot;,·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="8421387435-1">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8421387435-2">[</span><span·class="p"·data-group-id="8421387435-3">{</span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="8421387435-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="5712774561-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="8421387435-4">}</span><span·class="p">,</span><span·class="w">
243 ················</span><span·class="p"·data-group-id="5712774561-5">[</span><span·class="p"·data-group-id="5712774561-5">]</span><span·class="p">,</span><span·class="w">243 ················</span><span·class="p"·data-group-id="8421387435-5">[</span><span·class="p"·data-group-id="8421387435-5">]</span><span·class="p">,</span><span·class="w">
244 ················</span><span·class="p"·data-group-id="5712774561-6">[</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="5712774561-6">]</span><span·class="p"·data-group-id="5712774561-3">}</span><span·class="p"·data-group-id="5712774561-2">]</span><span·class="p"·data-group-id="57127745[·...·truncated·by·diffoscope;·len:·410,·SHA:·a5746d8ff31b92ae87e87100a7c42e9edd3f6c92b51db23228cc27c69c519cdd·...·]-1">)</span><span·class="p">,</span><span·class="w">244 ················</span><span·class="p"·data-group-id="8421387435-6">[</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="8421387435-6">]</span><span·class="p"·data-group-id="8421387435-3">}</span><span·class="p"·data-group-id="8421387435-2">]</span><span·class="p"·data-group-id="84213874[·...·truncated·by·diffoscope;·len:·410,·SHA:·b24eeef47a296428ded934137dc35dee7c81a0b99ff6ffa9ec6bd7ed1a97b75f·...·]-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="2238006101-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="2238006101-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="2238006101-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="5930423067-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="5930423067-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="5930423067-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="2238006101-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="2238006101-4">]</span><span·class="p">;</span><span·class="w">247 ····································</span><span·class="p"·data-group-id="5930423067-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="5930423067-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="2238006101-5">[</span><span·class="p"·data-group-id="2238006101-5">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">TabList</span><span·class="p"·data-group-id="2238006101-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="5930423067-5">[</span><span·class="p"·data-group-id="5930423067-5">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">TabList</span><span·class="p"·data-group-id="5930423067-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="2031328141-1">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2031328141-2">[</span><span·class="p"·data-group-id="2031328141-3">{</span><span·class="o">#</span><span·class="ss">person</span><s[·...·truncated·by·diffoscope;·len:·39,·SHA:·bca93aca508cab2e14e36d2cfca7545c7d2b0d2ff6c83f36e8cdfbaebb9c3d7b·...·]-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="2087487613-1">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2087487613-2">[</span><span·class="p"·data-group-id="2087487613-3">{</span><span·class="o">#</span><span·class="ss">person</span><s[·...·truncated·by·diffoscope;·len:·39,·SHA:·9d030a4be0bdcaeecd36c5315feca5e72155b3c68a65bef2ffcce2cebaddd3db·...·]-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="2031328141-4">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2031328141-5">[</span><span·class="p"·data-group-id="2031328141-5">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="203[·...·truncated·by·diffoscope;·len:·687,·SHA:·d7b01e59d244b90e16a723de791e9bcae550ea7f2f84e0a4e74e74a2ee181271·...·]-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="2087487613-4">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2087487613-5">[</span><span·class="p"·data-group-id="2087487613-5">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="208[·...·truncated·by·diffoscope;·len:·687,·SHA:·1c42a304fb82e95c94caaa4f3d7af6b19595f74b0e666257a41db3dd30a5eeb4·...·]-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="0850554063-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="0850554063-3">(</span><span·class="n">X</span><span·class="p"·data-group-id="0850554063-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·411,·SHA:·2444f28e909e331a2232da02598fcff4b2329f2b505d4d6f8d372b024c4a4eb3·...·]-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="4728642235-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="4728642235-3">(</span><span·class="n">X</span><span·class="p"·data-group-id="4728642235-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·411,·SHA:·84567e657d6487eb2fcd5ee37fad36565947ff0ac9caeff4280f4972c928a942·...·]-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="5261343689-1">(</span><span·class="n">IndexTable</span><span·class="p">,</span><span·class="s">&quot;Bryan&quot;</span><span·class="p"·data-group-id="5261343689-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="6856468667-1">(</span><span·class="n">IndexTable</span><span·class="p">,</span><span·class="s">&quot;Bryan&quot;</span><span·class="p"·data-group-id="6856468667-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="5261343689-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="5261343689-3">(</span><span·class="o">#</span><span·class="ss">index_entry</span><span·class="p"·data-group-id="5261343689-4">{</span><span·class="ss">idno</span><span·class="w[·...·truncated·by·diffoscope;·len:·177,·SHA:·046ba8242db4fbfba622b6fd76b433dd516880baa6add3d7e25d8966b343324e·...·]-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="6856468667-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="6856468667-3">(</span><span·class="o">#</span><span·class="ss">index_entry</span><span·class="p"·data-group-id="6856468667-4">{</span><span·class="ss">idno</span><span·class="w[·...·truncated·by·diffoscope;·len:·177,·SHA:·5eb571610ca726b708d006bef6351f1dfc96c04770814d4bd79db7f925ec6cb4·...·]-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
302 ·················</span><span·class="p"·data-group-id="5261343689-5">[</span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="5261343689-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:·f41925a1f4d9fae612a7ede0a3e36a42230f159bd2bd19da83bcb625063a2795·...·]-7">)</span><span·class="p">,</span><span·class="w">302 ·················</span><span·class="p"·data-group-id="6856468667-5">[</span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="6856468667-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:·89bca06476c35ddcbb299e195a78bc6abd7b4ed17cfd9e46882532fbeba05f5c·...·]-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="5261343689-2">)</span><span·class="p">,</span></code></pre><p>Notice·that·this·code·does·not·use·<a·href="../../lib/stdlib-6.2.2/doc/html/ets.html#match/2"><code·class="inline">ets:match/2</code></a>,·but·instead·uses·the305 ··········</span><span·class="n">MatchingIDs</span><span·class="p"·data-group-id="6856468667-2">)</span><span·class="p">,</span></code></pre><p>Notice·that·this·code·does·not·use·<a·href="../../lib/stdlib-6.2.2/doc/html/ets.html#match/2"><code·class="inline">ets:match/2</code></a>,·but·instead·uses·the
Max diff block lines reached; 16367/71675 bytes (22.84%) 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.6/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.6/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.6/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.6/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.6/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.6/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.6/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.6/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.6/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.6/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.6/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.6/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.6/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.6/doc/html/erlang.html#t:integer/0"><code·class="inline">integer/0</code></a>·|·<a·href="../../erts-15.2.6/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.6/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.6/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.6/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.6/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.6/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.6/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.6/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.6/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.6/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.6/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.6/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.6/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.6/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.6/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.6/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.6/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.6/doc/html/erlang.html#node/0"><code·class="inline">node/0</code></a></td><td·style="text-align:·left;"><a·href="../../erts-15.2.6/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.6/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.6/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.6/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.6/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.6/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.6/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.6/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.6/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.6/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.6/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.6/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.6/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.6/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.6/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.6/doc/html/erlang.html#t:integer/0"><code·class="inline">integer/0</code></a>·|·<a·href="../../erts-15.2.6/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.6/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.6/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.6/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.6/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.6/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.6/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.6/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.6/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.6/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.6/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.6/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.6/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.6/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.6/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.6/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.6/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.6/doc/html/erlang.html#node/0"><code·class="inline">node/0</code></a></td><td·style="text-align:·left;"><a·href="../../erts-15.2.6/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.6/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.6/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.6/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.6/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.6/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.6/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.6/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.6/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.6/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="1490063471-1">(</span><span·class="p"·data-group-id="1490063471-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="14[·...·truncated·by·diffoscope;·len:·375,·SHA:·52d1354eb9e8b72bd1ad09fd0e3d8108b596af176a6c67388371bef25a765f70·...·]-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="0422344794-1">(</span><span·class="p"·data-group-id="0422344794-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="04[·...·truncated·by·diffoscope;·len:·375,·SHA:·2287f82357bbcdf056b3cef946d78d1fca59f39dc97963fa4baa5a4f88334457·...·]-2">)</span><span·class="w">
246 </span><span·class="nf">nonempty_improper_list</span><span·class="p"·data-group-id="1490063471-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="1490063471-5">)</span><span·class="w">246 </span><span·class="nf">nonempty_improper_list</span><span·class="p"·data-group-id="0422344794-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="0422344794-5">)</span><span·class="w">
247 </span><span·class="nf">nonempty_maybe_improper_list</span><span·class="p"·data-group-id="1490063471-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="1490063471-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="0422344794-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="0422344794-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="1136133979-1">{</span><span·class="p"·data-group-id="1136133979-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="6434527332-1">{</span><span·class="p"·data-group-id="6434527332-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="1136133979-2">{</span><span·class="n">Fields</span><span·class="p"·data-group-id="1136133979-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="6434527332-2">{</span><span·class="n">Fields</span><span·class="p"·data-group-id="6434527332-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="3703253301-1">(</span><span·class="p"·data-group-id="3703253301-1">)</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="3703253301-2">{</span><span·class="ss">&#39;gadget&#39[·...·truncated·by·diffoscope;·len:·235,·SHA:·53bfe4d35390b3a205ae8a63c7baa6129d81761a23d5d6670cf04d94358e0d56·...·]1-2">}</span><span·class="p">.</span></code></pre><p>Further·imagine·that·some·code·has·its·own·(different)·definition·of·<code·class="inline">gadget()</code>,260 <code·class="inline">gadget()</code>·defined·like·this:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">type</span><span·class="w">·</span><span·class="nf">gadget</span><span·class="p"·data-group-id="4003198811-1">(</span><span·class="p"·data-group-id="4003198811-1">)</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="4003198811-2">{</span><span·class="ss">&#39;gadget&#39[·...·truncated·by·diffoscope;·len:·235,·SHA:·409dce4a65d6f55da1a40e1605e4925c09cc3b2f55e795f41270f1217993dc43·...·]1-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="8623606955-1">(</span><span·class="p"·data-group-id="8623606955-1">)</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="8623606955-2">#{</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·9,·SHA:·d9f27f1f29288b7739c9657ab29c063df3e5aa0cff2a026a547df1b59b937fd0·...·]5-2">}</span><span·class="p">.</span></code></pre><p>Since·redefinitions·are·allowed,·the·code·will·still·compile·(but·with·a261 for·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">type</span><span·class="w">·</span><span·class="nf">gadget</span><span·class="p"·data-group-id="4381528635-1">(</span><span·class="p"·data-group-id="4381528635-1">)</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="4381528635-2">#{</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·9,·SHA:·9afcc6a2869a6ef8d11e0a2599a1c1ef57cacaf266530ab0b54f7d12aeef8c65·...·]5-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="4249213047-1">(</span><span·class="p"·data-group-id="4249213047-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="7034637703-1">(</span><span·class="p"·data-group-id="7034637703-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="4249213047-2">(</span><span·class="p"·data-group-id="4249213047-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="7034637703-2">(</span><span·class="p"·data-group-id="7034637703-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="1601187465-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="1601187465-1">)</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="1601187465-2">[</span><span·class="p"·data-group-id="1601187465-3">{</span><span·class="n">Key</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Val</span><span·class="p"·data-group-id="1601187465-3">}</span><span·class="p"·data-group-id="1601187465-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="2396980891-1">(</span><span·class=[·...·truncated·by·diffoscope;·len:·1338,·SHA:·e9448d9c85a5fad26ddd030c3b65cf46def2a34381c70d8a13aa06b9493f1072·...·]·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="22[·...·truncated·by·diffoscope;·len:·693,·SHA:·beaa7d1f065e6cac85640c8114e86ff988b6b990711211a7a14e0a7ba2c2a131·...·]·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="5595224750-1">(</span><span·class="p"·data-group-id="5595224750-2">[</span><span·class="n">T1</span><span·class="o">/</span><span·class="n">A1</span><span·class="p">,</span><span·class="w">·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tk</span><span·class="o">/</span><span·class="n">Ak</span><span·class="p"·data-group-id="5595224750-2">]</span><span·class="p"·data-group-id="5595224750-1">)</span><span·class="p">.</span></code></pre><p>Here·the·<code·class="inline">Ti</code>s·are·atoms·(the·name·of·the·type)·and·the·<code·class="inline">Ai</code>s·are·their·arguments.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">export_type</span><span·class="p"·data-group-id="3803930175-1">(</span><span·class="p"·data-group-id="3803930175-2">[</span><span·class="ss">my_struct_type</span><span·class="p">/</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">orddict</span><span·class="p">/</span><span·class="mi">2</span><span·class="p"·data-group-id="3803930175-2">]</span><span·class="p"·data-group-id="3803930175-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="9555093036-1">(</span><span·class="p"·data-group-id="9555093036-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="4876236411-1">(</span><span·class="p"·data-group-id="4876236411-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="9555093036-2">(</span><span·class="nf">atom</span><span·class="p"·data-group-id="9555093036-3">(</span><span·class="p"·data-group-id="9555093036-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:·3b99a5cee89057b0f969ab78080f8cc7e58942686c4b9c8d0c3e3d3e1e48fe24·...·]-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="4876236411-2">(</span><span·class="nf">atom</span><span·class="p"·data-group-id="4876236411-3">(</span><span·class="p"·data-group-id="4876236411-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:·7d0d031182e6df0178e7f2977adb601c7e56a937c13f46a24e044cf50708174a·...·]-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="8343021536-1">(</span><span·class="ss">rec</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8343021536-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:·f73504605d1432b336b42c304f9c722568cf3af170d5d431154955f613cae9b5·...·]-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="7015053417-1">(</span><span·class="ss">rec</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7015053417-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:·cfe0927541efa49a96cffa7db812f6fb128b3a412bafbf3548043e338ee2f1fd·...·]-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="1495507788-1">(</span><span·class="ss">rec</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1495507788-2">{</span><span·class="ss">field1</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><spa[·...·truncated·by·diffoscope;·len:·650,·SHA:·66d269a5ef1ee3967eb7d1caa846fbadcf775f540966c271108844bc56577680·...·]8-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="0015637968-1">(</span><span·class="ss">rec</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0015637968-2">{</span><span·class="ss">field1</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><spa[·...·truncated·by·diffoscope;·len:·650,·SHA:·16ea6ace8faa36881d8097acf9951b31b1bc8a78e1f291365c41b4ed540161bb·...·]8-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="7423145972-1">(</span><span·class="ss">rec</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7423145972-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:·8a57a5b8a7ae64294239afd6de4bb187aa13778457768e426399c20659e2c3c4·...·]-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="9815218207-1">(</span><span·class="ss">rec</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9815218207-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:·b08d66e50de1ce9a6182474babc98b816fe42885482a86899b426ba0bf3c52b5·...·]-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="1235058571-1">(</span><span·class="ss">rec</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1235058571-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:·de2fe718399848a7d847c7ba6acf63776b27c1fdd662f77e61bf178d6ae8cfaa·...·]-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="6819650072-1">(</span><span·class="ss">rec</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6819650072-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:·ae3132f92b38585c1cdd26af324bb5a3520366f6d912e849b275a50001da1521·...·]-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="1235058571-4">(</span><span·class="p"·data-group-id="1235058571-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="6819650072-4">(</span><span·class="p"·data-group-id="6819650072-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="1235058571-2">}</span><span·class="p"·data-group-id="1235058571-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="6819650072-2">}</span><span·class="p"·data-group-id="6819650072-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="1235058571-5">(</span><span·class="ss">rec</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1235058571-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:·ac4411cb337a5609b30bf045d57e183a420af7ed6e7b391549e81ab8908daeed·...·]-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="6819650072-5">(</span><span·class="ss">rec</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6819650072-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:·07955af45afcb6c84aec346664097e7efd7beea4b28fe681e63ccc03c1346136·...·]-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="1235058571-8">(</span><span·class="p"·data-group-id="1235058571-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="6819650072-8">(</span><span·class="p"·data-group-id="6819650072-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="1235058571-6">}</span><span·class="p"·data-group-id="1235058571-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="6819650072-6">}</span><span·class="p"·data-group-id="6819650072-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="7343017885-1">(</span><span·class="p"·data-group-id="7343017885-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="7343017885-2">(</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·f8fac554e59ce419a77d75139af22fb5f50e2244eee8250f025529aa35a1b92d·...·]-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="8780992280-1">(</span><span·class="p"·data-group-id="8780992280-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="8780992280-2">(</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·aaf8984d1d2dbab79dc20f0e7e2c6c5c075eea6e87ff50c2a4089d29acef98cc·...·]-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="7343017885-3">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7343017885-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:·a87b33afd09085aa05d5e2c9be7512f16c790231318b735d8f8a55554475c264·...·]-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="8780992280-3">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8780992280-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:·fc534679502d267bf47b11c3fa5546138fdcc67e0e2c0bb449fa5773b9153866·...·]-3">)</span><span·class="p">.</span><span·class="w">
  
314 </span><span·class="nf">lookup</span><span·class="p"·data-group-id="7343017885-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="7343017885-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="8780992280-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="8780992280-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="7343017885-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="7343017885-9">{</span><span·class="ss">name</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·347,·SHA:·d0a2b21388346830095c63f85c3d989d68ba2e70826e34b47771b75b8a41fa32·...·]-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="8780992280-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="8780992280-9">{</span><span·class="ss">name</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·347,·SHA:·796adf71cafd6ecb62ecd785b626435846ce1ad19884976985f38bc3a009062b·...·]-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="0566234485-1">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0566234485-2">{</span><span·class="ss">name</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><spa[·...·truncated·by·diffoscope;·len:·667,·SHA:·f3df51f669276d5e6a7e7bcee856511a3d13dc5a65952652f2f4388c56d8ac5e·...·]-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="0704068817-1">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0704068817-2">{</span><span·class="ss">name</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><spa[·...·truncated·by·diffoscope;·len:·667,·SHA:·9e39c9c3a956b4adc10495017cb2a0601dffa18ae80128bc95f5c49a39829ba1·...·]-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="0566234485-5">(</span><span·class="p"·data-group-id="0566234485-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="0[·...·truncated·by·diffoscope;·len:·324,·SHA:·d4fa23fc56accb7b7f3c21a68e5389097ecd85c4621092d655d60ae7e6f63f5c·...·]-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="0704068817-5">(</span><span·class="p"·data-group-id="0704068817-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="0[·...·truncated·by·diffoscope;·len:·324,·SHA:·36fea6c07b38aa07d7e5000ef54b3545bf4e570d5f880d3d8b54a2cae3a249a8·...·]-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="6395416749-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="6395416749-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="3130962798-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="3130962798-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="6395416749-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="6395416749-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="3130962798-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="3130962798-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="9862476106-1">(</span><span·class="nf">pos_integer</span><span·class="p"·data-group-id="9862476106-2">(</span><span·class="p"·data-group-id="9862476106-2">)</span><span·class="p"·data-group-id="9862476106-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="9862476106-3">(</span><span·class="p"·data-group-id="9862476106-3">)</span><span·class="p">;</span><span·class="w"> 
337 ·········</span><span·class="p"·data-group-id="9862476106-4">(</span><span·class="nf">integer</span><span·class="p"·data-group-id="9862476106-5">(</span><span·class="p"·data-group-id="9862476106-5">)</span><span·class="p"·data-group-id="9862476106-4">)</sp[·...·truncated·by·diffoscope;·len:·335,·SHA:·c44f1aced60fd2d9b8dadf43c1670351071272c612809dc32386178167b088a3·...·]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="9537836190-1">(</span><span·class="[·...·truncated·by·diffoscope;·len:·438,·SHA:·251e7a6f4c2427cfd23a8d6bede7effd50a18d31247efdb6eda8c728760fcd84·...·]
 337 ·········</span><span·class="p"·data-group-id="9537836190-4">(</span><span·class="nf">integer</span><span·class="p"·data-group-id="9537836190-5">(</span><span·class="p"·data-group-id="9537836190-5">)</span><span·class="p"·data-group-id="9537836190-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="9537836190-6">(</span><span·class="p"·data-group-id="9537836190-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="0890995152-1">(</span><span·class="n">X</span><span·class="p"·data-group-id="0890995152-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:·4fda00f632779e4d31b17ab57a8c9bca0c9c06563008da9e9a82dc8bccec5e73·...·]-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="2941926961-1">(</span><span·class="n">X</span><span·class="p"·data-group-id="2941926961-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:·b6be7b5089af927f80b95973d62e1621788d1ce630470de3f9ee3263446504a2·...·]-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="7379594524-1">(</span><span·class="nf">tuple</span><span·class="p"·data-group-id="7379594524-2">(</span><span·class="p"·data-group-id="7379594524-2">)</span><span·class="p"·data-group-id="7379594524-1">)</span><span·class="w">·</span><span·class="p">-&gt;<[·...·truncated·by·diffoscope;·len:·153,·SHA:·9fd5f9c1a6eeffb3b899ee9f18ec64a2366c3e3905265dbc2ba572bbb1eaf5d0·...·]-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="9136226227-1">(</span><span·class="nf">tuple</span><span·class="p"·data-group-id="9136226227-2">(</span><span·class="p"·data-group-id="9136226227-2">)</span><span·class="p"·data-group-id="9136226227-1">)</span><span·class="w">·</span><span·class="p">-&gt;<[·...·truncated·by·diffoscope;·len:·153,·SHA:·ece468069bc5a5c097dab9feb59edd695169366ee673a835492c1851bd1dddd3·...·]-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="8224625763-1">(</span><span·class="p"·data-group-id="8224625763-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="8224625763-3">(</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·551,·SHA:·61a76d01a9a3cea99b23d0aee4cdc7c30c56bb3cf1327999be5d422bb190d09e·...·]-4">)</span><span·class="p">;</span><span·class="w">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="0823790544-1">(</span><span·class="p"·data-group-id="0823790544-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="0823790544-3">(</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·551,·SHA:·79b513ee46a038544b426242d9d36bc46aa9fc3d6255d1408f2659ade9a41b27·...·]-4">)</span><span·class="p">;</span><span·class="w">
351 ·········</span><span·class="p"·data-group-id="8224625763-5">(</span><span·class="p"·data-group-id="8224625763-6">[</span><span·class="n">Y</span><span·class="p"·data-group-id="8224625763-6">]</span><span·class="p"·data-group-id="8224625763-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span[·...·truncated·by·diffoscope;·len:·368,·SHA:·9eccbb5e63b1db871668e4db03ccef21010fded3c6c2f8f4f6d2ab2ba8ecc9df·...·]-7">)</span><span·class="p">.</span></code></pre><p>Some·functions·in·Erlang·are·not·meant·to·return;·either·because·they·define351 ·········</span><span·class="p"·data-group-id="0823790544-5">(</span><span·class="p"·data-group-id="0823790544-6">[</span><span·class="n">Y</span><span·class="p"·data-group-id="0823790544-6">]</span><span·class="p"·data-group-id="0823790544-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span[·...·truncated·by·diffoscope;·len:·368,·SHA:·06d01064acfce74f9732774caacf26b9059b3c6bdc8df5eade87ed815971ef8b·...·]-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="0176600540-1">(</span><span·class="n">Err</span><span·class="p"·data-group-id="0176600540-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="0176600540-2">(</sp[·...·truncated·by·diffoscope;·len:·253,·SHA:·925b6dd8d1b0eec9611b0881c42740fbd4f94471a5aec1f3b03bb55e2e5de885·...·]-2">)</span><span·class="p">.</span></code></pre><p>For·such·functions,·it·is·recommended·to·use·the·special·<a·href="../../erts-15.2.6/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="3751887728-1">(</span><span·class="n">Err</span><span·class="p"·data-group-id="3751887728-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="3751887728-2">(</sp[·...·truncated·by·diffoscope;·len:·253,·SHA:·43c3b7525d0b7a5de0b7ed4a478fbea705c7968cd9630806d2b53b991e21e1cc·...·]-2">)</span><span·class="p">.</span></code></pre><p>For·such·functions,·it·is·recommended·to·use·the·special·<a·href="../../erts-15.2.6/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.6/doc/html/erlang.html#t:term/0"><code·class="inline">term/0</code></a>·or·<a·href="../../erts-15.2.6/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.6/doc/html/erlang.html#t:term/0"><code·class="inline">term/0</code></a>·or·<a·href="../../erts-15.2.6/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">
  
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="0539344906-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="0539344906-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="0993998339-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="0993998339-1">&gt;&gt;</span><span·class="p">.</span><span·class="w">
157 </span><span·class="p"·data-group-id="0539344906-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:·181,·SHA:·1849bca3c62bbec043db5424949d74e83eddfdd187c61e2276c2e84bf591cc55·...·]-2">&gt;&gt;</span><span·class="gp·unselectable">157 </span><span·class="p"·data-group-id="0993998339-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:·181,·SHA:·dd3601ae47234f1e0bd663441c8aec3a12630b67e61dfeba0bf49eae5e23c62f·...·]-2">&gt;&gt;</span><span·class="gp·unselectable">
158 2&gt;·</span><span·class="p"·data-group-id="0539344906-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="0539344906-3">&gt;&gt;</span><span·class="p">.</span><span·class="w">158 2&gt;·</span><span·class="p"·data-group-id="0993998339-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="0993998339-3">&gt;&gt;</span><span·class="p">.</span><span·class="w">
159 </span><span·class="p"·data-group-id="0539344906-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><span[·...·truncated·by·diffoscope;·len:·183,·SHA:·11c5d8e32dc38fe0ca4022c88ab02f415aaa2f1db91c5efdc9a858c5cf0f9314·...·]-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="0993998339-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><span[·...·truncated·by·diffoscope;·len:·183,·SHA:·82eeac149418b9bd3bbc203c5cbec426bb6c7f02c6249f8f22b412537db315bf·...·]-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="6110655724-1">(</span><span·class="n">Opts</span><span·class="p"·data-group-id="6110655724-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="6110655724-2">(</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·fab523c25f428155baa81f29ab81286310aa933e712c75c6c1334561ada44078·...·]-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="0365824479-1">(</span><span·class="n">Opts</span><span·class="p"·data-group-id="0365824479-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="0365824479-2">(</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·3cea39c9b4581ff00208f12b571b33d8c1a11b21bc208b9d9bab26bf2b3550ce·...·]-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="6110655724-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="6110655724-3">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·196,·SHA:·b46f0d643698bbbc5cdf324df9a5102d152a8da5016a08a9f12b28bdea6239e7·...·]-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="0365824479-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="0365824479-3">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·196,·SHA:·a56db489b18770ea457fff1c44b66f78212f9e1c8b9a0bf7ca9fa31a54cd1006·...·]-4">}</span><span·class="p">.</span><span·class="w">
175 </span><span·class="nf">f</span><span·class="p"·data-group-id="6110655724-5">(</span><span·class="p">_</span><span·class="p"·data-group-id="6110655724-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="0365824479-5">(</span><span·class="p">_</span><span·class="p"·data-group-id="0365824479-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="3569973884-1">(</span><span·class="ss">is</span><span·class="w">·</span><span·class="ss">unbound</span><span·class="p"·data-group-id="3569973884-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="7499224669-1">(</span><span·class="ss">is</span><span·class="w">·</span><span·class="ss">unbound</span><span·class="p"·data-group-id="7499224669-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="1914741911-1">(</span><span·class="ss">interpret</span><span·class="p"·data-group-id="1914741911-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="7745666260-1">(</span><span·class="ss">interpret</span><span·class="p"·data-group-id="7745666260-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="2026532513-1">(</span><span·class="p"·data-group-id="2026532513-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="5818053556-1">(</span><span·class="p"·data-group-id="5818053556-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="2026532513-2">(</span><span·class="p"·data-group-id="2026532513-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="5818053556-2">(</span><span·class="p"·data-group-id="5818053556-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.6/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="1198229191-1">(</span><span·class="n">Name</span><span·class="p"·data-group-id="1198229191-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="1060162265-1">(</span><span·class="n">Name</span><span·class="p"·data-group-id="1060162265-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="1198229191-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1198229191-3">{</span><span·class="n">Listen</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Address</span><[·...·truncated·by·diffoscope;·len:·455,·SHA:·159e673cbaeba2194b0b48e10321babfefcc7d0f779a49a9d8dd7da3150ca501·...·]-4">}</span><span·class="w">245 </span><span·class="err"> </span><span·class="err"> </span><span·class="p"·data-group-id="1060162265-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1060162265-3">{</span><span·class="n">Listen</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Address</span><[·...·truncated·by·diffoscope;·len:·455,·SHA:·498fe01684e3466ca09591fb854be959aa8feefcbcd3f2c7c7f740b92cf8c619·...·]-4">}</span><span·class="w">
246 </span><span·class="nf">listen</span><span·class="p"·data-group-id="1198229191-5">(</span><span·class="n">Name</span><span·class="p">,</span><span·class="n">Host</span><span·class="p"·data-group-id="1198229191-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="1060162265-5">(</span><span·class="n">Name</span><span·class="p">,</span><span·class="n">Host</span><span·class="p"·data-group-id="1060162265-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="1198229191-6">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1198229191-7">{</span><span·class="n">Listen</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Address</span><[·...·truncated·by·diffoscope;·len:·455,·SHA:·005d19431c615ddb8e1487908c8a1905cb771b7699f9fe04b07a00af8bcb5b1a·...·]-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="1060162265-6">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1060162265-7">{</span><span·class="n">Listen</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Address</span><[·...·truncated·by·diffoscope;·len:·455,·SHA:·7ab33a805f4809b157a5b021b02698e9e7dd6b4d1a8ba1a2fdff67ebe904d4d5·...·]-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="6610968002-1">(</span><span·class="p"·data-group-id="6610968002-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="2870358973-1">(</span><span·class="p"·data-group-id="2870358973-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="5283183687-1">(</span><span·class="p"·data-group-id="5283183687-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="9586158679-1">(</span><span·class="p"·data-group-id="9586158679-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
261 ····</span><span·class="p"·data-group-id="5283183687-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="5283183687-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·173,·SHA:·131b90bdbd27436712342df442f8310c2cf995eef3ed9216ff6b5432becc8567·...·]-3">)</span><span·class="p">,</span><span·class="w">261 ····</span><span·class="p"·data-group-id="9586158679-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="9586158679-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·173,·SHA:·c4f67427a5f73877b7560ac475feddd5215ed24db9ba6e0254222b4673f3e39e·...·]-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="5283183687-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:·610,·SHA:·2567cbb5a9234f636b20467cda70c150cd353a51a83131cecb873193c6b0cf6c·...·]5-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="9586158679-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:·610,·SHA:·3b5b2f8b8e17058a0dad4c1baa27cfc63af94f9d82a1ca06616f6566f7ba9064·...·]5-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="0870680483-1">{</span><span·class="ss">accept</span><span·class="p">,</span><span·class="w">·</span><span·class="n">AcceptorPid</span><span·class="p">,</span><span·class="w">·</span><span·class="n">DistController</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·157,·SHA:·db5b81f77ce8fbca0857f8fa8460dcb5e4b2b359bc90c244127189c6cb927cad·...·]-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="6941254997-1">{</span><span·class="ss">accept</span><span·class="p">,</span><span·class="w">·</span><span·class="n">AcceptorPid</span><span·class="p">,</span><span·class="w">·</span><span·class="n">DistController</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·157,·SHA:·c77b953dc1918d3ef91b15029560d6f158276624eb98f45a8bb7eeb47fd33a69·...·]-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="5658179675-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:·b237aa0ec4d6f4b77646317ddb2eb4b7b4a2ccdd28b44408c889e1b16aa1fc34·...·]-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="1570598072-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:·727eac086c8f0141ab9b5edb2fd4b42244880e6db499a09af55c0dde3dd12bfe·...·]-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="1221449202-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:·1836524364f1e4b5f96af41433de2d10292e64bb3b21e2acf573dc4a16afe06e·...·]-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="9216652814-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:·583301c0c6b661921f4d7e4b9371eb5dea4224e1b5192c0dc8696613d2817838·...·]-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="9998191532-1">(</span><span·class="n">Listen</span><span·class="p"·data-group-id="9998191532-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="9998191532-2">(</span><span·class="p"·data-group-id="9998191532-2">)</span></code></pre><p>Called·in·order·to·close·the·<code·class="inlin[·...·truncated·by·diffoscope;·len:·55,·SHA:·65aabdfe790b66c21dc9004fa284e3bf68434b6c2c5be5ddc985755adb0c8a41·...·]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="4083024556-1">(</span><span·class="n">Listen</span><span·class="p[·...·truncated·by·diffoscope;·len:·107,·SHA:·ba7645818c74ae21f88786cbcba316e929e04d29a98232d190d3337452e46f4e·...·]
 328 </span><span·class="err"> </span><span·class="err"> </span><span·class="nf">void</span><span·class="p"·data-group-id="4083024556-2">(</span><span·class="p"·data-group-id="4083024556-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="7249362702-1">(</span><span·class="n">NodeName</span><span·class="p"·data-group-id="7249362702-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="6673838778-1">(</span><span·class="n">NodeName</span><span·class="p"·data-group-id="6673838778-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="7249362702-2">(</span><span·class="p"·data-group-id="7249362702-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="6673838778-2">(</span><span·class="p"·data-group-id="6673838778-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="0117208619-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="0117208619-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">331 this·protocol;·otherwise,·<code·class="inline">false</code>.</p></li></ul><p>There·are·also·two·optional·functions·that·may·be·exported:</p><ul><li><pre·id="setopts"><code·class="makeup·erlang"·translate="no"><span·class="nf">setopts</span><span·class="p"·data-group-id="2655226454-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="2655226454-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="0117208619-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="0117208619-2">}</span></code></pre><p>The·argument·<code·class="inline">Listen</code>·is·the·handle·originally·passed·from·the332 </span><span·class="err"> </span><span·class="err"> </span><span·class="ss">ok</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="2655226454-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="2655226454-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="7250589291-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="7250589291-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="7250589291-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="7250[·...·truncated·by·diffoscope;·len:·405,·SHA:·3e9a6d7f5eb7671bd885e6c5e06c5a045bc03c70aea8347ba79c86ee1bd0a2e2·...·]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="7023635411-1">(</span><span·class="n">Listen</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·164,·SHA:·9ee4f32c5a7afc54bc971bb9486aa1a2b771d0663a2eac814df447f3bafc1266·...·]
 335 </span><span·class="err"> </span><span·class="err"> </span><span·class="p"·data-group-id="7023635411-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="7023635411-2">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="7023635411-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="7023635411-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="4069654362-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="4069654362-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="4069654362-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="4069654362-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:·65f39dba28b62390fa48b0e84020680d62e04800b0f22084dc9f26990ff29598·...·]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:·d0842d822962b3e1a7a18d0c47d2564c595f670311c862c7100d93e79ecff4c0·...·]
 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="2322625310-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="2322625310-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="2322625310-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="2322625310-2">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="2322625310-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="2322625310-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="4377008382-1">(</span><span·class="n">DistCtrlr</span><span·class="p"·data-group-id="4377008382-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:·221,·SHA:·2fcab07995c08dd66c35e12dfff009e4975c7431f0c1056ce1956dc0373d77b4·...·]382-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="1496123382-1">(</span><span·class="n">DistCtrlr</span><span·class="p"·data-group-id="1496123382-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:·221,·SHA:·7a52bb209baee450be79801c7fedbd8877e8c2b2949a869e12872ec6dd59cd24·...·]382-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="8990776100-1">(</span><span·class="n">DistCtrlr</span><span·class="p"·data-group-id="8990776100-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:·3182d9b10f4f488a707a8bf3fefb902f041851876669e3421a5219e31061e1f4·...·]-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="4087708943-1">(</span><span·class="n">DistCtrlr</span><span·class="p"·data-group-id="4087708943-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:·7db876776f99d864860c546e42921a0af1bedf70e2adcaa4c7da1fe419e49911·...·]-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="9500518699-1">(</span><span·class="n">DistCtrlr</span><span·class="p"·data-group-id="9500518699-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="3303347517-1">(</span><span·class="n">DistCtrlr</span><span·class="p"·data-group-id="3303347517-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="5237129000-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="5237129000-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="5520676717-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="5520676717-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="5187214174-1">(</span><span·class="n">DistCtrlr</span><span·class="p"·data-group-id="5187214174-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="5187214174-2">[·...·truncated·by·diffoscope;·len:·49,·SHA:·4b6cccd6d172e42746c16d72f7265ff9c714f4f50cf05459e0594647c88f04c9·...·]-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="8538899368-1">(</span><span·class="n">DistCtrlr</span><span·class="p"·data-group-id="8538899368-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="8538899368-2">[·...·truncated·by·diffoscope;·len:·49,·SHA:·4fe0d858d7232c40c49ed3af7ca39c46d523ed2d15618489119d37df4f224218·...·]-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="2951494611-1">(</span><span·class="n">DistCtrlr</span><span·class="p"·data-group-id="2951494611-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="2951494611-2">{</span><span·class="ss">ok<[·...·truncated·by·diffoscope;·len:·280,·SHA:·77765f90ddf2ed50da14a62fcdebbb0612860652586e4354262f490db3c93031·...·]-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="6476053790-1">(</span><span·class="n">DistCtrlr</span><span·class="p"·data-group-id="6476053790-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="6476053790-2">{</span><span·class="ss">ok<[·...·truncated·by·diffoscope;·len:·280,·SHA:·bd5867aa9f116c13439d8e51c75430d5e4edf80d78ef22fc766fbf8bfe60613c·...·]-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
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.6/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="0781585091-1">(</span><span·class="p"·data-group-id="0781585091-1">)</span><span·class="w">·</span><span·class="p"·data-group-id="0781585091-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="1719594010-1">(</span><span·class="p"·data-group-id="1719594010-1">)</span><span·class="w">·</span><span·class="p"·data-group-id="1719594010-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="0781585091-2">}</span><span·class="w">218 </span><span·class="p"·data-group-id="1719594010-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.6/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="5829766917-1">{</span><span·class="ss">move</span><span·class="p">,</span><span·class="p"·data-group-id="5829766917-2">{</span><span·class="ss">atom</span><span·class="p">,</span><span·class="ss">id</span><span·class="p"·data-group-id="5829766917-2">}</spa[·...·truncated·by·diffoscope;·len:·247,·SHA:·04f10079525fe6947e71962752d040ac3e931595ebb2a02bba852fe6fa0d8dc3·...·]-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="4397341264-1">{</span><span·class="ss">move</span><span·class="p">,</span><span·class="p"·data-group-id="4397341264-2">{</span><span·class="ss">atom</span><span·class="p">,</span><span·class="ss">id</span><span·class="p"·data-group-id="4397341264-2">}</spa[·...·truncated·by·diffoscope;·len:·247,·SHA:·99a5f2cf00167c00516b1aaede77323bdb114b45d1ad9e3bcafa54cf57d1a3ab·...·]-1">}</span><span·class="p">.</span><span·class="w">
159 </span><span·class="p"·data-group-id="5829766917-4">{</span><span·class="ss">move</span><span·class="p">,</span><span·class="p"·data-group-id="5829766917-5">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="5829766917-5">}</span><s[·...·truncated·by·diffoscope;·len:·243,·SHA:·b4debf90b184fc7ad0a24d408b499448947ce6b2ac1bb88341c7a9b0fb4ced91·...·]-4">}</span><span·class="p">.</span><span·class="w">159 </span><span·class="p"·data-group-id="4397341264-4">{</span><span·class="ss">move</span><span·class="p">,</span><span·class="p"·data-group-id="4397341264-5">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="4397341264-5">}</span><s[·...·truncated·by·diffoscope;·len:·243,·SHA:·332df4a2fe6040ae821f66478106fbe402a0a12e755886cee6f79606cb9c9ce2·...·]-4">}</span><span·class="p">.</span><span·class="w">
160 </span><span·class="p"·data-group-id="5829766917-7">{</span><span·class="ss">move</span><span·class="p">,</span><span·class="p"·data-group-id="5829766917-8">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="5829766917-8">}</span><s[·...·truncated·by·diffoscope;·len:·243,·SHA:·d9a6f7b72f963257ade285929cb8c5d9aa6e0544e0389f06ee3522be7204d2a5·...·]-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="4397341264-7">{</span><span·class="ss">move</span><span·class="p">,</span><span·class="p"·data-group-id="4397341264-8">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="4397341264-8">}</span><s[·...·truncated·by·diffoscope;·len:·243,·SHA:·062393fd28b45bfea267857e79aabb647c9735acc1d2a284699442d470b1b861·...·]-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="5068880683-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="5068880683-1">)</span><span·class="w">·</span><span·class="p"·data-group-id="5068880683-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="1141827588-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="1141827588-1">)</span><span·class="w">·</span><span·class="p"·data-group-id="1141827588-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="5068880683-2">}</span></code></pre><p>The·implementation·for·an·instruction·largely·follows·the·C·syntax,194 </span><span·class="p"·data-group-id="1141827588-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="3100726792-1">(</span><span·class="ss">move_cx</span><span·class="p"·data-group-id="3100726792-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="6630573746-1">(</span><span·class="ss">move_cx</span><span·class="p"·data-group-id="6630573746-1">)</span><span·class="p">:</span><span·class="w">
212 </span><span·class="p"·data-group-id="3100726792-2">{</span><span·class="w">212 </span><span·class="p"·data-group-id="6630573746-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="3100726792-3">(</span><span·class="n">I</span><span·class="p"·data-group-id="3100726792-4">[</span><span·class="mi">2</span><span·class="p"·data-group-id="3100726792-4">]</span><span·class="p"·data-group-id="3100726792-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="6630573746-3">(</span><span·class="n">I</span><span·class="p"·data-group-id="6630573746-4">[</span><span·class="mi">2</span><span·class="p"·data-group-id="6630573746-4">]</span><span·class="p"·data-group-id="6630573746-3">)</span><span·class="p">;</span><span·class="w">
214 ··</span><span·class="nf">xb</span><span·class="p"·data-group-id="3100726792-5">(</span><span·class="n">BeamExtraData</span><span·class="p"·data-group-id="3100726792-6">(</span><span·class="n">I</span><span·class="p"·data-group-id="3100726792-7">[</span><span·class="mi">0</span><span·class="p"·data-group-id="3100726792-7[·...·truncated·by·diffoscope;·len:·331,·SHA:·9114fcfdfbdf5132fb4dd6e4aea375c8ea248ff8c467805ff271ce85d66c220c·...·]-8">]</span><span·class="p">;</span><span·class="w">214 ··</span><span·class="nf">xb</span><span·class="p"·data-group-id="6630573746-5">(</span><span·class="n">BeamExtraData</span><span·class="p"·data-group-id="6630573746-6">(</span><span·class="n">I</span><span·class="p"·data-group-id="6630573746-7">[</span><span·class="mi">0</span><span·class="p"·data-group-id="6630573746-7[·...·truncated·by·diffoscope;·len:·331,·SHA:·084cf3b6e6cec9dc58f95271e2b935c659d4737a450fad6932e09c0241bc4be9·...·]-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="3100726792-9">(</span><span·class="n">VALID_INSTR</span><span·class="p"·data-group-id="3100726792-10">(</span><span·class="ss">next_pf</span><span·class="p"·data-group-id="3100726792-10">)</span><span·class="p"·data-group-id="3100726792-9">)</span><span·class="p">;</span><span·class="w">216 ··</span><span·class="n">ASSERT</span><span·class="p"·data-group-id="6630573746-9">(</span><span·class="n">VALID_INSTR</span><span·class="p"·data-group-id="6630573746-10">(</span><span·class="ss">next_pf</span><span·class="p"·data-group-id="6630573746-10">)</span><span·class="p"·data-group-id="6630573746-9">)</span><span·class="p">;</span><span·class="w">
217 ··</span><span·class="n">GotoPF</span><span·class="p"·data-group-id="3100726792-11">(</span><span·class="ss">next_pf</span><span·class="p"·data-group-id="3100726792-11">)</span><span·class="p">;</span><span·class="w">217 ··</span><span·class="n">GotoPF</span><span·class="p"·data-group-id="6630573746-11">(</span><span·class="ss">next_pf</span><span·class="p"·data-group-id="6630573746-11">)</span><span·class="p">;</span><span·class="w">
218 </span><span·class="p"·data-group-id="3100726792-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="6630573746-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="4682074748-1">(</span><span·class="ss">move_xx</span><span·class="p"·data-group-id="4682074748-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="1352243913-1">(</span><span·class="ss">move_xx</span><span·class="p"·data-group-id="1352243913-1">)</span><span·class="p">:</span><span·class="w">
233 </span><span·class="p"·data-group-id="4682074748-2">{</span><span·class="w">233 </span><span·class="p"·data-group-id="1352243913-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="4682074748-3">(</span><span·class="n">I</span><span·class="p"·data-group-id="4682074748-4">[</span><span·class="mi">0</span><span·class="p"·data-group-id="4682074748-4">]</span><span·class="p"·data-group-id="4682074748-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="1352243913-3">(</span><span·class="n">I</span><span·class="p"·data-group-id="1352243913-4">[</span><span·class="mi">0</span><span·class="p"·data-group-id="1352243913-4">]</span><span·class="p"·data-group-id="1352243913-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="4682074748-5">(</span><span·class="n">I</span><span·class="p"·data-group-id="4682074748-6">[</span><span·class="mi">1</span><span·class="p"·data-group-id="4682074748-6">]</span><span·class="p"·data-group-id="4682074748-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="1352243913-5">(</span><span·class="n">I</span><span·class="p"·data-group-id="1352243913-6">[</span><span·class="mi">1</span><span·class="p"·data-group-id="1352243913-6">]</span><span·class="p"·data-group-id="1352243913-5">)</span><span·class="p">;</span><span·class="w">
236 ··</span><span·class="nf">xb</span><span·class="p"·data-group-id="4682074748-7">(</span><span·class="p"·data-group-id="4682074748-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="4682074748-8">)</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·325,·SHA:·f4bd5ffa16e121a9cd938eff96586e97a66c2df947ed1510c186b4fd14e5c286·...·]-9">)</span><span·class="p">;</span><span·class="w">236 ··</span><span·class="nf">xb</span><span·class="p"·data-group-id="1352243913-7">(</span><span·class="p"·data-group-id="1352243913-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="1352243913-8">)</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·325,·SHA:·0c2dbd91a69a927dbc60f7c3cc6d35b3dacf88170c1067da4c8f7be02a6e2fb5·...·]-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="4682074748-10">(</span><span·class="n">VALID_INSTR</span><span·class="p"·data-group-id="4682074748-11">(</span><span·class="ss">next_pf</span><span·class="p"·data-group-id="4682074748-11">)</span><span·class="p"·data-group-id="4682074748-10">)</span><span·class="p">;</span><span·class="w">238 ··</span><span·class="n">ASSERT</span><span·class="p"·data-group-id="1352243913-10">(</span><span·class="n">VALID_INSTR</span><span·class="p"·data-group-id="1352243913-11">(</span><span·class="ss">next_pf</span><span·class="p"·data-group-id="1352243913-11">)</span><span·class="p"·data-group-id="1352243913-10">)</span><span·class="p">;</span><span·class="w">
239 ··</span><span·class="n">GotoPF</span><span·class="p"·data-group-id="4682074748-12">(</span><span·class="ss">next_pf</span><span·class="p"·data-group-id="4682074748-12">)</span><span·class="p">;</span><span·class="w">239 ··</span><span·class="n">GotoPF</span><span·class="p"·data-group-id="1352243913-12">(</span><span·class="ss">next_pf</span><span·class="p"·data-group-id="1352243913-12">)</span><span·class="p">;</span><span·class="w">
240 </span><span·class="p"·data-group-id="4682074748-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="1352243913-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="2036226071-1">(</span><span·class="ss">move_xy</span><span·class="p"·data-group-id="2036226071-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="6964495414-1">(</span><span·class="ss">move_xy</span><span·class="p"·data-group-id="6964495414-1">)</span><span·class="p">:</span><span·class="w">
250 </span><span·class="p"·data-group-id="2036226071-2">{</span><span·class="w">250 </span><span·class="p"·data-group-id="6964495414-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="2036226071-3">(</span><span·class="n">I</span><span·class="p"·data-group-id="2036226071-4">[</span><span·class="mi">0</span><span·class="p"·data-group-id="2036226071-4">]</span><span·class="p"·data-group-id="2036226071-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="6964495414-3">(</span><span·class="n">I</span><span·class="p"·data-group-id="6964495414-4">[</span><span·class="mi">0</span><span·class="p"·data-group-id="6964495414-4">]</span><span·class="p"·data-group-id="6964495414-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="2036226071-5">(</span><span·class="n">I</span><span·class="p"·data-group-id="2036226071-6">[</span><span·class="mi">1</span><span·class="p"·data-group-id="2036226071-6">]</span><span·class="p"·data-group-id="2036226071-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="6964495414-5">(</span><span·class="n">I</span><span·class="p"·data-group-id="6964495414-6">[</span><span·class="mi">1</span><span·class="p"·data-group-id="6964495414-6">]</span><span·class="p"·data-group-id="6964495414-5">)</span><span·class="p">;</span><span·class="w">
253 ··</span><span·class="nf">yb</span><span·class="p"·data-group-id="2036226071-7">(</span><span·class="p"·data-group-id="2036226071-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="2036226071-8">)</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·325,·SHA:·6f7814a696133dcf6bbd1868ad83fa2e4aa7eaabb6c8505c78b952036113e410·...·]-9">)</span><span·class="p">;</span><span·class="w">253 ··</span><span·class="nf">yb</span><span·class="p"·data-group-id="6964495414-7">(</span><span·class="p"·data-group-id="6964495414-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="6964495414-8">)</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·325,·SHA:·10b115e3dbdece1b76e64b108b8033769b35f09010f4287dc6b7c370c4ee8221·...·]-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="2036226071-10">(</span><span·class="n">VALID_INSTR</span><span·class="p"·data-group-id="2036226071-11">(</span><span·class="ss">next_pf</span><span·class="p"·data-group-id="2036226071-11">)</span><span·class="p"·data-group-id="2036226071-10">)</span><span·class="p">;</span><span·class="w">255 ··</span><span·class="n">ASSERT</span><span·class="p"·data-group-id="6964495414-10">(</span><span·class="n">VALID_INSTR</span><span·class="p"·data-group-id="6964495414-11">(</span><span·class="ss">next_pf</span><span·class="p"·data-group-id="6964495414-11">)</span><span·class="p"·data-group-id="6964495414-10">)</span><span·class="p">;</span><span·class="w">
256 ··</span><span·class="n">GotoPF</span><span·class="p"·data-group-id="2036226071-12">(</span><span·class="ss">next_pf</span><span·class="p"·data-group-id="2036226071-12">)</span><span·class="p">;</span><span·class="w">256 ··</span><span·class="n">GotoPF</span><span·class="p"·data-group-id="6964495414-12">(</span><span·class="ss">next_pf</span><span·class="p"·data-group-id="6964495414-12">)</span><span·class="p">;</span><span·class="w">
257 </span><span·class="p"·data-group-id="2036226071-2">}</span></code></pre><h3·id="transformation-rules"·class="section-heading">257 </span><span·class="p"·data-group-id="6964495414-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="3095273537-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:·5649d5fe60f3e80e6dcdebb6edccdf3c86ba91148c164089c9ffdeec855afe10·...·]-2">{</span><span·class="w">277 </span><span·class="nf">move2</span><span·class="p"·data-group-id="7824228135-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:·b79d8608816b311293c30a21f8cb1fca6d26bd7a68bd865ab24587ef622030ce·...·]-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="3095273537-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="7824228135-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.6/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="2295985399-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:·256,·SHA:·5c875371827f2fa84b00fd3f77316363b814811db5db467d984f050ee030c395·...·]-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="2728354051-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:·256,·SHA:·5a58eb781084832ffc77cdc778e5cb73d9aeaa10af17e3b9b9e4e8d62af49709·...·]-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="2295985399-3">(</span><span·class="nf">getArgRef</span><span·class="p"·data-group-id="2295985399-4">(</span><span·class="n">Src</span><span·class="p"·data-group-id="2295985399-4">)</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">imm</[·...·truncated·by·diffoscope;·len:·326,·SHA:·7e4c07b97843256d764ff7d6e15ae56db49dcef8891681e01a08c1ca8d0da471·...·]-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="2728354051-3">(</span><span·class="nf">getArgRef</span><span·class="p"·data-group-id="2728354051-4">(</span><span·class="n">Src</span><span·class="p"·data-group-id="2728354051-4">)</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">imm</[·...·truncated·by·diffoscope;·len:·326,·SHA:·824942b4797faecca0dce63f31486e397c103e7121735800e0011cf280667e53·...·]-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="2295985399-6">(</span><span·class="ss">labels</span><span·class="p"·data-group-id="2295985399-7">[</span><span·class="n">Fail</span><span·class="p">.</span><span·class="nf">getLabel</span><span·class="p"·data-group-id="2295985399-8">(</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·131,·SHA:·ac42ad261b32c1634fc0d2fdcfdceb43b57b406ae21252a86f010cecb247fac3·...·]-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="2728354051-6">(</span><span·class="ss">labels</span><span·class="p"·data-group-id="2728354051-7">[</span><span·class="n">Fail</span><span·class="p">.</span><span·class="nf">getLabel</span><span·class="p"·data-group-id="2728354051-8">(</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·131,·SHA:·080ccc8a954b2f876873de528e10b3826459c2f5234be19e8aef7ce8ea658fbc·...·]-6">)</span><span·class="p">;</span><span·class="w">
155 </span><span·class="p"·data-group-id="2295985399-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="2728354051-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="2547946332-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:·fdd7bbf22ecd9f29dbb89ee694a61bb1bfd7aa37df063a294582e0399b96387a·...·]2-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="9330954502-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:·6517d4b3e2fac53746872bb27ea3e16d62571daa03e189b8a293266627747836·...·]2-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="2901720919-1">(</span><span·class="p"·data-group-id="2901720919-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="0884625673-1">(</span><span·class="p"·data-group-id="0884625673-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="2901720919-2">(</span><span·class="n">FCALLS</span><span·class="p"·data-group-id="2901720919-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="0884625673-2">(</span><span·class="n">FCALLS</span><span·class="p"·data-group-id="0884625673-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="2901720919-3">(</span><span·class="nf">resolve_fragment</span><span·class="p"·data-group-id="2901720919-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="2901720919-5"[·...·truncated·by·diffoscope;·len:·156,·SHA:·145bfed0ee878164e956545c781b13504c9e9ef4450db842e0cf393a7c4ab8ad·...·]-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="0884625673-3">(</span><span·class="nf">resolve_fragment</span><span·class="p"·data-group-id="0884625673-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="0884625673-5"[·...·truncated·by·diffoscope;·len:·156,·SHA:·4c21fb8b5e1a2189c92e0017f7b77abe6120f2a2f295dbda64899c5891f809bd·...·]-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="2901720919-6">(</span><span·class="p"·data-group-id="2901720919-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="0884625673-6">(</span><span·class="p"·data-group-id="0884625673-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="1032139533-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="1032139533-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="8023303153-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="8023303153-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="1032139533-2">(</span><span·class="p"·data-group-id="1032139533-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="8023303153-2">(</span><span·class="p"·data-group-id="8023303153-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="1032139533-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="1032139533-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="8023303153-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="8023303153-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="1032139533-4">(</span><span·class="n">ARG2</span><span·class="p"·data-group-id="1032139533-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="8023303153-4">(</span><span·class="n">ARG2</span><span·class="p"·data-group-id="8023303153-4">)</span><span·class="p">;</span><span·class="w">
252 </span><span·class="nf">make_move_patch</span><span·class="p"·data-group-id="1032139533-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="1032139533-6">[</span><span·class="n">Fun</span><span·class="p">.</span><span·class="nf">getValue[·...·truncated·by·diffoscope;·len:·261,·SHA:·51052b14d52ecc92e7069b8eebc419177d94acc9859124147ee2fbc017dd2f67·...·]3-5">)</span><span·class="p">;</span><span·class="w">252 </span><span·class="nf">make_move_patch</span><span·class="p"·data-group-id="8023303153-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="8023303153-6">[</span><span·class="n">Fun</span><span·class="p">.</span><span·class="nf">getValue[·...·truncated·by·diffoscope;·len:·261,·SHA:·5d131372aed9eec54c69dea3c46c96ca7ba6c4960834612fbf30f0544755ec49·...·]3-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="1032139533-8">(</span><span·class="ss">new_fun</span><span·class="p"·data-group-id="1032139533-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="8023303153-8">(</span><span·class="ss">new_fun</span><span·class="p"·data-group-id="8023303153-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="1032139533-9">(</span><span·class="p"·data-group-id="1032139533-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="8023303153-9">(</span><span·class="p"·data-group-id="8023303153-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="1032139533-10">(</span><span·class="nf">getXRef</span><span·class="p"·data-group-id="1032139533-11">(</span><span·class="mi">0</span><span·class="p"·data-group-id="1032139533-11">)</span><span·class="p">,</span><span·class="w">·</span><span·class="n">RET</[·...·truncated·by·diffoscope;·len:·45,·SHA:·070d6d2646e63a057c8934e0494c289cd1b15d3c4d9f43c2d727158a943c6605·...·]3-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="8023303153-10">(</span><span·class="nf">getXRef</span><span·class="p"·data-group-id="8023303153-11">(</span><span·class="mi">0</span><span·class="p"·data-group-id="8023303153-11">)</span><span·class="p">,</span><span·class="w">·</span><span·class="n">RET</[·...·truncated·by·diffoscope;·len:·45,·SHA:·62773809c4e031cfa17ffd071a7c2816910a771b6555b7b5a1d488b7ea32f976·...·]3-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="6435922591-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="6435922591-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="3768152671-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="3768152671-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="9362874217-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:·16523cfb06cb3e11451bc6a20b2cc31f75e8fb5a9f1fcec4c5fdf57755cb841a·...·]-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="6452539091-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:·fd6439f5731a733db2787be11fa25bfe2d3a7138800ae897144d85e31172eaa2·...·]-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="9362874217-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="9362874217-3">)</span><span·class="p">;</span><span·class="w">300 ····</span><span·class="nf">erts_unseal_module</span><span·class="p"·data-group-id="6452539091-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="6452539091-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="9362874217-4">[</span><span·class="ss">i</span><span·class="p"·data-group-id="9362874217-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="6452539091-4">[</span><span·class="ss">i</span><span·class="p"·data-group-id="6452539091-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="9362874217-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="9362874217-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="6452539091-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="6452539091-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="9362874217-6">(</span><span·class="n">ErtsCodeInfo</span><span·class="o">*</span><span·class="p"·data-group-id="9362874217-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="6452539091-6">(</span><span·class="n">ErtsCodeInfo</span><span·class="o">*</span><span·class="p"·data-group-id="6452539091-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="9362874217-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="9362874217-7">)</span><span·class="p">;</span><span·class="w">304 ····</span><span·class="nf">uninstall_breakpoint</span><span·class="p"·data-group-id="6452539091-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="6452539091-7">)</span><span·class="p">;</span><span·class="w">
305 ····</span><span·class="nf">consolidate_bp_data</span><span·class="p"·data-group-id="9362874217-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="9362874217-8">)</span><span·class="p">;</span><span·class="w">305 ····</span><span·class="nf">consolidate_bp_data</span><span·class="p"·data-group-id="6452539091-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="6452539091-8">)</span><span·class="p">;</span><span·class="w">
306 ····</span><span·class="n">ASSERT</span><span·class="p"·data-group-id="9362874217-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="9362874217-9">)</span><span·class="p">;</span><span·class="w">306 ····</span><span·class="n">ASSERT</span><span·class="p"·data-group-id="6452539091-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="6452539091-9">)</span><span·class="p">;</span><span·class="w">
  
307 ····</span><span·class="nf">erts_seal_module</span><span·class="p"·data-group-id="9362874217-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="9362874217-10">)</span><span·class="p">;</span><span·class="w">307 ····</span><span·class="nf">erts_seal_module</span><span·class="p"·data-group-id="6452539091-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="6452539091-10">)</span><span·class="p">;</span><span·class="w">
308 </span><span·class="p"·data-group-id="9362874217-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="6452539091-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.6/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="6152052968-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="6152052968-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">LoaderState</span><span·class="w">170 process.·The·BIF·interface·is·however·prepared·for·this.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">··</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">prepare_loading</span><span·class="p"·data-group-id="5773482298-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="5773482298-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="6152052968-2">(</span><span·class="p"·data-group-id="6152052968-3">[</span><span·class="n">LoaderState</span><span·class="p"·data-group-id="6152052968-3">]</span><span·class="p"·data-group-id="6152052968-2">)</span></code></pre><p>The·idea·is·that·<code·class="inline">prepare_loading</code>·could·be·called·in·parallel·for171 ··</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">finish_loading</span><span·class="p"·data-group-id="5773482298-2">(</span><span·class="p"·data-group-id="5773482298-3">[</span><span·class="n">LoaderState</span><span·class="p"·data-group-id="5773482298-3">]</span><span·class="p"·data-group-id="5773482298-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.6/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="5714014181-1">(</span><span·class="mi">1</span><span·class="p"·data-group-id="5714014181-1">)</span><span·class="w">··</span><span·class="mi">3</span><span·class="ss">cac44</span><span·class="w">···</span><span·class="n">Return</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·426,·SHA:·610ae6e67eaedb8c8c96ba944b6b56b199e363109f7a458925e3eb802daa01c0·...·]-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="3635847069-1">(</span><span·class="mi">1</span><span·class="p"·data-group-id="3635847069-1">)</span><span·class="w">··</span><span·class="mi">3</span><span·class="ss">cac44</span><span·class="w">···</span><span·class="n">Return</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·426,·SHA:·81df2b1aeec6a22d73984db2eea1212ab3cb166fff60c9017075896dd213a9d6·...·]-2">)</span><span·class="w">
409 </span><span·class="p"·data-group-id="5714014181-3">(</span><span·class="mi">2</span><span·class="p"·data-group-id="5714014181-3">)</span><span·class="w">··</span><span·class="nf">y</span><span·class="p"·data-group-id="5714014181-4">(</span><span·class="mi">0</span><span·class="p"·data-group-id="5714014181-4">)</span><span·class="w">·····</span><span·class="p"·data-group-id="5714014181-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="5714014181-6">(</span><span·class="mi">3</span><span·class="p"·data-group-id="5714014181-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="57[·...·truncated·by·diffoscope;·len:·13,·SHA:·dc215bc2f4e95faa9664b80c8ed358c8d7e35bdcfe5fe80be4355e02e0e2d993·...·]</span><span·class="w">409 </span><span·class="p"·data-group-id="3635847069-3">(</span><span·class="mi">2</span><span·class="p"·data-group-id="3635847069-3">)</span><span·class="w">··</span><span·class="nf">y</span><span·class="p"·data-group-id="3635847069-4">(</span><span·class="mi">0</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·211,·SHA:·34578c608f1fafa607a96abe10f38663b8657e3e08e53509aeaca4e5e5ab3dd3·...·]</span><span·class="w">
 410 </span><span·class="p"·data-group-id="3635847069-6">(</span><span·class="mi">3</span><span·class="p"·data-group-id="3635847069-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="3635847069-5">]</span><span·class="w">
411 </span><span·class="p"·data-group-id="5714014181-7">(</span><span·class="mi">4</span><span·class="p"·data-group-id="5714014181-7">)</span><span·class="w">··</span><span·class="nf">y</span><span·class="p"·data-group-id="5714014181-8">(</span><span·class="mi">1</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·13,·SHA:·a5c0896b889f51610c95b3c010b0dc41f052910590559c4bab850ccb9a825857·...·]-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="3635847069-7">(</span><span·class="mi">4</span><span·class="p"·data-group-id="3635847069-7">)</span><span·class="w">··</span><span·class="nf">y</span><span·class="p"·data-group-id="3635847069-8">(</span><span·class="mi">1</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·13,·SHA:·e532412f3f9f62bf37291edccf3f1ee068004d7b928fd6fa6e88ad14797e68ef·...·]-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="5714014181-9">(</span><span·class="mi">5</span><span·class="p"·data-group-id="5714014181-9">)</span><span·class="w">··</span><span·class="nf">y</span><span·class="p"·data-group-id="5714014181-10">(</span><span·class="mi">2</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·257,·SHA:·5693e3047bd8593318037692044e12fb9353d34cfdc0a33e4bff3e67614ade1e·...·]-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="3635847069-9">(</span><span·class="mi">5</span><span·class="p"·data-group-id="3635847069-9">)</span><span·class="w">··</span><span·class="nf">y</span><span·class="p"·data-group-id="3635847069-10">(</span><span·class="mi">2</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·257,·SHA:·4a00117f3901eecc6bf6d2c8a7230c0b6c8b5a5458472ad205d12d9c3ad29e78·...·]-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="5714014181-13">(</span><span·class="mi">6</span><span·class="p"·data-group-id="5714014181-13">)</span><span·class="w">············</span><span·class="p">#</span><span·class="n">Fun</span><span·class="o">&lt;</span><span·class="ss">erl_prim_loader</span><sp[·...·truncated·by·diffoscope;·len:·561,·SHA:·b1348eb2399076ba84d61dab49cd008095e60ea6768c92e4ca9f03635ed7bd95·...·]-11">}</span><span·class="w">413 </span><span·class="p"·data-group-id="3635847069-13">(</span><span·class="mi">6</span><span·class="p"·data-group-id="3635847069-13">)</span><span·class="w">············</span><span·class="p">#</span><span·class="n">Fun</span><span·class="o">&lt;</span><span·class="ss">erl_prim_loader</span><sp[·...·truncated·by·diffoscope;·len:·561,·SHA:·91e8b8323632c2a4e86bd8441c279bcaa8d9babf2453f2768e2d62a94d4f6aa1·...·]-11">}</span><span·class="w">
414 </span><span·class="p"·data-group-id="5714014181-14">(</span><span·class="mi">7</span><span·class="p"·data-group-id="5714014181-14">)</span><span·class="w">··</span><span·class="nf">y</span><span·class="p"·data-group-id="5714014181-15">(</span><span·class="mi">3</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·557d55873100b487b695313bd66ba44676ad5657ae131ce74660d05e2841ceb8·...·]-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="3635847069-14">(</span><span·class="mi">7</span><span·class="p"·data-group-id="3635847069-14">)</span><span·class="w">··</span><span·class="nf">y</span><span·class="p"·data-group-id="3635847069-15">(</span><span·class="mi">3</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·128837deb1ef69cb1aa6a8d843646ccf65f43855e15fb32094ad7a530ae36d11·...·]-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.6/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.6/doc/html/erl_ddll.html"><code·class="inline">erl_ddll</code></a>·module·(the·<a·href="../../../lib/kernel-10.2.6/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.6/doc/html/erl_ddll.html"><code·class="inline">erl_ddll</code></a>·module·(the·<a·href="../../../lib/kernel-10.2.6/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="3215876717-1">(</span><span·class="ss">pg_sync</span><span·class="p"·data-group-id="3215876717-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="0530233747-1">(</span><span·class="ss">pg_sync</span><span·class="p"·data-group-id="0530233747-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="3215876717-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="3215876717-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="0530233747-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="0530233747-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="3215876717-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="3215876717-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="0530233747-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="0530233747-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="3215876717-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="3215876717-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="0530233747-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="0530233747-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="3215876717-5">(</span><span·class="p"·data-group-id="3215876717-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:·250,·SHA:·782f00df8aea0b2f0c08993df664b5de2e7b05b6a8ae36491c3e78328c9c79b0·...·]7-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="0530233747-5">(</span><span·class="p"·data-group-id="0530233747-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:·250,·SHA:·1c8ca6da1392e482d3ca3729d30557902d347bbd468abc608ee8cc664b7114a4·...·]7-5">)</span><span·class="p">.</span><span·class="w">
  
378 </span><span·class="nf">connect</span><span·class="p"·data-group-id="3215876717-7">(</span><span·class="n">ConnectStr</span><span·class="p"·data-group-id="3215876717-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="0530233747-7">(</span><span·class="n">ConnectStr</span><span·class="p"·data-group-id="0530233747-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="3215876717-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="3215876717-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="0530233747-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="0530233747-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="3215876717-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="3215876717-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="0530233747-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="0530233747-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="3215876717-10">(</span><span·class="p"·data-group-id="3215876717-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="3215876717-11">}</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·16,·SHA:·3cb8bc76fcf1ddda1d7e0f0f7817735194dddd4061b47c030ba68510228b40b9·...·]7-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="0530233747-10">(</span><span·class="p"·data-group-id="0530233747-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="0530233747-11">}</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·16,·SHA:·046fb619d9f870006fd0950295542580bb34124bf9b2ea612177ceed45df3c61·...·]7-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="3215876717-12">(</span><span·class="p"·data-group-id="3215876717-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="3215876717-13">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3215876717-14">[</span><span·class="p"·data-group-id="3215876717-14">]</span><span·class="p"·data-group-id="3215876717-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="3215876717-15">(</span><span·class="nf">port_control</span><span·class="p"·data-group-id="3215876717-16">(</span><span·class="n">Port</span><span·cla[·...·truncated·by·diffoscope;·len:·328,·SHA:·fce63959bd89cf161115e30da0d3ceca9a182204c44e8de745097fb8e540d1ea·...·]</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="0530233747-12">(</span><span·class="p"·data-group-id="0530233747-13">{</span><span·class="nb">spawn</span>[·...·truncated·by·diffoscope;·len:·382,·SHA:·bd9c579732a7607d15140100c8dd7b298605f9bae8614759280c247f7bc4c388·...·]</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="0530233747-15">(</span><span·class="nf">port_control</span><span·class="p"·data-group-id="0530233747-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·class="p">,</span><span·class="w">·</span><span·class="n">ConnectStr</span><span·class="p"·data-group-id="0530233747-16">)</span><span·class="p"·data-group-id="0530233747-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="3215876717-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="3215876717-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="0530233747-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="0530233747-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="3215876717-18">(</span><span·class="n">Port</span><span·class="p"·data-group-id="3215876717-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="0530233747-18">(</span><span·class="n">Port</span><span·class="p"·data-group-id="0530233747-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="3215876717-19">(</span><span·class="nf">port_control</span><span·class="p"·data-group-id="3215876717-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:·170,·SHA:·bf2517ca763fbd4bf5c51e3a97a0514591317694c4deb8f60397ef1bdda1eb95·...·]7-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="0530233747-19">(</span><span·class="nf">port_control</span><span·class="p"·data-group-id="0530233747-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:·170,·SHA:·69beb7d9de280c640ffc1e4771e7948c3bf49d0c38d040424854aa822e986a41·...·]7-19">)</span><span·class="p">,</span><span·class="w">
391 ····</span><span·class="nf">port_close</span><span·class="p"·data-group-id="3215876717-21">(</span><span·class="n">Port</span><span·class="p"·data-group-id="3215876717-21">)</span><span·class="p">,</span><span·class="w">391 ····</span><span·class="nf">port_close</span><span·class="p"·data-group-id="0530233747-21">(</span><span·class="n">Port</span><span·class="p"·data-group-id="0530233747-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="3215876717-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="3215876717-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="0530233747-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="0530233747-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="3215876717-23">(</span><span·class="nf">port_control</span><span·class="p"·data-group-id="3215876717-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:·159,·SHA:·1965ae329a26e65c73adfcaa42102cfc61a4a09db772e006740ae3702b074f01·...·]7-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="0530233747-23">(</span><span·class="nf">port_control</span><span·class="p"·data-group-id="0530233747-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:·159,·SHA:·8a220980c9a1b80e87d8c9a9e3023e5dab7beeb4ba7ad241c6a43433300f63e8·...·]7-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.6/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.6/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.6/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.6/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.6/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.6/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="8281478871-1">(</span><span·class="ss">pg_async</span><span·class="p"·data-group-id="8281478871-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="3373748290-1">(</span><span·class="ss">pg_async</span><span·class="p"·data-group-id="3373748290-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="8281478871-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="8281478871-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="3373748290-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="3373748290-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="8281478871-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="8281478871-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="3373748290-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="3373748290-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="8281478871-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="8281478871-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="3373748290-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="3373748290-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="8281478871-5">(</span><span·class="p"·data-group-id="8281478871-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:·2e306fef76d6467e31a597d6b6647c36d94a3310b450baded412fe2816932b0a·...·]-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="3373748290-5">(</span><span·class="p"·data-group-id="3373748290-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:·3ecebd84455960077b3aaeaf11eab4cd98758907ab80bec35239761e9cebbed4·...·]-5">)</span><span·class="p">.</span><span·class="w">
  
550 </span><span·class="nf">connect</span><span·class="p"·data-group-id="8281478871-7">(</span><span·class="n">ConnectStr</span><span·class="p"·data-group-id="8281478871-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="3373748290-7">(</span><span·class="n">ConnectStr</span><span·class="p"·data-group-id="3373748290-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="8281478871-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="8281478871-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="3373748290-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="3373748290-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="8281478871-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="8281478871-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="3373748290-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="3373748290-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="8281478871-10">(</span><span·class="p"·data-group-id="8281478871-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="8281478871-11">}</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·e5f488dbcb544deaeb27f0845fd7be51d94f5f934ff9787cfd51653e2a47b0cb·...·]-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="3373748290-10">(</span><span·class="p"·data-group-id="3373748290-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="3373748290-11">}</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·c1167365ce73c0749eee50eafb9d835249ea2673eda609daa80ced8f1db22660·...·]-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="8281478871-12">(</span><span·class="p"·data-group-id="8281478871-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="8281478871-13">}</[·...·truncated·by·diffoscope;·len:·232,·SHA:·a4e7cb74a4b61da35be12ca66b0fed01d000108188425296fb6c7e8d3dfdf340·...·]-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="3373748290-12">(</span><span·class="p"·data-group-id="3373748290-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="3373748290-13">}</[·...·truncated·by·diffoscope;·len:·232,·SHA:·5b5885b325488263bb44c0c57ba3c08b826e3a1fc7f2d20736bc9ae567522692·...·]-12">)</span><span·class="p">,</span><span·class="w">
557 ····</span><span·class="nf">port_control</span><span·class="p"·data-group-id="8281478871-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:·c3a7a5c7b95040cbc61de71f3ce90983b49f87583e4f7e0c732705b91a54490f·...·]-15">)</span><span·class="p">,</span><span·class="w">557 ····</span><span·class="nf">port_control</span><span·class="p"·data-group-id="3373748290-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:·7adfb625ff41cbb31e6ede57f998e3489cf31e6af787423aee954fe4bfb72ac9·...·]-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="8281478871-16">(</span><span·class="n">Port</span><span·class="p"·data-group-id="8281478871-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="3373748290-16">(</span><span·class="n">Port</span><span·class="p"·data-group-id="3373748290-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="8281478871-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="8281478871-17">}</span><span·class="p">;</span><span·class="w">560 ············</span><span·class="p"·data-group-id="3373748290-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="3373748290-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="8281478871-18">(</span><span·class="n">Port</span><span·class="p"·data-group-id="8281478871-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="3373748290-18">(</span><span·class="n">Port</span><span·class="p"·data-group-id="3373748290-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="8281478871-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:·eb382f00cfc957adb1eb5f8d7046b5b99dce1256fb6cfbc20cf7f82ce92dfcb5·...·]-19">)</span><span·class="p">,</span><span·class="w">565 ····</span><span·class="nf">port_control</span><span·class="p"·data-group-id="3373748290-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:·e7df52821a7e5cebd61b7b4e5ed07cc8a66c42d795745fbc43a31f437b4d75eb·...·]-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="8281478871-20">(</span><span·class="n">Port</span><span·class="p"·data-group-id="8281478871-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="3373748290-20">(</span><span·class="n">Port</span><span·class="p"·data-group-id="3373748290-20">)</span><span·class="p">,</span><span·class="w">
567 ····</span><span·class="nf">port_close</span><span·class="p"·data-group-id="8281478871-21">(</span><span·class="n">Port</span><span·class="p"·data-group-id="8281478871-21">)</span><span·class="p">,</span><span·class="w">567 ····</span><span·class="nf">port_close</span><span·class="p"·data-group-id="3373748290-21">(</span><span·class="n">Port</span><span·class="p"·data-group-id="3373748290-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="8281478871-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="8281478871-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="3373748290-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="3373748290-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="8281478871-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:·c3196249b64edeb15fd5eef29a42793a42ae5e526073e1c73c7304f12009fa3c·...·]-23">)</span><span·class="p">,</span><span·class="w">570 ····</span><span·class="nf">port_control</span><span·class="p"·data-group-id="3373748290-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:·82d2a4f3e989e342639423fc1af28f0e60f64f02fa92d7a6a1d31d84e609c5c6·...·]-23">)</span><span·class="p">,</span><span·class="w">
571 ····</span><span·class="nf">return_port_data</span><span·class="p"·data-group-id="8281478871-24">(</span><span·class="n">Port</span><span·class="p"·data-group-id="8281478871-24">)</span><span·class="p">.</span><span·class="w">571 ····</span><span·class="nf">return_port_data</span><span·class="p"·data-group-id="3373748290-24">(</span><span·class="n">Port</span><span·class="p"·data-group-id="3373748290-24">)</span><span·class="p">.</span><span·class="w">
  
572 </span><span·class="nf">return_port_data</span><span·class="p"·data-group-id="8281478871-25">(</span><span·class="n">Port</span><span·class="p"·data-group-id="8281478871-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="3373748290-25">(</span><span·class="n">Port</span><span·class="p"·data-group-id="3373748290-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="8281478871-26">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8281478871-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:·40453f7ccb8c5bfdc529ec456db8096a110097f55b23b76a32735fe53124133c·...·]-26">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">574 ········</span><span·class="p"·data-group-id="3373748290-26">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3373748290-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:·174aa4158295729ad858c66f49e8c4eb7a777098036ece1c9f681408507c39b7·...·]-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="8281478871-28">(</span><span·class="n">Data</span><span·class="p"·data-group-id="8281478871-28">)</span><span·class="w">575 ············</span><span·class="nf">binary_to_term</span><span·class="p"·data-group-id="3373748290-28">(</span><span·class="n">Data</span><span·class="p"·data-group-id="3373748290-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.6/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.6/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.6/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.6/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="6521748195-1">(</span><span·class="ss">next_perm</span><span·class="p"·data-group-id="6521748195-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="4569823360-1">(</span><span·class="ss">next_perm</span><span·class="p"·data-group-id="4569823360-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="6521748195-2">(</span><span·class="p"·data-group-id="6521748195-3">[</span><span·class="ss">next_perm</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">prev_perm</span><span·class="p">/<[·...·truncated·by·diffoscope;·len:·379,·SHA:·a42037e83af4cd51dd4cbcbd01a0ff9742d47746767a10e01b1bf4a203f6e782·...·]-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="4569823360-2">(</span><span·class="p"·data-group-id="4569823360-3">[</span><span·class="ss">next_perm</span><span·class="p">/</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">prev_perm</span><span·class="p">/<[·...·truncated·by·diffoscope;·len:·379,·SHA:·c1c286f26824c43418712e52dda5b5515946de25e869d032412f9d7df65f7f9d·...·]-2">)</span><span·class="p">.</span><span·class="w">
  
687 </span><span·class="nf">load</span><span·class="p"·data-group-id="6521748195-4">(</span><span·class="p"·data-group-id="6521748195-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="4569823360-4">(</span><span·class="p"·data-group-id="4569823360-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="6521748195-5">(</span><span·class="ss">next_perm</span><span·class="p"·data-group-id="6521748195-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="4569823360-5">(</span><span·class="ss">next_perm</span><span·class="p"·data-group-id="4569823360-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="6521748195-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="6521748195-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="4569823360-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="4569823360-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="6521748195-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="6521748195-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="4569823360-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="4569823360-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="6521748195-8">(</span><span·class="n">E</span><span·class="p"·data-group-id="6521748195-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="4569823360-8">(</span><span·class="n">E</span><span·class="p"·data-group-id="4569823360-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="6521748195-9">(</span><span·class="p"·data-group-id="6521748195-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="6521748195-10">}</span><span[·...·truncated·by·diffoscope;·len:·192,·SHA:·88389b73405eb03e52acb921d741d73c969241d10fd4cbdd891b5eb9cb104446·...·]-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="4569823360-9">(</span><span·class="p"·data-group-id="4569823360-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="4569823360-10">}</span><span[·...·truncated·by·diffoscope;·len:·192,·SHA:·ee47bca4913c24ff501cc17bbf757786473b8137cd49397ce0913520eccafcaa·...·]-9">)</span><span·class="p">,</span><span·class="w">
696 ············</span><span·class="nf">register</span><span·class="p"·data-group-id="6521748195-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="6521748195-12">)</span><span·class="p">;</span><span·class="w">696 ············</span><span·class="nf">register</span><span·class="p"·data-group-id="4569823360-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="4569823360-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="6521748195-13">(</span><span·class="n">L</span><span·class="p"·data-group-id="6521748195-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="4569823360-13">(</span><span·class="n">L</span><span·class="p"·data-group-id="4569823360-13">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
701 ····</span><span·class="p"·data-group-id="6521748195-14">[</span><span·class="p"·data-group-id="6521748195-15">&lt;&lt;</span><span·class="n">I</span><span·class="p">:</span><span·class="mi">32</span><span·class="o">/</span><span·class="ss">integer</span><span·class="o">-</span><span·class="ss">na[·...·truncated·by·diffoscope;·len:·310,·SHA:·ecea624ecc7caee2cf08fa33298f76d6f37d84b3222d73b41a3b51bca989886f·...·]-14">]</span><span·class="p">.</span><span·class="w">701 ····</span><span·class="p"·data-group-id="4569823360-14">[</span><span·class="p"·data-group-id="4569823360-15">&lt;&lt;</span><span·class="n">I</span><span·class="p">:</span><span·class="mi">32</span><span·class="o">/</span><span·class="ss">integer</span><span·class="o">-</span><span·class="ss">na[·...·truncated·by·diffoscope;·len:·310,·SHA:·1aa5ace8a07bfc81fdbcbb8714ee4e3a81ae4c75adbb4f33fff891df1ba65fc7·...·]-14">]</span><span·class="p">.</span><span·class="w">
  
702 </span><span·class="nf">next_perm</span><span·class="p"·data-group-id="6521748195-16">(</span><span·class="n">L</span><span·class="p"·data-group-id="6521748195-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="4569823360-16">(</span><span·class="n">L</span><span·class="p"·data-group-id="4569823360-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="6521748195-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="6521748195-17">)</span><span·class="p">.</span><span·class="w">703 ····</span><span·class="nf">next_perm</span><span·class="p"·data-group-id="4569823360-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="4569823360-17">)</span><span·class="p">.</span><span·class="w">
  
704 </span><span·class="nf">prev_perm</span><span·class="p"·data-group-id="6521748195-18">(</span><span·class="n">L</span><span·class="p"·data-group-id="6521748195-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="4569823360-18">(</span><span·class="n">L</span><span·class="p"·data-group-id="4569823360-18">)</span><span·class="w">·</span><span·class="p">-&gt;</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.6/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="1545055440-1">(</span><span·class="ss">sname</span><span·class="p"·data-group-id="1545055440-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="1184794447-1">(</span><span·class="ss">sname</span><span·class="p"·data-group-id="1184794447-1">)</span><span·class="p">.</span><span·class="w">
157 </span><span·class="p"·data-group-id="1545055440-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="1545055440-3">[</span><span·class="p"·data-group-id="1545055440-4">[</span><span·class="s">&quot;arnie&quot;</span><span·class="p"·data-group-id="15450554[·...·truncated·by·diffoscope;·len:·108,·SHA:·9ced9ba7c35db1015dca3837c66dd1fb9af1306e37153815e2162fefdd493b6b·...·]-2">}</span><span·class="gp·unselectable">157 </span><span·class="p"·data-group-id="1184794447-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="1184794447-3">[</span><span·class="p"·data-group-id="1184794447-4">[</span><span·class="s">&quot;arnie&quot;</span><span·class="p"·data-group-id="11847944[·...·truncated·by·diffoscope;·len:·108,·SHA:·2beab96c61b81ee5fb7c700564cb81033fd5797a2009b307914b15d8e6c00387·...·]-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="1545055440-5">(</span><span·class="p"·data-group-id="1545055440-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="1184794447-5">(</span><span·class="p"·data-group-id="1184794447-5">)</span><span·class="p">.</span><span·class="w">
159 </span><span·class="p"·data-group-id="1545055440-6">[</span><span·class="s">&quot;+bertie&quot;</span><span·class="p"·data-group-id="1545055440-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="1184794447-6">[</span><span·class="s">&quot;+bertie&quot;</span><span·class="p"·data-group-id="1184794447-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="4302811679-1">(</span><span·class="ss">myflag</span><span·class="p"·data-group-id="4302811679-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="9159824134-1">(</span><span·class="ss">myflag</span><span·class="p"·data-group-id="9159824134-1">)</span><span·class="p">.</span><span·class="w">
165 </span><span·class="p"·data-group-id="4302811679-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="4302811679-3">[</span><span·class="p"·data-group-id="4302811679-4">[</span><span·class="s">&quot;1&quot;</span><span·class="p"·data-group-id="4302811679-[·...·truncated·by·diffoscope;·len:·105,·SHA:·83e5e67f26bd6cb2a3d2733b648dfbedf268044d1f5e2bcb5d55bc488746517a·...·]-2">}</span><span·class="gp·unselectable">165 </span><span·class="p"·data-group-id="9159824134-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9159824134-3">[</span><span·class="p"·data-group-id="9159824134-4">[</span><span·class="s">&quot;1&quot;</span><span·class="p"·data-group-id="9159824134-[·...·truncated·by·diffoscope;·len:·105,·SHA:·6ec06c0372dd9e458b799caa25b9fee6782974bd83d2f234b47ece92aa7ea842·...·]-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="4302811679-5">(</span><span·class="p"·data-group-id="4302811679-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="9159824134-5">(</span><span·class="p"·data-group-id="9159824134-5">)</span><span·class="p">.</span><span·class="w">
167 </span><span·class="p"·data-group-id="4302811679-6">[</span><span·class="p"·data-group-id="4302811679-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="9159824134-6">[</span><span·class="p"·data-group-id="9159824134-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="1087904574-1">(</span><span·class="p"·data-group-id="1087904574-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="5441928205-1">(</span><span·class="p"·data-group-id="5441928205-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="4610083659-1">(</span><span·class="ss">cpu_topology</span><span·class="p"·data-group-id="4610083659-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="3708601479-1">(</span><span·class="ss">cpu_topology</span><span·class="p"·data-group-id="3708601479-1">)</span><span·class="p">.</span><span·class="w">
741 </span><span·class="p"·data-group-id="4610083659-2">[</span><span·class="p"·data-group-id="4610083659-3">{</span><span·class="ss">processor</span><span·class="p">,</span><span·class="p"·data-group-id="4610083659-4">[</span><span·class="p"·data-group-id="4610083659-5">{</span><span·class="ss">c[·...·truncated·by·diffoscope;·len:·260,·SHA:·a2fbb072bba64d8b581db393aa5add3df5a3345f8013238f12984f5b6c7f40ac·...·]9-5">}</span><span·class="p">,</span><span·class="w">741 </span><span·class="p"·data-group-id="3708601479-2">[</span><span·class="p"·data-group-id="3708601479-3">{</span><span·class="ss">processor</span><span·class="p">,</span><span·class="p"·data-group-id="3708601479-4">[</span><span·class="p"·data-group-id="3708601479-5">{</span><span·class="ss">c[·...·truncated·by·diffoscope;·len:·260,·SHA:·8beafa1c6fa963c5cd36d9ccf92b73eef8e7842f9817e4cd4ae6b98ec70621c5·...·]9-5">}</span><span·class="p">,</span><span·class="w">
742 ·············</span><span·class="p"·data-group-id="4610083659-7">{</span><span·class="ss">core</span><span·class="p">,</span><span·class="p"·data-group-id="4610083659-8">{</span><span·class="ss">logical</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="4610083659-8">}</s[·...·truncated·by·diffoscope;·len:·44,·SHA:·96e889201bec2d8266b01961b8c10c3bdc4241eb143755cbaf1c0654380cfa28·...·]9-7">}</span><span·class="p">,</span><span·class="w">742 ·············</span><span·class="p"·data-group-id="3708601479-7">{</span><span·class="ss">core</span><span·class="p">,</span><span·class="p"·data-group-id="3708601479-8">{</span><span·class="ss">logical</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="3708601479-8">}</s[·...·truncated·by·diffoscope;·len:·44,·SHA:·bea9eb759504574edb109c3c4c57ac09dc45bb09c74393d7ca8f5f84d2f0ea9f·...·]9-7">}</span><span·class="p">,</span><span·class="w">
743 ·············</span><span·class="p"·data-group-id="4610083659-9">{</span><span·class="ss">core</span><span·class="p">,</span><span·class="p"·data-group-id="4610083659-10">{</span><span·class="ss">logical</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="4610083659-10">}<[·...·truncated·by·diffoscope;·len:·46,·SHA:·e26093df24113dcfd54b58da70e25e77a81861e5ccc0536b67265326fd36b053·...·]9-9">}</span><span·class="p">,</span><span·class="w">743 ·············</span><span·class="p"·data-group-id="3708601479-9">{</span><span·class="ss">core</span><span·class="p">,</span><span·class="p"·data-group-id="3708601479-10">{</span><span·class="ss">logical</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="3708601479-10">}<[·...·truncated·by·diffoscope;·len:·46,·SHA:·07cceb8b6e707b72f7d02e5dedcebe4e194a3e3c913206a96e6e1e7d9e93651f·...·]9-9">}</span><span·class="p">,</span><span·class="w">
744 ·············</span><span·class="p"·data-group-id="4610083659-11">{</span><span·class="ss">core</span><span·class="p">,</span><span·class="p"·data-group-id="4610083659-12">{</span><span·class="ss">logical</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="4610083659-12">}[·...·truncated·by·diffoscope;·len:·207,·SHA:·7f08a69a2ba8a38518075287224a86f1adf8bc54f3f104310869ba00d06e2799·...·]9-2">]</span></code></pre><p>A·more·complicated·example·with·two·quad·core·processors,·each·processor·in744 ·············</span><span·class="p"·data-group-id="3708601479-11">{</span><span·class="ss">core</span><span·class="p">,</span><span·class="p"·data-group-id="3708601479-12">{</span><span·class="ss">logical</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="3708601479-12">}[·...·truncated·by·diffoscope;·len:·207,·SHA:·1c7a39cbd3c36c15ff9afd3d4e00d812ae056bc8278c7bf9031f4741895b7c15·...·]9-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="1258637536-1">(</span><span·class="ss">cpu_topology</span><span·class="p"·data-group-id="1258637536-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="6667557107-1">(</span><span·class="ss">cpu_topology</span><span·class="p"·data-group-id="6667557107-1">)</span><span·class="p">.</span><span·class="w">
748 </span><span·class="p"·data-group-id="1258637536-2">[</span><span·class="p"·data-group-id="1258637536-3">{</span><span·class="nb">node</span><span·class="p">,</span><span·class="p"·data-group-id="1258637536-4">[</span><span·class="p"·data-group-id="1258637536-5">{</span><span·class="ss">proces[·...·truncated·by·diffoscope;·len:·419,·SHA:·b0d21b5586df711769985446c5634ec513e35fbd36979b691e6f4c278dbcc81e·...·]-7">}</span><span·class="p">,</span><span·class="w">748 </span><span·class="p"·data-group-id="6667557107-2">[</span><span·class="p"·data-group-id="6667557107-3">{</span><span·class="nb">node</span><span·class="p">,</span><span·class="p"·data-group-id="6667557107-4">[</span><span·class="p"·data-group-id="6667557107-5">{</span><span·class="ss">proces[·...·truncated·by·diffoscope;·len:·419,·SHA:·aeed7526197d71917608ad761704110a16567a9295c87d854c88cf5b186c03ba·...·]-7">}</span><span·class="p">,</span><span·class="w">
749 ····················</span><span·class="p"·data-group-id="1258637536-9">{</span><span·class="ss">core</span><span·class="p">,</span><span·class="p"·data-group-id="1258637536-10">{</span><span·class="ss">logical</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="1258637536-10">}<[·...·truncated·by·diffoscope;·len:·47,·SHA:·b3970dea6a375799836a91320a49b0d9790631b9e0c4ea7c8260f52d311e13d2·...·]-9">}</span><span·class="p">,</span><span·class="w">749 ····················</span><span·class="p"·data-group-id="6667557107-9">{</span><span·class="ss">core</span><span·class="p">,</span><span·class="p"·data-group-id="6667557107-10">{</span><span·class="ss">logical</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="6667557107-10">}<[·...·truncated·by·diffoscope;·len:·47,·SHA:·a76d640340ea125d4ad664e3afc0db130f458b222b2d8313c4a140a233de4ee9·...·]-9">}</span><span·class="p">,</span><span·class="w">
750 ····················</span><span·class="p"·data-group-id="1258637536-11">{</span><span·class="ss">core</span><span·class="p">,</span><span·class="p"·data-group-id="1258637536-12">{</span><span·class="ss">logical</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="1258637536-12">}[·...·truncated·by·diffoscope;·len:·48,·SHA:·028d50fbc6b946dacefaa194ecc07cf1812c2ef8b02668f9d18358192f5903f2·...·]-11">}</span><span·class="p">,</span><span·class="w">750 ····················</span><span·class="p"·data-group-id="6667557107-11">{</span><span·class="ss">core</span><span·class="p">,</span><span·class="p"·data-group-id="6667557107-12">{</span><span·class="ss">logical</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="6667557107-12">}[·...·truncated·by·diffoscope;·len:·48,·SHA:·f39dc2e1ac348ca7b19af06c09a61663b199806587571e8b7d8addd237674d40·...·]-11">}</span><span·class="p">,</span><span·class="w">
751 ····················</span><span·class="p"·data-group-id="1258637536-13">{</span><span·class="ss">core</span><span·class="p">,</span><span·class="p"·data-group-id="1258637536-14">{</span><span·class="ss">logical</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="1258637536-14">}</span><span·class="p"·data-group-id="1258637536-13">}</span><span·class="p"·data-group-id="1258637536-6">]</span><span·class="p"·data-group-id="1258637536-5">}</span><span·class="p"·data-group-id="1258637536-4">]</span><span·class="p"·data-group-id="1258637536-3">}</span><span·class="p">,</span><span·class="w"> 
752 ·</span><span·class="p"·data-group-id="1258637536-15">{</span><span·class="nb">node</span><span·class="p">,</span><span·class="p"·data-group-id="1258637536-16">[</span><span·class="p"·data-group-id="1258637536-17">{</span><span·class="ss">processor</span><s[·...·truncated·by·diffoscope;·len:·414,·SHA:·8ec9e70a0b66130a04199383cca0b264f90d98c9b90c023c87ed8bf65c5c79d5·...·]">}</span><span·class="p">,</span><span·class="w">751 ····················</span><span·class="p"·data-group-id="6667557107-13">{</span><span·class="ss">core</span><span·class="p">,</span><span·class="p"·data-group-id="6667557107-14">{</span><span·class="ss">logical</span><span·class="p">,</span><span·class="mi[·...·truncated·by·diffoscope;·len:·320,·SHA:·9269707b937942717ecf10d237a674ca4ecad02b05ced4828f79afd233d0088c·...·]">}</span><span·class="p">,</span><span·class="w">
 752 ·</span><span·class="p"·data-group-id="6667557107-15">{</span><span·class="nb">node</span><span·class="p">,</span><span·class="p"·data-group-id="6667557107-16">[</span><span·class="p"·data-group-id="6667557107-17">{</span><span·class="ss">processor</span><span·class="p">,</span><span·class="p"·data-group-id="6667557107-18">[</span><span·class="p"·data-group-id="6667557107-19">{</span><span·class="ss">core</span><span·class="p">,</span><span·class="p"·data-group-id="6667557107-20">{</span><span·class="ss">logical</span><span·class="p">,</span><span·class="mi">7</span><span·class="p"·data-group-id="6667557107-20">}</span><span·class="p"·data-group-id="6667557107-19">}</span><span·class="p">,</span><span·class="w">
753 ····················</span><span·class="p"·data-group-id="1258637536-21">{</span><span·class="ss">core</span><span·class="p">,</span><span·class="p"·data-group-id="1258637536-22">{</span><span·class="ss">logical</span><span·class="p">,</span><span·class="mi">4</span><span·class="p"·data-group-id="1258637536-22">}[·...·truncated·by·diffoscope;·len:·48,·SHA:·028d50fbc6b946dacefaa194ecc07cf1812c2ef8b02668f9d18358192f5903f2·...·]-21">}</span><span·class="p">,</span><span·class="w">753 ····················</span><span·class="p"·data-group-id="6667557107-21">{</span><span·class="ss">core</span><span·class="p">,</span><span·class="p"·data-group-id="6667557107-22">{</span><span·class="ss">logical</span><span·class="p">,</span><span·class="mi">4</span><span·class="p"·data-group-id="6667557107-22">}[·...·truncated·by·diffoscope;·len:·48,·SHA:·f39dc2e1ac348ca7b19af06c09a61663b199806587571e8b7d8addd237674d40·...·]-21">}</span><span·class="p">,</span><span·class="w">
754 ····················</span><span·class="p"·data-group-id="1258637536-23">{</span><span·class="ss">core</span><span·class="p">,</span><span·class="p"·data-group-id="1258637536-24">{</span><span·class="ss">logical</span><span·class="p">,</span><span·class="mi">6</span><span·class="p"·data-group-id="1258637536-24">}[·...·truncated·by·diffoscope;·len:·48,·SHA:·028d50fbc6b946dacefaa194ecc07cf1812c2ef8b02668f9d18358192f5903f2·...·]-23">}</span><span·class="p">,</span><span·class="w">754 ····················</span><span·class="p"·data-group-id="6667557107-23">{</span><span·class="ss">core</span><span·class="p">,</span><span·class="p"·data-group-id="6667557107-24">{</span><span·class="ss">logical</span><span·class="p">,</span><span·class="mi">6</span><span·class="p"·data-group-id="6667557107-24">}[·...·truncated·by·diffoscope;·len:·48,·SHA:·f39dc2e1ac348ca7b19af06c09a61663b199806587571e8b7d8addd237674d40·...·]-23">}</span><span·class="p">,</span><span·class="w">
755 ····················</span><span·class="p"·data-group-id="1258637536-25">{</span><span·class="ss">core</span><span·class="p">,</span><span·class="p"·data-group-id="1258637536-26">{</span><span·class="ss">logical</span><span·class="p">,</span><span·class="mi">5</span><span·class="p"·data-group-id="1258637536-26">}[·...·truncated·by·diffoscope;·len:·318,·SHA:·4a58f3dee2da72179f559fe8052282581dd5776b161aaf6a885d34b7d2f5bb3b·...·]-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="6667557107-25">{</span><span·class="ss">core</span><span·class="p">,</span><span·class="p"·data-group-id="6667557107-26">{</span><span·class="ss">logical</span><span·class="p">,</span><span·class="mi">5</span><span·class="p"·data-group-id="6667557107-26">}[·...·truncated·by·diffoscope;·len:·318,·SHA:·b05127f028bc33049cfc67798cc8e2971ceb62b94ccaf970b8240e6f9d91635f·...·]-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.2/doc/html/filename.html#user_config"><code·class="inline">filename:basedir(user_config,·&quot;erlang&quot;)</code></a>.</p><p>If·an·<code·class="inline">.erlang</code>·file·is·found,·it·is·assumed·to·contain·valid·Erlang928 <a·href="../../../lib/stdlib-6.2.2/doc/html/filename.html#user_config"><code·class="inline">filename:basedir(user_config,·&quot;erlang&quot;)</code></a>.</p><p>If·an·<code·class="inline">.erlang</code>·file·is·found,·it·is·assumed·to·contain·valid·Erlang
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="5284430210-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="5284430210-2">[</span><span·class="p"·data-group-id="5284430210-2">]</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·12,·SHA:·92e0826ac8127280f7ed252afc0171ffc121c3e106929e13ce8868c800120db9·...·]-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="5588722699-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="5588722699-2">[</span><span·class="p"·data-group-id="5588722699-2">]</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·12,·SHA:·ece4d4e7d781f3bfb75357e15955e2acb7e8a5fdd25fa733ae9967828d364028·...·]-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="5284430210-3">(</span><span·class="s">&quot;/home/calvin/test/ebin&quot;</span><span·class="p"·data-group-id="5284430210-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="5588722699-3">(</span><span·class="s">&quot;/home/calvin/test/ebin&quot;</span><span·class="p"·data-group-id="5588722699-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="5284430210-4">(</span><span·class="s">&quot;/home/hobbes/bigappl-1.2/ebin&quot;</span><span·class="p"·data-group-id="5284430210-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="5588722699-4">(</span><span·class="s">&quot;/home/hobbes/bigappl-1.2/ebin&quot;</span><span·class="p"·data-group-id="5588722699-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="5284430210-5">(</span><span·class="s">&quot;.erlang·rc·finished\n&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="5284430210-6">[</span><span·class="p"·data-group-id="5284430210-6">]</span><span·class="p"·data-group-id="5284430210-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="5588722699-5">(</span><span·class="s">&quot;.erlang·rc·finished\n&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="5588722699-6">[</span><span·class="p"·data-group-id="5588722699-6">]</span><span·class="p"·data-group-id="5588722699-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.6/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="5554485329-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="5554485329-2">[</span><span·[·...·truncated·by·diffoscope;·len:·194,·SHA:·4067cc8726b94cfaf376ef6da1a9dd3be301b7902d0c215e756804434ded0284·...·]-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="2679678242-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="2679678242-2">[</span><span·[·...·truncated·by·diffoscope;·len:·194,·SHA:·f348d92c2a50c10aab2100902057f196368a434c9a886485774f287d2adaa9a2·...·]-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="6070641807-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="0434710234-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="6070641807-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="6070641807-2">]</span><s[·...·truncated·by·diffoscope;·len:·266,·SHA:·02f1642e668590b39ce7e97941ed2b40f31ba82b630c3457bd7527fd68fe6a83·...·]-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="0434710234-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="0434710234-2">]</span><s[·...·truncated·by·diffoscope;·len:·266,·SHA:·1035b8ce5832e8d09283906463845e522f9a8b652f2e519329b2c27f12e7e77d·...·]-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="8288079276-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="8288079276-2">]</span><s[·...·truncated·by·diffoscope;·len:·39,·SHA:·4d36d2c4afa9a3c749bec1e4d418cce7a1959970a349eeb6587b1ce61c1674ec·...·]-1">)</span><span·class="p">.</span></code></pre><h3·id="kill-epmd"·class="section-heading">276 ··········</span><span·class="p"·data-group-id="9896590243-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="9896590243-2">]</span><s[·...·truncated·by·diffoscope;·len:·39,·SHA:·8874cbd2d33ae52b74ed9d52434040eede216fe92ade9d57a3036353bf940bd4·...·]-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="8240507773-1">(</span><span·class="ss">initiator</span><span·class="p"·data-group-id="8240507773-1">)</span><span·class="w">······································</span><span·class="n">B</span><span·class="w">·</span><span·class="p"·data-group-id="82405077[·...·truncated·by·diffoscope;·len:·87,·SHA:·a4ed852b7c4afc3b3b47f2fd3e1d699927652ff0b34e6de0c40866d5be51a876·...·]-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="9212372711-1">(</span><span·class="ss">initiator</span><span·class="p"·data-group-id="9212372711-1">)</span><span·class="w">······································</span><span·class="n">B</span><span·class="w">·</span><span·class="p"·data-group-id="92123727[·...·truncated·by·diffoscope;·len:·87,·SHA:·ff89474c53f4e8c7be3732295dfccc9facda58489ed8004ddad121109bb4c966·...·]-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="8240507773-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="9212372711-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="8240507773-3">)</span><span·class="w">423 ···················································</span><span·class="ss">recv_status</span><span·class="p"·data-group-id="9212372711-3">)</span><span·class="w">
  
424 ··························</span><span·class="p"·data-group-id="8240507773-4">(</span><span·class="n">ChB</span><span·class="p"·data-group-id="8240507773-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:·d3a374d7b1dd18c76673ac62f5e99efd567ec03476f045939d1db1187c95f1b8·...·]-5">)</span><span·class="w">424 ··························</span><span·class="p"·data-group-id="9212372711-4">(</span><span·class="n">ChB</span><span·class="p"·data-group-id="9212372711-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:·a24b8983b9c8d189a2253a43629d9bf3d791a165c00bc27b62ce31d68272bd68·...·]-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="8240507773-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="9212372711-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="8240507773-6">)</span><span·class="w">429 ···················································</span><span·class="ss">recv_complement</span><span·class="p"·data-group-id="9212372711-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="8240507773-7">(</span><span·class="p"·data-group-id="8240507773-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="9212372711-7">(</span><span·class="p"·data-group-id="9212372711-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="8240507773-8">(</span><span·class="n">B</span><span·class="p"·data-group-id="8240507773-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="9212372711-8">(</span><span·class="n">B</span><span·class="p"·data-group-id="9212372711-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="8240507773-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="8240507773-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="9212372711-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="9212372711-9">)</span><span·class="w">
433 ··························</span><span·class="p"·data-group-id="8240507773-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="8240507773-10">)</span><span·class="w">433 ··························</span><span·class="p"·data-group-id="9212372711-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="9212372711-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="8240507773-11">(</span><span·class="n">A</span><span·class="p"·data-group-id="8240507773-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="9212372711-11">(</span><span·class="n">A</span><span·class="p"·data-group-id="9212372711-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="8240507773-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="8240507773-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="9212372711-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="9212372711-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="8240507773-13">(</span><span·class="n">A</span><span·class="p"·data-group-id="8240507773-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="9212372711-13">(</span><span·class="n">A</span><span·class="p"·data-group-id="9212372711-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="8240507773-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="8240507773-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="9212372711-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="9212372711-14">)</span><span·class="w">
442 ··························</span><span·class="p"·data-group-id="8240507773-15">(</span><span·class="n">DiB</span><span·class="p"·data-group-id="8240507773-15">)</span><span·class="w">442 ··························</span><span·class="p"·data-group-id="9212372711-15">(</span><span·class="n">DiB</span><span·class="p"·data-group-id="9212372711-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="8240507773-16">(</span><span·class="n">B</span><span·class="p"·data-group-id="8240507773-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="9212372711-16">(</span><span·class="n">B</span><span·class="p"·data-group-id="9212372711-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="8240507773-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="8240507773-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="9212372711-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="9212372711-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.6/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="7659268310-1">(</span><span·class="ss">d0</span><span·class="o">*</span><span·class="n">B</span><span·class="err">^</span><span·class="mi">0</span><span·class="w">·</span><span·class="o">+</span><span·class="w">·</span><span·class="ss">d1</span><span·class[·...·truncated·by·diffoscope;·len:·952,·SHA:·a5b2c9fc389268db47d80645b14d5b350b467d1706f01221aef59b58432c34dc·...·]-1">)</span></code></pre><h2·id="large_big_ext"·class="section-heading">443 </span><span·class="p"·data-group-id="3840310152-1">(</span><span·class="ss">d0</span><span·class="o">*</span><span·class="n">B</span><span·class="err">^</span><span·class="mi">0</span><span·class="w">·</span><span·class="o">+</span><span·class="w">·</span><span·class="ss">d1</span><span·class[·...·truncated·by·diffoscope;·len:·952,·SHA:·5e16a0fc4e8f4578a8244e4409c81976401d42e86ed16cdfb6dd4b58e7b03761·...·]-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.6/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="8285418552-1">(</span><span·class="ss">niftest</span><span·class="p"·data-group-id="8285418552-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="5447896247-1">(</span><span·class="ss">niftest</span><span·class="p"·data-group-id="5447896247-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="8285418552-2">(</span><span·class="p"·data-group-id="8285418552-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:·116,·SHA:·57eb72c561a14d07b79e92300fec52cf27f0177b5192470c9edff35f8ac64621·...·]-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="5447896247-2">(</span><span·class="p"·data-group-id="5447896247-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:·116,·SHA:·e021e529de523e83480641083212b0f4259b0cb133cd2833b5110460550a846b·...·]-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="8285418552-4">(</span><span·class="p"·data-group-id="8285418552-5">[</span><span·class="ss">hello</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="8285418552-5">]</span><span·class="p"·data-group-id="8285418552-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="5447896247-4">(</span><span·class="p"·data-group-id="5447896247-5">[</span><span·class="ss">hello</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="5447896247-5">]</span><span·class="p"·data-group-id="5447896247-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="8285418552-6">(</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="8285418552-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="5447896247-6">(</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="5447896247-6">)</span><span·class="p">.</span><span·class="w">
  
173 </span><span·class="nf">init</span><span·class="p"·data-group-id="8285418552-7">(</span><span·class="p"·data-group-id="8285418552-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="5447896247-7">(</span><span·class="p"·data-group-id="5447896247-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="8285418552-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="8285418552-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="5447896247-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="5447896247-8">)</span><span·class="p">.</span><span·class="w">
  
175 </span><span·class="nf">hello</span><span·class="p"·data-group-id="8285418552-9">(</span><span·class="p"·data-group-id="8285418552-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="5447896247-9">(</span><span·class="p"·data-group-id="5447896247-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="8285418552-10">(</span><span·class="s">&quot;NIF·library·not·loaded&quot;</span><span·class="p"·data-group-id="8285418552-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="5447896247-10">(</span><span·class="s">&quot;NIF·library·not·loaded&quot;</span><span·class="p"·data-group-id="5447896247-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.6/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.6/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.6/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.6/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.6/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="6106902930-1">(</span><span·class="s">&quot;kernel/include/file.hrl&quot;</span><span·class="p"·data-group-id="6106902930-1">)</span><span·class="p">.</span></code></pre><p>For·more·information·about·the·record·see·<a·href="../../../lib/kernel-10.2.6/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="5248732067-1">(</span><span·class="s">&quot;kernel/include/file.hrl&quot;</span><span·class="p"·data-group-id="5248732067-1">)</span><span·class="p">.</span></code></pre><p>For·more·information·about·the·record·see·<a·href="../../../lib/kernel-10.2.6/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.6/doc/html/code.html"><code·class="inline">code</code></a>.</p>405 about·archive·files,·see·<a·href="../../../lib/kernel-10.2.6/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.6/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="3650688583-1">[</span><span·class="n">DEVELOPMENT</span><span·class="p"·data-group-id="3650688583-1">]</span><span·class="w">·</span><span·class="p"·data-group-id="3650688583-2">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">8[·...·truncated·by·diffoscope;·len:·1414,·SHA:·f1a2dd084de1b8c042e2e70d18a8ee2d07e5e666b77645e5a780905ad28859c7·...·]-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="6562044744-1">[</span><span·class="n">DEVELOPMENT</span><span·class="p"·data-group-id="6562044744-1">]</span><span·class="w">·</span><span·class="p"·data-group-id="6562044744-2">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">8[·...·truncated·by·diffoscope;·len:·1414,·SHA:·ead907e7692d9443b75d91d846c70f40f84855bfa218e0855259f04db049d73d·...·]-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="3650688583-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="3650688583-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="6562044744-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="6562044744-9">)</span><span·class="gp·unselectable">
154 1&gt;·</span><span·class="nf">c</span><span·class="p"·data-group-id="3650688583-10">(</span><span·class="ss">erl_msg_tracer</span><span·class="p"·data-group-id="3650688583-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:·095f6c0d71f38ac609ef800c22deb491bd568a565803ab0f8c110c2b0e16355b·...·]-11">)</span><span·class="p">.</span><span·class="w">154 1&gt;·</span><span·class="nf">c</span><span·class="p"·data-group-id="6562044744-10">(</span><span·class="ss">erl_msg_tracer</span><span·class="p"·data-group-id="6562044744-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:·c05384cd4d5efe81ba6e11fe67085ec16c87f19c62c9126819fe645ba954fa16·...·]-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="3650688583-12">(</span><span·class="k">fun</span><span·class="w">·</span><span·class="n">F</span><span·class="p"·data-group-id="3650688583-13">(</span><span·class="p"·data-group-id="3650688583-13">)</span><span·class="w">·</span><span·class="p">-&gt;</span[·...·truncated·by·diffoscope;·len:·954,·SHA:·cd87231f199c02d3bd21190492c1050ab54bd32cbf6048326ae3daf883979b50·...·]-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="6562044744-12">(</span><span·class="k">fun</span><span·class="w">·</span><span·class="n">F</span><span·class="p"·data-group-id="6562044744-13">(</span><span·class="p"·data-group-id="6562044744-13">)</span><span·class="w">·</span><span·class="p">-&gt;</span[·...·truncated·by·diffoscope;·len:·954,·SHA:·ae86f5bb0965474f233517b07a0e2dfe249aaef16ad1d1702d8c9d78185a11b5·...·]-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="3650688583-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="3650688583-18">[</span><span·class="nb">send</span>[·...·truncated·by·diffoscope;·len:·420,·SHA:·d20e33e94c2a6b9bee5a9045884f624406fe8a3fd83d0b289f111f493c44ad39·...·]-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="6562044744-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="6562044744-18">[</span><span·class="nb">send</span>[·...·truncated·by·diffoscope;·len:·420,·SHA:·e1bb3b877a5932e2836ea8a40794f019c38a1860c3843951d11610c78894195c·...·]-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="3650688583-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:·254e75560c5df1efffaa8c8472a8245494823eec86c90ce547c19a5a8923f3b1·...·]-20">}</span><span·class="gp·unselectable">160 </span><span·class="p"·data-group-id="6562044744-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:·bb503bedea6cdccbe835458e6dbb7a955c96f16a8a58c91a7fdb29aafdbdaaf8·...·]-20">}</span><span·class="gp·unselectable">
161 4&gt;·</span><span·class="p"·data-group-id="3650688583-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="3650688583-21">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·375,·SHA:·d8b6f21815f91ce94155d4c3d22e81eb059b8ee6b72834ff917f3482edeeb228·...·]-22">)</span><span·class="p">.</span><span·class="w">161 4&gt;·</span><span·class="p"·data-group-id="6562044744-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="6562044744-21">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·375,·SHA:·ee6e83fe6220fd2a41803217b2904639923f5cbabd81bf34e7447d1d1fdd5ae8·...·]-22">)</span><span·class="p">.</span><span·class="w">
162 </span><span·class="p"·data-group-id="3650688583-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:·949e5232beef4d00631c1429042737ec0cd007922754b1d687c2f3472f5db006·...·]-24">}</span><span·class="w">162 </span><span·class="p"·data-group-id="6562044744-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:·49f8734ecc73680a31880e294522a95fb3a28ad9c82cfc7614d555aa74b8ab26·...·]-24">}</span><span·class="w">
163 </span><span·class="p"·data-group-id="3650688583-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:·2b5a9ac829d6e2b2353c2ef9cb689cd0edf0f582e6434be1b63c46c2247f2031·...·]-25">}</span><span·class="w">163 </span><span·class="p"·data-group-id="6562044744-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:·d43d26562f83987ca826494a3cd27418768a768ffc270c94c1f6b49954a9ac57·...·]-25">}</span><span·class="w">
164 </span><span·class="p"·data-group-id="3650688583-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:·f2e026a9363b274f1e14ee48122eb2767c6bf46a5531e9c84c5dae3e5a1e8fff·...·]-26">}</span><span·class="w">164 </span><span·class="p"·data-group-id="6562044744-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:·7737e70c8c16756e5e4b15dcfadceee6a53e5425932363191d2178611dd38237·...·]-26">}</span><span·class="w">
165 </span><span·class="p"·data-group-id="3650688583-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:·f2e026a9363b274f1e14ee48122eb2767c6bf46a5531e9c84c5dae3e5a1e8fff·...·]-27">}</span><span·class="w">165 </span><span·class="p"·data-group-id="6562044744-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:·7737e70c8c16756e5e4b15dcfadceee6a53e5425932363191d2178611dd38237·...·]-27">}</span><span·class="w">
166 </span><span·class="p"·data-group-id="3650688583-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:·f2e026a9363b274f1e14ee48122eb2767c6bf46a5531e9c84c5dae3e5a1e8fff·...·]-28">}</span><span·class="w">166 </span><span·class="p"·data-group-id="6562044744-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:·7737e70c8c16756e5e4b15dcfadceee6a53e5425932363191d2178611dd38237·...·]-28">}</span><span·class="w">
167 </span><span·class="p"·data-group-id="3650688583-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:·f2e026a9363b274f1e14ee48122eb2767c6bf46a5531e9c84c5dae3e5a1e8fff·...·]-29">}</span><span·class="w">167 </span><span·class="p"·data-group-id="6562044744-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:·7737e70c8c16756e5e4b15dcfadceee6a53e5425932363191d2178611dd38237·...·]-29">}</span><span·class="w">
168 </span><span·class="p"·data-group-id="3650688583-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="3650688583-30">}</span><span·class="w">168 </span><span·class="p"·data-group-id="6562044744-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="6562044744-30">}</span><span·class="w">
169 </span><span·class="p"·data-group-id="3650688583-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:·254e75560c5df1efffaa8c8472a8245494823eec86c90ce547c19a5a8923f3b1·...·]-31">}</span><span·class="w">169 </span><span·class="p"·data-group-id="6562044744-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:·bb503bedea6cdccbe835458e6dbb7a955c96f16a8a58c91a7fdb29aafdbdaaf8·...·]-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="6350333597-1">(</span><span·class="ss">erl_msg_tracer</span><span·class="p"·data-group-id="6350333597-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="1939804657-1">(</span><span·class="ss">erl_msg_tracer</span><span·class="p"·data-group-id="1939804657-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="6350333597-2">(</span><span·class="p"·data-group-id="6350333597-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:·ae4c9a9625b653e5f28869b92e7d0734988d483c429757fcec9ae779cc0404e7·...·]7-2">)</span><span·class="p">.</span><span·class="w">172 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="1939804657-2">(</span><span·class="p"·data-group-id="1939804657-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:·6e2ba347e95adac4bbf1ea9738f7933c1c0a5d4b7f8b06e6b470d07fda7ecd96·...·]7-2">)</span><span·class="p">.</span><span·class="w">
  
173 </span><span·class="nf">load</span><span·class="p"·data-group-id="6350333597-4">(</span><span·class="p"·data-group-id="6350333597-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="1939804657-4">(</span><span·class="p"·data-group-id="1939804657-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="6350333597-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="6350333597-6">[</span><span·class="p"·data-group-id="6350333597-6">]</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·9,·SHA:·54ab77100f52669d12f6fa16f310191931a26d9fd6749431e6642c79fd36ee5a·...·]7-5">)</span><span·class="p">.</span><span·class="w">174 ····</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">load_nif</span><span·class="p"·data-group-id="1939804657-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="1939804657-6">[</span><span·class="p"·data-group-id="1939804657-6">]</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·9,·SHA:·0473f39e2e6d621846d1e387a1bc101aa2c26c469fa4f32045c91def011bbbc2·...·]7-5">)</span><span·class="p">.</span><span·class="w">
  
175 </span><span·class="nf">enabled</span><span·class="p"·data-group-id="6350333597-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="6350333597-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="1939804657-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="1939804657-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="6350333597-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:·4b4a2b37ac688b9f531c97ed604589252316fea300df114a58ab52698373310d·...·]7-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">177 </span><span·class="nf">trace</span><span·class="p"·data-group-id="1939804657-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:·4f63644090de7328e91478bcafbf414e0cd6164e8cf4b014ca15133dced60ce1·...·]7-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
178 ····</span><span·class="ss">error</span><span·class="p">.</span></code></pre><p><code·class="inline">erl_msg_tracer.c</code>:</p><pre><code·class="c">#include·&lt;erl_nif.h&gt;178 ····</span><span·class="ss">error</span><span·class="p">.</span></code></pre><p><code·class="inline">erl_msg_tracer.c</code>:</p><pre><code·class="c">#include·&lt;erl_nif.h&gt;
  
179 /*·NIF·interface·declarations·*/179 /*·NIF·interface·declarations·*/
180 static·int·load(ErlNifEnv*·env,·void**·priv_data,·ERL_NIF_TERM·load_info);180 static·int·load(ErlNifEnv*·env,·void**·priv_data,·ERL_NIF_TERM·load_info);
181 static·int·upgrade(ErlNifEnv*·env,·void**·priv_data,·void**·old_priv_data,·ERL_NIF_TERM·load_info);181 static·int·upgrade(ErlNifEnv*·env,·void**·priv_data,·void**·old_priv_data,·ERL_NIF_TERM·load_info);
182 static·void·unload(ErlNifEnv*·env,·void*·priv_data);182 static·void·unload(ErlNifEnv*·env,·void*·priv_data);
  
625 KB
./usr/share/doc/erlang-doc/html/erts-15.2.6/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="4262887533-1">(</span><span·class="n">Data1</span><span·class="p"·data-group-id="4262887533-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="6368424848-1">(</span><span·class="n">Data1</span><span·class="p"·data-group-id="6368424848-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="4262887533-2">(</span><span·class="n">X</span><span·class="p">,</span><span·class="n">Data2</span><span·class="p"·data-group-id="4262887533-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:·5edcebc939b94c787e3e66809bd6e1e1c9531bc20db1d424774000af08cbf31e·...·]-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="6368424848-2">(</span><span·class="n">X</span><span·class="p">,</span><span·class="n">Data2</span><span·class="p"·data-group-id="6368424848-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:·8a8f18fa99f81a026d1c1aab77246cb2565c28ed98eef1f0f85b6fd6df609a48·...·]-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="2518416237-1">(</span><span·class="n">Data1</span><span·class="p"·data-group-id="2518416237-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="1845528563-1">(</span><span·class="n">Data1</span><span·class="p"·data-group-id="1845528563-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="2518416237-2">(</span><span·class="n">Y</span><span·class="p">,</span><span·class="n">Data2</span><span·class="p"·data-group-id="2518416237-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:·64fcfc7da1327a0df019f79e34546436a4591b2ec35ddb272596bcd092194ed5·...·]-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="1845528563-2">(</span><span·class="n">Y</span><span·class="p">,</span><span·class="n">Data2</span><span·class="p"·data-group-id="1845528563-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:·d6bebc5120b451a0611c03d4a0683e23004db90b1f0d4e2c6ebd06f6cd94cd29·...·]-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="9559075234-2">(</span><span·class="n">Data2</span><span·class="p"·data-group-id="9559075234-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="7975206793-2">(</span><span·class="n">Data2</span><span·class="p"·data-group-id="7975206793-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="9559075234-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="9559075234-4">(</span><span·class="n">Data2</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·72,·SHA:·634535741911be5e1860118844d74c26438e94e0c22944ed5a6b383bda7853e5·...·]-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="7975206793-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="7975206793-4">(</span><span·class="n">Data2</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·72,·SHA:·6d9dbcf6f7f0fc151cc67f11719bc49614ba2c04f95a269d2dcc01673a7d92ba·...·]-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="7387276878-1">(</span><span·class="n">Data1</span><span·class="p"·data-group-id="7387276878-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="2253486476-1">(</span><span·class="n">Data1</span><span·class="p"·data-group-id="2253486476-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="7387276878-2">(</span><span·class="n">X</span><span·class="p">,</span><span·class="n">Data2</span><span·class="p"·data-group-id="7387276878-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:·e311f93e3327b7818ac679de8ca5d84f1143384da574087cdf385e3a9fdb415e·...·]-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="2253486476-2">(</span><span·class="n">X</span><span·class="p">,</span><span·class="n">Data2</span><span·class="p"·data-group-id="2253486476-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:·39ba6560183fb47bd05252a33ecefed594f970b03bafceede2343d4acbee6d8f·...·]-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="7447310446-1">(</span><span·class="n">Data1</span><span·class="p"·data-group-id="7447310446-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="1589425972-1">(</span><span·class="n">Data1</span><span·class="p"·data-group-id="1589425972-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="7447310446-2">(</span><span·class="n">Y</span><span·class="p">,</span><span·class="n">Data2</span><span·class="p"·data-group-id="7447310446-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:·144b09b30c4ee4b3a94c4bc87c5c0ceed9a8f2bd4616455c49e4b91f7f982d30·...·]-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="1589425972-2">(</span><span·class="n">Y</span><span·class="p">,</span><span·class="n">Data2</span><span·class="p"·data-group-id="1589425972-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:·48c8170e5e2285cda4110eee64ff6ff267af3014ae282c23c436b44add475951·...·]-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="6315437928-2">(</span><span·class="n">Data2</span><span·class="p"·data-group-id="6315437928-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="0021244317-2">(</span><span·class="n">Data2</span><span·class="p"·data-group-id="0021244317-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="6315437928-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="6315437928-4">(</span><span·class="n">Data2</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·72,·SHA:·77233f97e9d288a81c09583d5aa87bd8b535a8a7d04da7ae1c061375b48adfae·...·]-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="0021244317-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="0021244317-4">(</span><span·class="n">Data2</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·72,·SHA:·4e377ebb68554b8c5316eaffc05c43299751c42ef087d06f8f3f6fa23e4fe001·...·]-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="0283838085-1">(</span><span·class="p"·data-group-id="0283838085-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="0283838085-2">]</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·407,·SHA:·855e9af9a7a17a522b713899f1e646b2c21db00fc39b8a477b8fa7685b4a58ad·...·]-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="3588279240-1">(</span><span·class="p"·data-group-id="3588279240-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="3588279240-2">]</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·407,·SHA:·cd61dbf1430979104de332751158c5bad889a60030c38b61bc2927941cdba602·...·]-1">)</span><span·class="p">.</span><span·class="w">
8137 </span><span·class="p"·data-group-id="0283838085-4">[</span><span·class="p"·data-group-id="0283838085-5">{</span><span·class="ss">c@localhost</span><span·class="p">,</span><span·class="p"·data-group-id="0283838085-6">#{</span><span·class="ss">connection_id</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·334,·SHA:·53c0956774b151d1b965497051fda78cc2e05f396f9bcb8912b6e18775e60f9b·...·]-5">}</span><span·class="p">,</span><span·class="w">8137 </span><span·class="p"·data-group-id="3588279240-4">[</span><span·class="p"·data-group-id="3588279240-5">{</span><span·class="ss">c@localhost</span><span·class="p">,</span><span·class="p"·data-group-id="3588279240-6">#{</span><span·class="ss">connection_id</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·334,·SHA:·c8e10b89c8b4a58e2ce34c8e4b13f25149a9d61a891fc675153b86b90ec29b0e·...·]-5">}</span><span·class="p">,</span><span·class="w">
8138 ·</span><span·class="p"·data-group-id="0283838085-7">{</span><span·class="ss">b@localhost</span><span·class="p">,</span><span·class="p"·data-group-id="0283838085-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:·3e3c045335b26caf7e0a22da5763427954e191165fbff6fe7860d15760a46d19·...·]-7">}</span><span·class="p">,</span><span·class="w">8138 ·</span><span·class="p"·data-group-id="3588279240-7">{</span><span·class="ss">b@localhost</span><span·class="p">,</span><span·class="p"·data-group-id="3588279240-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:·28d06e49f825b9f81886b7a55799edbe03ee8c8130c43c0bc9222c2b15b8fc7e·...·]-7">}</span><span·class="p">,</span><span·class="w">
8139 ·</span><span·class="p"·data-group-id="0283838085-9">{</span><span·class="ss">a@localhost</span><span·class="p">,</span><span·class="p"·data-group-id="0283838085-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:·150deaacccee02ec27cbd1a896943b82df8f085ac4331aede9e67762244c8f28·...·]-4">]</span><span·class="w">8139 ·</span><span·class="p"·data-group-id="3588279240-9">{</span><span·class="ss">a@localhost</span><span·class="p">,</span><span·class="p"·data-group-id="3588279240-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:·6c3c6e83b89957f7b3c1b92d33b3ce038d83d9a3fe909425ee04c5f2bfb737d9·...·]-4">]</span><span·class="w">
8140 </span><span·class="p"·data-group-id="0283838085-11">(</span><span·class="ss">a@localhost</span><span·class="p"·data-group-id="0283838085-11">)</span><span·class="mi">2</span><span·class="o">&gt;</span></code></pre>8140 </span><span·class="p"·data-group-id="3588279240-11">(</span><span·class="ss">a@localhost</span><span·class="p"·data-group-id="3588279240-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="9238373434-1">(</span><span·class="o">-</span><span·class="mf">3.33</span><span·class="p"·data-group-id="9238373434-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="8874728658-1">(</span><span·class="o">-</span><span·class="mf">3.33</span><span·class="p"·data-group-id="8874728658-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="9238373434-2">(</span><span·class="o">-</span><span·class="mi">3</span><span·class="p"·data-group-id="9238373434-2">)</span><span·class="p">.</span><span·class="w">8243 &gt;·</span><span·class="nf">abs</span><span·class="p"·data-group-id="8874728658-2">(</span><span·class="o">-</span><span·class="mi">3</span><span·class="p"·data-group-id="8874728658-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="4861857459-1">(</span><span·class="p"·data-group-id="4861857459-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="4861857459-2">}</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">three</span><span·class="p"·data-group-id="4861857459-1">)</span><span·class="p">.</span><span·class="w"> 
8275 </span><span·class="p"·data-group-id="4861857459-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="4861857459-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="0153168951-1"[·...·truncated·by·diffoscope;·len:·386,·SHA:·58d67a85c23af7fdf34f010a99daccd0bab66a20a157bdb4ea6f3ddb15c047ca·...·]>
 8275 </span><span·class="p"·data-group-id="0153168951-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="0153168951-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.6/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="8111275437-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="8111275437-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="1183619844-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="1183619844-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.2/doc/html/escript.html#create/2"><code·class="inline">escript:create/2</code></a>.</p><p>escripts·are·run·by·directly·invoking·them·(does·not·work·on·Windows):</p><pre><code·class="text">script-name·[arg1·arg2...]</code></pre><p>or·by·calling·the·<code·class="inline">escript</code>·program·(works·on·all·platforms):</p><pre><code·class="text">escript·[escript-flags]·script-name.escript·[arg1·arg2...]</code></pre><p>For·example:</p><pre><code·class="text">$·chmod·u+x·factorial141 <code·class="inline">escript</code>s·are·created·by·either·writing·them·by·hand·or·using·<a·href="../../../lib/stdlib-6.2.2/doc/html/escript.html#create/2"><code·class="inline">escript:create/2</code></a>.</p><p>escripts·are·run·by·directly·invoking·them·(does·not·work·on·Windows):</p><pre><code·class="text">script-name·[arg1·arg2...]</code></pre><p>or·by·calling·the·<code·class="inline">escript</code>·program·(works·on·all·platforms):</p><pre><code·class="text">escript·[escript-flags]·script-name.escript·[arg1·arg2...]</code></pre><p>For·example:</p><pre><code·class="text">$·chmod·u+x·factorial
142 $·cat·factorial</code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="ch">#!/usr/bin/env·escript142 $·cat·factorial</code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="ch">#!/usr/bin/env·escript
143 </span><span·class="c1">%%·-*-·erlang·-*-</span><span·class="w">143 </span><span·class="c1">%%·-*-·erlang·-*-</span><span·class="w">
144 </span><span·class="c1">%%!·-sname·factorial·-mnesia·debug·verbose</span><span·class="w">144 </span><span·class="c1">%%!·-sname·factorial·-mnesia·debug·verbose</span><span·class="w">
145 </span><span·class="nf">main</span><span·class="p"·data-group-id="6961795390-1">(</span><span·class="p"·data-group-id="6961795390-2">[</span><span·class="n">String</span><span·class="p"·data-group-id="6961795390-2">]</span><span·class="p"·data-group-id="6961795390-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="1507914020-1">(</span><span·class="p"·data-group-id="1507914020-2">[</span><span·class="n">String</span><span·class="p"·data-group-id="1507914020-2">]</span><span·class="p"·data-group-id="1507914020-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="6961795390-3">(</span><span·class="n">String</span><span·class="p"·data-group-id="6961795390-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="1507914020-3">(</span><span·class="n">String</span><span·class="p"·data-group-id="1507914020-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="6961795390-4">(</span><span·class="n">N</span><span·class="p"·data-group-id="6961795390-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="1507914020-4">(</span><span·class="n">N</span><span·class="p"·data-group-id="1507914020-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="6961795390-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="6961795[·...·truncated·by·diffoscope;·len:·180,·SHA:·35fd870b5b223c5d21b12a79388921492e37facca6db28076f9575c6d0a9338e·...·]0-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="1507914020-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="1507914[·...·truncated·by·diffoscope;·len:·180,·SHA:·63e3a061eb218b685b97487941101815cbfd5710cf89ad43ebea381b8b9b2683·...·]0-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="6961795390-7">(</span><span·class="p"·data-group-id="6961795390-7">)</span><span·class="w">152 ············</span><span·class="nf">usage</span><span·class="p"·data-group-id="1507914020-7">(</span><span·class="p"·data-group-id="1507914020-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="6961795390-8">(</span><span·class="p">_</span><span·class="p"·data-group-id="6961795390-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="1507914020-8">(</span><span·class="p">_</span><span·class="p"·data-group-id="1507914020-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="6961795390-9">(</span><span·class="p"·data-group-id="6961795390-9">)</span><span·class="p">.</span><span·class="w">155 ····</span><span·class="nf">usage</span><span·class="p"·data-group-id="1507914020-9">(</span><span·class="p"·data-group-id="1507914020-9">)</span><span·class="p">.</span><span·class="w">
  
156 </span><span·class="nf">usage</span><span·class="p"·data-group-id="6961795390-10">(</span><span·class="p"·data-group-id="6961795390-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="1507914020-10">(</span><span·class="p"·data-group-id="1507914020-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="6961795390-11">(</span><span·class="s">&quot;usage:·factorial·integer\n&quot;</span><span·class="p"·data-group-id="6961795390-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="1507914020-11">(</span><span·class="s">&quot;usage:·factorial·integer\n&quot;</span><span·class="p"·data-group-id="1507914020-11">)</span><span·class="p">,</span><span·class="w">
158 ····</span><span·class="nf">halt</span><span·class="p"·data-group-id="6961795390-12">(</span><span·class="mi">1</span><span·class="p"·data-group-id="6961795390-12">)</span><span·class="p">.</span><span·class="w">158 ····</span><span·class="nf">halt</span><span·class="p"·data-group-id="1507914020-12">(</span><span·class="mi">1</span><span·class="p"·data-group-id="1507914020-12">)</span><span·class="p">.</span><span·class="w">
  
159 </span><span·class="nf">fac</span><span·class="p"·data-group-id="6961795390-13">(</span><span·class="mi">0</span><span·class="p"·data-group-id="6961795390-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="1507914020-13">(</span><span·class="mi">0</span><span·class="p"·data-group-id="1507914020-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="6961795390-14">(</span><span·class="n">N</span><span·class="p"·data-group-id="6961795390-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:·211,·SHA:·1b1480a11c25f561286f8c46e5debef7db8098a37e0f20719bfe20a14351658e·...·]0-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="1507914020-14">(</span><span·class="n">N</span><span·class="p"·data-group-id="1507914020-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:·211,·SHA:·7a53c64a1f397101988d314b9540e773561cdbc963844f673c48d4ce95625150·...·]0-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.2/doc/html/epp.html#encoding">encoding</a>·exists,·it·can·be170 If·the·directive·is·present,·it·must·be·located·on·the·second·line.</p><p>If·a·comment·selecting·the·<a·href="../../../lib/stdlib-6.2.2/doc/html/epp.html#encoding">encoding</a>·exists,·it·can·be
171 located·on·the·second·line.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>The·encoding·specified·by·the·above·mentioned·comment·applies·to·the·script171 located·on·the·second·line.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>The·encoding·specified·by·the·above·mentioned·comment·applies·to·the·script
172 itself.·The·encoding·of·the·I/O-server,·however,·must·be·set·explicitly·as172 itself.·The·encoding·of·the·I/O-server,·however,·must·be·set·explicitly·as
173 follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">io</span><span·class="p">:</span><span·class="nf">setopts</span><span·class="p"·data-group-id="1685803635-1">(</span><span·class="p"·data-group-id="1685803635-2">[</span><span·class="p"·data-group-id="1685803635-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:·613fc25c69d3b3168577c24b44a2b7600ae20a45d74bd8cfe22c51398eb29fac·...·]-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="3880187719-1">(</span><span·class="p"·data-group-id="3880187719-2">[</span><span·class="p"·data-group-id="3880187719-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:·e9d436058a3cb0211cb26dcf1a895e96ff8ad19523c9cdb2e32e2221680bd4f7·...·]-1">)</span></code></pre><p>The·default·encoding·of·the·I/O-server·for
174 <a·href="../../../lib/stdlib-6.2.2/doc/html/io.html#t:standard_io/0"><code·class="inline">standard_io</code></a>·is·<code·class="inline">unicode</code>·if·its·supported.·(see174 <a·href="../../../lib/stdlib-6.2.2/doc/html/io.html#t:standard_io/0"><code·class="inline">standard_io</code></a>·is·<code·class="inline">unicode</code>·if·its·supported.·(see
175 section175 section
176 <a·href="../../../lib/stdlib-6.2.2/doc/html/unicode_usage.html#unicode_options_summary">Summary·of·Options</a>)·in176 <a·href="../../../lib/stdlib-6.2.2/doc/html/unicode_usage.html#unicode_options_summary">Summary·of·Options</a>)·in
177 the·STDLIB·User's·Guide.</p></section><p>On·the·third·line·(or·second·line·depending·on·the·presence·of·the·Emacs177 the·STDLIB·User's·Guide.</p></section><p>On·the·third·line·(or·second·line·depending·on·the·presence·of·the·Emacs
178 directive),·arguments·can·be·specified·to·the·emulator,·for·example:</p><pre><code·class="text">%%!·-sname·factorial·-mnesia·debug·verbose</code></pre><p>Such·an·argument·line·must·start·with·<code·class="inline">%%!</code>·and·the·remaining·line·is178 directive),·arguments·can·be·specified·to·the·emulator,·for·example:</p><pre><code·class="text">%%!·-sname·factorial·-mnesia·debug·verbose</code></pre><p>Such·an·argument·line·must·start·with·<code·class="inline">%%!</code>·and·the·remaining·line·is
179 interpreted·as·arguments·to·the·emulator.</p><p>If·you·know·the·location·of·the·<code·class="inline">escript</code>·executable,·the·first·line·can179 interpreted·as·arguments·to·the·emulator.</p><p>If·you·know·the·location·of·the·<code·class="inline">escript</code>·executable,·the·first·line·can
180 directly·give·the·path·to·<code·class="inline">escript</code>,·for·example:</p><pre><code·class="text">#!/usr/local/bin/escript</code></pre><p>As·any·other·type·of·scripts,·Erlang·scripts·do·not·work·on·Unix·platforms·if180 directly·give·the·path·to·<code·class="inline">escript</code>,·for·example:</p><pre><code·class="text">#!/usr/local/bin/escript</code></pre><p>As·any·other·type·of·scripts,·Erlang·scripts·do·not·work·on·Unix·platforms·if
Offset 188, 23 lines modifiedOffset 188, 23 lines modified
188 arguments·specified·to·the·script·(not·changed·or·interpreted·in·any·way).</p><p>If·the·<code·class="inline">main/1</code>·function·in·the·script·returns·successfully,·the·exit·status·for188 arguments·specified·to·the·script·(not·changed·or·interpreted·in·any·way).</p><p>If·the·<code·class="inline">main/1</code>·function·in·the·script·returns·successfully,·the·exit·status·for
189 the·script·is·<code·class="inline">0</code>.·If·an·exception·is·generated·during·execution,·a·short189 the·script·is·<code·class="inline">0</code>.·If·an·exception·is·generated·during·execution,·a·short
190 message·is·printed·and·the·script·terminates·with·exit·status·<code·class="inline">127</code>.</p><p>To·return·your·own·non-zero·exit·code,·call·<a·href="erlang.html#halt/1"><code·class="inline">halt(ExitCode)</code></a>,·for190 message·is·printed·and·the·script·terminates·with·exit·status·<code·class="inline">127</code>.</p><p>To·return·your·own·non-zero·exit·code,·call·<a·href="erlang.html#halt/1"><code·class="inline">halt(ExitCode)</code></a>,·for
191 example:</p><pre><code·class="text">halt(1).</code></pre><p>To·retrieve·the·pathname·of·the·script,·call·<a·href="../../../lib/stdlib-6.2.2/doc/html/escript.html#script_name/0"><code·class="inline">escript:script_name/0</code></a>·from·your191 example:</p><pre><code·class="text">halt(1).</code></pre><p>To·retrieve·the·pathname·of·the·script,·call·<a·href="../../../lib/stdlib-6.2.2/doc/html/escript.html#script_name/0"><code·class="inline">escript:script_name/0</code></a>·from·your
192 script·(the·pathname·is·usually,·but·not·always,·absolute).</p><p>If·the·file·contains·source·code·(as·in·the·example·above),·it·is·processed·by192 script·(the·pathname·is·usually,·but·not·always,·absolute).</p><p>If·the·file·contains·source·code·(as·in·the·example·above),·it·is·processed·by
193 the·<a·href="../../../lib/stdlib-6.2.2/doc/html/epp.html"><code·class="inline">epp</code></a>·preprocessor.·This·means·that·you,·for·example,·can·use·predefined193 the·<a·href="../../../lib/stdlib-6.2.2/doc/html/epp.html"><code·class="inline">epp</code></a>·preprocessor.·This·means·that·you,·for·example,·can·use·predefined
194 macros·(such·as·<code·class="inline">?MODULE</code>)·and·include·directives·like·the·<code·class="inline">-include_lib</code>194 macros·(such·as·<code·class="inline">?MODULE</code>)·and·include·directives·like·the·<code·class="inline">-include_lib</code>
195 directive.·For·example,·use</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="6844251695-1">(</span><span·class="s">&quot;kernel/include/file.hrl&quot;</span><span·class="p"·data-group-id="6844251695-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="3953184300-1">(</span><span·class="s">&quot;kernel/include/file.hrl&quot;</span><span·class="p"·data-group-id="3953184300-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.6/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.6/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="9560576093-1">(</span><span·class="ss">interpret</span><span·class="p"·data-group-id="9560576093-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="8772004140-1">(</span><span·class="ss">interpret</span><span·class="p"·data-group-id="8772004140-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.6/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="5561700618-1">(</span><span·class="n">Foo</span><span·class="p"·data-group-id="5561700618-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="3588008646-1">(</span><span·class="n">Foo</span><span·class="p"·data-group-id="3588008646-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="5561700618-2">[</span><span·class="mi">42</span><span·class="p">|</span><span·class="n">Foo</span><span·class="p"·data-group-id="5561700618-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="3588008646-2">[</span><span·class="mi">42</span><span·class="p">|</span><span·class="n">Foo</span><span·class="p"·data-group-id="3588008646-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="5561700618-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="5561700618-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="3588008646-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="3588008646-3">}</span><span·class="p">,</span><span·class="w">
143 ···</span><span·class="p"·data-group-id="5561700618-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="5561700618-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="3588008646-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="3588008646-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="8126086250-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="8126086250-1">}</span><span·class="p">.</span><span·class="w">144 </span><span·class="p"·data-group-id="3640403853-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="3640403853-1">}</span><span·class="p">.</span><span·class="w">
145 </span><span·class="p"·data-group-id="8126086250-2">{</span><span·class="ss">put_list</span><span·class="p">,</span><span·class="p"·data-group-id="8126086250-3">{</span><span·class="ss">integer</span><span·class="p">,</span><span·class="mi">42</span><span·class="p"·data-group-id="8126086250-3"[·...·truncated·by·diffoscope;·len:·458,·SHA:·2f8869c54b530fe97b8e7713ca20aedb88a685ec298756f32ef9ad35bcfa75a6·...·]-2">}</span><span·class="p">.</span><span·class="w">145 </span><span·class="p"·data-group-id="3640403853-2">{</span><span·class="ss">put_list</span><span·class="p">,</span><span·class="p"·data-group-id="3640403853-3">{</span><span·class="ss">integer</span><span·class="p">,</span><span·class="mi">42</span><span·class="p"·data-group-id="3640403853-3"[·...·truncated·by·diffoscope;·len:·458,·SHA:·ac5019466c9a0d9ade77f16892ecc7cc5f8acf59658cb9aacb2eedd05551f118·...·]-2">}</span><span·class="p">.</span><span·class="w">
146 </span><span·class="p"·data-group-id="8126086250-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="8126086250-7">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="mi">0</span><[·...·truncated·by·diffoscope;·len:·93,·SHA:·1e16e2125e95e1e3a177a89834cd6707d1a8407c55833a10412d3db2ac8d2c71·...·]-6">}</span><span·class="p">.</span><span·class="w">146 </span><span·class="p"·data-group-id="3640403853-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="3640403853-7">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="mi">0</span><[·...·truncated·by·diffoscope;·len:·93,·SHA:·664e1b341d88de0af29690d4333112978a8e6a2b253b1f9bef7e7d77519b8793·...·]-6">}</span><span·class="p">.</span><span·class="w">
147 </span><span·class="p"·data-group-id="8126086250-8">{</span><span·class="nb">put</span><span·class="p">,</span><span·class="p"·data-group-id="8126086250-9">{</span><span·class="ss">atom</span><span·class="p">,</span><span·class="ss">tag</span><span·class="p"·data-group-id="8126086250-9">}</spa[·...·truncated·by·diffoscope;·len:·43,·SHA:·aa6e9c68870ac35dde49ccbf5a549db290bb0693c0b0fe32d977d5e87a522eab·...·]-8">}</span><span·class="p">.</span><span·class="w">147 </span><span·class="p"·data-group-id="3640403853-8">{</span><span·class="nb">put</span><span·class="p">,</span><span·class="p"·data-group-id="3640403853-9">{</span><span·class="ss">atom</span><span·class="p">,</span><span·class="ss">tag</span><span·class="p"·data-group-id="3640403853-9">}</spa[·...·truncated·by·diffoscope;·len:·43,·SHA:·dd2fc99bbdaf69bc99dcfe5be294ebcb0aeb63e536e7ae9bdfb228f2295b6b93·...·]-8">}</span><span·class="p">.</span><span·class="w">
148 </span><span·class="p"·data-group-id="8126086250-10">{</span><span·class="nb">put</span><span·class="p">,</span><span·class="p"·data-group-id="8126086250-11">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="8126086250-11">}</span>[·...·truncated·by·diffoscope;·len:·41,·SHA:·9bdcf96bf06f741a28660a67f49409185a234cfbb82e6270db2c34f9ae378b1b·...·]-10">}</span><span·class="p">.</span><span·class="w">148 </span><span·class="p"·data-group-id="3640403853-10">{</span><span·class="nb">put</span><span·class="p">,</span><span·class="p"·data-group-id="3640403853-11">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="3640403853-11">}</span>[·...·truncated·by·diffoscope;·len:·41,·SHA:·45d3f2fb196ae3263d9baa606c716b0106b30ee448a03a16f959e6c44f5e214e·...·]-10">}</span><span·class="p">.</span><span·class="w">
149 </span><span·class="p"·data-group-id="8126086250-12">{</span><span·class="nb">put</span><span·class="p">,</span><span·class="p"·data-group-id="8126086250-13">{</span><span·class="ss">literal</span><span·class="p">,</span><span·class="p"·data-group-id="8126086250-14">{</span><span·class="ss">te[·...·truncated·by·diffoscope;·len:·229,·SHA:·18793bece3142d7b322fd721f41cbf3e24196dff4a1ea84522eeb6c8c0a142f6·...·]-12">}</span><span·class="p">.</span><span·class="w">149 </span><span·class="p"·data-group-id="3640403853-12">{</span><span·class="nb">put</span><span·class="p">,</span><span·class="p"·data-group-id="3640403853-13">{</span><span·class="ss">literal</span><span·class="p">,</span><span·class="p"·data-group-id="3640403853-14">{</span><span·class="ss">te[·...·truncated·by·diffoscope;·len:·229,·SHA:·561c567ffe7147e014f020128f8ca19f8233fc7c86fb2e10021eec658b69a165·...·]-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="6180874779-1">(</span><span·class="n">Arg</span><span·class="p"·data-group-id="6180874779-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="4574053906-1">(</span><span·class="n">Arg</span><span·class="p"·data-group-id="4574053906-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="6180874779-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="6180874779-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="4574053906-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="4574053906-2">}</span><span·class="p">,</span><span·class="w">
158 ····</span><span·class="p"·data-group-id="6180874779-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:·19c05a90644da1c1f4e182a4bd44f654eacd710b263ce3cdb8a6e42cad74b05b·...·]-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="4574053906-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:·24f6011cb756e4aab003c10e00a53c342f72499081d588f39a97131a2d365c37·...·]-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="4355876116-1">(</span><span·class="nf">erts_is_literal</span><span·class="p"·data-group-id="4355876116-2">(</span><span·class="ss">ptr</span><span·class="p"·data-group-id="4355876116-2">)</span><span·class="w">·</span><span·class="p">||</span><span·class="[·...·truncated·by·diffoscope;·len:·541,·SHA:·cc91b247b685eeba65943e7beb78d23ad43e153e62d0aa1f35bc70b519cb6728·...·]-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="2547627821-1">(</span><span·class="nf">erts_is_literal</span><span·class="p"·data-group-id="2547627821-2">(</span><span·class="ss">ptr</span><span·class="p"·data-group-id="2547627821-2">)</span><span·class="w">·</span><span·class="p">||</span><span·class="[·...·truncated·by·diffoscope;·len:·541,·SHA:·3e0e45184ca56af9c65e643b16482b26831b2824b22f61f0e3041206bc3e628f·...·]-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="4355876116-5">}</span><span·class="w">·</span><span·class="k">else</span><span·class="w">·</span><span·class="p"·data-group-id="4355876116-6">{</span><span·class="w">184 </span><span·class="p"·data-group-id="2547627821-5">}</span><span·class="w">·</span><span·class="k">else</span><span·class="w">·</span><span·class="p"·data-group-id="2547627821-6">{</span><span·class="w">
185 ··</span><span·class="nf">copy</span><span·class="p"·data-group-id="4355876116-7">(</span><span·class="ss">ptr</span><span·class="p"·data-group-id="4355876116-7">)</span><span·class="p">;</span><span·class="w">185 ··</span><span·class="nf">copy</span><span·class="p"·data-group-id="2547627821-7">(</span><span·class="ss">ptr</span><span·class="p"·data-group-id="2547627821-7">)</span><span·class="p">;</span><span·class="w">
186 </span><span·class="p"·data-group-id="4355876116-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="2547627821-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.6/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="7384650574-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="7384650574-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="9635488857-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="9635488857-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="7384650574-2">(</span><span·class="p"·data-group-id="7384650574-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="9635488857-2">(</span><span·class="p"·data-group-id="9635488857-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="7384650574-3">(</span><span·class="p"·data-group-id="7384650574-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="9635488857-3">(</span><span·class="p"·data-group-id="9635488857-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="4184851575-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="4184851575-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="3927486610-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="3927486610-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="4184851575-2">(</span><span·class="p"·data-group-id="4184851575-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="3927486610-2">(</span><span·class="p"·data-group-id="3927486610-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.6/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.6/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="5356477709-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="5356477709-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="2984926015-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="2984926015-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="5356477709-2">(</span><span·class="p"·data-group-id="5356477709-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="2984926015-2">(</span><span·class="p"·data-group-id="2984926015-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="5599819861-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="5599819861-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="4233676802-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="4233676802-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="5599819861-2">(</span><span·class="p"·data-group-id="5599819861-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="4233676802-2">(</span><span·class="p"·data-group-id="4233676802-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="6522508392-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="6522508392-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="0281521714-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="0281521714-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="6522508392-2">(</span><span·class="p"·data-group-id="6522508392-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:·2e64840c9ba1e49f094af1c7467898b9fd480f048d875280812760bd7d634c58·...·]-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="0281521714-2">(</span><span·class="p"·data-group-id="0281521714-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:·396459296723e72dee9237f8c51753e9b5bd4dcc160483512aa6b7f88bbb7321·...·]-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="0219345561-2">(</span><span·class="p"·data-group-id="0219345561-2">)</span></code></pre><p>Set·domain·name.</p></li><li><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="3825498088-1">{</span><span·class="ss">nameserver</span><[·...·truncated·by·diffoscope;·len:·294,·SHA:·75d438dfb45f06c37c21c90305ea605516ebed3107f69133fa1db05fb07e27d5·...·]-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="3101129554-2">(</span><span·class="p"·data-group-id="3101129554-2">)</span></code></pre><p>Set·domain·name.</p></li><li><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="8020435303-1">{</span><span·class="ss">nameserver</span><[·...·truncated·by·diffoscope;·len:·294,·SHA:·9665e708f5316a084926c2d3fa217e08180aa59e2267345a82ad50948fd793fb·...·]-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="3825498088-3">(</span><span·class="p"·data-group-id="3825498088-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="8020435303-3">(</span><span·class="p"·data-group-id="8020435303-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="3825498088-4">(</span><span·class="p"·data-group-id="3825498088-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="8020435303-4">(</span><span·class="p"·data-group-id="8020435303-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.6/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="8389959928-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="8389959928-2">[</span><span·class="p">,</span><span·class="n">Port</[·...·truncated·by·diffoscope;·len:·99,·SHA:·a9e8ddb2e66a89837c6df6f14bc98a4df9f03f99dbcc84a6bc5d502b78e962c2·...·]-1">}</span><span·class="p">.</span><span·class="w">195 for·<a·href="../../../lib/kernel-10.2.6/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="3541341734-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="3541341734-2">[</span><span·class="p">,</span><span·class="n">Port</[·...·truncated·by·diffoscope;·len:·99,·SHA:·c66cbd52ac1a244bc83e9fb9ace78244f164f926eb5b5a34e48b7600586fc0d5·...·]-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="8389959928-3">(</span><span·class="p"·data-group-id="8389959928-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="3541341734-3">(</span><span·class="p"·data-group-id="3541341734-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="8389959928-4">(</span><span·class="p"·data-group-id="8389959928-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="3541341734-4">(</span><span·class="p"·data-group-id="3541341734-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.6/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="9208239104-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="9208239104-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="9208239104-2">[</span><span·class="nf">string</span><span·class="p"·data-group-id="9208239104-3">(</span><span·cla[·...·truncated·by·diffoscope;·len:·500,·SHA:·136526f3697e9f3af62ac029edd92aec268773aee56e0bc99141f6f1a5c3ed07·...·]-1">}</span><span·class="p">.</span><span·class="w">198 <a·href="../../../lib/kernel-10.2.6/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="1268066207-1">{</span><span·class="ss">search</span><span·class[·...·truncated·by·diffoscope;·len:·108,·SHA:·cb6fe34de4415b59d45a6e6d1f56181677403c2e7cadde190f2c1be7a0098b85·...·]-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="1268066207-2">[</span><span·class="nf">string</span><span·class="p"·data-group-id="1268066207-3">(</span><span·class="p"·data-group-id="1268066207-3">)</span><span·class="p"·data-group-id="1268066207-2">]</span></code></pre><p>Add·search·domains·for·<a·href="../../../lib/kernel-10.2.6/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="6943678822-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="6943678822-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="3823903145-2">[</span><span·class="nf">atom</span><span·class="p"·data-group-id="3823903145-3">(</span><span·class="p"·data-group-id="3823903145-3">)</span><span·class="p"·data-group-id="3823903145-2">]</span></code></pre><p>Specify·lookup·methods·and·in·which·order·to·try·them.·The·valid·methods·are200 ··</span><span·class="n">Methods</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="6943678822-2">[</span><span·class="nf">atom</span><span·class="p"·data-group-id="6943678822-3">(</span><span·class="p"·data-group-id="6943678822-3">)</span><span·class="p"·data-group-id="6943678822-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.6/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.6/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="7827534113-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="7827534113-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="9295104543-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="9295104543-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="7827534113-2">(</span><span·class="p"·data-group-id="7827534113-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="9295104543-2">(</span><span·class="p"·data-group-id="9295104543-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="9582238239-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="9582238239-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="7774201213-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="7774201213-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="9582238239-2">(</span><span·class="p"·data-group-id="9582238239-2">)</span></code></pre><p>Set·how·often·(in·milliseconds)·the·resolver·cache·for·<a·href="../../../lib/kernel-10.2.6/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="7774201213-2">(</span><span·class="p"·data-group-id="7774201213-2">)</span></code></pre><p>Set·how·often·(in·milliseconds)·the·resolver·cache·for·<a·href="../../../lib/kernel-10.2.6/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="6244064695-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="6244064695-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="1950205077-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="1950205077-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="6244064695-2">(</span><span·class="p"·data-group-id="6244064695-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="1950205077-2">(</span><span·class="p"·data-group-id="1950205077-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.6/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="8472322899-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="8472322899-1">}</span><span·class="p">.</span><span·class="w">212 <a·href="../../../lib/kernel-10.2.6/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="4587279082-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="4587279082-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="8472322899-2">(</span><span·class="p"·data-group-id="8472322899-2">)</span></code></pre><p>Set·the·number·of·DNS·queries·<a·href="../../../lib/kernel-10.2.6/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="4587279082-2">(</span><span·class="p"·data-group-id="4587279082-2">)</span></code></pre><p>Set·the·number·of·DNS·queries·<a·href="../../../lib/kernel-10.2.6/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="5152420928-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="5152420928-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="9213920684-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="9213920684-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="5152420928-2">(</span><span·class="p"·data-group-id="5152420928-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="9213920684-2">(</span><span·class="p"·data-group-id="9213920684-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.6/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.6/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="2212029891-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="2212029891-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="8921748681-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="8921748681-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.6/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.6/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="2531672971-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="2531672971-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="0353677481-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="0353677481-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.6/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.6/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="0305176176-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="0305176176-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="2159850742-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="2159850742-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.6/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.6/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="5373144515-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="5373144515-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="7224463988-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="7224463988-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="5373144515-2">(</span><span·class="p"·data-group-id="5373144515-2">)</span></code></pre><p>Sets·the·allowed·UDP·payload·size·<a·href="../../../lib/kernel-10.2.6/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="7224463988-2">(</span><span·class="p"·data-group-id="7224463988-2">)</span></code></pre><p>Sets·the·allowed·UDP·payload·size·<a·href="../../../lib/kernel-10.2.6/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="5391222603-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="5391222603-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="5391222603-2">(</span><span·class="p"·data-group-id="5391222603-2">)</span></code></pre[·...·truncated·by·diffoscope;·len:·353,·SHA:·1f5660cf5b0fcfe8b3de73828ed37edc3e0a13047985d78c59c55d900f6bbc86·...·]-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="6847664694-1">{</span><span·class="ss">udp</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Module</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·76e55963ae71c3178e968d060314f77cdebc188341a35405f86895818730ad52·...·]-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="6847664694-2">(</span><span·class="p"·data-group-id="6847664694-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"·data-group-id="6079402771-1">{</span><span·class="ss">tcp</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Module</span><span·class="p"·data-group-id="6079402771-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="0267361602-2">(</span><span·class="p"·data-group-id="0267361602-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="6079402771-2">(</span><span·class="p"·data-group-id="6079402771-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="7114229788-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="71142[·...·truncated·by·diffoscope;·len:·5,·SHA:·6354361f54aa3eb0bb96bfb069e88241e107f8156cc450d64d3abc8d0adbb416·...·]-1">}</span><span·class="p">.</span><span·class="w">249 </span><span·class="p"·data-group-id="2935988022-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="29359[·...·truncated·by·diffoscope;·len:·5,·SHA:·3e5c3f785de144d5ac8668ec398f180148b0d357e88d3bfb90b37050ff6dd4eb·...·]-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="7114229788-2">{</span><span·class="ss">host</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7114229788-3">{</span><span·class="mi">134</span><span·class="p">,</span><span·class="mi">138</span><span·class="p">,</span><sp[·...·truncated·by·diffoscope;·len:·363,·SHA:·d5b518fcbacc8b54e542bb435e7ff855db6e8e4df508b0787ccd528ade3c7541·...·]-2">}</span><span·class="p">.</span><span·class="w">251 </span><span·class="p"·data-group-id="2935988022-2">{</span><span·class="ss">host</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2935988022-3">{</span><span·class="mi">134</span><span·class="p">,</span><span·class="mi">138</span><span·class="p">,</span><sp[·...·truncated·by·diffoscope;·len:·363,·SHA:·16cd50e136db983e07cca1aa6da009efd6d555757267dc337946dcdfe0b83d77·...·]-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="7114229788-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="7114229788-5">}</span><span·class="p">.</span><span·class="w">253 </span><span·class="p"·data-group-id="2935988022-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="2935988022-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="7114229788-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="7114229788-6">}</span><span·class="p">.</span><span·class="w">255 </span><span·class="p"·data-group-id="2935988022-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="2935988022-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="7114229788-7">{</span><span·class="ss">edns</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="7114229788-7">}</span><span·class="p">.</span><span·class="w">257 </span><span·class="p"·data-group-id="2935988022-7">{</span><span·class="ss">edns</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="2935988022-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="7114229788-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="7114229788-8">}</span><span·class="p">.</span><span·class="w">259 </span><span·class="p"·data-group-id="2935988022-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="2935988022-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="7114229788-9">{</span><span·class="ss">lookup</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7114229788-10">[</span><span·class="ss">file</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">dns</span[·...·truncated·by·diffoscope;·len:·96,·SHA:·20159bdbc6bd59f0a3407525a41e6a16eace8615010e6fa835c67f328e56a086·...·]-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="2935988022-9">{</span><span·class="ss">lookup</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2935988022-10">[</span><span·class="ss">file</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">dns</span[·...·truncated·by·diffoscope;·len:·96,·SHA:·fcbaf5b9af8cd83904ebcee1026c3c47cff60bfe1af94c7e33a6bc72c118e144·...·]-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.6/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="5640240064-1">(</span><span·class="p"·data-group-id="5640240064-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="4627527600-1">(</span><span·class="p"·data-group-id="4627527600-1">)</span><span·class="p">.</span><span·class="w">
165 </span><span·class="p"·data-group-id="5640240064-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="5640240064-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="4627527600-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="4627527600-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="7305017586-1">(</span><span·class="p"·data-group-id="7305017586-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="6217201984-1">(</span><span·class="p"·data-group-id="6217201984-1">)</span><span·class="p">.</span><span·class="w">
219 </span><span·class="p"·data-group-id="7305017586-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:·99364b0bc31389593f31bd8ba582ce3903353bdd9620b2680f1f472e4a2ecde3·...·]-2">]</span><span·class="gp·unselectable">219 </span><span·class="p"·data-group-id="6217201984-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:·e0b13dba65ce981dee23ffd7197dba62386d74680e6d9102f0d31c78f4f28c80·...·]-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="7305017586-3">(</span><span·class="ss">children</span><span·class="p"·data-group-id="7305017586-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="6217201984-3">(</span><span·class="ss">children</span><span·class="p"·data-group-id="6217201984-3">)</span><span·class="p">.</span><span·class="w">
221 </span><span·class="p"·data-group-id="7305017586-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="7305017586-5">[</span><span·class="p"·data-group-id="7305017586-6">[</span><span·class="s">&quot;thomas&quot;</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·175,·SHA:·2d8002c82af4ed70edebe96a4bb6e81b823a2874ae7af2dedd93b3b52d38c1a0·...·]-4">}</span><span·class="gp·unselectable">221 </span><span·class="p"·data-group-id="6217201984-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="6217201984-5">[</span><span·class="p"·data-group-id="6217201984-6">[</span><span·class="s">&quot;thomas&quot;</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·175,·SHA:·ca2e869289f85eb273de4a80b33089d8508a6ab322761a2d991fb4e58b1fb36a·...·]-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="7305017586-7">(</span><span·class="ss">ages</span><span·class="p"·data-group-id="7305017586-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="6217201984-7">(</span><span·class="ss">ages</span><span·class="p"·data-group-id="6217201984-7">)</span><span·class="p">.</span><span·class="w">
223 </span><span·class="p"·data-group-id="7305017586-8">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7305017586-9">[</span><span·class="p"·data-group-id="7305017586-10">[</span><span·class="s">&quot;7&quot;</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·191,·SHA:·e2ccd38ab56e03baf22a3bf129a2489cdc0425ab10aa6d482a257c11770c0424·...·]-8">}</span><span·class="gp·unselectable">223 </span><span·class="p"·data-group-id="6217201984-8">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6217201984-9">[</span><span·class="p"·data-group-id="6217201984-10">[</span><span·class="s">&quot;7&quot;</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·191,·SHA:·e5a82d7512ceb9f7a7a8fb5649ae0ff3ddfe49a2f892abcfb3d37758c0b51f8a·...·]-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="7305017586-11">(</span><span·class="ss">silly</span><span·class="p"·data-group-id="7305017586-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="6217201984-11">(</span><span·class="ss">silly</span><span·class="p"·data-group-id="6217201984-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.6/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.6/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="8454316339-1">(</span><span·class="ss">a</span><span·class="p"·data-group-id="8454316339-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="1394269089-1">(</span><span·class="ss">a</span><span·class="p"·data-group-id="1394269089-1">)</span><span·class="p">.</span><span·class="w">
518 </span><span·class="p"·data-group-id="8454316339-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="8454316339-3">[</span><span·class="p"·data-group-id="8454316339-4">[</span><span·class="s">&quot;b&quot;</span><span·class="p">,</span><span·class="s">&q[·...·truncated·by·diffoscope;·len:·330,·SHA:·e36e0721f7245ff24b90a7c9f5d4f021cb076479d8ef673b800ee27938f2b58c·...·]9-2">}</span></code></pre><p>The·following·flags·are·defined·automatically·and·can·be·retrieved·using·this518 </span><span·class="p"·data-group-id="1394269089-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="1394269089-3">[</span><span·class="p"·data-group-id="1394269089-4">[</span><span·class="s">&quot;b&quot;</span><span·class="p">,</span><span·class="s">&q[·...·truncated·by·diffoscope;·len:·330,·SHA:·f2d2ad446eae775e72462b6c59f07faa40905dc377c7a49e6b946712bd60d972·...·]9-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="3483713116-1">(</span><span·class="ss">progname</span><span·class="p"·data-group-id="3483713116-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="9950361457-1">(</span><span·class="ss">progname</span><span·class="p"·data-group-id="9950361457-1">)</span><span·class="p">.</span><span·class="w">
521 </span><span·class="p"·data-group-id="3483713116-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="3483713116-3">[</span><span·class="p"·data-group-id="3483713116-4">[</span><span·class="s">&quot;erl&quot;</span><span·class="p"·data-group-id="348371311[·...·truncated·by·diffoscope;·len:·560,·SHA:·ae30abb40c71580f3339734eaf2fecc38b2f4ef7e3fcef980d10f759b685c145·...·]-1">)</span><span·class="p">.</span><span·class="w">521 </span><span·class="p"·data-group-id="9950361457-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9950361457-3">[</span><span·class="p"·data-group-id="9950361457-4">[</span><span·class="s">&quot;erl&quot;</span><span·class="p"·data-group-id="995036145[·...·truncated·by·diffoscope;·len:·560,·SHA:·68fb39f7865f3beacd0f4abcecc4b6ecd3aa4d6a69351c6d6d2a57f4ffcd72a6·...·]-1">)</span><span·class="p">.</span><span·class="w">
522 </span><span·class="p"·data-group-id="7579194814-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="7579194814-3">[</span><span·class="p"·data-group-id="7579194814-4">[</span><span·class="s">&quot;/home/harry&quot;</span><span·class="p"·data-group-id="7[·...·truncated·by·diffoscope;·len:·115,·SHA:·458fac5bbd9ab9dfd300c824eb713212231a5600ebce6452c74b9e593ebe2747·...·]-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="6303824043-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="6303824043-3">[</span><span·class="p"·data-group-id="6303824043-4">[</span><span·class="s">&quot;/home/harry&quot;</span><span·class="p"·data-group-id="6[·...·truncated·by·diffoscope;·len:·115,·SHA:·dec12f6ab2575acbb97016b1c9c5f9d2c911a1f747aa2da94ae2881d35c29f44·...·]-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.6/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="9341765071-1">[</span><span·class="p"·data-group-id="9341765071-2">{</span><span·class="p"·data-group-id="9341765071-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:·15bdfd1fb8e6511fba91056d8703d936ae8e90a961e58690887f0ccc8ea45227·...·]-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="3637270603-1">[</span><span·class="p"·data-group-id="3637270603-2">{</span><span·class="p"·data-group-id="3637270603-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:·c9c38dcc2593b9e68a58aa7cb296699c243e240c9db2850dd567e10bb5a378f4·...·]-3">]</span><span·class="p">,</span><span·class="w">
375 ··</span><span·class="p"·data-group-id="9341765071-4">[</span><span·class="p"·data-group-id="9341765071-4">]</span><span·class="p">,</span><span·class="w">375 ··</span><span·class="p"·data-group-id="3637270603-4">[</span><span·class="p"·data-group-id="3637270603-4">]</span><span·class="p">,</span><span·class="w">
376 ··</span><span·class="p"·data-group-id="9341765071-5">[</span><span·class="p"·data-group-id="9341765071-5">]</span><span·class="p"·data-group-id="9341765071-2">}</span><span·class="p"·data-group-id="9341765071-1">]</span></code></pre><p>Match·an·argument·list·of·three,·where·the·second·argument·[·...·truncated·by·diffoscope;·len:·473,·SHA:·25c153346d11267d6a4f37568fffde991fb40be6b391c53fc7bc35fc687b102f·...·]-3">]</span><span·class="p">,</span><span·class="w">376 ··</span><span·class="p"·data-group-id="3637270603-5">[</span><span·class="p"·data-group-id="3637270603-5">]</span><span·class="p"·data-group-id="3637270603-2">}</span><span·class="p"·data-group-id="3637270603-1">]</span></code></pre><p>Match·an·argument·list·of·three,·where·the·second·argument·[·...·truncated·by·diffoscope;·len:·473,·SHA:·7be9179526c7a17bf9fb1a3af7c5c71ae3e91f78c87e3352f1727f392279f62b·...·]-3">]</span><span·class="p">,</span><span·class="w">
377 ··</span><span·class="p"·data-group-id="8808652197-4">[</span><span·class="p"·data-group-id="8808652197-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:·131,·SHA:·3a5cf81aeb21e3f94913866736ff03fb30087af0bde6c5bc5b5f4e266c2fd33a·...·]-4">]</span><span·class="p">,</span><span·class="w">377 ··</span><span·class="p"·data-group-id="8426169064-4">[</span><span·class="p"·data-group-id="8426169064-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:·131,·SHA:·f74ce92b57ef0c6a673ea0b3124e7d84fb8fa49a04233aa92fb21ce72fb9c55a·...·]-4">]</span><span·class="p">,</span><span·class="w">
378 ··</span><span·class="p"·data-group-id="8808652197-6">[</span><span·class="p"·data-group-id="8808652197-6">]</span><span·class="p"·data-group-id="8808652197-2">}</span><span·class="p"·data-group-id="8808652197-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="8426169064-6">[</span><span·class="p"·data-group-id="8426169064-6">]</span><span·class="p"·data-group-id="8426169064-2">}</span><span·class="p"·data-group-id="8426169064-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="8549658758-1">[</span><span·class="p"·data-group-id="8549658758-2">{</span><span·class="p"·data-group-id="8549658758-3">[</span><span·class="ss">&#39;$1&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;$2&#39;</span><span·cl[·...·truncated·by·diffoscope;·len:·117,·SHA:·c73158b30c06be9d7f20e74d4af400d148f5d963397957cb9cba81a30d96113c·...·]-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="5615776790-1">[</span><span·class="p"·data-group-id="5615776790-2">{</span><span·class="p"·data-group-id="5615776790-3">[</span><span·class="ss">&#39;$1&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;$2&#39;</span><span·cl[·...·truncated·by·diffoscope;·len:·117,·SHA:·e9f9af1108f64010d6aa5341e6eb5ed4db1531555cf661fd607147463b15e4cf·...·]-3">]</span><span·class="p">,</span><span·class="w">
381 ··</span><span·class="p"·data-group-id="8549658758-4">[</span><span·class="p"·data-group-id="8549658758-5">{</span><span·class="ss">&#39;orelse&#39;</span><span·class="p">,</span><span·class="w">381 ··</span><span·class="p"·data-group-id="5615776790-4">[</span><span·class="p"·data-group-id="5615776790-5">{</span><span·class="ss">&#39;orelse&#39;</span><span·class="p">,</span><span·class="w">
382 ······</span><span·class="p"·data-group-id="8549658758-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="8549658758-7">{</span><span·class=[·...·truncated·by·diffoscope;·len:·284,·SHA:·a5ecb28a51b8f8df20782ad85c4dfb149280703bdf2eb5005e6a6d6b74d08124·...·]-6">}</span><span·class="p">,</span><span·class="w">382 ······</span><span·class="p"·data-group-id="5615776790-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="5615776790-7">{</span><span·class=[·...·truncated·by·diffoscope;·len:·284,·SHA:·58cb660e193c23526a76bd7ff6070ba91e9187fbe6319ebceb1d9354a8c1dbff·...·]-6">}</span><span·class="p">,</span><span·class="w">
383 ······</span><span·class="p"·data-group-id="8549658758-9">{</span><span·class="ss">&#39;and&#39;</span><span·class="p">,</span><span·class="w">383 ······</span><span·class="p"·data-group-id="5615776790-9">{</span><span·class="ss">&#39;and&#39;</span><span·class="p">,</span><span·class="w">
384 ········</span><span·class="p"·data-group-id="8549658758-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="8549658758-11">{</span><span·clas[·...·truncated·by·diffoscope;·len:·195,·SHA:·0869517ebd81b198056d5348dbe397b478f1d04f2d6b9c25e6dc3a6f64569fe9·...·]-10">}</span><span·class="p">,</span><span·class="w">384 ········</span><span·class="p"·data-group-id="5615776790-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="5615776790-11">{</span><span·clas[·...·truncated·by·diffoscope;·len:·195,·SHA:·6ef37598e0cc28f1d99e7620050894871f5cd80d8207ee40173397608954a988·...·]-10">}</span><span·class="p">,</span><span·class="w">
385 ········</span><span·class="p"·data-group-id="8549658758-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="8549658758-13">{</span><span·clas[·...·truncated·by·diffoscope;·len:·537,·SHA:·bb55f5c1073f83ace519e66012670e011939706f7b2fbea4565343c8348a4cad·...·]-4">]</span><span·class="p">,</span><span·class="w">385 ········</span><span·class="p"·data-group-id="5615776790-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="5615776790-13">{</span><span·clas[·...·truncated·by·diffoscope;·len:·537,·SHA:·01304db2233c34c20460e532a3fcb18eacf2f86340cdc5a3cf2799e6d0dd26a4·...·]-4">]</span><span·class="p">,</span><span·class="w">
386 ··</span><span·class="p"·data-group-id="8549658758-15">[</span><span·class="p"·data-group-id="8549658758-15">]</span><span·class="p"·data-group-id="8549658758-2">}</span><span·class="p"·data-group-id="8549658758-1">]</span></code></pre><p>The·above·problem·can·also·be·solved·as·follows:</p><pre>[·...·truncated·by·diffoscope;·len:·411,·SHA:·ec741212d83be5b61da235256cd75cd8cacbfacaf5600f4a9b0ba3b4ddda98fd·...·]-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="5615776790-15">[</span><span·class="p"·data-group-id="5615776790-15">]</span><span·class="p"·data-group-id="5615776790-2">}</span><span·class="p"·data-group-id="5615776790-1">]</span></code></pre><p>The·above·problem·can·also·be·solved·as·follows:</p><pre>[·...·truncated·by·diffoscope;·len:·411,·SHA:·d8fc3f731d6e6350d9191f749c773eab045424d3bdbb312dc2b14291ea8d82fd·...·]-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="7836684316-5">[</span><span·class="p"·data-group-id="7836684316-5">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7836684316-6">[</span><span·class="p"·data-group-id="7836684316-6">]</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·67,·SHA:·98b67d0147653d626db4fdf1c8823f55ce65a2ef3390ae2de34fed9386d0f164·...·]-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="9548999295-5">[</span><span·class="p"·data-group-id="9548999295-5">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9548999295-6">[</span><span·class="p"·data-group-id="9548999295-6">]</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·67,·SHA:·ce43bf935a5033265b2a473fcd84e5b115ac36ef8f50aa369fa4b50189cca607·...·]-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="1144536550-1">[</span><span·class="p"·data-group-id="1144536550-2">{</span><span·class="p"·data-group-id="1144536550-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:·8ed01c50d06eda30cf0f5853e43a85e653ca5dbe2f27cea970a1f078376ce4fa·...·]-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="2564937095-1">[</span><span·class="p"·data-group-id="2564937095-2">{</span><span·class="p"·data-group-id="2564937095-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:·a3eefe23219c15d1b4267d0c493112d8c7280467501079326b7f02b16c1cfc8b·...·]-4">]</span><span·class="p">,</span><span·class="w">
390 ··</span><span·class="p"·data-group-id="1144536550-9">[</span><span·class="p"·data-group-id="1144536550-9">]</span><span·class="p"·data-group-id="1144536550-2">}</span><span·class="p"·data-group-id="1144536550-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="2564937095-9">[</span><span·class="p"·data-group-id="2564937095-9">]</span><span·class="p"·data-group-id="2564937095-2">}</span><span·class="p"·data-group-id="2564937095-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="3047626594-1">[</span><span·class="p"·data-group-id="3047626594-2">{</span><span·class="p"·data-group-id="3047626594-3">[</span><span·class="ss">&#39;$1&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;$1&#39;</span><span·cl[·...·truncated·by·diffoscope;·len:·117,·SHA:·de0a0f95c771436f3df87985270b82063da5bff42398b870fa2f635a75025726·...·]-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="5722943142-1">[</span><span·class="p"·data-group-id="5722943142-2">{</span><span·class="p"·data-group-id="5722943142-3">[</span><span·class="ss">&#39;$1&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;$1&#39;</span><span·cl[·...·truncated·by·diffoscope;·len:·117,·SHA:·069fa6a543d674dcbd5fedae0bfb291110f045f0db23f9b692d8dd7f6b4689bb·...·]-3">]</span><span·class="p">,</span><span·class="w">
393 ··</span><span·class="p"·data-group-id="3047626594-4">[</span><span·class="p"·data-group-id="3047626594-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="3047626594-5">}</span><span·class[·...·truncated·by·diffoscope;·len:·30,·SHA:·1c41fc3f1bfba47485cd44569c12bb79b8d57ccfe35c90ff22ef6b84faa394af·...·]-4">]</span><span·class="p">,</span><span·class="w">393 ··</span><span·class="p"·data-group-id="5722943142-4">[</span><span·class="p"·data-group-id="5722943142-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="5722943142-5">}</span><span·class[·...·truncated·by·diffoscope;·len:·30,·SHA:·617bfe2c9a005032cdbc77e2bec9f6b08ec60fb6e36032ace87dbfd7977e8120·...·]-4">]</span><span·class="p">,</span><span·class="w">
394 ··</span><span·class="p"·data-group-id="3047626594-6">[</span><span·class="p"·data-group-id="3047626594-7">{</span><span·class="ss">message</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3047626594-8">{</span><span·class="ss">process_dump</span><span·class="p"·data-group-id="3047626594-8">}</span><span·class="p"·data-group-id="3047626594-7">}</span><span·class="p"·data-group-id="3047626594-6">]</span><span·class="p"·data-group-id="3047626594-2">}</span><span·class="p">,</span><span·class="w"> 
395 ·</span><span·class="p"·data-group-id="3047626594-9">{</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3047626594-10">[</span><span·class="p"·data-group-id="3047626594-10">]</span><span[·...·truncated·by·diffoscope;·len:·644,·SHA:·16671ac93dfb1e2776c16879e18aa385b6b32fad79bcb577618c5f9e908bfd84·...·]394 ··</span><span·class="p"·data-group-id="5722943142-6">[</span><span·class="p"·data-group-id="5722943142-7">{</span><span·class="ss">message</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5722943142-8">{</span><span·clas[·...·truncated·by·diffoscope;·len:·278,·SHA:·677549f5b6a02ff1e4814ae749bfadbcbed7e8371aed8dfa780f6c36536bd99b·...·]
 395 ·</span><span·class="p"·data-group-id="5722943142-9">{</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5722943142-10">[</span><span·class="p"·data-group-id="5722943142-10">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5722943142-11">[</span><span·class="p"·data-group-id="5722943142-12">{</span><span·class="ss">set_seq_token</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">label</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">4711</span><span·class="p"·data-group-id="5722943142-12">}</span><span·class="p"·data-group-id="5722943142-11">]</span><span·class="p"·data-group-id="5722943142-9">}</span><span·class="p"·data-group-id="5722943142-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="0416972777-1">[</span><span·class="p"·data-group-id="0416972777-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="9605131265-1">[</span><span·class="p"·data-group-id="9605131265-2">{</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="w">
399 ··</span><span·class="p"·data-group-id="0416972777-3">[</span><span·class="p"·data-group-id="0416972777-4">{</span><span·class="ss">&#39;==&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="0416972777-5">{</span><span·class="ss">get_tcw</span><span·class="p"·data-group-id="0416972777-5">}</span><span·class="p">,</span><span·class="p"·data-group-id="0416972777-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="0416972777-6">}</span><span·class="p"·data-group-id="0416972777-4">}</span><span·class="p"·data-group-id="0416972777-3">]</span><span·class="p">,</span><span·class="w"> 
400 ··</span><span·class="p"·data-group-id="0416972777-7">[</span><span·class="p"·data-group-id="0416972777-7">]</span><span·class="p"·data-group-id="0416972777-2">}</span><span·class="p"·data-group-id="0416972777-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="1703442744-1">[</span><span·class="p"·data-group-id="1703442744-2">{</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="w"> 
401 ··</span><span·class="p"·data-group-id="1703442744-3">[</span><span·class="p"·data-group-id="1703442744-4">{</span><span·class="ss">&#39;==&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="1703442744-5">{</span><span·class="ss">is_seq_trace</span><span·class="p"·data-group-id="1703442744-5">}</span><span·class="p">,</span><span·class="p"·data-group-id="1703442744-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="1703442744-6">}</span><span·class="p"·data-group-id="1703442744-4">}</span><span·class="p"·data-group-id="1703442744-3">]</span><span·class="p">,</span><span·class="w"> 
402 ··</span><span·class="p"·data-group-id="1703442744-7">[</span><span·class="p"·data-group-id="1703442744-7">]</span><span·class="p"·data-group-id="1703442744-2">}</span><span·class="p"·data-group-id="1703442744-1">]</span></code></pre><p>Remove·the·<code·class="inline">'silent'</code>·trace·flag·[·...·truncated·by·diffoscope;·len:·73,·SHA:·1d0ce4d7e6c1157d0f96d007d7ffcfbdaad817ac5d1db9e129886d5c923c76a7·...·]399 ··</span><span·class="p"·data-group-id="9605131265-3">[</span><span·class="p"·data-group-id="9605131265-4">{</span><span·class="ss">&#39;==&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="9605131265-5">{</span><span·class="ss">get_tcw</span><span·class="p"·data-group-id="960513[·...·truncated·by·diffoscope;·len:·394,·SHA:·63c48ff90047cd303fe181c78544da0339de5c745e89dbbc7e8ef33552bd0b68·...·]
 400 ··</span><span·class="p"·data-group-id="9605131265-7">[</span><span·class="p"·data-group-id="9605131265-7">]</span><span·class="p"·data-group-id="9605131265-2">}</span><span·class="p"·data-group-id="9605131265-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="8486576374-1">[</span><span·class="p"·data-group-id="8486576374-2">{</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="w">
 401 ··</span><span·class="p"·data-group-id="8486576374-3">[</span><span·class="p"·data-group-id="8486576374-4">{</span><span·class="ss">&#39;==&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="8486576374-5">{</span><span·class="ss">is_seq_trace</span><span·class="p"·data-group-id="8486576374-5">}</span><span·class="p">,</span><span·class="p"·data-group-id="8486576374-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="8486576374-6">}</span><span·class="p"·data-group-id="8486576374-4">}</span><span·class="p"·data-group-id="8486576374-3">]</span><span·class="p">,</span><span·class="w">
 402 ··</span><span·class="p"·data-group-id="8486576374-7">[</span><span·class="p"·data-group-id="8486576374-7">]</span><span·class="p"·data-group-id="8486576374-2">}</span><span·class="p"·data-group-id="8486576374-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="1684038042-1">[</span><span·class="p"·data-group-id="1684038042-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="4577341063-1">[</span><span·class="p"·data-group-id="4577341063-2">{</span><span·class="ss">&#39;$1&#39;</span><span·class="p">,</span><span·class="w">
404 ··</span><span·class="p"·data-group-id="1684038042-3">[</span><span·class="p"·data-group-id="1684038042-4">{</span><span·class="ss">&#39;==&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="1684038042-5">{</span><span·class="nb">hd</span><span·class="p">,</span><span·class="w">·<[·...·truncated·by·diffoscope;·len:·244,·SHA:·b243262c128169895b47d87f5b98c0d8a4ccd9adccfaec39cfd7acb9620517fb·...·]-3">]</span><span·class="p">,</span><span·class="w">404 ··</span><span·class="p"·data-group-id="4577341063-3">[</span><span·class="p"·data-group-id="4577341063-4">{</span><span·class="ss">&#39;==&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="4577341063-5">{</span><span·class="nb">hd</span><span·class="p">,</span><span·class="w">·<[·...·truncated·by·diffoscope;·len:·244,·SHA:·e0a0c9e8119f72c5432c4b261d1ab073e73ec09decd9f864813e68291e0e72a7·...·]-3">]</span><span·class="p">,</span><span·class="w">
405 ··</span><span·class="p"·data-group-id="1684038042-6">[</span><span·class="p"·data-group-id="1684038042-7">{</span><span·class="nb">trace</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1684038042-8">[</span><span·class="ss">silent</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·309,·SHA:·3878e66ecd9555106c84bd13ef9012a61dc443614cf14c954db0ab96feaf5267·...·]-2">}</span><span·class="p">,</span><span·class="w">405 ··</span><span·class="p"·data-group-id="4577341063-6">[</span><span·class="p"·data-group-id="4577341063-7">{</span><span·class="nb">trace</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4577341063-8">[</span><span·class="ss">silent</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·309,·SHA:·5ebcd3b59d98b0f7056c7f8df7ddf94d81d35c4d02fff91af0e203b87c4ece0b·...·]-2">}</span><span·class="p">,</span><span·class="w">
406 ·</span><span·class="p"·data-group-id="1684038042-10">{</span><span·class="ss">&#39;$1&#39;</span><span·class="p">,</span><span·class="w">406 ·</span><span·class="p"·data-group-id="4577341063-10">{</span><span·class="ss">&#39;$1&#39;</span><span·class="p">,</span><span·class="w">
407 ··</span><span·class="p"·data-group-id="1684038042-11">[</span><span·class="p"·data-group-id="1684038042-12">{</span><span·class="ss">&#39;==&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="1684038042-13">{</span><span·class="nb">hd</span><span·class="p">,</span><span·class="w"[·...·truncated·by·diffoscope;·len:·248,·SHA:·965b3a9396924d6b006002ef1c57c0708165938fd1a7939639ee30bd6ec97356·...·]-11">]</span><span·class="p">,</span><span·class="w">407 ··</span><span·class="p"·data-group-id="4577341063-11">[</span><span·class="p"·data-group-id="4577341063-12">{</span><span·class="ss">&#39;==&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="4577341063-13">{</span><span·class="nb">hd</span><span·class="p">,</span><span·class="w"[·...·truncated·by·diffoscope;·len:·248,·SHA:·3d41ff4e20ac8fb63654843873e16a9a0dc15b831e19b61c4d0fa166120c0775·...·]-11">]</span><span·class="p">,</span><span·class="w">
408 ··</span><span·class="p"·data-group-id="1684038042-14">[</span><span·class="p"·data-group-id="1684038042-15">{</span><span·class="nb">trace</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1684038042-16">[</span><span·class="p"·data-group-id="1684038042-16">]<[·...·truncated·by·diffoscope;·len:·630,·SHA:·7cd3120cae42467fb9ef5be399966785747e6e47db222545786b56ebe07a170c·...·]-2">{</span><span·class="ss">&#39;$1&#39;</span><span·class="p">,</span><span·class="w">408 ··</span><span·class="p"·data-group-id="4577341063-14">[</span><span·class="p"·data-group-id="4577341063-15">{</span><span·class="nb">trace</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4577341063-16">[</span><span·class="p"·data-group-id="4577341063-16">]<[·...·truncated·by·diffoscope;·len:·630,·SHA:·f3bb58a79334990f8f29cfbe60f8caa00a520ee160af31934fbb60339e19acf4·...·]-2">{</span><span·class="ss">&#39;$1&#39;</span><span·class="p">,</span><span·class="w">
409 ··</span><span·class="p"·data-group-id="9166550645-3">[</span><span·class="p"·data-group-id="9166550645-4">{</span><span·class="ss">&#39;==&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="9166550645-5">{</span><span·class="nb">length</span><span·class="p">,</span><span·class="w[·...·truncated·by·diffoscope;·len:·242,·SHA:·313a8a611b16a1b156421b98188e5134a6888d7fd3f589751371683960bf58b3·...·]-3">]</span><span·class="p">,</span><span·class="w">409 ··</span><span·class="p"·data-group-id="1950919226-3">[</span><span·class="p"·data-group-id="1950919226-4">{</span><span·class="ss">&#39;==&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="1950919226-5">{</span><span·class="nb">length</span><span·class="p">,</span><span·class="w[·...·truncated·by·diffoscope;·len:·242,·SHA:·9a627baf166ef546cffe487f79d1860b65f8931e86142c2b913b1cca201cf8ea·...·]-3">]</span><span·class="p">,</span><span·class="w">
410 ··</span><span·class="p"·data-group-id="9166550645-6">[</span><span·class="p"·data-group-id="9166550645-7">{</span><span·class="ss">return_trace</span><span·class="p"·data-group-id="9166550645-7">}</span><span·class="p"·data-group-id="9166550645-6">]</span><span·class="p"·data-group-id="91665506[·...·truncated·by·diffoscope;·len:·2,·SHA:·811786ad1ae74adfdd20dd0372abaaebc6246e343aebd01da0bfc4c02bf0106c·...·]-2">}</span><span·class="p">,</span><span·class="w">410 ··</span><span·class="p"·data-group-id="1950919226-6">[</span><span·class="p"·data-group-id="1950919226-7">{</span><span·class="ss">return_trace</span><span·class="p"·data-group-id="1950919226-7">}</span><span·class="p"·data-group-id="1950919226-6">]</span><span·class="p"·data-group-id="19509192[·...·truncated·by·diffoscope;·len:·2,·SHA:·5f9c4ab08cac7457e9111a30e4664920607ea2c115a1433d7be98e97e64244ca·...·]-2">}</span><span·class="p">,</span><span·class="w">
411 ·</span><span·class="p"·data-group-id="9166550645-8">{</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="9166550645-9">[</span><span·class="p"·data-group-id="9166550645-9">]</span><span·class="p">,</span><span·class="p"·data-group-id="9166550645-10"[·...·truncated·by·diffoscope;·len:·157,·SHA:·bd598c766519279bd75a6bb6f018c01044708cd8cac691930b97cf6d075a059e·...·]-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="1950919226-8">{</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="1950919226-9">[</span><span·class="p"·data-group-id="1950919226-9">]</span><span·class="p">,</span><span·class="p"·data-group-id="1950919226-10"[·...·truncated·by·diffoscope;·len:·157,·SHA:·7533b18a05e024d8f5a4f5224ae9f65bf3127ec05ca5c01ee329ad42992d614f·...·]-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="6186754023-1">[</span><span·class="p"·data-group-id="6186754023-2">{</span><span·class="p"·data-group-id="6186754023-3">[</span><span·class="ss">&#39;trace&#39;</span><span·class="p">,</span><span·class="ss">&#39;$2&#39;</span><span·class="p">,</span><span[·...·truncated·by·diffoscope;·len:·72,·SHA:·88646b120cb78ba14e0507fe888328867f058134c74b19e97c228cd3844bbfc3·...·]-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="8173376470-1">[</span><span·class="p"·data-group-id="8173376470-2">{</span><span·class="p"·data-group-id="8173376470-3">[</span><span·class="ss">&#39;trace&#39;</span><span·class="p">,</span><span·class="ss">&#39;$2&#39;</span><span·class="p">,</span><span[·...·truncated·by·diffoscope;·len:·72,·SHA:·f00b4b1fa168012822750f9cb6cf321d00a5955a8ad35c16080c638c8bdc682d·...·]-3">]</span><span·class="p">,</span><span·class="w">
413 ··</span><span·class="p"·data-group-id="6186754023-4">[</span><span·class="p"·data-group-id="6186754023-4">]</span><span·class="p">,</span><span·class="w">413 ··</span><span·class="p"·data-group-id="8173376470-4">[</span><span·class="p"·data-group-id="8173376470-4">]</span><span·class="p">,</span><span·class="w">
414 ··</span><span·class="p"·data-group-id="6186754023-5">[</span><span·class="p"·data-group-id="6186754023-5">]</span><span·class="p"·data-group-id="6186754023-2">}</span><span·class="p">,</span><span·class="w">414 ··</span><span·class="p"·data-group-id="8173376470-5">[</span><span·class="p"·data-group-id="8173376470-5">]</span><span·class="p"·data-group-id="8173376470-2">}</span><span·class="p">,</span><span·class="w">
415 ·</span><span·class="p"·data-group-id="6186754023-6">{</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="6186754023-7">[</span><span·class="p"·data-group-id="6186754023-7">]</span><span·class="p">,</span><span·class="p"·data-group-id="6186754023-8">[·...·truncated·by·diffoscope;·len:·155,·SHA:·f3ab75e86fc2f23af77715b1eafd49fc2be2f3cb8d3c7d385aed23fc9c406175·...·]-1">]</span></code></pre><h2·id="ets-examples"·class="section-heading">415 ·</span><span·class="p"·data-group-id="8173376470-6">{</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="8173376470-7">[</span><span·class="p"·data-group-id="8173376470-7">]</span><span·class="p">,</span><span·class="p"·data-group-id="8173376470-8">[·...·truncated·by·diffoscope;·len:·155,·SHA:·6b65a51632497519c8a05efd971867288ee86e4d2492c347c5d19d239206440c·...·]-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="8207214830-1">[</span><span·class="p"·data-group-id="8207214830-2">{</span><span·class="p"·data-group-id="8207214830-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:·4c7fbcadf29df90585fa2f0e1bb74e7e34ca379bcb4b67e5a8f7d9ceccea8974·...·]-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="2859694754-1">[</span><span·class="p"·data-group-id="2859694754-2">{</span><span·class="p"·data-group-id="2859694754-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:·31d390056800c5d797a60aa089c6455f64d003f1aa7c0385450f619b656929f1·...·]-3">}</span><span·class="p">,</span><span·class="w">
423 ··</span><span·class="p"·data-group-id="8207214830-4">[</span><span·class="p"·data-group-id="8207214830-4">]</span><span·class="p">,</span><span·class="w">423 ··</span><span·class="p"·data-group-id="2859694754-4">[</span><span·class="p"·data-group-id="2859694754-4">]</span><span·class="p">,</span><span·class="w">
424 ··</span><span·class="p"·data-group-id="8207214830-5">[</span><span·class="ss">&#39;$_&#39;</span><span·class="p"·data-group-id="8207214830-5">]</span><span·class="p"·data-group-id="8207214830-2">}</span><span·class="p"·data-group-id="8207214830-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="2859694754-5">[</span><span·class="ss">&#39;$_&#39;</span><span·class="p"·data-group-id="2859694754-5">]</span><span·class="p"·data-group-id="2859694754-2">}</span><span·class="p"·data-group-id="2859694754-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="3784985794-1">[</span><span·class="p"·data-group-id="3784985794-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="2792748107-1">[</span><span·class="p"·data-group-id="2792748107-2">{</span><span·class="ss">&#39;$1&#39;</span><span·class="p">,</span><span·class="w">
426 ··</span><span·class="p"·data-group-id="3784985794-3">[</span><span·class="p"·data-group-id="3784985794-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:·e7cc502e876dc381d925f646749579b299b1d4548d0acb1b47d012f458eaa125·...·]-3">]</span><span·class="p">,</span><span·class="w">426 ··</span><span·class="p"·data-group-id="2792748107-3">[</span><span·class="p"·data-group-id="2792748107-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:·ee5bbd75cf89ec307a91902a9ed906ad9a65a31f24bb34b0d1753371fc6aa454·...·]-3">]</span><span·class="p">,</span><span·class="w">
427 ··</span><span·class="p"·data-group-id="3784985794-8">[</span><span·class="p"·data-group-id="3784985794-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="3784985794[·...·truncated·by·diffoscope;·len:·159,·SHA:·3bb52f9abf4989c54c9171aa0a3ffe9c48811d38938dc347a4df9eb5aa5e2c87·...·]-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="2792748107-8">[</span><span·class="p"·data-group-id="2792748107-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="2792748107[·...·truncated·by·diffoscope;·len:·159,·SHA:·bfbbd0ea32377c389c4478274bb67a78aa311b0afb073c592a3a7bff66893395·...·]-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="0477713150-1">[</span><span·class="p"·data-group-id="0477713150-2">{</span><span·class="p"·data-group-id="0477713150-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:·59,·SHA:·f04ed18dfb7b5925e05493bc1bf5d491275e994d93edf151a34b211a21e6c57a·...·]0-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="9755015330-1">[</span><span·class="p"·data-group-id="9755015330-2">{</span><span·class="p"·data-group-id="9755015330-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:·59,·SHA:·f4519eb8896298d5c74c09c43a565b62f8eec39049d88ff4fd05e3e1dbb828aa·...·]0-3">}</span><span·class="p">,</span><span·class="w">
433 ··</span><span·class="p"·data-group-id="0477713150-4">[</span><span·class="p"·data-group-id="0477713150-4">]</span><span·class="p">,</span><span·class="w">433 ··</span><span·class="p"·data-group-id="9755015330-4">[</span><span·class="p"·data-group-id="9755015330-4">]</span><span·class="p">,</span><span·class="w">
434 ··</span><span·class="p"·data-group-id="0477713150-5">[</span><span·class="ss">&#39;$_&#39;</span><span·class="p"·data-group-id="0477713150-5">]</span><span·class="p"·data-group-id="0477713150-2">}</span><span·class="p">,</span><span·class="w">434 ··</span><span·class="p"·data-group-id="9755015330-5">[</span><span·class="ss">&#39;$_&#39;</span><span·class="p"·data-group-id="9755015330-5">]</span><span·class="p"·data-group-id="9755015330-2">}</span><span·class="p">,</span><span·class="w">
435 ·</span><span·class="p"·data-group-id="0477713150-6">{</span><span·class="p"·data-group-id="0477713150-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="04[·...·truncated·by·diffoscope;·len:·7,·SHA:·b2774b80ea7517f26d322f58dc239515715f83943abf67522e7085e43a2e04d8·...·]0-7">}</span><span·class="p">,</span><span·class="w">435 ·</span><span·class="p"·data-group-id="9755015330-6">{</span><span·class="p"·data-group-id="9755015330-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="97[·...·truncated·by·diffoscope;·len:·7,·SHA:·4dfb7e23bab41d3d031b1266361cccf8f8c9262a6c7c332f6d287bd175ad92e4·...·]0-7">}</span><span·class="p">,</span><span·class="w">
436 ··</span><span·class="p"·data-group-id="0477713150-8">[</span><span·class="p"·data-group-id="0477713150-8">]</span><span·class="p">,</span><span·class="w">436 ··</span><span·class="p"·data-group-id="9755015330-8">[</span><span·class="p"·data-group-id="9755015330-8">]</span><span·class="p">,</span><span·class="w">
437 ··</span><span·class="p"·data-group-id="0477713150-9">[</span><span·class="ss">&#39;$_&#39;</span><span·class="p"·data-group-id="0477713150-9">]</span><span·class="p"·data-group-id="0477713150-6">}</span><span·class="p"·data-group-id="0477713150-1">]</span></code></pre><p>Function·<a·href="../../../lib/stdlib-6.2.2/doc/html/ets.html#test_ms/2"><code·class="inline">ets:test_ms/2</code></a>·can·be·useful·for·testing·complicated·ETS·matches.</p>437 ··</span><span·class="p"·data-group-id="9755015330-9">[</span><span·class="ss">&#39;$_&#39;</span><span·class="p"·data-group-id="9755015330-9">]</span><span·class="p"·data-group-id="9755015330-6">}</span><span·class="p"·data-group-id="9755015330-1">]</span></code></pre><p>Function·<a·href="../../../lib/stdlib-6.2.2/doc/html/ets.html#test_ms/2"><code·class="inline">ets:test_ms/2</code></a>·can·be·useful·for·testing·complicated·ETS·matches.</p>
438 </div>438 </div>
  
439 <div·class="bottom-actions"·id="bottom-actions">439 <div·class="bottom-actions"·id="bottom-actions">
440 ··<div·class="bottom-actions-item">440 ··<div·class="bottom-actions-item">
  
441 ······<a·href="time_correction.html"·class="bottom-actions-button"·rel="prev">441 ······<a·href="time_correction.html"·class="bottom-actions-button"·rel="prev">
442 ········<span·class="subheader">442 ········<span·class="subheader">
60.4 KB
./usr/share/doc/erlang-doc/html/erts-15.2.6/doc/html/notes.html
    
Offset 212, 15 lines modifiedOffset 212, 15 lines modified
212 <ul><li><p><a·href="../../../lib/kernel-10.2.6/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.6/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.6/doc/html/inet.html#getifaddrs/1"><code·class="inline">inet:getifaddrs/0,1</code></a>·is·improved·when·using212 <ul><li><p><a·href="../../../lib/kernel-10.2.6/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.6/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.6/doc/html/inet.html#getifaddrs/1"><code·class="inline">inet:getifaddrs/0,1</code></a>·is·improved·when·using
213 inet_backend·=·socket.</p><p>Own·Id:·OTP-19264</p></li><li><p><a·href="../../../lib/stdlib-6.2.2/doc/html/win32reg.html#value/2"><code·class="inline">win32reg:value/2</code></a>·will·no·longer·crash·the·emulator·when·the·value·is·an·unterminated·REG_SZ·of·size·0.</p><p>Own·Id:·OTP-19283·Aux·Id:·<a·href="https://github.com/erlang/otp/issues/8903"·title="">GH-8903</a>,·<a·href="https://github.com/erlang/otp/pull/8912"·title="">PR-8912</a></p></li><li><p><code·class="inline">Makefile</code>·dependency·generation·on·Windows·in·WSL·2·has·been·corrected.</p><p>Own·Id:·OTP-19300·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8955"·title="">PR-8955</a></p></li><li><p>Fix·lock·order·violation·if·a·NIF·monitor·<code·class="inline">down</code>·callback·calls·<code·class="inline">enif_whereis_pid</code>.·Would·cause·debug·emulator·to·crash·but·could·potentially·lead·to·deadlocks·in·optimized·emulator.</p><p>Own·Id:·OTP-19330·Aux·Id:·<a·href="https://github.com/erlang/otp/issues/8983"·title="">GH-8983</a>,·<a·href="https://github.com/erlang/otp/pull/9008"·title="">PR-9008</a></p></li><li><p>Fixed·compilation·faults·when·compiling·using·<code·class="inline">--enable-vm-probes</code>.</p><p>Own·Id:·OTP-19333</p></li><li><p>Fixed·<code·class="inline">erl_nif.h</code>·on·Windows·to·compile·when·gcc·or·clang·is·used.</p><p>Own·Id:·OTP-19341·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/9016"·title="">PR-9016</a></p></li><li><p>Fixed·a·minor·issue·in·the·JIT·debug·information·that·confused·tools·like·GDB·and·perf.</p><p>Own·Id:·OTP-19362·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/9003"·title="">PR-9003</a></p></li></ul><h3·id="improvements-and-new-features"·class="section-heading">213 inet_backend·=·socket.</p><p>Own·Id:·OTP-19264</p></li><li><p><a·href="../../../lib/stdlib-6.2.2/doc/html/win32reg.html#value/2"><code·class="inline">win32reg:value/2</code></a>·will·no·longer·crash·the·emulator·when·the·value·is·an·unterminated·REG_SZ·of·size·0.</p><p>Own·Id:·OTP-19283·Aux·Id:·<a·href="https://github.com/erlang/otp/issues/8903"·title="">GH-8903</a>,·<a·href="https://github.com/erlang/otp/pull/8912"·title="">PR-8912</a></p></li><li><p><code·class="inline">Makefile</code>·dependency·generation·on·Windows·in·WSL·2·has·been·corrected.</p><p>Own·Id:·OTP-19300·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8955"·title="">PR-8955</a></p></li><li><p>Fix·lock·order·violation·if·a·NIF·monitor·<code·class="inline">down</code>·callback·calls·<code·class="inline">enif_whereis_pid</code>.·Would·cause·debug·emulator·to·crash·but·could·potentially·lead·to·deadlocks·in·optimized·emulator.</p><p>Own·Id:·OTP-19330·Aux·Id:·<a·href="https://github.com/erlang/otp/issues/8983"·title="">GH-8983</a>,·<a·href="https://github.com/erlang/otp/pull/9008"·title="">PR-9008</a></p></li><li><p>Fixed·compilation·faults·when·compiling·using·<code·class="inline">--enable-vm-probes</code>.</p><p>Own·Id:·OTP-19333</p></li><li><p>Fixed·<code·class="inline">erl_nif.h</code>·on·Windows·to·compile·when·gcc·or·clang·is·used.</p><p>Own·Id:·OTP-19341·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/9016"·title="">PR-9016</a></p></li><li><p>Fixed·a·minor·issue·in·the·JIT·debug·information·that·confused·tools·like·GDB·and·perf.</p><p>Own·Id:·OTP-19362·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/9003"·title="">PR-9003</a></p></li></ul><h3·id="improvements-and-new-features"·class="section-heading">
214 ··<a·href="#improvements-and-new-features"·class="hover-link">214 ··<a·href="#improvements-and-new-features"·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">Improvements·and·New·Features</span>217 ··<span·class="text">Improvements·and·New·Features</span>
218 </h3>218 </h3>
219 <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.2/doc/html/proc_lib.html#get_label/1"><code·class="inline">proc_lib:get_label/1</code></a>.</p><p>This·new·option·is·useful·when·one·wants·to·retrieve·more·than·one·process·info·item.·For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">process_info</span><span·class="p"·data-group-id="5516076439-1">(</span><span·class="n">Pid</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5516076439-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:·58e115dbd896e533f91d85bc9405c7d83f45364f1e66eee6f1be5d34eb2122fb·...·]-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">219 <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.2/doc/html/proc_lib.html#get_label/1"><code·class="inline">proc_lib:get_label/1</code></a>.</p><p>This·new·option·is·useful·when·one·wants·to·retrieve·more·than·one·process·info·item.·For·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">process_info</span><span·class="p"·data-group-id="8082253772-1">(</span><span·class="n">Pid</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8082253772-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:·a6dfe6829dadfdc6c694b49c9c0fdb66430d1d877ead4a82669a66cbd048a319·...·]-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">
220 ··<a·href="#erts-15-1-3"·class="hover-link">220 ··<a·href="#erts-15-1-3"·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">Erts·15.1.3</span>223 ··<span·class="text">Erts·15.1.3</span>
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">
Offset 260, 16 lines modifiedOffset 260, 16 lines modified
260 </h2>260 </h2>
261 <h3·id="fixed-bugs-and-malfunctions-10"·class="section-heading">261 <h3·id="fixed-bugs-and-malfunctions-10"·class="section-heading">
262 ··<a·href="#fixed-bugs-and-malfunctions-10"·class="hover-link">262 ··<a·href="#fixed-bugs-and-malfunctions-10"·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">Fixed·Bugs·and·Malfunctions</span>265 ··<span·class="text">Fixed·Bugs·and·Malfunctions</span>
266 </h3>266 </h3>
267 <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="6837150701-1">{</span><span·class="ss">&#39;GetOverlappedResult&#39;</span><span·class="p">,</span><span·class="w">267 <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="2912927899-1">{</span><span·class="ss">&#39;GetOverlappedResult&#39;</span><span·class="p">,</span><span·class="w">
268 ··</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="6837150701-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">268 ··</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="2912927899-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">
269 ··<a·href="#improvements-and-new-features-1"·class="hover-link">269 ··<a·href="#improvements-and-new-features-1"·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">Improvements·and·New·Features</span>272 ··<span·class="text">Improvements·and·New·Features</span>
273 </h3>273 </h3>
274 <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.6/doc/html/inet.html"><code·class="inline">inet</code></a>·functions,·either·when·called·with·sockets,274 <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.6/doc/html/inet.html"><code·class="inline">inet</code></a>·functions,·either·when·called·with·sockets,
275 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.2/doc/html/zip.html"><code·class="inline">zip</code></a>·module·has·been·updated·with·support·for:</p><ul><li>zip64·archives·-·Archives·larger·than·4GB·or·with·more·than·2^32·entries.</li><li>extended·timestamps·-·Higher·resolution·and·in·UTC.</li><li>UID/GID·-·Save·and·extract·the·original·UID/GID.</li><li>Fixes·so·that·permission·mode·attributes·are·correctly·read·and·set·for·files·in·archives.</li><li><a·href="../../../lib/stdlib-6.2.2/doc/html/zip.html#list_dir/2"><code·class="inline">zip:list_dir/2</code></a>·now·also·returns·directories,·not·only·files.·(You·can·disable·this·behaviour·by·using·the·option·<code·class="inline">skip_directories</code>).</li></ul><p>Various·bugs·in·the·original·implementation·have·also·been·fixed,·such·as:</p><ul><li>Correctly·encode·and·decode·the·DOS·timestamps·for·entries·within·an·archive·(that·is·the·non-extended·timestamp).</li><li>Fix·DOS·timestamps·to·be·set·to·localtime·instead·of·UTC·(use·extended·timestamps·for·UTC·timestamps).</li><li>Use·the·unix·file·attributes·read·from·disk·when·creating·archives·instead·of·setting·everything·to·644.</li></ul><p>Own·Id:·OTP-19214·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8765"·title="">PR-8765</a></p></li></ul><h2·id="erts-15-0-1"·class="section-heading">275 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.2/doc/html/zip.html"><code·class="inline">zip</code></a>·module·has·been·updated·with·support·for:</p><ul><li>zip64·archives·-·Archives·larger·than·4GB·or·with·more·than·2^32·entries.</li><li>extended·timestamps·-·Higher·resolution·and·in·UTC.</li><li>UID/GID·-·Save·and·extract·the·original·UID/GID.</li><li>Fixes·so·that·permission·mode·attributes·are·correctly·read·and·set·for·files·in·archives.</li><li><a·href="../../../lib/stdlib-6.2.2/doc/html/zip.html#list_dir/2"><code·class="inline">zip:list_dir/2</code></a>·now·also·returns·directories,·not·only·files.·(You·can·disable·this·behaviour·by·using·the·option·<code·class="inline">skip_directories</code>).</li></ul><p>Various·bugs·in·the·original·implementation·have·also·been·fixed,·such·as:</p><ul><li>Correctly·encode·and·decode·the·DOS·timestamps·for·entries·within·an·archive·(that·is·the·non-extended·timestamp).</li><li>Fix·DOS·timestamps·to·be·set·to·localtime·instead·of·UTC·(use·extended·timestamps·for·UTC·timestamps).</li><li>Use·the·unix·file·attributes·read·from·disk·when·creating·archives·instead·of·setting·everything·to·644.</li></ul><p>Own·Id:·OTP-19214·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8765"·title="">PR-8765</a></p></li></ul><h2·id="erts-15-0-1"·class="section-heading">
Offset 298, 25 lines modifiedOffset 298, 25 lines modified
298 </h3>298 </h3>
299 <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">299 <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">
300 ··<a·href="#improvements-and-new-features-2"·class="hover-link">300 ··<a·href="#improvements-and-new-features-2"·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">Improvements·and·New·Features</span>303 ··<span·class="text">Improvements·and·New·Features</span>
304 </h3>304 </h3>
305 <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.6/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.1/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.6/doc/html/code.html#coverage_support/0"><code·class="inline">code:coverage_support/0</code></a></li><li><a·href="../../../lib/kernel-10.2.6/doc/html/code.html#get_coverage/2"><code·class="inline">code:get_coverage/2</code></a></li><li><a·href="../../../lib/kernel-10.2.6/doc/html/code.html#reset_coverage/1"><code·class="inline">code:reset_coverage/1</code></a></li><li><a·href="../../../lib/kernel-10.2.6/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.6/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.6/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="1147467771-1">(</span><span·class="ss">rec</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1147467771-2">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">b</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·111,·SHA:·3858bee0589864d693761cf40e1f2a295380d74ac8fa19d359e0159a64f7f00f·...·]-1">)</span><span·class="p">.</span><span·class="w">305 <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.6/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.1/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.6/doc/html/code.html#coverage_support/0"><code·class="inline">code:coverage_support/0</code></a></li><li><a·href="../../../lib/kernel-10.2.6/doc/html/code.html#get_coverage/2"><code·class="inline">code:get_coverage/2</code></a></li><li><a·href="../../../lib/kernel-10.2.6/doc/html/code.html#reset_coverage/1"><code·class="inline">code:reset_coverage/1</code></a></li><li><a·href="../../../lib/kernel-10.2.6/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.6/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.6/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="8292248749-1">(</span><span·class="ss">rec</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8292248749-2">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">b</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·111,·SHA:·7f301f00d87ecd1164843cec89276cd98d034b8b3fcea26513b1e781493ef9ef·...·]-1">)</span><span·class="p">.</span><span·class="w">
  
306 </span><span·class="nf">update</span><span·class="p"·data-group-id="1147467771-3">(</span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="1147467771-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:·e914426a5313335a872bbc0a901097ee9490fb32a2c5bcd12034cc4580869b8d·...·]-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">306 </span><span·class="nf">update</span><span·class="p"·data-group-id="8292248749-3">(</span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="8292248749-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:·d5a4f0f5f3ed44abb2ca6d5b106d10927fc4197f12c2d2e9fb338938db40c87c·...·]-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
307 ····</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="1147467771-5">{</span><span·class="ss">a</span><span·class="o">=</span><span·class="ss">up_to_date</span><span·class="p"·data-group-id="1147467771-5">}</span><span·class="p">,</span><span·class="w">307 ····</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="8292248749-5">{</span><span·class="ss">a</span><span·class="o">=</span><span·class="ss">up_to_date</span><span·class="p"·data-group-id="8292248749-5">}</span><span·class="p">,</span><span·class="w">
308 ····</span><span·class="k">if</span><span·class="w">308 ····</span><span·class="k">if</span><span·class="w">
309 ········</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">309 ········</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">
310 ············</span><span·class="n">R</span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="1147467771-6">{</span><span·class="ss">c</span><span·class="o">=</span><span·class="ss">negative</span><span·class="p"·data-group-id="1147467771-6">}</span><span·class="p">;</span><span·class="w">310 ············</span><span·class="n">R</span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="8292248749-6">{</span><span·class="ss">c</span><span·class="o">=</span><span·class="ss">negative</span><span·class="p"·data-group-id="8292248749-6">}</span><span·class="p">;</span><span·class="w">
311 ········</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">311 ········</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">
312 ············</span><span·class="n">R</span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="1147467771-7">{</span><span·class="ss">c</span><span·class="o">=</span><span·class="ss">zero</span><span·class="p"·data-group-id="1147467771-7">}</span><span·class="p">;</span><span·class="w">312 ············</span><span·class="n">R</span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="8292248749-7">{</span><span·class="ss">c</span><span·class="o">=</span><span·class="ss">zero</span><span·class="p"·data-group-id="8292248749-7">}</span><span·class="p">;</span><span·class="w">
313 ········</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">313 ········</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">
314 ············</span><span·class="n">R</span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="1147467771-8">{</span><span·class="ss">c</span><span·class="o">=</span><span·class="ss">positive</span><span·class="p"·data-group-id="1147467771-8">}</span><span·class="w">314 ············</span><span·class="n">R</span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="8292248749-8">{</span><span·class="ss">c</span><span·class="o">=</span><span·class="ss">positive</span><span·class="p"·data-group-id="8292248749-8">}</span><span·class="w">
315 ····</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·external315 ····</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
316 resource·by·passing·an·atom·(or·a·string)·as·first·argument·to316 resource·by·passing·an·atom·(or·a·string)·as·first·argument·to
317 <a·href="erlang.html#open_port/2"><code·class="inline">open_port()</code></a>,·implemented·by·the·vanilla·driver,317 <a·href="erlang.html#open_port/2"><code·class="inline">open_port()</code></a>,·implemented·by·the·vanilla·driver,
318 has·been·removed.·This·feature·has·been·scheduled·for·removal·in·OTP·27318 has·been·removed.·This·feature·has·been·scheduled·for·removal·in·OTP·27
319 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.6/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·to319 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.6/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
320 that·a·few·details·were·fixed:</p><ul><li><a·href="../../../lib/kernel-10.2.6/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>320 that·a·few·details·were·fixed:</p><ul><li><a·href="../../../lib/kernel-10.2.6/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>
321 that·is·a·&quot;category&quot;,·not·an·item.</li><li><a·href="../../../lib/kernel-10.2.6/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·by321 that·is·a·&quot;category&quot;,·not·an·item.</li><li><a·href="../../../lib/kernel-10.2.6/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 3254, 17 lines modifiedOffset 3254, 17 lines modified
3254 markedly·so·when·the·maximum·number·of·file·descriptors·has·been·tuned·to·a3254 markedly·so·when·the·maximum·number·of·file·descriptors·has·been·tuned·to·a
3255 large·number.</p><p>Instead,·in·erl_child_setup,·walk·the·open·descriptors·under·<code·class="inline">/dev/fd</code>·and3255 large·number.</p><p>Instead,·in·erl_child_setup,·walk·the·open·descriptors·under·<code·class="inline">/dev/fd</code>·and
3256 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.2/doc/html/maps.html#merge/2"><code·class="inline">maps:merge/2</code></a>·for·trivial·cases·of·an·empty·map(s)·or·same·map.</p><p>Own·Id:·OTP-16283·Aux·Id:·PR-2441</p></li><li><p>The·new·experimental·<code·class="inline">socket</code>·module·has·been·moved·to·the·Kernel·application.</p><p>Own·Id:·OTP-16312</p></li><li><p>Improved·the·presentation·of·allocations·and·carriers·in·the·<code·class="inline">instrument</code>3256 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.2/doc/html/maps.html#merge/2"><code·class="inline">maps:merge/2</code></a>·for·trivial·cases·of·an·empty·map(s)·or·same·map.</p><p>Own·Id:·OTP-16283·Aux·Id:·PR-2441</p></li><li><p>The·new·experimental·<code·class="inline">socket</code>·module·has·been·moved·to·the·Kernel·application.</p><p>Own·Id:·OTP-16312</p></li><li><p>Improved·the·presentation·of·allocations·and·carriers·in·the·<code·class="inline">instrument</code>
3257 module.</p><p>Own·Id:·OTP-16327</p></li><li><p>As·announced·in·OTP·22.0,·the·previously·existing·limited·support·for·VxWorks3257 module.</p><p>Own·Id:·OTP-16327</p></li><li><p>As·announced·in·OTP·22.0,·the·previously·existing·limited·support·for·VxWorks
3258 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·to3258 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
3259 <a·href="erlang.html#decode_packet/3"><code·class="inline">erlang:decode_packet/3</code></a>·and·<a·href="../../../lib/kernel-10.2.6/doc/html/inet.html#setopts/2"><code·class="inline">inet:setopts/2</code></a>·has·been·changed·to·also·include3259 <a·href="erlang.html#decode_packet/3"><code·class="inline">erlang:decode_packet/3</code></a>·and·<a·href="../../../lib/kernel-10.2.6/doc/html/inet.html#setopts/2"><code·class="inline">inet:setopts/2</code></a>·has·been·changed·to·also·include
3260 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">3260 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">
3261 ······</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">decode_packet</span><span·class="p"·data-group-id="5840129144-1">(</span><span·class="ss">httph_bin</span><span·class="p">,</span><span·class="p"·data-group-id="5840129144-2">&lt;&lt;</span><span·class="s">&quot;HELLO:3261 ······</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">decode_packet</span><span·class="p"·data-group-id="6575568495-1">(</span><span·class="ss">httph_bin</span><span·class="p">,</span><span·class="p"·data-group-id="6575568495-2">&lt;&lt;</span><span·class="s">&quot;HELLO:
3262 ······hi\r\n\r\n&quot;</span><span·class="p"·data-group-id="5840129144-2">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="5840129144-3">[</span><span·class="p"·data-group-id="5840129144-3">]</span><span·class="p"·data-group-id="5840129144-1">)</span><span·class="p">.</span><span·class="w">3262 ······hi\r\n\r\n&quot;</span><span·class="p"·data-group-id="6575568495-2">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="6575568495-3">[</span><span·class="p"·data-group-id="6575568495-3">]</span><span·class="p"·data-group-id="6575568495-1">)</span><span·class="p">.</span><span·class="w">
3263 ······</span><span·class="p"·data-group-id="5840129144-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="5840129144-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-gr[·...·truncated·by·diffoscope;·len:·779,·SHA:·b396a41ec392d741ae181b72e72e437f320d2a3ce4ab5e8dcbc39c2d718e7f9e·...·]-4">}</span></code></pre><p>Own·Id:·OTP-16347·Aux·Id:·PR-2466</p></li><li><p>Ensure·<a·href="../../../lib/kernel-10.2.6/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·failed3263 ······</span><span·class="p"·data-group-id="6575568495-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="6575568495-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-gr[·...·truncated·by·diffoscope;·len:·779,·SHA:·80c5b3cf8d82d0bf9d7410f046f3ae8fd9da67118b3d107d6846d266e5aa8e96·...·]-4">}</span></code></pre><p>Own·Id:·OTP-16347·Aux·Id:·PR-2466</p></li><li><p>Ensure·<a·href="../../../lib/kernel-10.2.6/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
3264 connection·before·<code·class="inline">nodeup</code>·messages·of·a·reestablished·connection·toward·the3264 connection·before·<code·class="inline">nodeup</code>·messages·of·a·reestablished·connection·toward·the
3265 same·node.</p><p>Own·Id:·OTP-16362</p></li><li><p>Update·of·<a·href="../../../lib/kernel-10.2.6/doc/html/seq_trace.html#whatis">sequential·tracing</a>·to·also·support·other3265 same·node.</p><p>Own·Id:·OTP-16362</p></li><li><p>Update·of·<a·href="../../../lib/kernel-10.2.6/doc/html/seq_trace.html#whatis">sequential·tracing</a>·to·also·support·other
3266 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·file3266 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
3267 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·supported3267 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
3268 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·maps3268 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
3269 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·argument3269 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
3270 <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,3270 <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 10971, 20 lines modifiedOffset 10971, 20 lines modified
10971 <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>·behaved10971 <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
10972 completely·asynchronous.·This·had·one·undesirable·effect,·though.·You·could10972 completely·asynchronous.·This·had·one·undesirable·effect,·though.·You·could
10973 never·know·when·you·were·guaranteed·<em>not</em>·to·be·affected·by·a·link·that·you10973 never·know·when·you·were·guaranteed·<em>not</em>·to·be·affected·by·a·link·that·you
10974 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·be10974 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
10975 viewed·as·two·operations·performed·atomically.·Asynchronously·send·an·unlink10975 viewed·as·two·operations·performed·atomically.·Asynchronously·send·an·unlink
10976 signal·or·a·demonitor·signal,·and·ignore·any·future·results·of·the·link·or10976 signal·or·a·demonitor·signal,·and·ignore·any·future·results·of·the·link·or
10977 monitor.</p><p><em>NOTE</em>:·This·change·can·cause·some·obscure·code·to·fail·which·previously·did10977 monitor.</p><p><em>NOTE</em>:·This·change·can·cause·some·obscure·code·to·fail·which·previously·did
10978 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="7375986334-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="7375986334-1">)</span><span·class="p">,</span><span·class="w">10978 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="1093805238-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="1093805238-1">)</span><span·class="p">,</span><span·class="w">
10979 ············</span><span·class="c1">%%·...</span><span·class="w">10979 ············</span><span·class="c1">%%·...</span><span·class="w">
10980 ············</span><span·class="nf">exit</span><span·class="p"·data-group-id="7375986334-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="7375986334-2">)</span><span·class="p">,</span><span·class="w">10980 ············</span><span·class="nf">exit</span><span·class="p"·data-group-id="1093805238-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="1093805238-2">)</span><span·class="p">,</span><span·class="w">
10981 ············</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">demonitor</span><span·class="p"·data-group-id="7375986334-3">(</span><span·class="n">Mon</span><span·class="p"·data-group-id="7375986334-3">)</span><span·class="p">,</span><span·class="w">10981 ············</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">demonitor</span><span·class="p"·data-group-id="1093805238-3">(</span><span·class="n">Mon</span><span·class="p"·data-group-id="1093805238-3">)</span><span·class="p">,</span><span·class="w">
10982 ············</span><span·class="k">receive</span><span·class="w">10982 ············</span><span·class="k">receive</span><span·class="w">
10983 ················</span><span·class="p"·data-group-id="7375986334-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:·36729441a23d228118086623e18a73aa024bf87d3b42ddcc74a64aa5917ed17f·...·]-4">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">ok</span><span·class="w">10983 ················</span><span·class="p"·data-group-id="1093805238-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:·bda1ee8041e9e5f9b2a43a7b8adc86599dfcdd7a5180c60fb0915e263454732c·...·]-4">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">ok</span><span·class="w">
10984 ············</span><span·class="c1">%%·We·were·previously·guaranteed·to·get·a·down·message</span><span·class="w">10984 ············</span><span·class="c1">%%·We·were·previously·guaranteed·to·get·a·down·message</span><span·class="w">
10985 ············</span><span·class="c1">%%·(since·we·exited·the·process·ourself),·so·we·could</span><span·class="w">10985 ············</span><span·class="c1">%%·(since·we·exited·the·process·ourself),·so·we·could</span><span·class="w">
10986 ············</span><span·class="c1">%%·in·this·case·leave·out:</span><span·class="w">10986 ············</span><span·class="c1">%%·in·this·case·leave·out:</span><span·class="w">
10987 ············</span><span·class="c1">%%·after·0·-&gt;·ok</span><span·class="w">10987 ············</span><span·class="c1">%%·after·0·-&gt;·ok</span><span·class="w">
10988 ············</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·contents10988 ············</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
10989 would·be·appended·to·the·end·of·the·command·line·even·if·the·command·line·had10989 would·be·appended·to·the·end·of·the·command·line·even·if·the·command·line·had
10990 an·<code·class="inline">-extra</code>·options.·Changed·to·place·the·options·from·<code·class="inline">ERL_FLAGS</code>·just·before10990 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.6/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="0820469449-1">(</span><span·class="ss">scheduler_id</span><span·class="p"·data-group-id="0820469449-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="0364005320-1">(</span><span·class="ss">scheduler_id</span><span·class="p"·data-group-id="0364005320-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="0820469449-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="0820469449-3">(</span><span·class="o">?<[·...·truncated·by·diffoscope;·len:·129,·SHA:·6743b8bffc669a486cac513cd28b53782cb17f8a78d47926bb4c83cdbb32bb42·...·]-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="0364005320-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="0364005320-3">(</span><span·class="o">?<[·...·truncated·by·diffoscope;·len:·129,·SHA:·929362c61845901e1666b7248a3150bb5798138a5782d8b4bc6f37dbafbe1587·...·]-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="0820469449-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="0820469449-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="0364005320-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="0364005320-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.6/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="9350122674-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="7392273036-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="9350122674-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="7392273036-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.6/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="6615899607-1">(</span><span·class="p"·data-group-id="6615899607-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="9289225764-1">(</span><span·class="p"·data-group-id="9289225764-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="6615899607-2">(</span><span·class="p"·data-group-id="6615899607-3">[</span><span·class="ss">monotonic</span><span·class="p"·data-group-id="6615899607-3">]</span><span·class="p"·data-group-id="6615899607-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="9289225764-2">(</span><span·class="p"·data-group-id="9289225764-3">[</span><span·class="ss">monotonic</span><span·class="p"·data-group-id="9289225764-3">]</span><span·class="p"·data-group-id="9289225764-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="6615899607-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="6615899607-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="9289225764-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="9289225764-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.6/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="0220523457-1">(</span><span·class="p"·data-group-id="0220523457-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="7964272937-1">(</span><span·class="p"·data-group-id="7964272937-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="0220523457-2">(</span><span·class="p"·data-group-id="0220523457-2">)</span><span·class="p">,</span><span·class="w">153 ····</span><span·class="nf">lots</span><span·class="p"·data-group-id="7964272937-2">(</span><span·class="p"·data-group-id="7964272937-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="0220523457-3">(</span><span·class="p"·data-group-id="0220523457-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="7964272937-3">(</span><span·class="p"·data-group-id="7964272937-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="0220523457-4">(</span><span·class="p"·data-group-id="0220523457-4">)</span><span·class="p">.</span><span·class="w">156 ····</span><span·class="nf">&#39;of&#39;</span><span·class="p"·data-group-id="7964272937-4">(</span><span·class="p"·data-group-id="7964272937-4">)</span><span·class="p">.</span><span·class="w">
  
157 </span><span·class="nf">&#39;of&#39;</span><span·class="p"·data-group-id="0220523457-5">(</span><span·class="p"·data-group-id="0220523457-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="7964272937-5">(</span><span·class="p"·data-group-id="7964272937-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="0220523457-6">(</span><span·class="p"·data-group-id="0220523457-6">)</span><span·class="p">.</span><span·class="w">158 ····</span><span·class="nf">indirections</span><span·class="p"·data-group-id="7964272937-6">(</span><span·class="p"·data-group-id="7964272937-6">)</span><span·class="p">.</span><span·class="w">
  
159 </span><span·class="nf">indirections</span><span·class="p"·data-group-id="0220523457-7">(</span><span·class="p"·data-group-id="0220523457-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="7964272937-7">(</span><span·class="p"·data-group-id="7964272937-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="0220523457-8">(</span><span·class="mi">10</span><span·class="p"·data-group-id="0220523457-8">)</span><span·class="p">.</span><span·class="w">160 ····</span><span·class="nf">bar</span><span·class="p"·data-group-id="7964272937-8">(</span><span·class="mi">10</span><span·class="p"·data-group-id="7964272937-8">)</span><span·class="p">.</span><span·class="w">
  
161 </span><span·class="nf">bar</span><span·class="p"·data-group-id="0220523457-9">(</span><span·class="mi">0</span><span·class="p"·data-group-id="0220523457-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="7964272937-9">(</span><span·class="mi">0</span><span·class="p"·data-group-id="7964272937-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="0220523457-10">(</span><span·class="n">N</span><span·class="p"·data-group-id="0220523457-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="7964272937-10">(</span><span·class="n">N</span><span·class="p"·data-group-id="7964272937-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="0220523457-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="0220523457-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="7964272937-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="7964272937-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.6/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="4556427701-1">(</span><span·class="p"·data-group-id="4556427701-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="0799744858-1">(</span><span·class="p"·data-group-id="0799744858-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="4556427701-2">(</span><span·class="n">Z</span><span·class="p">,</span><span·class="ss">default</span><span·class="p"·data-group-id="4556427701-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="0799744858-2">(</span><span·class="n">Z</span><span·class="p">,</span><span·class="ss">default</span><span·class="p"·data-group-id="0799744858-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="4556427701-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="4556427701-3">)</span><span·class="w">·</span><span·class="p">-&gt;</[·...·truncated·by·diffoscope;·len:·123,·SHA:·4305d39038c3da5668f6bdfdbea9b42b832418acb54ac941169126b1962a246c·...·]-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="0799744858-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="0799744858-3">)</span><span·class="w">·</span><span·class="p">-&gt;</[·...·truncated·by·diffoscope;·len:·123,·SHA:·0b7a37da845f622f7e31b25f2b6e6319e70d29c538acef4f59dd24f7a567ab06·...·]-4">]</span><span·class="p">;</span><span·class="w">
138 ··············</span><span·class="p"·data-group-id="4556427701-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="4556427701-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">138 ··············</span><span·class="p"·data-group-id="0799744858-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="0799744858-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
139 ·················</span><span·class="p"·data-group-id="4556427701-6">[</span><span·class="nc">zlib</span><span·class="p">:</span><span·class="nf">deflate</span><span·class="p"·data-group-id="4556427701-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:·e605aac43f8a7c057b4f4c7370bececd85a1bc10b04ccaa860ee3d94ad6a708d·...·]-6">]</span><span·class="w">139 ·················</span><span·class="p"·data-group-id="0799744858-6">[</span><span·class="nc">zlib</span><span·class="p">:</span><span·class="nf">deflate</span><span·class="p"·data-group-id="0799744858-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:·b3f82b050c0813476bae5c5650e52951ae6b7d8be6bb3c0bca52b2f4f3f86a08·...·]-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="4556427701-10">(</span><span·class="n">Read</span><span·class="p"·data-group-id="4556427701-11">(</span><span·class="p"·data-group-id="4556427701-11">)</span><span·class="p">,</span><span·class="n">Compress</span><span·class="p"·data-group-id="4556427701-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="0799744858-10">(</span><span·class="n">Read</span><span·class="p"·data-group-id="0799744858-11">(</span><span·class="p"·data-group-id="0799744858-11">)</span><span·class="p">,</span><span·class="n">Compress</span><span·class="p"·data-group-id="0799744858-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="4556427701-12">(</span><span·class="n">Z</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4556427701-13">[</span><span·class="p"·data-group-id="4556427701-13">]</span><span·class="p">,</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·66,·SHA:·87bc17709130664a78ad550bf1299c23a0d2bb1a2ca32344f98aab305459dc74·...·]-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="0799744858-12">(</span><span·class="n">Z</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0799744858-13">[</span><span·class="p"·data-group-id="0799744858-13">]</span><span·class="p">,</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·66,·SHA:·c4d7d7ec1ca178b897bc19e5db1ea05c591fe77369dd9c915b9eb99872059cbd·...·]-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="4556427701-14">(</span><span·class="n">Z</span><span·class="p"·data-group-id="4556427701-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="0799744858-14">(</span><span·class="n">Z</span><span·class="p"·data-group-id="0799744858-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="4556427701-15">(</span><span·class="n">Z</span><span·class="p"·data-group-id="4556427701-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="0799744858-15">(</span><span·class="n">Z</span><span·class="p"·data-group-id="0799744858-15">)</span><span·class="p">,</span><span·class="w">
145 </span><span·class="nf">list_to_binary</span><span·class="p"·data-group-id="4556427701-16">(</span><span·class="p"·data-group-id="4556427701-17">[</span><span·class="n">Compressed</span><span·class="p">|</span><span·class="n">Last</span><span·class="p"·data-group-id="4556427701-17">]</span><span·class="p"·data-group-id="4556427701-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="0799744858-16">(</span><span·class="p"·data-group-id="0799744858-17">[</span><span·class="n">Compressed</span><span·class="p">|</span><span·class="n">Last</span><span·class="p"·data-group-id="0799744858-17">]</span><span·class="p"·data-group-id="0799744858-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="0597787911-1">(</span><span·class="n">Z</span><span·class="p"·data-group-id="0597787911-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="8803677407-1">(</span><span·class="n">Z</span><span·class="p"·data-group-id="8803677407-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="0597787911-2">(</span><span·class="n">Z</span><span·class="p">,</span><span·class="n">Data</span><span·class="p"·data-group-id="0597787911-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="8803677407-2">(</span><span·class="n">Z</span><span·class="p">,</span><span·class="n">Data</span><span·class="p"·data-group-id="8803677407-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="0597787911-3">(</span><span·class="n">Z</span><span·class="p">,</span><span·class="p"·data-group-id="0597787911-4">&lt;&lt;</span><span·class="w">·</span><span·class="p"·data-group-id="0597787911-4">&gt;&gt;</span><span·class="p">,</span><span·class="ss">f[·...·truncated·by·diffoscope;·len:·53,·SHA:·1d2bc4409d4d2ac00a21176b8351fe74445a672d458ada8e719e68f2331ac9f2·...·]-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="8803677407-3">(</span><span·class="n">Z</span><span·class="p">,</span><span·class="p"·data-group-id="8803677407-4">&lt;&lt;</span><span·class="w">·</span><span·class="p"·data-group-id="8803677407-4">&gt;&gt;</span><span·class="p">,</span><span·class="ss">f[·...·truncated·by·diffoscope;·len:·53,·SHA:·2d7f1178bcfb0050087746a6a06dc1dd0c6e8c24bc63b353dc35fd98f05bee4b·...·]-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="0597787911-5">(</span><span·class="n">Z</span><span·class="p"·data-group-id="0597787911-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="8803677407-5">(</span><span·class="n">Z</span><span·class="p"·data-group-id="8803677407-5">)</span><span·class="p">,</span><span·class="w">
838 </span><span·class="nf">list_to_binary</span><span·class="p"·data-group-id="0597787911-6">(</span><span·class="p"·data-group-id="0597787911-7">[</span><span·class="n">B1</span><span·class="p">,</span><span·class="n">B2</span><span·class="p"·data-group-id="0597787911-7">]</span><span·class="p"·data-group-id="0597787911-6">)</span></code></pre>838 </span><span·class="nf">list_to_binary</span><span·class="p"·data-group-id="8803677407-6">(</span><span·class="p"·data-group-id="8803677407-7">[</span><span·class="n">B1</span><span·class="p">,</span><span·class="n">B2</span><span·class="p"·data-group-id="8803677407-7">]</span><span·class="p"·data-group-id="8803677407-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="3361740066-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="3361740066-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="8920187886-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="8920187886-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="3361740066-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="3361740066-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="8920187886-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="8920187886-2">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
1358 ··········</span><span·class="p"·data-group-id="3361740066-3">{</span><span·class="ss">&#39;EXIT&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="3361740066-4">{</span><span·class="p"·data-group-id="3361740066-5">{</span><span·class="ss">need_dictionary</span><span·class="p">,</span><sp[·...·truncated·by·diffoscope;·len:·244,·SHA:·0f7ea036116e835c4902aaf2f7b11ad05108603664b511c1e12fa400673400e7·...·]6-3">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">1358 ··········</span><span·class="p"·data-group-id="8920187886-3">{</span><span·class="ss">&#39;EXIT&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="8920187886-4">{</span><span·class="p"·data-group-id="8920187886-5">{</span><span·class="ss">need_dictionary</span><span·class="p">,</span><sp[·...·truncated·by·diffoscope;·len:·244,·SHA:·d0939981454c109bcbe337ac90863b231a8884ea89327fbdc0ce6c7de741f992·...·]6-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="3361740066-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="3361740066-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="8920187886-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="8920187886-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="3361740066-7">(</span><span·class="n">Z</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3361740066-8">[</span><span·class="p"·data-group-id="3361740066-8">]</span><span·class="p"·data-group-id="3361740066-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="8920187886-7">(</span><span·class="n">Z</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8920187886-8">[</span><span·class="p"·data-group-id="8920187886-8">]</span><span·class="p"·data-group-id="8920187886-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="3361740066-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="3361740066-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="8920187886-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="8920187886-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="3361740066-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="3361740066-11">[</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·299,·SHA:·9c23b560c161e62108872544fd5a215d4c3df4334abeccbf9853df09d0ed680e·...·]6-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="8920187886-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="8920187886-11">[</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·299,·SHA:·97724024cfbd3b6a9c815f21353c3b42db59b0f7e5b8b7fe5a2cb2c8898a570e·...·]6-10">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
1366 ········</span><span·class="p"·data-group-id="3361740066-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:·24,·SHA:·8972368160c24e137f640f44f589d807d690ad64b5edcf8ee85bae80f44f1d73·...·]6-13">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">1366 ········</span><span·class="p"·data-group-id="8920187886-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:·24,·SHA:·31edcd767bcab79330dbb90487237936d64507d1ac85079b51ed1fd741686cd9·...·]6-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="3361740066-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="3361740066-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="8920187886-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="8920187886-14">)</span><span·class="p">,</span><span·class="w">
1368 ············</span><span·class="p"·data-group-id="3361740066-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="3361740066-16">(</[·...·truncated·by·diffoscope;·len:·279,·SHA:·1362d418d102031f0990c90f1a9d1f7aed760ec87175c8a0181605975eae1d39·...·]6-15">]</span><span·class="p">;</span><span·class="w">1368 ············</span><span·class="p"·data-group-id="8920187886-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="8920187886-16">(</[·...·truncated·by·diffoscope;·len:·279,·SHA:·6bba151b1bf3b665e59ecedc0f757a7101ebf8df17be6575a3ad6630f2f2f1fd·...·]6-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="4696153369-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="4696153369-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="7837261681-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="7837261681-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="4696153369-2">(</span><span·class="p"·data-group-id="4696153369-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="7837261681-2">(</span><span·class="p"·data-group-id="7837261681-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="4696153369-3">(</span><span·class="n">Z</span><span·class="p"·data-group-id="4696153369-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="7837261681-3">(</span><span·class="n">Z</span><span·class="p"·data-group-id="7837261681-3">)</span><span·class="p">,</span><span·class="w">
1444 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="4696153369-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:·00aa21ad97cee4d1c6a705524a8d594ab64aec6e1cacd8581399cd20356c90d7·...·]-4">)</span><span·class="p">,</span><span·class="w">1444 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="7837261681-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:·2875644d9d0ad1ee6eaea26b3e0c9faf6f45f936cd30ea7573da973be2d2e5fa·...·]-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="4696153369-6">(</span><span·class="n">Z</span><span·class="p"·data-group-id="4696153369-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="7837261681-6">(</span><span·class="n">Z</span><span·class="p"·data-group-id="7837261681-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="4696153369-7">(</span><span·class="n">Z</span><span·class="p"·data-group-id="4696153369-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="7837261681-7">(</span><span·class="n">Z</span><span·class="p"·data-group-id="7837261681-7">)</span><span·class="p">.</span><span·class="w">
  
1447 </span><span·class="nf">loop</span><span·class="p"·data-group-id="4696153369-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="4696153369-9">{</span><span·class="ss">continue</span[·...·truncated·by·diffoscope;·len:·172,·SHA:·626443ebfa5cd1a81bc0e070b437210734293564d354b4d1e8a1c3908d098151·...·]-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="7837261681-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="7837261681-9">{</span><span·class="ss">continue</span[·...·truncated·by·diffoscope;·len:·172,·SHA:·d7cc8fa09807aa8b7b4a385f750bea7d3d0a1fe526732325812343ea23b06f49·...·]-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="4696153369-10">(</span><span·class="n">Output</span><span·class="p"·data-group-id="4696153369-10">)</span><span·class="p">,</span><span·class="w">1448 ····</span><span·class="n">Handler</span><span·class="p"·data-group-id="7837261681-10">(</span><span·class="n">Output</span><span·class="p"·data-group-id="7837261681-10">)</span><span·class="p">,</span><span·class="w">
1449 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="4696153369-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:·395cb31daf84050cc540ca92ed4e6783466a8648ccd170561a5f83c0f5b7b730·...·]-11">)</span><span·class="p">;</span><span·class="w">1449 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="7837261681-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:·112a257d52d4e4fa4d7564039f9adaf2eafadec4a1975a3a907238ac927ac11c·...·]-11">)</span><span·class="p">;</span><span·class="w">
1450 </span><span·class="nf">loop</span><span·class="p"·data-group-id="4696153369-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="4696153369-15">{</span><span·class="ss">finished</sp[·...·truncated·by·diffoscope;·len:·175,·SHA:·6c9b9028ba9b90bdb57cbca3ba44666b5e2fd607ce5012306004fe3a2ffa2f07·...·]-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="7837261681-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="7837261681-15">{</span><span·class="ss">finished</sp[·...·truncated·by·diffoscope;·len:·175,·SHA:·3fb2ec76d8d1e18f836dda6548e9e9adc13678e5e5ee65c26bc19ce353925729·...·]-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="4696153369-16">(</span><span·class="n">Output</span><span·class="p"·data-group-id="4696153369-16">)</span><span·class="p">.</span></code></pre>1451 ····</span><span·class="n">Handler</span><span·class="p"·data-group-id="7837261681-16">(</span><span·class="n">Output</span><span·class="p"·data-group-id="7837261681-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>
408 KB
./usr/share/doc/erlang-doc/html/lib/asn1-5.3.4/doc/html/asn1.epub
3.09 KB
zipinfo {}
    
Offset 1, 20 lines modifiedOffset 1, 20 lines modified
1 Zip·file·size:·97026·bytes,·number·of·entries:·181 Zip·file·size:·97020·bytes,·number·of·entries:·18
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Apr-18·13:59·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Apr-18·15:23·mimetype
3 ?rw-r--r--··6.1·unx······712·bx·defN·25-Apr-18·13:59·OEBPS/title.xhtml3 ?rw-r--r--··6.1·unx······712·bx·defN·25-Apr-18·15:23·OEBPS/title.xhtml
4 ?rw-r--r--··6.1·unx····91485·bx·defN·25-Apr-18·13:59·OEBPS/notes.xhtml4 ?rw-r--r--··6.1·unx····91485·bx·defN·25-Apr-18·15:23·OEBPS/notes.xhtml
5 ?rw-r--r--··6.1·unx·····1271·bx·defN·25-Apr-18·13:59·OEBPS/nav.xhtml5 ?rw-r--r--··6.1·unx·····1271·bx·defN·25-Apr-18·15:23·OEBPS/nav.xhtml
6 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Apr-18·13:59·OEBPS/dist/epub-erlang-ESPT6BQV.css6 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Apr-18·15:23·OEBPS/dist/epub-erlang-ESPT6BQV.css
7 ?rw-r--r--··6.1·unx······499·bx·defN·25-Apr-18·13:59·OEBPS/dist/epub-LSJCIYTM.js7 ?rw-r--r--··6.1·unx······499·bx·defN·25-Apr-18·15:23·OEBPS/dist/epub-LSJCIYTM.js
8 ?rw-r--r--··6.1·unx·····2280·bx·defN·25-Apr-18·13:59·OEBPS/content.opf8 ?rw-r--r--··6.1·unx·····2280·bx·defN·25-Apr-18·15:23·OEBPS/content.opf
9 ?rw-r--r--··6.1·unx·····2920·bx·stor·25-Apr-18·13:59·OEBPS/assets/selective_Window2.gif9 ?rw-r--r--··6.1·unx·····2920·bx·stor·25-Apr-18·15:23·OEBPS/assets/selective_Window2.gif
10 ?rw-r--r--··6.1·unx·····4465·bx·stor·25-Apr-18·13:59·OEBPS/assets/selective_TypeList.gif10 ?rw-r--r--··6.1·unx·····4465·bx·stor·25-Apr-18·15:23·OEBPS/assets/selective_TypeList.gif
11 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Apr-18·13:59·OEBPS/assets/logo.png11 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Apr-18·15:23·OEBPS/assets/logo.png
12 ?rw-r--r--··6.1·unx·····1340·bx·stor·25-Apr-18·13:59·OEBPS/assets/exclusive_Win_But.gif12 ?rw-r--r--··6.1·unx·····1340·bx·stor·25-Apr-18·15:23·OEBPS/assets/exclusive_Win_But.gif
13 ?rw-r--r--··6.1·unx····29673·bx·defN·25-Apr-18·13:59·OEBPS/asn1ct.xhtml13 ?rw-r--r--··6.1·unx····29673·bx·defN·25-Apr-18·15:23·OEBPS/asn1ct.xhtml
14 ?rw-r--r--··6.1·unx····72980·bx·defN·25-Apr-18·13:59·OEBPS/asn1_spec.xhtml14 ?rw-r--r--··6.1·unx····72980·bx·defN·25-Apr-18·15:23·OEBPS/asn1_spec.xhtml
15 ?rw-r--r--··6.1·unx·····1403·bx·defN·25-Apr-18·13:59·OEBPS/asn1_overview.xhtml15 ?rw-r--r--··6.1·unx·····1403·bx·defN·25-Apr-18·15:23·OEBPS/asn1_overview.xhtml
16 ?rw-r--r--··6.1·unx·····3296·bx·defN·25-Apr-18·13:59·OEBPS/asn1_introduction.xhtml16 ?rw-r--r--··6.1·unx·····3296·bx·defN·25-Apr-18·15:23·OEBPS/asn1_introduction.xhtml
17 ?rw-r--r--··6.1·unx···134453·bx·defN·25-Apr-18·13:59·OEBPS/asn1_getting_started.xhtml17 ?rw-r--r--··6.1·unx···134453·bx·defN·25-Apr-18·15:23·OEBPS/asn1_getting_started.xhtml
18 ?rw-r--r--··6.1·unx······252·bx·defN·25-Apr-18·13:59·META-INF/container.xml18 ?rw-r--r--··6.1·unx······252·bx·defN·25-Apr-18·15:23·META-INF/container.xml
19 ?rw-r--r--··6.1·unx······162·bx·defN·25-Apr-18·13:59·META-INF/com.apple.ibooks.display-options.xml19 ?rw-r--r--··6.1·unx······162·bx·defN·25-Apr-18·15:23·META-INF/com.apple.ibooks.display-options.xml
20 18·files,·367610·bytes·uncompressed,·93796·bytes·compressed:··74.5%20 18·files,·367610·bytes·uncompressed,·93790·bytes·compressed:··74.5%
97.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,·Apr·18·2025·13:59: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,·Apr·18·2025·15:23:54,·uncompressed·size·20,·method=store
2.76 KB
OEBPS/notes.xhtml
    
Offset 46, 15 lines modifiedOffset 46, 15 lines modified
46 </h3>46 </h3>
47 <ul><li><p>The·JER·backend·will·now·include·the·SIZE·constraint·in·the·type·info·for·OCTET·STRINGs,·and·a·SIZE·constraint·with·a·range·will·now·be·included·for·BIT·STRINGs.·This·does·not·change·the·actual·encoding·or·decoding·of·JER,·but·can·be·useful·for·tools.</p><p>Own·Id:·OTP-19542·Aux·Id:·ERIERL-1204,·<a·href="https://github.com/erlang/otp/pull/9588"·title="">PR-9588</a></p></li></ul><h3·id="improvements-and-new-features"·class="section-heading">47 <ul><li><p>The·JER·backend·will·now·include·the·SIZE·constraint·in·the·type·info·for·OCTET·STRINGs,·and·a·SIZE·constraint·with·a·range·will·now·be·included·for·BIT·STRINGs.·This·does·not·change·the·actual·encoding·or·decoding·of·JER,·but·can·be·useful·for·tools.</p><p>Own·Id:·OTP-19542·Aux·Id:·ERIERL-1204,·<a·href="https://github.com/erlang/otp/pull/9588"·title="">PR-9588</a></p></li></ul><h3·id="improvements-and-new-features"·class="section-heading">
48 ··<a·href="#improvements-and-new-features"·class="hover-link">48 ··<a·href="#improvements-and-new-features"·class="hover-link">
49 ····<i·class="ri-link-m"·aria-hidden="true"></i>49 ····<i·class="ri-link-m"·aria-hidden="true"></i>
50 ··</a>50 ··</a>
51 ··<span·class="text">Improvements·and·New·Features</span>51 ··<span·class="text">Improvements·and·New·Features</span>
52 </h3>52 </h3>
53 <ul><li><p>When·using·the·JSON·encoding·rules,·it·is·now·possible·to·call·the·decode/2·function·in·the·following·way·with·data·that·has·already·been·decoded·by·json:decode/1:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">SomeModule</span><span·class="p">:</span><span·class="nf">decode</span><span·class="p"·data-group-id="5447505024-1">(</span><span·class="n">Type</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5447505024-2">{</span><span·class="ss">json_decoded</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Decode[·...·truncated·by·diffoscope;·len:·102,·SHA:·a302443e481e4cbdac460a9046aa5cab6ccb7911057c605c6f7a7c621c50fbe5·...·]-1">)</span><span·class="p">.</span></code></pre><p>Own·Id:·OTP-19547·Aux·Id:·ERIERL-1206,·<a·href="https://github.com/erlang/otp/pull/9611"·title="">PR-9611</a></p></li></ul><h2·id="asn1-5-3-2"·class="section-heading">53 <ul><li><p>When·using·the·JSON·encoding·rules,·it·is·now·possible·to·call·the·decode/2·function·in·the·following·way·with·data·that·has·already·been·decoded·by·json:decode/1:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">SomeModule</span><span·class="p">:</span><span·class="nf">decode</span><span·class="p"·data-group-id="4642228731-1">(</span><span·class="n">Type</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4642228731-2">{</span><span·class="ss">json_decoded</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Decode[·...·truncated·by·diffoscope;·len:·102,·SHA:·6320d9717b761a08b911c7e36a4c5ca8a9360e7ab4d89a4679b902b818f642a4·...·]-1">)</span><span·class="p">.</span></code></pre><p>Own·Id:·OTP-19547·Aux·Id:·ERIERL-1206,·<a·href="https://github.com/erlang/otp/pull/9611"·title="">PR-9611</a></p></li></ul><h2·id="asn1-5-3-2"·class="section-heading">
54 ··<a·href="#asn1-5-3-2"·class="hover-link">54 ··<a·href="#asn1-5-3-2"·class="hover-link">
55 ····<i·class="ri-link-m"·aria-hidden="true"></i>55 ····<i·class="ri-link-m"·aria-hidden="true"></i>
56 ··</a>56 ··</a>
57 ··<span·class="text">Asn1·5.3.2</span>57 ··<span·class="text">Asn1·5.3.2</span>
58 </h2>58 </h2>
59 <h3·id="fixed-bugs-and-malfunctions-2"·class="section-heading">59 <h3·id="fixed-bugs-and-malfunctions-2"·class="section-heading">
60 ··<a·href="#fixed-bugs-and-malfunctions-2"·class="hover-link">60 ··<a·href="#fixed-bugs-and-malfunctions-2"·class="hover-link">
2.36 KB
OEBPS/content.opf
2.33 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="7028871502-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="7028871502-1">}</samp><samp·class="w">·</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·class="nc">asn1ct</samp><samp·class="p">:</samp><samp·class="nf">value</samp><samp·class="p"·data-group-id="7028871502-2">(</samp><samp·class="n">Module</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Type</samp><samp·class="p"·data-group-id="7028871502-2">)</samp><samp·class="p">,</samp><samp·class="w"> 
372 </samp><samp·class="p"·data-group-id="7028871502-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="7028871502-3">}</samp><samp·class="w">·</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·class="n">Module</samp><samp·class="p">:</samp><samp·class="nf">encode</samp><samp·class="p"·data-group-id="7028871502-4">(</samp><samp·class="n">Type</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Value</samp><samp·class="p"·data-group-id="7028871502-4">)</samp><samp·class="p">,</samp><samp·class="w"> 
373 </samp><samp·class="p"·data-group-id="7028871502-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="7028871502-5">}</samp><samp·class="w">·</samp><samp·class="o">=[·...·truncated·by·diffoscope;·len:·494,·SHA:·692b83fdbdaf74080fe9a8ed6906abdd0b40d82bb9a7c515b57791cda7f484b3·...·]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">Mo[·...·truncated·by·diffoscope;·len:·1033,·SHA:·41e5d2d456062505645501a9103a89db088df347f76bd97335abfc65989926b5·...·]
 372 </samp><samp·class="p"·data-group-id="0277615498-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="0277615498-3">}</samp><samp·class="w">·</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·class="n">Module</samp><samp·class="p">:</samp><samp·class="nf">encode</samp><samp·class="p"·data-group-id="0277615498-4">(</samp><samp·class="n">Type</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Value</samp><samp·class="p"·data-group-id="0277615498-4">)</samp><samp·class="p">,</samp><samp·class="w">
 373 </samp><samp·class="p"·data-group-id="0277615498-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="0277615498-5">}</samp><samp·class="w">·</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·class="n">Module</samp><samp·class="p">:</samp><samp·class="nf">decode</samp><samp·class="p"·data-group-id="0277615498-6">(</samp><samp·class="n">Type</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Bytes</samp><samp·class="p"·data-group-id="0277615498-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
179 KB
OEBPS/asn1_getting_started.xhtml
Max HTML report size reached
179 KB
./usr/share/doc/erlang-doc/html/lib/asn1-5.3.4/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="8933363362-1">(</span><span·class="s">&quot;People&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8933363362-2">[</span><span·class="ss">ber</span><span·class="p"·data-group-id="8933363362-2">]</span><span·class=[·...·truncated·by·diffoscope;·len:·29,·SHA:·a54e3f1c34ae350c0019aa50e7742a4160820ccbec2ddb294c05313659667688·...·]-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="1271478616-1">(</span><span·class="s">&quot;People&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1271478616-2">[</span><span·class="ss">ber</span><span·class="p"·data-group-id="1271478616-2">]</span><span·class=[·...·truncated·by·diffoscope;·len:·29,·SHA:·b70801138e24b6d5df418ded198a55d2ee2da40ed290536b5b0d3ed1eb546a29·...·]-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="6327172478-1">(</span><span·class="s">&quot;People&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6327172478-2">[</span><span·class="ss">ber</span><span·class="p">,</span><span·class="ss">verbose</span><span·clas[·...·truncated·by·diffoscope;·len:·84,·SHA:·0e38ffd6bd847d0048746917b9d69c44fb02534f8580f16a0eb7d19ba96988b5·...·]-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="3546073593-1">(</span><span·class="s">&quot;People&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3546073593-2">[</span><span·class="ss">ber</span><span·class="p">,</span><span·class="ss">verbose</span><span·clas[·...·truncated·by·diffoscope;·len:·84,·SHA:·9acf2ec8de15a6489b561831d047aa3a2cf621f2c77dc47cac2949ba7f85975a·...·]-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="6327172478-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="6327172478-3">}</span><span·class="o">--</span><span·class="w">149 </span><span·class="o">--</span><span·class="p"·data-group-id="3546073593-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="3546073593-3">}</span><span·class="o">--</span><span·class="w">
150 </span><span·class="o">--</span><span·class="p"·data-group-id="6327172478-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="6327172478-4">}</span><span·class="o">--</span><span·class="w">150 </span><span·class="o">--</span><span·class="p"·data-group-id="3546073593-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="3546073593-4">}</span><span·class="o">--</span><span·class="w">
151 </span><span·class="o">--</span><span·class="p"·data-group-id="6327172478-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="6327172478-5">}</span><span·class="o">--</span><span·class="w">151 </span><span·class="o">--</span><span·class="p"·data-group-id="3546073593-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="3546073593-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="5884485481-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:·705fc38d81c5d4c324666b8e030b257c1b5579bd201f68f38947d1340c29d63c·...·]-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="9566540186-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:·32966026962e907703fd0c30e3911f121f7a82d9df3a4e761e779385b625c9a0·...·]-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="8806313149-1">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="p"·data-group-id="8806313149-2">{</span><span·class="ss">data</span><span·class="p">,</span><span·class="n">Bytes</span><span·class="p"·data-group-id="8806313149-2">}</sp[·...·truncated·by·diffoscope;·len:·43,·SHA:·8ec5b35c2d6ab1e7169f480b24b78315bbc216a6f01f1617b0d3445ca1cfa42f·...·]9-1">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">157 ···</span><span·class="p"·data-group-id="4652751499-1">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="p"·data-group-id="4652751499-2">{</span><span·class="ss">data</span><span·class="p">,</span><span·class="n">Bytes</span><span·class="p"·data-group-id="4652751499-2">}</sp[·...·truncated·by·diffoscope;·len:·43,·SHA:·47d1628f20c4a2c049df24fe3720cf2a17d960f6c7e5aa95a0ce02646b070d54·...·]9-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="8806313149-3">(</span><span·class="ss">&#39;Person&#39;</span><span·class="p">,</span><span·class="n">Bytes</span><span·class="p"·data-group-id="8806313149-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="4652751499-3">(</span><span·class="ss">&#39;Person&#39;</span><span·class="p">,</span><span·class="n">Bytes</span><span·class="p"·data-group-id="4652751499-3">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
159 ···········</span><span·class="p"·data-group-id="8806313149-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">P</span><span·class="p"·data-group-id="8806313149-4">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">159 ···········</span><span·class="p"·data-group-id="4652751499-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">P</span><span·class="p"·data-group-id="4652751499-4">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
160 ···············</span><span·class="p"·data-group-id="8806313149-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Answer</span><span·class="p"·data-group-id="8806313149-5">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">&#39;People&#[·...·truncated·by·diffoscope;·len:·384,·SHA:·5f09d60ad941cc614f0412544446914e87160fc30ee45b461a021ce408b0f36f·...·]9-6">)</span><span·class="p">,</span><span·class="w">160 ···············</span><span·class="p"·data-group-id="4652751499-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Answer</span><span·class="p"·data-group-id="4652751499-5">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">&#39;People&#[·...·truncated·by·diffoscope;·len:·384,·SHA:·22eadf79d7bfdea304bfa014486d838b5f02b9d5967116fc79594c3d9b424b38·...·]9-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="8806313149-8">{</span><span·class="nf">self</span><span·class="p"·data-group-id="8806313149-9">(</span><span·class="p"·data-group-id="8806313149-9">)</span><span·class="p">,</span><span·class="p"·data-group-id="8806313149-10">{</span><span·class="ss">comma[·...·truncated·by·diffoscope;·len:·156,·SHA:·d311b50e3022709534b68a3fccf9286fa61d44a1b695e9dc1883bbbbbf4d32b3·...·]9-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="4652751499-8">{</span><span·class="nf">self</span><span·class="p"·data-group-id="4652751499-9">(</span><span·class="p"·data-group-id="4652751499-9">)</span><span·class="p">,</span><span·class="p"·data-group-id="4652751499-10">{</span><span·class="ss">comma[·...·truncated·by·diffoscope;·len:·156,·SHA:·293cec2df9bead0a24b55a124e69869eeaffac4f968f7e53a1fff59df19b8173·...·]9-8">}</span><span·class="p">;</span><span·class="w">
162 ···········</span><span·class="p"·data-group-id="8806313149-11">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="n">Reason</span><span·class="p"·data-group-id="8806313149-11">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">162 ···········</span><span·class="p"·data-group-id="4652751499-11">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="n">Reason</span><span·class="p"·data-group-id="4652751499-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="8806313149-12">(</span><span·class="p"·data-group-id="8806313149-13">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="n">Reason</span><span·class="p"·data-group-id="8806313149-13">}</span><span·class="p"·data-group-id="8806313149-12">)</span><span·class="w">163 ···············</span><span·class="nf">exit</span><span·class="p"·data-group-id="4652751499-12">(</span><span·class="p"·data-group-id="4652751499-13">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="n">Reason</span><span·class="p"·data-group-id="4652751499-13">}</span><span·class="p"·data-group-id="4652751499-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="8973194100-1">{</span><span·class="ss">&#39;Person&#39;</span><span·class="p">,</span><span·class="s">&quot;Some·Name&quot;</span><span·class="p">,</span><span·class="ss">roving</span><span·class="p">,</span><span·class="mi">50</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·18,·SHA:·a6aa7aaf9d8927959b197f91ab6e5ef1212324c746fff82d0f0b125d6c3b7ce3·...·]-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="8812044007-1">{</span><span·class="ss">&#39;Person&#39;</span><span·class="p">,</span><span·class="s">&quot;Some·Name&quot;</span><span·class="p">,</span><span·class="ss">roving</span><span·class="p">,</span><span·class="mi">50</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·18,·SHA:·7b6681f21a8434808a7930dc5c1b025b7737b0e4f30f17cb836a0aac92644aa1·...·]-1">}</span><span·class="p">.</span><span·class="w">
171 </span><span·class="p"·data-group-id="8973194100-2">{</span><span·class="ss">&#39;Person&#39;</span><span·class="p">,</span><span·class="s">&quot;Some·Name&quot;</span><span·class="p">,</span><span·class="ss">roving</span><span·class="p">,</span><span·class="mi">50</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·18,·SHA:·a6aa7aaf9d8927959b197f91ab6e5ef1212324c746fff82d0f0b125d6c3b7ce3·...·]-2">}</span><span·class="gp·unselectable">171 </span><span·class="p"·data-group-id="8812044007-2">{</span><span·class="ss">&#39;Person&#39;</span><span·class="p">,</span><span·class="s">&quot;Some·Name&quot;</span><span·class="p">,</span><span·class="ss">roving</span><span·class="p">,</span><span·class="mi">50</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·18,·SHA:·7b6681f21a8434808a7930dc5c1b025b7737b0e4f30f17cb836a0aac92644aa1·...·]-2">}</span><span·class="gp·unselectable">
172 3&gt;·</span><span·class="p"·data-group-id="8973194100-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Bin</span><span·class="p"·data-group-id="8973194100-3">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">&#39;People&#39;<[·...·truncated·by·diffoscope;·len:·249,·SHA:·551ce7a3b72eb7b65b774af004864d134924540a7bdacb07f35d0c327f21820d·...·]-4">)</span><span·class="p">.</span><span·class="w">172 3&gt;·</span><span·class="p"·data-group-id="8812044007-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Bin</span><span·class="p"·data-group-id="8812044007-3">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">&#39;People&#39;<[·...·truncated·by·diffoscope;·len:·249,·SHA:·78ac9f4dcfddf66898fe73a41ac8cc2478f39b269337a008237b73773635b9dc·...·]-4">)</span><span·class="p">.</span><span·class="w">
173 </span><span·class="p"·data-group-id="8973194100-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="8973194100-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="8812044007-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="8812044007-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="8973194100-6">&gt;&gt;</span><span·class="p"·data-group-id="8973194100-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="8812044007-6">&gt;&gt;</span><span·class="p"·data-group-id="8812044007-5">}</span><span·class="gp·unselectable">
175 4&gt;·</span><span·class="p"·data-group-id="8973194100-7">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Person</span><span·class="p"·data-group-id="8973194100-7">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">&#39;People&#3[·...·truncated·by·diffoscope;·len:·247,·SHA:·f90e6304151c7639c40e9f3a862c0eae2c042376cf46b94cc9f10f2b429148e7·...·]-8">)</span><span·class="p">.</span><span·class="w">175 4&gt;·</span><span·class="p"·data-group-id="8812044007-7">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Person</span><span·class="p"·data-group-id="8812044007-7">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">&#39;People&#3[·...·truncated·by·diffoscope;·len:·247,·SHA:·1f810ee09a7576d2bdd68f19f23134f11a5b0975791bf0ecc02c05b4921b759b·...·]-8">)</span><span·class="p">.</span><span·class="w">
176 </span><span·class="p"·data-group-id="8973194100-9">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="8973194100-10">{</span><span·class="ss">&#39;Person&#39;</span><span·class="p">,</span><span·class="s">&quot;Some·Name&quot;</span><span·class="p">,</span[·...·truncated·by·diffoscope;·len:·176,·SHA:·7d51d972fbd06fbc8fef700f2d73f668630278108d0ca42f603574d584606f9c·...·]-9">}</span></code></pre><h3·id="module-dependencies"·class="section-heading">176 </span><span·class="p"·data-group-id="8812044007-9">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="8812044007-10">{</span><span·class="ss">&#39;Person&#39;</span><span·class="p">,</span><span·class="s">&quot;Some·Name&quot;</span><span·class="p">,</span[·...·truncated·by·diffoscope;·len:·176,·SHA:·f7cda4dfb3937a73075f7ba0346a7aca7bd0b5083f8f88230f869cbfaf2dee87·...·]-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 240, 24 lines modifiedOffset 240, 24 lines modified
240 ··<a·href="#special-decode-functionality-for-json-encoding-rules-jer"·class="hover-link">240 ··<a·href="#special-decode-functionality-for-json-encoding-rules-jer"·class="hover-link">
241 ····<i·class="ri-link-m"·aria-hidden="true"></i>241 ····<i·class="ri-link-m"·aria-hidden="true"></i>
242 ··</a>242 ··</a>
243 ··<span·class="text">Special·Decode·Functionality·for·JSON·Encoding·Rules·(JER)</span>243 ··<span·class="text">Special·Decode·Functionality·for·JSON·Encoding·Rules·(JER)</span>
244 </h3>244 </h3>
245 <p>When·using·the·JSON·encoding·rules,·it·is·possible·to·call·the245 <p>When·using·the·JSON·encoding·rules,·it·is·possible·to·call·the
246 <code·class="inline">decode/2</code>·function·in·the·following·way·with·data·that·has·already246 <code·class="inline">decode/2</code>·function·in·the·following·way·with·data·that·has·already
247 been·decoded·by·<a·href="../../../../lib/stdlib-6.2.2/doc/html/json.html#decode/1"><code·class="inline">json:decode/1</code></a>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">SomeModule</span><span·class="p">:</span><span·class="nf">decode</span><span·class="p"·data-group-id="1800960906-1">(</span><span·class="n">Type</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1800960906-2">{</span><span·class="ss">json_decoded</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Decode[·...·truncated·by·diffoscope;·len:·658,·SHA:·0b668c12d4da7d6aa637a4d45e1044b852f06de13bcbff44ef03a913c829dfa3·...·]-1">)</span><span·class="p">.</span><span·class="w">247 been·decoded·by·<a·href="../../../../lib/stdlib-6.2.2/doc/html/json.html#decode/1"><code·class="inline">json:decode/1</code></a>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">SomeModule</span><span·class="p">:</span><span·class="nf">decode</span><span·class="p"·data-group-id="7281607931-1">(</span><span·class="n">Type</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7281607931-2">{</span><span·class="ss">json_decoded</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Decode[·...·truncated·by·diffoscope;·len:·658,·SHA:·e68a70c4e4abfdfd61870a1907424e54ddc9c4cae0e0d63d6df98d2421b79996·...·]-1">)</span><span·class="p">.</span><span·class="w">
248 </span><span·class="ss">ok</span><span·class="gp·unselectable">248 </span><span·class="ss">ok</span><span·class="gp·unselectable">
249 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="7053758556-3">{</span><span·class="ss">&#39;Person&#39;</span><span·class="p">,</span><span·class="s">&quot;Vince·Eclipse&quot;</span><span·class="p">,</span><span·class="ss">roving</span><span·class="p">,</span><span·class="mi">50</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·c3f2fb28cfa5d25b23f3bd642c1754a27facfa4faff3e91624c4f8128d84e4bb·...·]-3">}</span><span·class="p">.</span><span·class="w">249 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="5941130362-3">{</span><span·class="ss">&#39;Person&#39;</span><span·class="p">,</span><span·class="s">&quot;Vince·Eclipse&quot;</span><span·class="p">,</span><span·class="ss">roving</span><span·class="p">,</span><span·class="mi">50</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·50d86b8cb87df9368cfd581b2c7803917443293e1423102b3221ac69724aeb92·...·]-3">}</span><span·class="p">.</span><span·class="w">
250 </span><span·class="p"·data-group-id="7053758556-4">{</span><span·class="ss">&#39;Person&#39;</span><span·class="p">,</span><span·class="s">&quot;Vince·Eclipse&quot;</span><span·class="p">,</span><span·class="ss">roving</span><span·class="p">,</span><span·class="mi">50</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·c3f2fb28cfa5d25b23f3bd642c1754a27facfa4faff3e91624c4f8128d84e4bb·...·]-4">}</span><span·class="gp·unselectable">250 </span><span·class="p"·data-group-id="5941130362-4">{</span><span·class="ss">&#39;Person&#39;</span><span·class="p">,</span><span·class="s">&quot;Vince·Eclipse&quot;</span><span·class="p">,</span><span·class="ss">roving</span><span·class="p">,</span><span·class="mi">50</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·50d86b8cb87df9368cfd581b2c7803917443293e1423102b3221ac69724aeb92·...·]-4">}</span><span·class="gp·unselectable">
251 3&gt;·</span><span·class="p"·data-group-id="7053758556-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Bin</span><span·class="p"·data-group-id="7053758556-5">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">&#39;People&#39;[·...·truncated·by·diffoscope;·len:·274,·SHA:·2d5c63b36e7f4872a249910514001a3fd8c87e7af8e34eae81fc46cf1441a771·...·]-6">)</span><span·class="p">.</span><span·class="w">251 3&gt;·</span><span·class="p"·data-group-id="5941130362-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Bin</span><span·class="p"·data-group-id="5941130362-5">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">&#39;People&#39;[·...·truncated·by·diffoscope;·len:·274,·SHA:·a94d19e1b0b0b2001cea2ead4f3426fd4a195a46ce8f744d1a01c0fd1cda1615·...·]-6">)</span><span·class="p">.</span><span·class="w">
252 </span><span·class="p"·data-group-id="7053758556-7">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="7053758556-8">&lt;&lt;</span><span·class="s">&quot;{\&quot;name\&quot;:\&quot;Vince·Eclipse\&quot;,\&quot;location\&quot;:2,\&quot;age\&quot;:50}&quot;</[·...·truncated·by·diffoscope;·len:·106,·SHA:·06d3b64b0fac5957a1fb7955d157ba86d7de20ca89124d16090e29df996b0cb0·...·]-7">}</span><span·class="gp·unselectable">252 </span><span·class="p"·data-group-id="5941130362-7">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="5941130362-8">&lt;&lt;</span><span·class="s">&quot;{\&quot;name\&quot;:\&quot;Vince·Eclipse\&quot;,\&quot;location\&quot;:2,\&quot;age\&quot;:50}&quot;</[·...·truncated·by·diffoscope;·len:·106,·SHA:·bfd5520c6e7b01fa932ee718bb8cb6e520b1b8ed58744d14fb00bf518878d9fb·...·]-7">}</span><span·class="gp·unselectable">
253 4&gt;·</span><span·class="nc">&#39;People&#39;</span><span·class="p">:</span><span·class="nf">decode</span><span·class="p"·data-group-id="7053758556-9">(</span><span·class="ss">&#39;Person&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Bin</span><span·class="p"·data-group-id="7053758556-9">)</span><span·class="p">.</span><span·class="w">253 4&gt;·</span><span·class="nc">&#39;People&#39;</span><span·class="p">:</span><span·class="nf">decode</span><span·class="p"·data-group-id="5941130362-9">(</span><span·class="ss">&#39;Person&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Bin</span><span·class="p"·data-group-id="5941130362-9">)</span><span·class="p">.</span><span·class="w">
254 </span><span·class="p"·data-group-id="7053758556-10">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="7053758556-11">{</span><span·class="ss">&#39;Person&#39;</span><span·class="p">,</span><span·class="s">&quot;Vince·Eclipse&quot;</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·182,·SHA:·daabd6c87826ba238c78f46cff115fb62276112e0b827731ddf7291b78d3acce·...·]-10">}</span><span·class="gp·unselectable">254 </span><span·class="p"·data-group-id="5941130362-10">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="5941130362-11">{</span><span·class="ss">&#39;Person&#39;</span><span·class="p">,</span><span·class="s">&quot;Vince·Eclipse&quot;</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·182,·SHA:·70640f553f96be88742f6bb1b105205046f51e85e2e5fcaf98e9548ea7ec2e46·...·]-10">}</span><span·class="gp·unselectable">
255 5&gt;·</span><span·class="nc">&#39;People&#39;</span><span·class="p">:</span><span·class="nf">decode</span><span·class="p"·data-group-id="7053758556-12">(</span><span·class="ss">&#39;Person&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7053758556-13">{</span><span·class="ss">json_decoded</span><span·class="p">,</span><span·class="nc">json</span><sp[·...·truncated·by·diffoscope;·len:·280,·SHA:·156e8dad57a10458170fe0037aee79b1a27a300fe919eaaf3fbc41138f867525·...·]-12">)</span><span·class="p">.</span><span·class="w">255 5&gt;·</span><span·class="nc">&#39;People&#39;</span><span·class="p">:</span><span·class="nf">decode</span><span·class="p"·data-group-id="5941130362-12">(</span><span·class="ss">&#39;Person&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5941130362-13">{</span><span·class="ss">json_decoded</span><span·class="p">,</span><span·class="nc">json</span><sp[·...·truncated·by·diffoscope;·len:·280,·SHA:·c6a5dff89fe3891aab982ba0aaa215335103bc27c75be45304e8adab6d82ce71·...·]-12">)</span><span·class="p">.</span><span·class="w">
256 </span><span·class="p"·data-group-id="7053758556-15">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="7053758556-16">{</span><span·class="ss">&#39;Person&#39;</span><span·class="p">,</span><span·class="s">&quot;Vince·Eclipse&quot;</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·182,·SHA:·aa05f5f2f17279e2d80384849f7620a5a66564d5d59798dcfc88eafe39c86ec5·...·]-15">}</span><span·class="w">256 </span><span·class="p"·data-group-id="5941130362-15">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="5941130362-16">{</span><span·class="ss">&#39;Person&#39;</span><span·class="p">,</span><span·class="s">&quot;Vince·Eclipse&quot;</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·182,·SHA:·674b72fee772ffd41e34422f5a0b862cc67fae28344772d8f386d8ef4c3fcdec·...·]-15">}</span><span·class="w">
257 </span></code></pre><h3·id="errors"·class="section-heading">257 </span></code></pre><h3·id="errors"·class="section-heading">
258 ··<a·href="#errors"·class="hover-link">258 ··<a·href="#errors"·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">Errors</span>261 ··<span·class="text">Errors</span>
262 </h3>262 </h3>
263 <p>Errors·detected·at·compile-time·are·displayed·on·the·screen·together·with·line263 <p>Errors·detected·at·compile-time·are·displayed·on·the·screen·together·with·line
Offset 285, 35 lines modifiedOffset 285, 35 lines modified
285 ··</a>285 ··</a>
286 ··<span·class="text">Note·about·tags</span>286 ··<span·class="text">Note·about·tags</span>
287 </h2>287 </h2>
288 <p>Tags·used·to·be·important·for·all·users·of·ASN.1,·because·it·was·necessary·to288 <p>Tags·used·to·be·important·for·all·users·of·ASN.1,·because·it·was·necessary·to
289 to·manually·add·tags·to·certain·constructs·in·order·for·the·ASN.1·specification·to289 to·manually·add·tags·to·certain·constructs·in·order·for·the·ASN.1·specification·to
290 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">290 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">
291 </span><span·class="n">BEGIN</span><span·class="w">291 </span><span·class="n">BEGIN</span><span·class="w">
292 ··</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="5888398674-1">{</span><span·class="w">·</span><span·class="ss">cheese</span><span·class="w">·</span><span·class="p"·data-group-id="5888398674-2">[</span><span·class="mi">0</span><span·class="p"·data-group-id="5888398674-2">]</span><span·class="w">·</span><span·class="n">IA5String</span><span·class="p">,</span><span·class="w">292 ··</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="6415878324-1">{</span><span·class="w">·</span><span·class="ss">cheese</span><span·class="w">·</span><span·class="p"·data-group-id="6415878324-2">[</span><span·class="mi">0</span><span·class="p"·data-group-id="6415878324-2">]</span><span·class="w">·</span><span·class="n">IA5String</span><span·class="p">,</span><span·class="w">
293 ······················</span><span·class="ss">dessert</span><span·class="w">·</span><span·class="p"·data-group-id="5888398674-3">[</span><span·class="mi">1</span><span·class="p"·data-group-id="5888398674-3">]</span><span·class="w">·</span><span·class="n">IA5String</span><span·class="w">·</span><span·class="p"·data-group-id="5888398674-1">}</span><span·class="w">293 ······················</span><span·class="ss">dessert</span><span·class="w">·</span><span·class="p"·data-group-id="6415878324-3">[</span><span·class="mi">1</span><span·class="p"·data-group-id="6415878324-3">]</span><span·class="w">·</span><span·class="n">IA5String</span><span·class="w">·</span><span·class="p"·data-group-id="6415878324-1">}</span><span·class="w">
294 </span><span·class="n">END</span></code></pre><p>Without·the·tags·(the·numbers·in·square·brackets)·the·ASN.1·compiler·refused·to294 </span><span·class="n">END</span></code></pre><p>Without·the·tags·(the·numbers·in·square·brackets)·the·ASN.1·compiler·refused·to
295 compile·the·file.</p><p>In·1994·the·global·tagging·mode·<code·class="inline">AUTOMATIC·TAGS</code>·was·introduced.·By·putting295 compile·the·file.</p><p>In·1994·the·global·tagging·mode·<code·class="inline">AUTOMATIC·TAGS</code>·was·introduced.·By·putting
296 <code·class="inline">AUTOMATIC·TAGS</code>·in·the·module·header,·the·ASN.1·compiler·automatically·adds296 <code·class="inline">AUTOMATIC·TAGS</code>·in·the·module·header,·the·ASN.1·compiler·automatically·adds
297 tags·when·needed.·The·following·is·the·same·specification·in·<code·class="inline">AUTOMATIC·TAGS</code>297 tags·when·needed.·The·following·is·the·same·specification·in·<code·class="inline">AUTOMATIC·TAGS</code>
298 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">298 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">
299 </span><span·class="n">BEGIN</span><span·class="w">299 </span><span·class="n">BEGIN</span><span·class="w">
300 ··</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="5779074220-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">300 ··</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="6207577318-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">
301 ······················</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="5779074220-1">}</span><span·class="w">301 ······················</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="6207577318-1">}</span><span·class="w">
302 </span><span·class="n">END</span></code></pre><p><a·href=""·id="ASN1Types"></a></p><h2·id="asn-1-types"·class="section-heading">302 </span><span·class="n">END</span></code></pre><p><a·href=""·id="ASN1Types"></a></p><h2·id="asn-1-types"·class="section-heading">
303 ··<a·href="#asn-1-types"·class="hover-link">303 ··<a·href="#asn-1-types"·class="hover-link">
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">ASN.1·Types</span>306 ··<span·class="text">ASN.1·Types</span>
307 </h2>307 </h2>
308 <p>This·section·describes·the·ASN.1·types·including·their·functionality,·purpose,308 <p>This·section·describes·the·ASN.1·types·including·their·functionality,·purpose,
309 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,·as309 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
310 described·in·the·following·sections.·Users·must·provide·these·values·for310 described·in·the·following·sections.·Users·must·provide·these·values·for
311 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">311 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">
312 </span><span·class="p"·data-group-id="6460117934-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Bytes</span><span·class="p"·data-group-id="6460117934-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:·3ed9f13b5a9b10e9d99d76f16aaa6420f4a411fcdfaf9b6d8b6f2cd545ffeeb8·...·]-2">)</span><span·class="p">,</span></code></pre><h3·id="boolean"·class="section-heading">312 </span><span·class="p"·data-group-id="1460996557-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Bytes</span><span·class="p"·data-group-id="1460996557-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:·b124532f736a01a54eff26806f97fe0bba1de33262cfe73278d801ea78c769d8·...·]-2">)</span><span·class="p">,</span></code></pre><h3·id="boolean"·class="section-heading">
313 ··<a·href="#boolean"·class="hover-link">313 ··<a·href="#boolean"·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">BOOLEAN</span>316 ··<span·class="text">BOOLEAN</span>
317 </h3>317 </h3>
318 <p>Booleans·in·ASN.1·express·values·that·can·be·either·<code·class="inline">TRUE</code>·or·<code·class="inline">FALSE</code>.·The318 <p>Booleans·in·ASN.1·express·values·that·can·be·either·<code·class="inline">TRUE</code>·or·<code·class="inline">FALSE</code>.·The
319 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·the319 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 322, 19 lines modifiedOffset 322, 19 lines modified
322 ····<i·class="ri-link-m"·aria-hidden="true"></i>322 ····<i·class="ri-link-m"·aria-hidden="true"></i>
323 ··</a>323 ··</a>
324 ··<span·class="text">INTEGER</span>324 ··<span·class="text">INTEGER</span>
325 </h3>325 </h3>
326 <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.326 <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.
327 The·details·of·subtyping·are·not·explained·here;·for·more·information,·see327 The·details·of·subtyping·are·not·explained·here;·for·more·information,·see
328 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">328 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">
329 </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="7145252469-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="7145252469-1">)</span><span·class="w">329 </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="3954258640-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="3954258640-1">)</span><span·class="w">
330 </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="7145252469-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="7145252469-2">)</span><span·class="w">330 </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="3954258640-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="3954258640-2">)</span><span·class="w">
331 </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="7145252469-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="7145252469-3">)</span><span·class="w">331 </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="3954258640-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="3954258640-3">)</span><span·class="w">
332 </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="7145252469-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="7145252469-4">)</span><span·class="w">332 </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="3954258640-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="3954258640-4">)</span><span·class="w">
333 </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="7145252469-5">{</span><span·class="nf">red</span><span·class="p"·data-group-id="7145252469-6">(</span><span·class="mi">0</span><span·class="p"·data-group-id="7145252469-6">)</span><span·class="p">,</span><span·class="nf">blue</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·332,·SHA:·dce141da5f14c1835c57910912fd949c96e53c997b34ca96c48b8e07e9c185d1·...·]-5">}</span></code></pre><p>The·Erlang·representation·of·an·ASN.1·<code·class="inline">INTEGER</code>·is·an·integer·or·an·atom·if·a333 </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="3954258640-5">{</span><span·class="nf">red</span><span·class="p"·data-group-id="3954258640-6">(</span><span·class="mi">0</span><span·class="p"·data-group-id="3954258640-6">)</span><span·class="p">,</span><span·class="nf">blue</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·332,·SHA:·a2d51e3fb8ac7cf85ce4b70364bd6d9c7141214990731bf4fa697f1a0fb204f0·...·]-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
334 <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·in334 <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
335 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">335 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">
336 </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">336 </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">
337 </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">337 </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">
338 </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">338 </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">
339 </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.339 </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.
340 This·style·of·value·can·be·passed·directly·to·the·encoder·for·transformation340 This·style·of·value·can·be·passed·directly·to·the·encoder·for·transformation
Offset 375, 15 lines modifiedOffset 375, 15 lines modified
Max diff block lines reached; 130835/183210 bytes (71.41%) of diff not shown.
117 KB
./usr/share/doc/erlang-doc/html/lib/asn1-5.3.4/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="3087799025-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">ExclMessage</span><span·class="p"·data-group-id="3087799025-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:·5465e446746de9fa4e14a2bceaaeeacac2675b5590515bf672bbd6953ed9eb9d·...·]-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="2494103044-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">ExclMessage</span><span·class="p"·data-group-id="2494103044-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:·53288a6f70a61983048888cb3001cdcf02bd6b0edf944929ade995e998a5c8d5·...·]-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="0729687212-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">PartMessage</span><span·class="p"·data-group-id="0729687212-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:·e5c217a262e8df49c6c5be64b4d3fa5db9cd438bd7eea183fbdba927d8213352·...·]-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="2563762425-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">PartMessage</span><span·class="p"·data-group-id="2563762425-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:·ae6cedafd258dffbeb183e57422b1e530dd09b938f57f52793976d277749c34a·...·]-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="3219878393-1">{</span><span·class="ss">exclusive_decode</span><span·class="p">,</span><span·class="p"·data-group-id="3219878393-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:·2adf4b412a8e01200a3ac4f22f8153a5de7386ad840c583c7c14621879a5599e·...·]-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="5350093604-1">{</span><span·class="ss">exclusive_decode</span><span·class="p">,</span><span·class="p"·data-group-id="5350093604-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:·d439f49998323cb94049d42c499faae949c220d41125d90bfc4a45adb9d431d1·...·]-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="3219878393-3">(</span><span·class="p"·data-group-id="3219878393-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="5350093604-3">(</span><span·class="p"·data-group-id="5350093604-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="3219878393-4">[</span><span·class="n">DecodeInstruction</span><span·class="p"·data-group-id="3219878393-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="5350093604-4">[</span><span·class="n">DecodeInstruction</span><span·class="p"·data-group-id="5350093604-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="3219878393-5">{</span><span·class="n">ExclusiveDecodeFunctionName</span><span·class="p">,</span><span·class="n">TypeList</span><span·class="p"·data-group-id="3219878393-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="5350093604-5">{</span><span·class="n">ExclusiveDecodeFunctionName</span><span·class="p">,</span><span·class="n">TypeList</span><span·class="p"·data-group-id="5350093604-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="3219878393-6">(</span><span·class="p"·data-group-id="3219878393-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="5350093604-6">(</span><span·class="p"·data-group-id="5350093604-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="3219878393-7">[</span><span·class="n">TopType</span><span·class="p">,</span><span·class="n">ElementList</span><span·class="p"·data-group-id="3219878393-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="5350093604-7">[</span><span·class="n">TopType</span><span·class="p">,</span><span·class="n">ElementList</span><span·class="p"·data-group-id="5350093604-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="3219878393-8">[</span><span·class="n">Element</span><span·class="p"·data-group-id="3219878393-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="5350093604-8">[</span><span·class="n">Element</span><span·class="p"·data-group-id="5350093604-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="3219878393-9">{</span><span·class="n">Name</span><span·class="p">,</span><span·class="ss">parts</span><span·class="p"·data-group-id="3219878393-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="5350093604-9">{</span><span·class="n">Name</span><span·class="p">,</span><span·class="ss">parts</span><span·class="p"·data-group-id="5350093604-9">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
186 ··········</span><span·class="p"·data-group-id="3219878393-10">{</span><span·class="n">Name</span><span·class="p">,</span><span·class="ss">undecoded</span><span·class="p"·data-group-id="3219878393-10">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">186 ··········</span><span·class="p"·data-group-id="5350093604-10">{</span><span·class="n">Name</span><span·class="p">,</span><span·class="ss">undecoded</span><span·class="p"·data-group-id="5350093604-10">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
187 ··········</span><span·class="p"·data-group-id="3219878393-11">{</span><span·class="n">Name</span><span·class="p">,</span><span·class="n">ElementList</span><span·class="p"·data-group-id="3219878393-11">}</span><span·class="w">187 ··········</span><span·class="p"·data-group-id="5350093604-11">{</span><span·class="n">Name</span><span·class="p">,</span><span·class="n">ElementList</span><span·class="p"·data-group-id="5350093604-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="3219878393-12">(</span><span·class="p"·data-group-id="3219878393-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="5350093604-12">(</span><span·class="p"·data-group-id="5350093604-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="3219878393-13">(</span><span·class="p"·data-group-id="3219878393-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="5350093604-13">(</span><span·class="p"·data-group-id="5350093604-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="2853478707-1">(</span><span·class="ss">&#39;GUI&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2853478707-2">[</span><span·class="ss">ber</span><span·class="p">,</span><span·class="ss">asn1config</span><span·class[·...·truncated·by·diffoscope;·len:·144,·SHA:·b20436c545d22508a3faac4e4086d98625b9cf93218394b0d5b931614a77bf70·...·]-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="3622434396-1">(</span><span·class="ss">&#39;GUI&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3622434396-2">[</span><span·class="ss">ber</span><span·class="p">,</span><span·class="ss">asn1config</span><span·class[·...·truncated·by·diffoscope;·len:·144,·SHA:·12de5886514806ec4087baa1db2f49c13630ad48637d305e7024bad06daa8a74·...·]-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="2853478707-3">(</span><span·class="ss">&#39;GUI&#39;</span><span·class="p"·data-group-id="2853478707-3">)</span><span·class="p">.</span><span·class="w">266 2&gt;·</span><span·class="nf">rr</span><span·class="p"·data-group-id="3622434396-3">(</span><span·class="ss">&#39;GUI&#39;</span><span·class="p"·data-group-id="3622434396-3">)</span><span·class="p">.</span><span·class="w">
267 </span><span·class="p"·data-group-id="2853478707-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="2853478707-4">]</span><span·class="gp·unselectable">267 </span><span·class="p"·data-group-id="3622434396-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="3622434396-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="2853478707-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="2853478707-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="3622434396-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="3622434396-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="2853478707-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:·c05770bfcc78189babdbbb6695664f4aa752e7c798093c09ce14bd9998ceec96·...·]-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="3622434396-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:·cb1e4f7f7687cd0be6916c795fb1240cffd5d635423862bffc401d12c50be540·...·]-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="2853478707-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="2853478707-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="3622434396-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="3622434396-7">)</span><span·class="p">.</span><span·class="w">
271 </span><span·class="p"·data-group-id="2853478707-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:·3efd4179199607b55be37be6e55b79ebfbe27a96d00d470bfbf13ca4204b295a·...·]-8">&gt;&gt;</span><span·class="gp·unselectable">271 </span><span·class="p"·data-group-id="3622434396-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:·ee901d81c7d62a67be49de5b81a7d5a0b86cc72220c000f1915dd46f0e4af968·...·]-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="2853478707-9">(</span><span·class="n">ButtonBytes</span><span·class="p"·data-group-id="2853478707-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="3622434396-9">(</span><span·class="n">ButtonBytes</span><span·class="p"·data-group-id="3622434396-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="2853478707-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="2853478707-11">{</span><span·class="ss">&#39;Button_number&#39;</span><span·class="p">,</span><span·[·...·truncated·by·diffoscope;·len:·284,·SHA:·c96a68c95b925dfe33f5b3637461772a096bc38a50fcf62df6b3c1be6e3304c7·...·]-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="3622434396-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="3622434396-11">{</span><span·class="ss">&#39;Button_number&#39;</span><span·class="p">,</span><span·[·...·truncated·by·diffoscope;·len:·284,·SHA:·8bee5fcedad5af713ba27fde383dc9b0687e9c15199ce9f3fd1e63c7897c82b5·...·]-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="2853478707-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="3622434396-10">}</span><span·class="gp·unselectable">
275 6&gt;·</span><span·class="p"·data-group-id="2853478707-13">{</span><span·class="n">UndecKey</span><span·class="p">,</span><span·class="n">UndecBytes</span><span·class="p"·data-group-id="2853478707-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="3622434396-13">{</span><span·class="n">UndecKey</span><span·class="p">,</span><span·class="n">UndecBytes</span><span·class="p"·data-group-id="3622434396-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="2853478707-14">{</span><span·class="ss">&#39;Button_number&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="2853478707-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:·7e8b336201c7a7793a007ec24dff84ddab3da02c406759da7f8541b9bd2df961·...·]-14">}</span><span·class="gp·unselectable">276 </span><span·class="p"·data-group-id="3622434396-14">{</span><span·class="ss">&#39;Button_number&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="3622434396-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:·343c8f0f9a76866a7341736db69c0c2268aa974b2297d0304c5631a732c64ca0·...·]-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="2853478707-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="2853478707-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="3622434396-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="3622434396-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="2853478707-17">{</span><span·class="ss">status</span><span·class="p">,</span><span·class="p"·data-group-id="2853478707-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="3622434396-17">{</span><span·class="ss">status</span><span·class="p">,</span><span·class="p"·data-group-id="3622434396-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="2853478707-19">[</span><span·class="p"·data-group-id="2853478707-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="2853478[·...·truncated·by·diffoscope;·len:·3,·SHA:·5b60f221d4a1852afd0194ad0857fae9c558608e35621dce43301e8c771b7877·...·]-20">}</span><span·class="p">,</span><span·class="w">281 ···</span><span·class="p"·data-group-id="3622434396-19">[</span><span·class="p"·data-group-id="3622434396-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="3622434[·...·truncated·by·diffoscope;·len:·3,·SHA:·3c1b7053f0edd447b778edbc0ad8359b0fa892d69857d9bd5e6b19007bb3f01e·...·]-20">}</span><span·class="p">,</span><span·class="w">
282 ····</span><span·class="p"·data-group-id="2853478707-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="2853478707-21">}</span><span·class="p">,</span><span·class="w">282 ····</span><span·class="p"·data-group-id="3622434396-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="3622434396-21">}</span><span·class="p">,</span><span·class="w">
283 ····</span><span·class="p"·data-group-id="2853478707-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="2853478707-22">}</span><span·class="p">,</span><span·class="w">283 ····</span><span·class="p"·data-group-id="3622434396-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="3622434396-22">}</span><span·class="p">,</span><span·class="w">
284 ····</span><span·class="p"·data-group-id="2853478707-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="2853478707-23">}</span><span·class="p">,</span><span·class="w">284 ····</span><span·class="p"·data-group-id="3622434396-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="3622434396-23">}</span><span·class="p">,</span><span·class="w">
285 ····</span><span·class="p"·data-group-id="2853478707-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="2853478707-24">}</span><span·class="p"·data-group-id="285347[·...·truncated·by·diffoscope;·len:·4,·SHA:·05cdf255a7a0ed32664a306bc185eb89baeecc2df0943f8d4b56e77d582e203c·...·]-19">]</span><span·class="p">,</span><span·class="w">285 ····</span><span·class="p"·data-group-id="3622434396-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="3622434396-24">}</span><span·class="p"·data-group-id="362243[·...·truncated·by·diffoscope;·len:·4,·SHA:·7dfbf4d22aca3e4a1479ce3ae6ee0fe7097c4d1273a1e25674c8438f6627b231·...·]-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="2853478707-25">{</span><span·class="ss">possibleActions</span><span·class="p">,</span><span·class="p"·data-group-id="2853478707-26">[</span><span·class="p"·data-group-id="2853478707-27">{</span><span·class="ss">&#39;Action&#39;</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·559,·SHA:·bd9576503b2fb0d79ae35bae432ab14900f546bf5ce13f7a9a0f525e9a285b96·...·]-17">}</span><span·class="p">.</span><span·class="w">287 ···</span><span·class="p"·data-group-id="3622434396-25">{</span><span·class="ss">possibleActions</span><span·class="p">,</span><span·class="p"·data-group-id="3622434396-26">[</span><span·class="p"·data-group-id="3622434396-27">{</span><span·class="ss">&#39;Action&#39;</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·559,·SHA:·15c4581a9587e3457bfedf0d956d7d7a1c90e54daff9fe641a72cfa930ea9d24·...·]-17">}</span><span·class="p">.</span><span·class="w">
288 </span><span·class="p"·data-group-id="2853478707-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="2853478707-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="3622434396-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="3622434396-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="2853478707-31">[</span><span·class="o">#</span><span·class="ss">&#39;Button&#39;</span><span·class="p"·data-group-id="2853478707-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:·366565c3328fad539b9ea97ac58735c373e30571c56771290870a6266585e73a·...·]-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="3622434396-31">[</span><span·class="o">#</span><span·class="ss">&#39;Button&#39;</span><span·class="p"·data-group-id="3622434396-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:·1c6ff06cff7772616049ac8d66ebe7a6123aef0691498ffa1263d906e9ec9b33·...·]-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="2853478707-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:·353f692d8f3c153b0e4d54be935e1d3574a91face5ac99c28e07527443492784·...·]-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="3622434396-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:·0e52149415a8b4814f61dfb340032a175df1469bcd152e0397f9c9cd9076d250·...·]-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="2853478707-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:·4d398492c3bb89a259f71a7eae8f8cc94844fe37277b297dd9103453ccd25489·...·]-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="3622434396-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:·69c2ac3da1a215f0ffa1a97069588dc36be84b2a0770e57c462bb9137a595829·...·]-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="2853478707-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:·4d398492c3bb89a259f71a7eae8f8cc94844fe37277b297dd9103453ccd25489·...·]-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="3622434396-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:·69c2ac3da1a215f0ffa1a97069588dc36be84b2a0770e57c462bb9137a595829·...·]-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="2853478707-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:·bee1ac58331776bb8eb014697f8073ae480fc005aa670083ab06004373550e5e·...·]-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="3622434396-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:·8ff8cf21ec4a9bb9a120e7bcd1ad062615731b8f9818926de1fda189aae86cfc·...·]-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="2853478707-37">{</span><span·class="ss">possibleActions</span><span·class="p">,</span><span·class="p"·data-group-id="2853478707-38">[</span><span·class="o">#</span><span·class="ss">&#39;Action&#39;</span><span·class="p"·data-group-id="2853478707-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="3622434396-37">{</span><span·class="ss">possibleActions</span><span·class="p">,</span><span·class="p"·data-group-id="3622434396-38">[</span><span·class="o">#</span><span·class="ss">&#39;Action&#39;</span><span·class="p"·data-group-id="3622434396-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="2853478707-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:·cadb164e41a9fa94a92d3e07c23285c0cd2cbad2826d5efd6206ff5ae72f60e4·...·]-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="3622434396-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:·97eee266a9cf0a3302f5cafa5d3f8ab5c4d10580517ab7de23ebbc3359c146c7·...·]-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="2853478707-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="2853478707-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="3622434396-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="3622434396-41">)</span><span·class="p">.</span><span·class="w">
298 </span><span·class="p"·data-group-id="2853478707-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="3622434396-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="2853478707-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="3622434396-42">&gt;&gt;</span><span·class="gp·unselectable">
300 10&gt;·</span><span·class="p"·data-group-id="2853478707-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="2853478707-44">{</span><span·class="ss">buttonList</span><span·class="o">=</span><sp[·...·truncated·by·diffoscope;·len:·300,·SHA:·e859f51558583563a015da951adee74ccd7746709fbf2088ae676cef626e337e·...·]-43">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">300 10&gt;·</span><span·class="p"·data-group-id="3622434396-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="3622434396-44">{</span><span·class="ss">buttonList</span><span·class="o">=</span><sp[·...·truncated·by·diffoscope;·len:·300,·SHA:·625e38a8d97fd2c059edff24962fdaf33fed87319e4d5406a061a86c6bcfde09·...·]-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="2853478707-46">(</span><span·class="n">WindowBytes</span><span·class="p"·data-group-id="2853478707-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="3622434396-46">(</span><span·class="n">WindowBytes</span><span·class="p"·data-group-id="3622434396-46">)</span><span·class="p">.</span><span·class="w">
302 </span><span·class="p"·data-group-id="2853478707-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="2853478707-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="3622434396-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="3622434396-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="2853478707-49">{</span><span·class="ss">&#39;Status_buttonList&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="2853478707-50">[</span><span·class="p"·data-group-id="2853478707-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="3622434396-49">{</span><span·class="ss">&#39;Status_buttonList&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="3622434396-50">[</span><span·class="p"·data-group-id="3622434396-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="2853478707-51">&gt;&gt;</span><span·class="p">,</span><span·class="w">304 ·······················································</span><span·class="mi">255</span><span·class="p"·data-group-id="3622434396-51">&gt;&gt;</span><span·class="p">,</span><span·class="w">
305 ·····················································</span><span·class="p"·data-group-id="2853478707-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:·f79eaf2e805f39d0ffd4ca089bb9d8bdd4fe37d03e386ee90f3aedf8ee5c048d·...·]-52">&gt;&gt;</span><span·class="p">,</span><span·class="w">305 ·····················································</span><span·class="p"·data-group-id="3622434396-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:·a23cf1ac4cc17421733764e0f987dcd05231967163e59d00104999afbfa9c80f·...·]-52">&gt;&gt;</span><span·class="p">,</span><span·class="w">
306 ·····················································</span><span·class="p"·data-group-id="2853478707-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:·433ccadd8314510a37b7f853b011cadd18cb11bc4e3690db523c07a0ba892b41·...·]-53">&gt;&gt;</span><span·class="p">,</span><span·class="w">306 ·····················································</span><span·class="p"·data-group-id="3622434396-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:·7b14913e0e42e8731a47278e0332f739e22cf27169511ac7e505bd7b2cfe7050·...·]-53">&gt;&gt;</span><span·class="p">,</span><span·class="w">
307 ·····················································</span><span·class="p"·data-group-id="2853478707-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:·433ccadd8314510a37b7f853b011cadd18cb11bc4e3690db523c07a0ba892b41·...·]-54">&gt;&gt;</span><span·class="p">,</span><span·class="w">307 ·····················································</span><span·class="p"·data-group-id="3622434396-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:·7b14913e0e42e8731a47278e0332f739e22cf27169511ac7e505bd7b2cfe7050·...·]-54">&gt;&gt;</span><span·class="p">,</span><span·class="w">
308 ·····················································</span><span·class="p"·data-group-id="2853478707-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:·4d14108d0f4100826e3d6cb485607c60abe45e5b3695f2571d6fb6384224b4c0·...·]-49">}</span><span·class="p">,</span><span·class="w">308 ·····················································</span><span·class="p"·data-group-id="3622434396-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:·07ce825d64dc41e1d6ad9c06552d320633a98e7865607d14d1355fbdbda46e6d·...·]-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="2853478707-56">{</span><span·class="ss">&#39;Status_actions&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="2853478707-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="3622434396-56">{</span><span·class="ss">&#39;Status_actions&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="3622434396-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="2853478707-57">&gt;&gt;</span><span·class="p"·data-group-id="2853478707-56">}</span><span·class="p"·data-group-id="2853478707-48">}</span><span·class="p"·data-group-id="2853478707-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="3622434396-57">&gt;&gt;</span><span·class="p"·data-group-id="3622434396-56">}</span><span·class="p"·data-group-id="3622434396-48">}</span><span·class="p"·data-group-id="3622434396-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="2853478707-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="2853478707-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="3622434396-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="3622434396-58">)</span><span·class="p">.</span><span·class="w">
314 </span><span·class="p"·data-group-id="2853478707-59">[</span><span·class="o">#</span><span·class="ss">&#39;Button&#39;</span><span·class="p"·data-group-id="2853478707-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:·366565c3328fad539b9ea97ac58735c373e30571c56771290870a6266585e73a·...·]-60">}</span><span·class="p">,</span><span·class="w">314 </span><span·class="p"·data-group-id="3622434396-59">[</span><span·class="o">#</span><span·class="ss">&#39;Button&#39;</span><span·class="p"·data-group-id="3622434396-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:·1c6ff06cff7772616049ac8d66ebe7a6123aef0691498ffa1263d906e9ec9b33·...·]-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="2853478707-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:·353f692d8f3c153b0e4d54be935e1d3574a91face5ac99c28e07527443492784·...·]-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="3622434396-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:·0e52149415a8b4814f61dfb340032a175df1469bcd152e0397f9c9cd9076d250·...·]-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="2853478707-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:·4d398492c3bb89a259f71a7eae8f8cc94844fe37277b297dd9103453ccd25489·...·]-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="3622434396-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:·69c2ac3da1a215f0ffa1a97069588dc36be84b2a0770e57c462bb9137a595829·...·]-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="2853478707-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:·4d398492c3bb89a259f71a7eae8f8cc94844fe37277b297dd9103453ccd25489·...·]-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="3622434396-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:·69c2ac3da1a215f0ffa1a97069588dc36be84b2a0770e57c462bb9137a595829·...·]-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="2853478707-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:·700308262bce6fb11faf4016ff1c2605d82c133c1214e043233268362e9ff8e0·...·]-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="3622434396-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:·6bd51afbb230ee6a7b3200a841d0c2445cae2cd747b5a27f9778eaaf10537cc3·...·]-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="2853478707-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="2853478707-66">(</span><span·class="n">UndecWindowParts</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·66,·SHA:·0bac6af2f00fabdfd375bd103fccbace86f289f947437cca6ff042e0b39d6c74·...·]-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="3622434396-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="3622434396-66">(</span><span·class="n">UndecWindowParts</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·66,·SHA:·b3cd3701f6c7b8174a05895f9fa92a226fd7780fb2a5d633baf103ad779055a0·...·]-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="2853478707-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:·4d398492c3bb89a259f71a7eae8f8cc94844fe37277b297dd9103453ccd25489·...·]-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="3622434396-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:·69c2ac3da1a215f0ffa1a97069588dc36be84b2a0770e57c462bb9137a595829·...·]-67">}</span><span·class="gp·unselectable">
321 13&gt;·</span><span·class="p"·data-group-id="2853478707-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="2853478707-69">{</span><span·class="ss">actions</span><span·class="o">=</span><span·[·...·truncated·by·diffoscope;·len:·518,·SHA:·713e892aac3e8315e687f2b8eb2d90ae2e9834517bd7c8b60188ae91018c744c·...·]-71">)</span><span·class="p">.</span><span·class="w">321 13&gt;·</span><span·class="p"·data-group-id="3622434396-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="3622434396-69">{</span><span·class="ss">actions</span><span·class="o">=</span><span·[·...·truncated·by·diffoscope;·len:·518,·SHA:·a25498124e9c8eb1ef61002a43e1bfbf7974dbb5cb435c21d731f74fb2316f83·...·]-71">)</span><span·class="p">.</span><span·class="w">
322 </span><span·class="p"·data-group-id="2853478707-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="2853478707-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="3622434396-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="3622434396-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="2853478707-74">{</span><span·class="ss">&#39;Status_buttonList&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="2853478707-75">[</span><span·class="p"·data-group-id="2853478707-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="3622434396-74">{</span><span·class="ss">&#39;Status_buttonList&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="3622434396-75">[</span><span·class="p"·data-group-id="3622434396-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="2853478707-76">&gt;&gt;</span><span·class="p">,</span><span·class="w">324 ·······················································</span><span·class="mi">255</span><span·class="p"·data-group-id="3622434396-76">&gt;&gt;</span><span·class="p">,</span><span·class="w">
325 ·····················································</span><span·class="p"·data-group-id="2853478707-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:·f79eaf2e805f39d0ffd4ca089bb9d8bdd4fe37d03e386ee90f3aedf8ee5c048d·...·]-77">&gt;&gt;</span><span·class="p">,</span><span·class="w">325 ·····················································</span><span·class="p"·data-group-id="3622434396-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:·a23cf1ac4cc17421733764e0f987dcd05231967163e59d00104999afbfa9c80f·...·]-77">&gt;&gt;</span><span·class="p">,</span><span·class="w">
326 ·····················································</span><span·class="p"·data-group-id="2853478707-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:·433ccadd8314510a37b7f853b011cadd18cb11bc4e3690db523c07a0ba892b41·...·]-78">&gt;&gt;</span><span·class="p">,</span><span·class="w">326 ·····················································</span><span·class="p"·data-group-id="3622434396-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:·7b14913e0e42e8731a47278e0332f739e22cf27169511ac7e505bd7b2cfe7050·...·]-78">&gt;&gt;</span><span·class="p">,</span><span·class="w">
327 ·····················································</span><span·class="p"·data-group-id="2853478707-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:·433ccadd8314510a37b7f853b011cadd18cb11bc4e3690db523c07a0ba892b41·...·]-79">&gt;&gt;</span><span·class="p">,</span><span·class="w">327 ·····················································</span><span·class="p"·data-group-id="3622434396-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:·7b14913e0e42e8731a47278e0332f739e22cf27169511ac7e505bd7b2cfe7050·...·]-79">&gt;&gt;</span><span·class="p">,</span><span·class="w">
328 ·····················································</span><span·class="p"·data-group-id="2853478707-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:·88fa3bbfb271dbbcc8e820e74d30b5b7792a1cbe6bcee1b1240053e5b3c42304·...·]-74">}</span><span·class="p">,</span><span·class="w">328 ·····················································</span><span·class="p"·data-group-id="3622434396-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:·8cab09fe07885c2ec2eb69787ece277af5d968d69b2b7de2390cfcd45f1a17d8·...·]-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="2853478707-81">{</span><span·class="ss">&#39;Status_actions&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="2853478707-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="3622434396-81">{</span><span·class="ss">&#39;Status_actions&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="3622434396-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="2853478707-82">&gt;&gt;</span><span·class="p"·data-group-id="2853478707-81">}</span><span·class="p"·data-group-id="2853478707-73">}</span><span·class="p"·data-group-id="2853478707-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="3622434396-82">&gt;&gt;</span><span·class="p"·data-group-id="3622434396-81">}</span><span·class="p"·data-group-id="3622434396-73">}</span><span·class="p"·data-group-id="3622434396-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="2853478707-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="2853478707-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="3622434396-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="3622434396-83">)</span><span·class="p">.</span><span·class="w">
334 </span><span·class="p"·data-group-id="2853478707-84">{</span><span·class="ss">possibleActions</span><span·class="p">,</span><span·class="p"·data-group-id="2853478707-85">[</span><span·class="o">#</span><span·class="ss">&#39;Action&#39;</span><span·class="p"·data-group-id="2853478707-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="3622434396-84">{</span><span·class="ss">possibleActions</span><span·class="p">,</span><span·class="p"·data-group-id="3622434396-85">[</span><span·class="o">#</span><span·class="ss">&#39;Action&#39;</span><span·class="p"·data-group-id="3622434396-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="2853478707-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:·6b060586601df130a6c3b900bc49733125214a7bbd309ab9f8e60c54a69a9286·...·]-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="3622434396-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:·87d10a41f11c44afa1892619ef0ec696edc30dfcdeb56fecd92d89febe8b5cf0·...·]-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.4/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="9506084371-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="9506084371-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·274,·SHA:·2112a55761fb8f91d2bbe1849f090a92c2df9ee9bb67eb43a924b91ee6721633·...·]-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="6464254075-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="6464254075-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·274,·SHA:·c8b847c4219b124788463293e97bc252f51333dc9cf0aef9a6c3f8949fe42ae4·...·]-2">)</span><span·class="p">,</span><span·class="w">
488 </span><span·class="p"·data-group-id="9506084371-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="9506084371-3">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·273,·SHA:·8313ae5e91370c84aea2259b8547f04b6f12d4eb264f483d68c2adf08601c5d9·...·]-4">)</span><span·class="p">,</span><span·class="w">488 </span><span·class="p"·data-group-id="6464254075-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="6464254075-3">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·273,·SHA:·88c2ecfb113da03531946c8df47d96715f6039b8f2363492452b0ea144343278·...·]-4">)</span><span·class="p">,</span><span·class="w">
489 </span><span·class="p"·data-group-id="9506084371-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="9506084371-5">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·273,·SHA:·f6bce7f0a02e4ab5a0942330cdafc9fffc6c36bebf03fe5296e2e14589810fec·...·]-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="6464254075-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="6464254075-5">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·273,·SHA:·7fd39df21c982a65a425df3beb611e7e40e63063043706ae8eed3f43ed38d09c·...·]-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">
  
2.86 KB
./usr/share/doc/erlang-doc/html/lib/asn1-5.3.4/doc/html/notes.html
    
Offset 151, 15 lines modifiedOffset 151, 15 lines modified
151 </h3>151 </h3>
152 <ul><li><p>The·JER·backend·will·now·include·the·SIZE·constraint·in·the·type·info·for·OCTET·STRINGs,·and·a·SIZE·constraint·with·a·range·will·now·be·included·for·BIT·STRINGs.·This·does·not·change·the·actual·encoding·or·decoding·of·JER,·but·can·be·useful·for·tools.</p><p>Own·Id:·OTP-19542·Aux·Id:·ERIERL-1204,·<a·href="https://github.com/erlang/otp/pull/9588"·title="">PR-9588</a></p></li></ul><h3·id="improvements-and-new-features"·class="section-heading">152 <ul><li><p>The·JER·backend·will·now·include·the·SIZE·constraint·in·the·type·info·for·OCTET·STRINGs,·and·a·SIZE·constraint·with·a·range·will·now·be·included·for·BIT·STRINGs.·This·does·not·change·the·actual·encoding·or·decoding·of·JER,·but·can·be·useful·for·tools.</p><p>Own·Id:·OTP-19542·Aux·Id:·ERIERL-1204,·<a·href="https://github.com/erlang/otp/pull/9588"·title="">PR-9588</a></p></li></ul><h3·id="improvements-and-new-features"·class="section-heading">
153 ··<a·href="#improvements-and-new-features"·class="hover-link">153 ··<a·href="#improvements-and-new-features"·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">Improvements·and·New·Features</span>156 ··<span·class="text">Improvements·and·New·Features</span>
157 </h3>157 </h3>
158 <ul><li><p>When·using·the·JSON·encoding·rules,·it·is·now·possible·to·call·the·decode/2·function·in·the·following·way·with·data·that·has·already·been·decoded·by·json:decode/1:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">SomeModule</span><span·class="p">:</span><span·class="nf">decode</span><span·class="p"·data-group-id="7881482701-1">(</span><span·class="n">Type</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7881482701-2">{</span><span·class="ss">json_decoded</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Decode[·...·truncated·by·diffoscope;·len:·102,·SHA:·5ccf7b9bcf6a021e0e4bf11684d1fc54c31657627d456e3108b54306222bdf5e·...·]-1">)</span><span·class="p">.</span></code></pre><p>Own·Id:·OTP-19547·Aux·Id:·ERIERL-1206,·<a·href="https://github.com/erlang/otp/pull/9611"·title="">PR-9611</a></p></li></ul><h2·id="asn1-5-3-2"·class="section-heading">158 <ul><li><p>When·using·the·JSON·encoding·rules,·it·is·now·possible·to·call·the·decode/2·function·in·the·following·way·with·data·that·has·already·been·decoded·by·json:decode/1:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">SomeModule</span><span·class="p">:</span><span·class="nf">decode</span><span·class="p"·data-group-id="9758935934-1">(</span><span·class="n">Type</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9758935934-2">{</span><span·class="ss">json_decoded</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Decode[·...·truncated·by·diffoscope;·len:·102,·SHA:·aa26fdfa231b38c7d0ff5ba189c8abc9533ae823a57aeb20a1b49f8be8dbce73·...·]-1">)</span><span·class="p">.</span></code></pre><p>Own·Id:·OTP-19547·Aux·Id:·ERIERL-1206,·<a·href="https://github.com/erlang/otp/pull/9611"·title="">PR-9611</a></p></li></ul><h2·id="asn1-5-3-2"·class="section-heading">
159 ··<a·href="#asn1-5-3-2"·class="hover-link">159 ··<a·href="#asn1-5-3-2"·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">Asn1·5.3.2</span>162 ··<span·class="text">Asn1·5.3.2</span>
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">
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="4253317623-1">(</span><span·class="p">_</span><span·class="n">Config</span><span·class="p"·data-group-id="4253317623-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="2131810301-1">(</span><span·class="p">_</span><span·class="n">Config</span><span·class="p"·data-group-id="2131810301-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
219 ····</span><span·class="p"·data-group-id="4253317623-2">{</span><span·class="ss">started</span><span·class="p">,</span><span·class="n">ServerId</span><span·class="p"·data-group-id="4253317623-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:·a40afa04405eb79f3397dd99fd6873dc05c92a615583afe20cf7307e54e5c3aa·...·]-3">)</span><span·class="p">,</span><span·class="w">219 ····</span><span·class="p"·data-group-id="2131810301-2">{</span><span·class="ss">started</span><span·class="p">,</span><span·class="n">ServerId</span><span·class="p"·data-group-id="2131810301-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:·8a2de01d6e9ff808dc5067b243c400a7d3b7c0d0fb4972719c36ae5c24ac5822·...·]-3">)</span><span·class="p">,</span><span·class="w">
220 ····</span><span·class="p"·data-group-id="4253317623-4">{</span><span·class="ss">clients</span><span·class="p">,</span><span·class="p"·data-group-id="4253317623-5">[</span><span·class="p"·data-group-id="4253317623-5">]</span><span·class="p"·data-group-id="4253317623-4">}</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·269,·SHA:·4ac5edabf56dc9a6fee5f540d0373e27fcadd6f2a0c31521d77a5eb1ec401bc2·...·]-6">)</span><span·class="p">,</span><span·class="w">220 ····</span><span·class="p"·data-group-id="2131810301-4">{</span><span·class="ss">clients</span><span·class="p">,</span><span·class="p"·data-group-id="2131810301-5">[</span><span·class="p"·data-group-id="2131810301-5">]</span><span·class="p"·data-group-id="2131810301-4">}</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·269,·SHA:·362cb7ae7a392100ddb0376bac5aa1f05f3f4736c393a4bc50b6b6957a2750c7·...·]-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="4253317623-7">(</span><span·class="p"·data-group-id="4253317623-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="2131810301-7">(</span><span·class="p"·data-group-id="2131810301-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="4253317623-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="4253317623-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="2131810301-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="2131810301-8">)</span><span·class="p">,</span><span·class="w">
223 ····</span><span·class="p"·data-group-id="4253317623-9">{</span><span·class="ss">clients</span><span·class="p">,</span><span·class="p"·data-group-id="4253317623-10">[</span><span·class="n">MyId</span><span·class="p"·data-group-id="4253317623-10">]</span><span·class="p"·data-group-id="4253317623-9"[·...·truncated·by·diffoscope;·len:·299,·SHA:·fa63b46c141cf64ff8574d3a9f164c531cb3c58ca6275ec09b9ec2bcac28a3d4·...·]-11">)</span><span·class="p">,</span><span·class="w">223 ····</span><span·class="p"·data-group-id="2131810301-9">{</span><span·class="ss">clients</span><span·class="p">,</span><span·class="p"·data-group-id="2131810301-10">[</span><span·class="n">MyId</span><span·class="p"·data-group-id="2131810301-10">]</span><span·class="p"·data-group-id="2131810301-9"[·...·truncated·by·diffoscope;·len:·299,·SHA:·bfc93c633776c26efa4ba7f28813a8815fa53ff7d9bce0b402c1db003be17e92·...·]-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="4253317623-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="4253317623-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="2131810301-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="2131810301-12">)</span><span·class="p">,</span><span·class="w">
225 ····</span><span·class="p"·data-group-id="4253317623-13">{</span><span·class="ss">clients</span><span·class="p">,</span><span·class="p"·data-group-id="4253317623-14">[</span><span·class="p"·data-group-id="4253317623-14">]</span><span·class="p"·data-group-id="4253317623-13">}</span><span·class="w">[·...·truncated·by·diffoscope;·len:·274,·SHA:·286a371fc65e01ed37f97803bf63eaf95da1196ab60e6fc78b82e7fb46380b41·...·]-15">)</span><span·class="p">,</span><span·class="w">225 ····</span><span·class="p"·data-group-id="2131810301-13">{</span><span·class="ss">clients</span><span·class="p">,</span><span·class="p"·data-group-id="2131810301-14">[</span><span·class="p"·data-group-id="2131810301-14">]</span><span·class="p"·data-group-id="2131810301-13">}</span><span·class="w">[·...·truncated·by·diffoscope;·len:·274,·SHA:·d0d115bee3aa9b6b233c36ceaa580d49c6ffff3590a4a6104c676f941f940470·...·]-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="4253317623-16">(</span><span·class="n">ServerId</span><span·class="p"·data-group-id="4253317623-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="2131810301-16">(</span><span·class="n">ServerId</span><span·class="p"·data-group-id="2131810301-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:·399374·bytes,·number·of·entries:·461 Zip·file·size:·399359·bytes,·number·of·entries:·46
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Apr-18·13:58·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Apr-18·15:20·mimetype
3 ?rw-r--r--··6.1·unx···103544·bx·defN·25-Apr-18·13:58·OEBPS/write_test_chapter.xhtml3 ?rw-r--r--··6.1·unx···103544·bx·defN·25-Apr-18·15:20·OEBPS/write_test_chapter.xhtml
4 ?rw-r--r--··6.1·unx·····3151·bx·defN·25-Apr-18·13:58·OEBPS/why_test_chapter.xhtml4 ?rw-r--r--··6.1·unx·····3151·bx·defN·25-Apr-18·15:20·OEBPS/why_test_chapter.xhtml
5 ?rw-r--r--··6.1·unx····10048·bx·defN·25-Apr-18·13:58·OEBPS/unix_telnet.xhtml5 ?rw-r--r--··6.1·unx····10048·bx·defN·25-Apr-18·15:20·OEBPS/unix_telnet.xhtml
6 ?rw-r--r--··6.1·unx······728·bx·defN·25-Apr-18·13:58·OEBPS/title.xhtml6 ?rw-r--r--··6.1·unx······728·bx·defN·25-Apr-18·15:20·OEBPS/title.xhtml
7 ?rw-r--r--··6.1·unx·····6485·bx·defN·25-Apr-18·13:58·OEBPS/test_structure_chapter.xhtml7 ?rw-r--r--··6.1·unx·····6485·bx·defN·25-Apr-18·15:20·OEBPS/test_structure_chapter.xhtml
8 ?rw-r--r--··6.1·unx···172128·bx·defN·25-Apr-18·13:58·OEBPS/run_test_chapter.xhtml8 ?rw-r--r--··6.1·unx···172128·bx·defN·25-Apr-18·15:20·OEBPS/run_test_chapter.xhtml
9 ?rw-r--r--··6.1·unx···202817·bx·defN·25-Apr-18·13:58·OEBPS/notes.xhtml9 ?rw-r--r--··6.1·unx···202817·bx·defN·25-Apr-18·15:20·OEBPS/notes.xhtml
10 ?rw-r--r--··6.1·unx·····3287·bx·defN·25-Apr-18·13:58·OEBPS/nav.xhtml10 ?rw-r--r--··6.1·unx·····3287·bx·defN·25-Apr-18·15:20·OEBPS/nav.xhtml
11 ?rw-r--r--··6.1·unx·····2798·bx·defN·25-Apr-18·13:58·OEBPS/introduction.xhtml11 ?rw-r--r--··6.1·unx·····2798·bx·defN·25-Apr-18·15:20·OEBPS/introduction.xhtml
12 ?rw-r--r--··6.1·unx·····1925·bx·defN·25-Apr-18·13:58·OEBPS/install_chapter.xhtml12 ?rw-r--r--··6.1·unx·····1925·bx·defN·25-Apr-18·15:20·OEBPS/install_chapter.xhtml
13 ?rw-r--r--··6.1·unx····20657·bx·defN·25-Apr-18·13:58·OEBPS/getting_started_chapter.xhtml13 ?rw-r--r--··6.1·unx····20657·bx·defN·25-Apr-18·15:20·OEBPS/getting_started_chapter.xhtml
14 ?rw-r--r--··6.1·unx····56479·bx·defN·25-Apr-18·13:58·OEBPS/example_chapter.xhtml14 ?rw-r--r--··6.1·unx····56479·bx·defN·25-Apr-18·15:20·OEBPS/example_chapter.xhtml
15 ?rw-r--r--··6.1·unx····25326·bx·defN·25-Apr-18·13:58·OEBPS/event_handler_chapter.xhtml15 ?rw-r--r--··6.1·unx····25326·bx·defN·25-Apr-18·15:20·OEBPS/event_handler_chapter.xhtml
16 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Apr-18·13:58·OEBPS/dist/epub-erlang-ESPT6BQV.css16 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Apr-18·15:20·OEBPS/dist/epub-erlang-ESPT6BQV.css
17 ?rw-r--r--··6.1·unx······499·bx·defN·25-Apr-18·13:58·OEBPS/dist/epub-LSJCIYTM.js17 ?rw-r--r--··6.1·unx······499·bx·defN·25-Apr-18·15:20·OEBPS/dist/epub-LSJCIYTM.js
18 ?rw-r--r--··6.1·unx····36534·bx·defN·25-Apr-18·13:58·OEBPS/dependencies_chapter.xhtml18 ?rw-r--r--··6.1·unx····36534·bx·defN·25-Apr-18·15:20·OEBPS/dependencies_chapter.xhtml
19 ?rw-r--r--··6.1·unx·····4070·bx·defN·25-Apr-18·13:58·OEBPS/ct_testspec.xhtml19 ?rw-r--r--··6.1·unx·····4070·bx·defN·25-Apr-18·15:20·OEBPS/ct_testspec.xhtml
20 ?rw-r--r--··6.1·unx····63484·bx·defN·25-Apr-18·13:58·OEBPS/ct_telnet.xhtml20 ?rw-r--r--··6.1·unx····63484·bx·defN·25-Apr-18·15:20·OEBPS/ct_telnet.xhtml
21 ?rw-r--r--··6.1·unx····62171·bx·defN·25-Apr-18·13:58·OEBPS/ct_suite.xhtml21 ?rw-r--r--··6.1·unx····62171·bx·defN·25-Apr-18·15:20·OEBPS/ct_suite.xhtml
22 ?rw-r--r--··6.1·unx···159584·bx·defN·25-Apr-18·13:58·OEBPS/ct_ssh.xhtml22 ?rw-r--r--··6.1·unx···159584·bx·defN·25-Apr-18·15:20·OEBPS/ct_ssh.xhtml
23 ?rw-r--r--··6.1·unx····67902·bx·defN·25-Apr-18·13:58·OEBPS/ct_snmp.xhtml23 ?rw-r--r--··6.1·unx····67902·bx·defN·25-Apr-18·15:20·OEBPS/ct_snmp.xhtml
24 ?rw-r--r--··6.1·unx····18764·bx·defN·25-Apr-18·13:58·OEBPS/ct_slave.xhtml24 ?rw-r--r--··6.1·unx····18764·bx·defN·25-Apr-18·15:20·OEBPS/ct_slave.xhtml
25 ?rw-r--r--··6.1·unx····10667·bx·defN·25-Apr-18·13:58·OEBPS/ct_run_cmd.xhtml25 ?rw-r--r--··6.1·unx····10667·bx·defN·25-Apr-18·15:20·OEBPS/ct_run_cmd.xhtml
26 ?rw-r--r--··6.1·unx····20853·bx·defN·25-Apr-18·13:58·OEBPS/ct_rpc.xhtml26 ?rw-r--r--··6.1·unx····20853·bx·defN·25-Apr-18·15:20·OEBPS/ct_rpc.xhtml
27 ?rw-r--r--··6.1·unx····16244·bx·defN·25-Apr-18·13:58·OEBPS/ct_property_test_chapter.xhtml27 ?rw-r--r--··6.1·unx····16244·bx·defN·25-Apr-18·15:20·OEBPS/ct_property_test_chapter.xhtml
28 ?rw-r--r--··6.1·unx····43143·bx·defN·25-Apr-18·13:58·OEBPS/ct_property_test.xhtml28 ?rw-r--r--··6.1·unx····43143·bx·defN·25-Apr-18·15:20·OEBPS/ct_property_test.xhtml
29 ?rw-r--r--··6.1·unx···133642·bx·defN·25-Apr-18·13:58·OEBPS/ct_netconfc.xhtml29 ?rw-r--r--··6.1·unx···133642·bx·defN·25-Apr-18·15:20·OEBPS/ct_netconfc.xhtml
30 ?rw-r--r--··6.1·unx····27158·bx·defN·25-Apr-18·13:58·OEBPS/ct_master_chapter.xhtml30 ?rw-r--r--··6.1·unx····27158·bx·defN·25-Apr-18·15:20·OEBPS/ct_master_chapter.xhtml
31 ?rw-r--r--··6.1·unx····29516·bx·defN·25-Apr-18·13:58·OEBPS/ct_master.xhtml31 ?rw-r--r--··6.1·unx····29516·bx·defN·25-Apr-18·15:20·OEBPS/ct_master.xhtml
32 ?rw-r--r--··6.1·unx····53918·bx·defN·25-Apr-18·13:58·OEBPS/ct_hooks_chapter.xhtml32 ?rw-r--r--··6.1·unx····53918·bx·defN·25-Apr-18·15:20·OEBPS/ct_hooks_chapter.xhtml
33 ?rw-r--r--··6.1·unx····71358·bx·defN·25-Apr-18·13:58·OEBPS/ct_hooks.xhtml33 ?rw-r--r--··6.1·unx····71358·bx·defN·25-Apr-18·15:20·OEBPS/ct_hooks.xhtml
34 ?rw-r--r--··6.1·unx····23974·bx·defN·25-Apr-18·13:58·OEBPS/ct_ftp.xhtml34 ?rw-r--r--··6.1·unx····23974·bx·defN·25-Apr-18·15:20·OEBPS/ct_ftp.xhtml
35 ?rw-r--r--··6.1·unx·····6486·bx·defN·25-Apr-18·13:58·OEBPS/ct_cover.xhtml35 ?rw-r--r--··6.1·unx·····6486·bx·defN·25-Apr-18·15:20·OEBPS/ct_cover.xhtml
36 ?rw-r--r--··6.1·unx···176246·bx·defN·25-Apr-18·13:58·OEBPS/ct.xhtml36 ?rw-r--r--··6.1·unx···176246·bx·defN·25-Apr-18·15:20·OEBPS/ct.xhtml
37 ?rw-r--r--··6.1·unx····19420·bx·defN·25-Apr-18·13:58·OEBPS/cover_chapter.xhtml37 ?rw-r--r--··6.1·unx····19420·bx·defN·25-Apr-18·15:20·OEBPS/cover_chapter.xhtml
38 ?rw-r--r--··6.1·unx·····6685·bx·defN·25-Apr-18·13:58·OEBPS/content.opf38 ?rw-r--r--··6.1·unx·····6685·bx·defN·25-Apr-18·15:20·OEBPS/content.opf
39 ?rw-r--r--··6.1·unx····53522·bx·defN·25-Apr-18·13:58·OEBPS/config_file_chapter.xhtml39 ?rw-r--r--··6.1·unx····53522·bx·defN·25-Apr-18·15:20·OEBPS/config_file_chapter.xhtml
40 ?rw-r--r--··6.1·unx·····1426·bx·defN·25-Apr-18·13:58·OEBPS/common_test_app.xhtml40 ?rw-r--r--··6.1·unx·····1426·bx·defN·25-Apr-18·15:20·OEBPS/common_test_app.xhtml
41 ?rw-r--r--··6.1·unx····15709·bx·defN·25-Apr-18·13:58·OEBPS/basics_chapter.xhtml41 ?rw-r--r--··6.1·unx····15709·bx·defN·25-Apr-18·15:20·OEBPS/basics_chapter.xhtml
42 ?rw-r--r--··6.1·unx·····9561·bx·stor·25-Apr-18·13:58·OEBPS/assets/tc_execution.gif42 ?rw-r--r--··6.1·unx·····9561·bx·stor·25-Apr-18·15:20·OEBPS/assets/tc_execution.gif
43 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Apr-18·13:58·OEBPS/assets/logo.png43 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Apr-18·15:20·OEBPS/assets/logo.png
44 ?rw-r--r--··6.1·unx····10726·bx·stor·25-Apr-18·13:58·OEBPS/assets/html_logs.gif44 ?rw-r--r--··6.1·unx····10726·bx·stor·25-Apr-18·15:20·OEBPS/assets/html_logs.gif
45 ?rw-r--r--··6.1·unx·····4963·bx·stor·25-Apr-18·13:58·OEBPS/assets/config.gif45 ?rw-r--r--··6.1·unx·····4963·bx·stor·25-Apr-18·15:20·OEBPS/assets/config.gif
46 ?rw-r--r--··6.1·unx······252·bx·defN·25-Apr-18·13:58·META-INF/container.xml46 ?rw-r--r--··6.1·unx······252·bx·defN·25-Apr-18·15:20·META-INF/container.xml
47 ?rw-r--r--··6.1·unx······162·bx·defN·25-Apr-18·13:58·META-INF/com.apple.ibooks.display-options.xml47 ?rw-r--r--··6.1·unx······162·bx·defN·25-Apr-18·15:20·META-INF/com.apple.ibooks.display-options.xml
48 46·files,·1778431·bytes·uncompressed,·391204·bytes·compressed:··78.0%48 46·files,·1778431·bytes·uncompressed,·391189·bytes·compressed:··78.0%
272 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,·Apr·18·2025·13:58:30,·uncompressed·size·20,·method=store1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Apr·18·2025·15:20:44,·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="9841508727-1">{</samp><samp·class="ss">unix</samp><samp·class="p">,</samp><samp·class="p"·data-group-id="9841508727-2">[</samp><samp·class="p"·data-group-id="9841508727-3">{</samp><samp·class="ss">telnet</samp><samp·class="p">,</samp><samp·class="n">HostNa[·...·truncated·by·diffoscope;·len:·61,·SHA:·789e9c552f25fde9c0e178c8f0cc69a09bdb3cb881d4bc598a6f6b44c3ba32a0·...·]-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="0760110691-1">{</samp><samp·class="ss">unix</samp><samp·class="p">,</samp><samp·class="p"·data-group-id="0760110691-2">[</samp><samp·class="p"·data-group-id="0760110691-3">{</samp><samp·class="ss">telnet</samp><samp·class="p">,</samp><samp·class="n">HostNa[·...·truncated·by·diffoscope;·len:·61,·SHA:·86780577b032f6a4366821a5ebabad2d8439eb00c89f2b2085186c960bed5522·...·]-3">}</samp><samp·class="p">,</samp><samp·class="w">
26 ·······</samp><samp·class="p"·data-group-id="9841508727-4">{</samp><samp·class="ss">port</samp><samp·class="p">,</samp><samp·class="n">PortNum</samp><samp·class="p"·data-group-id="9841508727-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="0760110691-4">{</samp><samp·class="ss">port</samp><samp·class="p">,</samp><samp·class="n">PortNum</samp><samp·class="p"·data-group-id="0760110691-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="9841508727-5">{</samp><samp·class="ss">username</samp><samp·class="p">,</samp><samp·class="n">UserName</samp><samp·class="p"·data-group-id="9841508727-5">}</samp><samp·class="p">,</samp><samp·class="w">27 ·······</samp><samp·class="p"·data-group-id="0760110691-5">{</samp><samp·class="ss">username</samp><samp·class="p">,</samp><samp·class="n">UserName</samp><samp·class="p"·data-group-id="0760110691-5">}</samp><samp·class="p">,</samp><samp·class="w">
28 ·······</samp><samp·class="p"·data-group-id="9841508727-6">{</samp><samp·class="ss">password</samp><samp·class="p">,</samp><samp·class="n">Password</samp><samp·class="p"·data-group-id="9841508727-6">}</samp><samp·class="p">,</samp><samp·class="w"> 
29 ·······</samp><samp·class="p"·data-group-id="9841508727-7">{</samp><samp·class="ss">keep_alive</samp><samp·class="p">,</samp><samp·class="n">Bool</samp><samp·class="p"·data-group-id="9841508727-7">}</samp><samp·class="p"·data-group-id="9841508727-2">]</samp><samp·class="p"·data-group-id="9841508727-1[·...·truncated·by·diffoscope;·len:·222,·SHA:·a22995ec14527926cb0d5e3b3684c538b5312ae5b9b93b0730e668746bb93a2c·...·]28 ·······</samp><samp·class="p"·data-group-id="0760110691-6">{</samp><samp·class="ss">password</samp><samp·class="p">,</samp><samp·class="n">Password</samp><samp·class="p"·data-group-id="0760110691-6">}</samp><samp·class="p">,</samp><samp·class="w">
 29 ·······</samp><samp·class="p"·data-group-id="0760110691-7">{</samp><samp·class="ss">keep_alive</samp><samp·class="p">,</samp><samp·class="n">Bool</samp><samp·class="p"·data-group-id="0760110691-7">}</samp><samp·class="p"·data-group-id="0760110691-2">]</samp><samp·class="p"·data-group-id="0760110691-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="4529531653-1">(</samp><samp·class="p"·data-group-id="4529531653-1">)</samp><samp·class="w">·</samp><samp·class="p">-&gt;</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="4529531653-2">[</samp><samp·class="p"·data-group-id="4529531653-3">{</samp>[·...·truncated·by·diffoscope;·len:·1120,·SHA:·1af3bef4f001ade8d8383f0b7bfbd3ff55e2252194d33a42c2789e1a193425d7·...·]-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="4058759922-1">(</samp><samp·class="p"·data-group-id="4058759922-1">)</samp><samp·class="w">·</samp><samp·class="p">-&gt;</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="4058759922-2">[</samp><samp·class="p"·data-group-id="4058759922-3">{</samp>[·...·truncated·by·diffoscope;·len:·1120,·SHA:·d7e338a0e7751964d4e2a2d9f9ccae3a37b9ac67654466e7bd395d6103ec4f0d·...·]-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="8679917059-1">{</span><span·class="ss">event_handler</span><span·class="p">,</span><span·class="n">EventHandlers</span><span·class="p"·data-group-id="8679917059-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="3177331227-1">{</span><span·class="ss">event_handler</span><span·class="p">,</span><span·class="n">EventHandlers</span><span·class="p"·data-group-id="3177331227-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="8679917059-2">[</span><span·class="n">EH</span><span·class="p"·data-group-id="8679917059-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="3177331227-2">[</span><span·class="n">EH</span><span·class="p"·data-group-id="3177331227-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="8679917059-3">(</span><span·class="p"·data-group-id="8679917059-3">)</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="8679917059-4">{</span><span·class="nf">atom</span><span·class="p"·data-group-id="8679917059-5">(</span><span·class="p"·data-group-id="8679917059-5">)</span><span·class="p">,</span><span·class="n">InitArgs</span><span·class="p"·data-group-id="8679917059-4">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="8679917059-6">{</span><span·class="p"·data-group-id="8679917059-7">[</span><span·class="nf">atom</span><span·class="p"·data-group-id="8679917059-8">(</span><span·class="p"·data-group-id="8679917059-8">)</span><span·class="p"·data-group-id="8679917059-7">]</span><span·class="p">,</span><span·class="n">InitArgs</span><span·class="p"·data-group-id="8679917059-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="8679917059-9">[</span><span·class="nf">term</span><span·class="p"·data-group-id="8679917059-10">(</span><span·class="p"·data-group-id="8679917059-10">)</span><span·class="p"·data-group-id="8679917059-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="9688245112-1">(</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·1273,·SHA:·fbcb8983d94c65ba5fdead935ebfd293f21044830b4846371196c464392d754c·...·]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="3177331227-3">(</span><span·class="p"·data-group-id="3177331227-3">)</span><span·class="w">·<[·...·truncated·by·diffoscope;·len:·838,·SHA:·b55b3b4afade74b938ec7eb90878a90911a7c16783dd0d22acb666d60d96957d·...·]
 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="3177331227-9">[</span><span·class="nf">term</span><span·class="p"·data-group-id="3177331227-10">(</span><span·class="p"·data-group-id="3177331227-10">)</span><span·class="p"·data-group-id="3177331227-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="8768951019-1">(</span><span·class="p"·data-group-id="8768951019-2">[</span><span·class="p"·data-group-id="8768951019-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="8768951019-3">}</span><span·class="p">,</span><span·class="p"·data-group-id="8768951019-4">{</span><span·class="ss">event_handler</span><span·class="p">,</span><span·class="p"·data-group-id="8768951019-5">[</span><span·class="ss">my_evh1</span><span·class="p">,</span><span·class="p"·data-group-id="8768951019-6">{</span><span·class="ss">my_evh2</span><span·class="p">,</span><span·class="p"·data-group-id="8768951019-7">[</span><span·class="nf">node</span><span·class="p"·data-group-id="8768951019-8">(</span><span·class="p"·data-group-id="8768951019-8">)</span><span·class="p"·data-group-id="8768951019-7">]</span><span·class="p"·data-group-id="8768951019-6">}</span><span·class="p"·data-group-id="8768951019-5">]</span><span·class="p"·data-group-id="8768951019-4">}</span><span·class="p"·data-group-id="8768951019-2">]</span><span·class="p"·data-group-id="8768951019-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="5097767021-1">[</samp><samp·class="p"·data-group-id="5097767021-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="5097767021-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="3659580810-1">[</samp><samp·class="p"·data-group-id="3659580810-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="3659580810-2">}</samp><samp·class="p">,</samp><samp·class="w">
31 ·</samp><samp·class="p"·data-group-id="5097767021-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="5097767021-3">}</samp><samp·class="p">,</samp><samp·class="w">31 ·</samp><samp·class="p"·data-group-id="3659580810-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="3659580810-3">}</samp><samp·class="p">,</samp><samp·class="w">
32 ·</samp><samp·class="p"·data-group-id="5097767021-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="5097767021-4">}</samp><samp·class="w">32 ·</samp><samp·class="p"·data-group-id="3659580810-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="3659580810-4">}</samp><samp·class="w">
33 ·</samp><samp·class="p"·data-group-id="5097767021-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="5097767021-5">}</samp><samp·class="w">33 ·</samp><samp·class="p"·data-group-id="3659580810-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="3659580810-5">}</samp><samp·class="w">
34 ·</samp><samp·class="p"·data-group-id="5097767021-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="5097767021-6">}</samp><samp·class="w">34 ·</samp><samp·class="p"·data-group-id="3659580810-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="3659580810-6">}</samp><samp·class="w">
35 ·</samp><samp·class="p"·data-group-id="5097767021-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="5097767021-7">}</samp><samp·class="w">35 ·</samp><samp·class="p"·data-group-id="3659580810-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="3659580810-7">}</samp><samp·class="w">
36 ·</samp><samp·class="p"·data-group-id="5097767021-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="5097767021-8">}</samp><samp·class="w">36 ·</samp><samp·class="p"·data-group-id="3659580810-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="3659580810-8">}</samp><samp·class="w">
37 ·</samp><samp·class="p"·data-group-id="5097767021-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="5097767021-9">}</samp><samp·class="p"·data-group-id="5097767021-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="3659580810-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="3659580810-9">}</samp><samp·class="p"·data-group-id="3659580810-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="8502964657-1">(</samp><samp·class="p"·data-group-id="8502964657-1">)</samp><samp·class="w">·</samp><samp·class="p">-&gt;</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="8502964657-2">[</samp><samp·class="p"·data-group-id="8502964657-3">{</samp[·...·truncated·by·diffoscope;·len:·683,·SHA:·507446037ddf3685645c33e212d50e77440cd378688f7619e81f096ed0cd74f1·...·]-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="0638207476-1">(</samp><samp·class="p"·data-group-id="0638207476-1">)</samp><samp·class="w">·</samp><samp·class="p">-&gt;</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="0638207476-2">[</samp><samp·class="p"·data-group-id="0638207476-3">{</samp[·...·truncated·by·diffoscope;·len:·683,·SHA:·8946d36a16b7c65316d05cc2811da530f52d9f23cd952083a70077c0c4cc0c2d·...·]-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="9442527418-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="9442527418-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="5179984392-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="5179984392-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="2720016937-1">{</samp><samp·class="ss">snmp_app</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="2720016937-2">[</samp><samp·class="p"·data-group-id="2720016937-3">{</samp><samp·class="ss">manager</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="2720016937-4">[</samp><samp·class="nf">snmp_app_manager_params</samp><samp·class="p"·data-group-id="2720016937-5">(</samp><samp·class="p"·data-group-id="2720016937-5">)</samp><samp·class="p"·data-group-id="2720016937-4">]</samp><samp·class="p"·data-group-id="2720016937-3">}</samp><samp·class="p">,</samp><samp·class="w"> 
56 ············</samp><samp·class="p"·data-group-id="2720016937-6">{</samp><samp·class="ss">agent</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="2720016937-7">[</samp><samp·class="nf">snmp_app_agent_params</samp><samp·cla[·...·truncated·by·diffoscope;·len:·450,·SHA:·31ed29220f0aa44aeb59420247de0865405962d5ce2b8f0a9f287441c5595157·...·]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="2238560416-1">{</samp><samp·class="ss">snmp_app</samp><samp·class="p">,</samp><samp·class="w">·<[·...·truncated·by·diffoscope;·len:·543,·SHA:·462c84b9cd8a91b702d5fcc66e7dd9c4bea4140a5c3050249482535542bc7c3d·...·]
 56 ············</samp><samp·class="p"·data-group-id="2238560416-6">{</samp><samp·class="ss">agent</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="2238560416-7">[</samp><samp·class="nf">snmp_app_agent_params</samp><samp·class="p"·data-group-id="2238560416-8">(</samp><samp·class="p"·data-group-id="2238560416-8">)</samp><samp·class="p"·data-group-id="2238560416-7">]</samp><samp·class="p"·data-group-id="2238560416-6">}</samp><samp·class="p"·data-group-id="2238560416-2">]</samp><samp·class="p"·data-group-id="2238560416-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="7323873338-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:·f0d4820f31a043b59bd38fba8281cdb5865227ae8539a7ae9cae402a6e2d2ab2·...·]-1">]</span><span·class="w">149 ··</span><span·class="p"·data-group-id="9497818891-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:·8105b6472c1f1f0abd13d483031f1b6b753684b61e7a86eb56e3ede47957c070·...·]-1">]</span><span·class="w">
150 ··</span><span·class="p"·data-group-id="7323873338-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="9497818891-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="7323873338-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="9497818891-2">]</span><span·class="w">
152 ··</span><span·class="p"·data-group-id="7323873338-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="7323873338-3">]</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·208,·SHA:·3da730b9a1efa26bb52304043e4de613da9454264b12c6860dd74df721e89867·...·]-4">]</span></code></pre><h2·id="start-a-common-test-master-node"·class="section-heading">152 ··</span><span·class="p"·data-group-id="9497818891-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="9497818891-3">]</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·208,·SHA:·c88c80a52d3b514e4e25bf43753670599b84dc1531c166bd17d5e8a64ba40606·...·]-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="2475908021-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="2475908021-2">(</samp><samp·class="p"·data-group-id="2475908021-2">)</samp><samp·class="p">,</samp><samp·[·...·truncated·by·diffoscope;·len:·244,·SHA:·834bb3f5106af6da6412f69908b13c1cdaa651e0a1536b51dd9a947cc22aeafb·...·]-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="5201462799-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="5201462799-2">(</samp><samp·class="p"·data-group-id="5201462799-2">)</samp><samp·class="p">,</samp><samp·[·...·truncated·by·diffoscope;·len:·244,·SHA:·fd297b51b1cfe7ff4ee9587f9651e48becae4fc17f886f6088b7d28a22fa8f0b·...·]-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="4056615103-1">{</samp><samp·class="nb">node</samp><samp·class="p">,</samp><samp·class="p"·data-group-id="4056615103-2">[</samp><samp·class="p"·data-group-id="4056615103-3">{</samp><samp·class="ss">ftp</samp><samp·class="p">,</samp><samp·class="n">IpAddr</s[·...·truncated·by·diffoscope;·len:·151,·SHA:·e8668d38131abbae37b6152e42a48d10661f84357b39089e3c52050e5ba8772f·...·]-1">}</samp><samp·class="p">.</samp></code></pre><p>If·the·target·host·is·something·else,·for·example,·a·UNIX·host,·the451 configuration·file·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="p"·data-group-id="7035980686-1">{</samp><samp·class="nb">node</samp><samp·class="p">,</samp><samp·class="p"·data-group-id="7035980686-2">[</samp><samp·class="p"·data-group-id="7035980686-3">{</samp><samp·class="ss">ftp</samp><samp·class="p">,</samp><samp·class="n">IpAddr</s[·...·truncated·by·diffoscope;·len:·151,·SHA:·f5b9464d5d697e661ecdcbc2d81ab487ce78a5bf0b3d6a854ac86b8fc9ef8fe5·...·]-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="0279715600-1">{</samp><samp·class="ss">unix</samp><samp·class="p">,</samp><samp·class="p"·data-group-id="0279715600-2">[</samp><samp·class="p"·data-group-id="0279715600-3">{</samp><samp·class="ss">ftp</samp><samp·class="p">,</samp><samp·class="n">IpAddr</s[·...·truncated·by·diffoscope;·len:·45,·SHA:·02293df8179830dd2df8fb4b3442902278fbd5b724f30cca05754fec6bd5de21·...·]-3">}</samp><samp·class="p">,</samp><samp·class="w">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="3212465386-1">{</samp><samp·class="ss">unix</samp><samp·class="p">,</samp><samp·class="p"·data-group-id="3212465386-2">[</samp><samp·class="p"·data-group-id="3212465386-3">{</samp><samp·class="ss">ftp</samp><samp·class="p">,</samp><samp·class="n">IpAddr</s[·...·truncated·by·diffoscope;·len:·45,·SHA:·126a2ded070e744a89d59241099740cec570b2572ebbb42110a9e641715b7153·...·]-3">}</samp><samp·class="p">,</samp><samp·class="w">
453 ·······</samp><samp·class="p"·data-group-id="0279715600-4">{</samp><samp·class="ss">username</samp><samp·class="p">,</samp><samp·class="n">Username</samp><samp·class="p"·data-group-id="0279715600-4">}</samp><samp·class="p">,</samp><samp·class="w">453 ·······</samp><samp·class="p"·data-group-id="3212465386-4">{</samp><samp·class="ss">username</samp><samp·class="p">,</samp><samp·class="n">Username</samp><samp·class="p"·data-group-id="3212465386-4">}</samp><samp·class="p">,</samp><samp·class="w">
454 ·······</samp><samp·class="p"·data-group-id="0279715600-5">{</samp><samp·class="ss">password</samp><samp·class="p">,</samp><samp·class="n">Password</samp><samp·class="p"·data-group-id="0279715600-5">}</samp><samp·class="p"·data-group-id="0279715600-2">]</samp><samp·class="p"·data-group-id="0279715600-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="3212465386-5">{</samp><samp·class="ss">password</samp><samp·class="p">,</samp><samp·class="n">Password</samp><samp·class="p"·data-group-id="3212465386-5">}</samp><samp·class="p"·data-group-id="3212465386-2">]</samp><samp·class="p"·data-group-id="3212465386-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.62 KB
OEBPS/content.opf
2.58 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="0819839881-1">(</span><span·class="p">_</span><span·class="n">Config</span><span·class="p"·data-group-id="0819839881-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="8266056720-1">(</span><span·class="p">_</span><span·class="n">Config</span><span·class="p"·data-group-id="8266056720-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
114 ····</span><span·class="p"·data-group-id="0819839881-2">{</span><span·class="ss">started</span><span·class="p">,</span><span·class="n">ServerId</span><span·class="p"·data-group-id="0819839881-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:·63272551dc714683f1d3168e2f52cc68f3d029be0ce5700cb4f9e0a06a99e478·...·]-3">)</span><span·class="p">,</span><span·class="w">114 ····</span><span·class="p"·data-group-id="8266056720-2">{</span><span·class="ss">started</span><span·class="p">,</span><span·class="n">ServerId</span><span·class="p"·data-group-id="8266056720-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:·d35dfbc8ae4921fedda650e0a12a51b2c9dc417a8a4be7c2c89a1d38c50d0733·...·]-3">)</span><span·class="p">,</span><span·class="w">
115 ····</span><span·class="p"·data-group-id="0819839881-4">{</span><span·class="ss">clients</span><span·class="p">,</span><span·class="p"·data-group-id="0819839881-5">[</span><span·class="p"·data-group-id="0819839881-5">]</span><span·class="p"·data-group-id="0819839881-4">}</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·269,·SHA:·878d4f4f9d2a2cbe89f25cd02d23b5a044773ffaf338e15e5ccb5bbbc6aa3911·...·]-6">)</span><span·class="p">,</span><span·class="w">115 ····</span><span·class="p"·data-group-id="8266056720-4">{</span><span·class="ss">clients</span><span·class="p">,</span><span·class="p"·data-group-id="8266056720-5">[</span><span·class="p"·data-group-id="8266056720-5">]</span><span·class="p"·data-group-id="8266056720-4">}</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·269,·SHA:·12c8f943a24d71e0be0ab817ebc92a659170eb35c0e3da2d69eab9b887393c4c·...·]-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="0819839881-7">(</span><span·class="p"·data-group-id="0819839881-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="8266056720-7">(</span><span·class="p"·data-group-id="8266056720-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="0819839881-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="0819839881-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="8266056720-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="8266056720-8">)</span><span·class="p">,</span><span·class="w">
118 ····</span><span·class="p"·data-group-id="0819839881-9">{</span><span·class="ss">clients</span><span·class="p">,</span><span·class="p"·data-group-id="0819839881-10">[</span><span·class="n">MyId</span><span·class="p"·data-group-id="0819839881-10">]</span><span·class="p"·data-group-id="0819839881-9"[·...·truncated·by·diffoscope;·len:·299,·SHA:·0480c4c55943348d242a4ef1d9a2a8e819bb6bca3b0bfb08c2da40dd6fe9de68·...·]-11">)</span><span·class="p">,</span><span·class="w">118 ····</span><span·class="p"·data-group-id="8266056720-9">{</span><span·class="ss">clients</span><span·class="p">,</span><span·class="p"·data-group-id="8266056720-10">[</span><span·class="n">MyId</span><span·class="p"·data-group-id="8266056720-10">]</span><span·class="p"·data-group-id="8266056720-9"[·...·truncated·by·diffoscope;·len:·299,·SHA:·ea765f62a3f62991f53c7c81807ef1fb173dbb12525f4337729d25a8267d4cc9·...·]-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="0819839881-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="0819839881-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="8266056720-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="8266056720-12">)</span><span·class="p">,</span><span·class="w">
120 ····</span><span·class="p"·data-group-id="0819839881-13">{</span><span·class="ss">clients</span><span·class="p">,</span><span·class="p"·data-group-id="0819839881-14">[</span><span·class="p"·data-group-id="0819839881-14">]</span><span·class="p"·data-group-id="0819839881-13">}</span><span·class="w">[·...·truncated·by·diffoscope;·len:·274,·SHA:·8c4d7925eb22eb8efcc0da94ffcf1e3913516977f8b35e90602070a6bee181aa·...·]-15">)</span><span·class="p">,</span><span·class="w">120 ····</span><span·class="p"·data-group-id="8266056720-13">{</span><span·class="ss">clients</span><span·class="p">,</span><span·class="p"·data-group-id="8266056720-14">[</span><span·class="p"·data-group-id="8266056720-14">]</span><span·class="p"·data-group-id="8266056720-13">}</span><span·class="w">[·...·truncated·by·diffoscope;·len:·274,·SHA:·e8a54ab92a0519493d3d86e6d51fdbaee9ed7d33dc826bd0841abad6c7f4e7ce·...·]-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="0819839881-16">(</span><span·class="n">ServerId</span><span·class="p"·data-group-id="0819839881-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="8266056720-16">(</span><span·class="n">ServerId</span><span·class="p"·data-group-id="8266056720-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="3519021897-1">{</span><span·class="n">CfgVarName</span><span·class="p">,</span><span·class="n">Value</span><span·class="p"·data-group-id="3519021897-1">}</span><span·class="p">.</span></code></pre><p>where</p><pre><code·class="makeup·erlang"·translate="no">[·...·truncated·by·diffoscope;·len:·227,·SHA:·43fa9e66a904d73683c9dabaf8cc43fdabc5f3229f2988d2108c5af5eb7c7de3·...·]-1">)</span><span·class="w">145 <p>A·configuration·file·can·contain·any·number·of·elements·of·the·type:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="3954032148-1">{</span><span·class="n">CfgVarName</span><span·class="p">,</span><span·class="n">Value</span><span·class="p"·data-group-id="3954032148-1">}</span><span·class="p">.</span></code></pre><p>where</p><pre><code·class="makeup·erlang"·translate="no">[·...·truncated·by·diffoscope;·len:·227,·SHA:·9326083766b89474a89551305fe94ecffabbc9d171b1f1bdee97508f184d259b·...·]-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="9340546579-2">(</span><span·class="p"·data-group-id="9340546579-2">)</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="9340546579-3">[</span><span·class="p"·data-group-id="9340546579-4">{</span><sp[·...·truncated·by·diffoscope;·len:·176,·SHA:·9cb05712c82c83335897dfb0a73671cca1e4943105b0fa7762a315f9fa604dfe·...·]-3">]</span></code></pre><h2·id="requiring-and-reading-configuration-data"·class="section-heading">146 </span><span·class="n">Value</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">term</span><span·class="p"·data-group-id="0671181652-2">(</span><span·class="p"·data-group-id="0671181652-2">)</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="0671181652-3">[</span><span·class="p"·data-group-id="0671181652-4">{</span><sp[·...·truncated·by·diffoscope;·len:·176,·SHA:·3037f8e244179f57b595a48c62254d56e53af741c6b7386ab1a1ec1dd7884d1c·...·]-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="0053923699-1">(</span><span·class="p"·data-group-id="0053923699-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="2041381382-1">(</span><span·class="p"·data-group-id="2041381382-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
174 ····</span><span·class="p"·data-group-id="0053923699-2">[</span><span·class="p"·data-group-id="0053923699-3">{</span><span·class="ss">require</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">domain</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;CO[·...·truncated·by·diffoscope;·len:·124,·SHA:·122047c29794215143981ba7812026ae25d9130ad87b481dbf0020a0bc2302c4·...·]-2">]</span><span·class="p">.</span><span·class="w">174 ····</span><span·class="p"·data-group-id="2041381382-2">[</span><span·class="p"·data-group-id="2041381382-3">{</span><span·class="ss">require</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">domain</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;CO[·...·truncated·by·diffoscope;·len:·124,·SHA:·4969794d4c9973a370a7609c4e7c346581978ea3173d3ac135722e1df8195f5d·...·]-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="0053923699-4">(</span><span·class="n">Config</span><span·class="p"·data-group-id="0053923699-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="2041381382-4">(</span><span·class="n">Config</span><span·class="p"·data-group-id="2041381382-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="0053923699-5">(</span><span·class="ss">domain</span><span·class="p"·data-group-id="0053923699-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="2041381382-5">(</span><span·class="ss">domain</span><span·class="p"·data-group-id="2041381382-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="6341290798-1">{</span><span·class="ss">ftp_host</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6341290798-2">[</span><span·class="p"·data-group-id="6341290798-3">{</span><span·class="ss">ftp</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·89,·SHA:·1d9ee33216dcb03e56612190bb5a3a23dd999a91f144131b738ee39f85d0d60f·...·]-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="0566445182-1">{</span><span·class="ss">ftp_host</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0566445182-2">[</span><span·class="p"·data-group-id="0566445182-3">{</span><span·class="ss">ftp</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·89,·SHA:·ca1bae0aa61b88ffb69f79c705cd4482a25bb886c80dbe2af56557111f8e821b·...·]-3">}</span><span·class="p">,</span><span·class="w">
265 ············</span><span·class="p"·data-group-id="6341290798-4">{</span><span·class="ss">username</span><span·class="p">,</span><span·class="s">&quot;tester&quot;</span><span·class="p"·data-group-id="6341290798-4">}</span><span·class="p">,</span><span·class="w">265 ············</span><span·class="p"·data-group-id="0566445182-4">{</span><span·class="ss">username</span><span·class="p">,</span><span·class="s">&quot;tester&quot;</span><span·class="p"·data-group-id="0566445182-4">}</span><span·class="p">,</span><span·class="w">
266 ············</span><span·class="p"·data-group-id="6341290798-5">{</span><span·class="ss">password</span><span·class="p">,</span><span·class="s">&quot;letmein&quot;</span><span·class="p"·data-group-id="6341290798-5">}</span><span·class="p"·data-group-id="6341290798-2">]</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·11,·SHA:·f7ed6eeaf0313f2b56f7607b5d4bcfcbc0864f7131246b7b74a30f71055ac65c·...·]-1">}</span><span·class="p">.</span><span·class="w">266 ············</span><span·class="p"·data-group-id="0566445182-5">{</span><span·class="ss">password</span><span·class="p">,</span><span·class="s">&quot;letmein&quot;</span><span·class="p"·data-group-id="0566445182-5">}</span><span·class="p"·data-group-id="0566445182-2">]</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·11,·SHA:·7c96d72bde6298b320b803f467458fb98bc0294a93713a10de4d006cf9accb14·...·]-1">}</span><span·class="p">.</span><span·class="w">
  
267 </span><span·class="p"·data-group-id="6341290798-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="6341290798-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="0566445182-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="0566445182-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="4008914199-1">[</span><span·class="p"·data-group-id="4008914199-2">{</span><span·class="ss">ftp_host</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4008914199-3">[</span><span·class="p"·data-group-id="4008914199-4">{</s[·...·truncated·by·diffoscope;·len:·822,·SHA:·b8d658995552aac46b47f24b545143538d4c5f26f2728214785498d490fd4249·...·]-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="4628960830-1">[</span><span·class="p"·data-group-id="4628960830-2">{</span><span·class="ss">ftp_host</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4628960830-3">[</span><span·class="p"·data-group-id="4628960830-4">{</s[·...·truncated·by·diffoscope;·len:·822,·SHA:·3f069b141a8ef15f747b30cd66603f07b25de00bcd4c30cba84931d136f1be03·...·]-2">}</span><span·class="p">,</span><span·class="w">
288 ·</span><span·class="p"·data-group-id="4008914199-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="4008914199-7">}</span><span·class="p"·data-group-id="4008914199-1">]</span></code></pre><h2·id="examples-of-configuration-data-handling"·class="section-heading">288 ·</span><span·class="p"·data-group-id="4628960830-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="4628960830-7">}</span><span·class="p"·data-group-id="4628960830-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="4520909486-1">{</span><span·class="ss">ftp_host</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4520909486-2">[</span><span·class="p"·data-group-id="4520909486-3">{</span><span·class="ss">ftp</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·89,·SHA:·86d547d09ce2a33c61a21301630816e41aabc837216400c21a6c9f1a04f13e1a·...·]-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="7161435970-1">{</span><span·class="ss">ftp_host</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7161435970-2">[</span><span·class="p"·data-group-id="7161435970-3">{</span><span·class="ss">ftp</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·89,·SHA:·499db5bc254343ed54a240eaa4bcfcb15ab4d881249574ae92cb7fe1e93a8b2b·...·]-3">}</span><span·class="p">,</span><span·class="w">
296 ············</span><span·class="p"·data-group-id="4520909486-4">{</span><span·class="ss">username</span><span·class="p">,</span><span·class="s">&quot;tester&quot;</span><span·class="p"·data-group-id="4520909486-4">}</span><span·class="p">,</span><span·class="w">296 ············</span><span·class="p"·data-group-id="7161435970-4">{</span><span·class="ss">username</span><span·class="p">,</span><span·class="s">&quot;tester&quot;</span><span·class="p"·data-group-id="7161435970-4">}</span><span·class="p">,</span><span·class="w">
297 ············</span><span·class="p"·data-group-id="4520909486-5">{</span><span·class="ss">password</span><span·class="p">,</span><span·class="s">&quot;letmein&quot;</span><span·class="p"·data-group-id="4520909486-5">}</span><span·class="p"·data-group-id="4520909486-2">]</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·11,·SHA:·ba7884dd1b8f11a3112c44a8a1a228985032a9faa023b0b56267f73929f2a6dc·...·]-1">}</span><span·class="p">.</span><span·class="w">297 ············</span><span·class="p"·data-group-id="7161435970-5">{</span><span·class="ss">password</span><span·class="p">,</span><span·class="s">&quot;letmein&quot;</span><span·class="p"·data-group-id="7161435970-5">}</span><span·class="p"·data-group-id="7161435970-2">]</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·11,·SHA:·87b504577dbf2502e5e1c7ab291889e4831366b347060e02bb89e535c15ed23a·...·]-1">}</span><span·class="p">.</span><span·class="w">
  
298 </span><span·class="p"·data-group-id="4520909486-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="4520909486-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="7161435970-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="7161435970-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="2422729464-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="2422729464-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="6779500116-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="6779500116-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
302 ····</span><span·class="p"·data-group-id="2422729464-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id="2422729464-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:·6ca73b789ef551dd2e2eedd6c0fdb93310de826486cd5da4a00700e2bbf218e9·...·]-3">)</span><span·class="p">,</span><span·class="w">302 ····</span><span·class="p"·data-group-id="6779500116-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id="6779500116-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:·fba473f58d879cbcf13eeebabbf400c645a0b1dd31088fe10b44d656b1cd13ba·...·]-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="2422729464-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="2422729464-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="6779500116-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="6779500116-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="2422729464-5">(</span><span·class="ss">ftp</span><span·class="p"·data-group-id="2422729464-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="6779500116-5">(</span><span·class="ss">ftp</span><span·class="p"·data-group-id="6779500116-5">)</span><span·class="p">.</span><span·class="w">
  
306 </span><span·class="nf">ftptest</span><span·class="p"·data-group-id="2422729464-6">(</span><span·class="p"·data-group-id="2422729464-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="6779500116-6">(</span><span·class="p"·data-group-id="6779500116-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
307 ····</span><span·class="p"·data-group-id="2422729464-7">[</span><span·class="p"·data-group-id="2422729464-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="2422729464-8">}</span><span·class="p">,</span><span·class="w">307 ····</span><span·class="p"·data-group-id="6779500116-7">[</span><span·class="p"·data-group-id="6779500116-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="6779500116-8">}</span><span·class="p">,</span><span·class="w">
308 ·····</span><span·class="p"·data-group-id="2422729464-9">{</span><span·class="ss">require</span><span·class="p">,</span><span·class="ss">lm_directory</span><span·class="p"·data-group-id="2422729464-9">}</span><span·class="p"·data-group-id="2422729464-7">]</span><span·class="p">.</span><span·class="w">308 ·····</span><span·class="p"·data-group-id="6779500116-9">{</span><span·class="ss">require</span><span·class="p">,</span><span·class="ss">lm_directory</span><span·class="p"·data-group-id="6779500116-9">}</span><span·class="p"·data-group-id="6779500116-7">]</span><span·class="p">.</span><span·class="w">
  
309 </span><span·class="nf">ftptest</span><span·class="p"·data-group-id="2422729464-10">(</span><span·class="n">Config</span><span·class="p"·data-group-id="2422729464-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="6779500116-10">(</span><span·class="n">Config</span><span·class="p"·data-group-id="6779500116-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="2422729464-11">(</span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">get_config</span><span·class="p"·data-group-id="2422729464-12">(</span><span·class="ss">lm_directory</span><span·class="p"·data-group-id="2422729464-12">)</span><span[·...·truncated·by·diffoscope;·len:·127,·SHA:·e7d05e18158323f4fb4fe01202a7ed4c6a2db50dede2fb333602b6aaaad54ac0·...·]-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="6779500116-11">(</span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">get_config</span><span·class="p"·data-group-id="6779500116-12">(</span><span·class="ss">lm_directory</span><span·class="p"·data-group-id="6779500116-12">)</span><span[·...·truncated·by·diffoscope;·len:·127,·SHA:·b586998d51451398773d72772e221db7777d0fd3d21d56397716eab810e65203·...·]-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="2422729464-13">(</span><span·class="nc">proplists</span><span·class="p">:</span><span·class="nf">get_value</span><span·class="p"·data-group-id="2422729464-14">(</span><span·class="ss">priv_dir</span><span·class="p">,</span><span·class="n">Config</span><spa[·...·truncated·by·diffoscope;·len:·184,·SHA:·cc19c93f2745148df76a36e5508e65506b3674a8f290c71bb98bd66f8bde6555·...·]-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="6779500116-13">(</span><span·class="nc">proplists</span><span·class="p">:</span><span·class="nf">get_value</span><span·class="p"·data-group-id="6779500116-14">(</span><span·class="ss">priv_dir</span><span·class="p">,</span><span·class="n">Config</span><spa[·...·truncated·by·diffoscope;·len:·184,·SHA:·16145211469d03ebecfd1763c7d6e60605d02c29a77411c188ff45120b57992b·...·]-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="2422729464-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="2422729464-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="6779500116-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="6779500116-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="9429532486-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="9429532486-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="0124338688-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="0124338688-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
315 ····</span><span·class="p"·data-group-id="9429532486-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Handle1</span><span·class="p"·data-group-id="9429532486-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ct_ftp</span[·...·truncated·by·diffoscope;·len:·179,·SHA:·2d6f1689eacd9d0daf88197b292b1b8c1e602f7189dfe8d7a7d1ded280a84a19·...·]-3">)</span><span·class="p">,</span><span·class="w">315 ····</span><span·class="p"·data-group-id="0124338688-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Handle1</span><span·class="p"·data-group-id="0124338688-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ct_ftp</span[·...·truncated·by·diffoscope;·len:·179,·SHA:·c918b8e3385b736cdf08597007fee8c4dd7e9c2b7396d33a12794a52c76850a1·...·]-3">)</span><span·class="p">,</span><span·class="w">
316 ····</span><span·class="p"·data-group-id="9429532486-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Handle2</span><span·class="p"·data-group-id="9429532486-4">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ct_ftp</span[·...·truncated·by·diffoscope;·len:·179,·SHA:·b4083729481ef4eddd35cf518d2758167989d63c1575e7f7eed893ffde3ed8a7·...·]-5">)</span><span·class="p">,</span><span·class="w">316 ····</span><span·class="p"·data-group-id="0124338688-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Handle2</span><span·class="p"·data-group-id="0124338688-4">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ct_ftp</span[·...·truncated·by·diffoscope;·len:·179,·SHA:·3a7520f022b9b61059cd4278e91515bf70504b723079259c5b6260fce012f8ae·...·]-5">)</span><span·class="p">,</span><span·class="w">
317 ····</span><span·class="p"·data-group-id="9429532486-6">[</span><span·class="p"·data-group-id="9429532486-7">{</span><span·class="ss">ftp_handles</span><span·class="p">,</span><span·class="p"·data-group-id="9429532486-8">[</span><span·class="n">Handle1</span><span·class="p">,</span><span·class="n"[·...·truncated·by·diffoscope;·len:·263,·SHA:·cff50d582f33df7f73ffc33cc433cf06da790eecf15450c6bc0b81c00ebe53de·...·]-6">]</span><span·class="p">.</span><span·class="w">317 ····</span><span·class="p"·data-group-id="0124338688-6">[</span><span·class="p"·data-group-id="0124338688-7">{</span><span·class="ss">ftp_handles</span><span·class="p">,</span><span·class="p"·data-group-id="0124338688-8">[</span><span·class="n">Handle1</span><span·class="p">,</span><span·class="n"[·...·truncated·by·diffoscope;·len:·263,·SHA:·d430beb8eb513c37289357a85599f6cbd242f7fa96f10a34d620880ce45e1b9f·...·]-6">]</span><span·class="p">.</span><span·class="w">
  
318 </span><span·class="nf">end_per_testcase</span><span·class="p"·data-group-id="9429532486-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="9429532486-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="0124338688-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="0124338688-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="9429532486-10">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="9429532486-11">(</span><span·class="n">Handle</span><span·class="p"·data-group-id="9429532486-11">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·[·...·truncated·by·diffoscope;·len:·214,·SHA:·890d92093a3a8a7345c70e37c19eb42136af3a6725fad858d1711bceb80dbd28·...·]-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="0124338688-10">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="0124338688-11">(</span><span·class="n">Handle</span><span·class="p"·data-group-id="0124338688-11">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·[·...·truncated·by·diffoscope;·len:·214,·SHA:·b1bd071c3c521d48c7938d351414178cf3935876d189c7781c51900e73f741b2·...·]-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="9429532486-13">(</span><span·class="ss">ftp_handles</span><span·class="p">,</span><span·class="n">Config</span><span·class="p"·data-group-id="9429532486-13">)</span><span·class="p"·data-group-id="9429532486-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="0124338688-13">(</span><span·class="ss">ftp_handles</span><span·class="p">,</span><span·class="n">Config</span><span·class="p"·data-group-id="0124338688-13">)</span><span·class="p"·data-group-id="0124338688-10">)</span><span·class="p">.</span><span·class="w">
  
321 </span><span·class="nf">ftptest</span><span·class="p"·data-group-id="9429532486-14">(</span><span·class="p"·data-group-id="9429532486-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="0124338688-14">(</span><span·class="p"·data-group-id="0124338688-14">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
322 ····</span><span·class="p"·data-group-id="9429532486-15">[</span><span·class="p"·data-group-id="9429532486-16">{</span><span·class="ss">require</span><span·class="p">,</span><span·class="ss">ftp_host</span><span·class="p"·data-group-id="9429532486-16">}</span><span·class="p">,</span><span·class="w">322 ····</span><span·class="p"·data-group-id="0124338688-15">[</span><span·class="p"·data-group-id="0124338688-16">{</span><span·class="ss">require</span><span·class="p">,</span><span·class="ss">ftp_host</span><span·class="p"·data-group-id="0124338688-16">}</span><span·class="p">,</span><span·class="w">
323 ·····</span><span·class="p"·data-group-id="9429532486-17">{</span><span·class="ss">require</span><span·class="p">,</span><span·class="ss">lm_directory</span><span·class="p"·data-group-id="9429532486-17">}</span><span·class="p"·data-group-id="9429532486-15">]</span><span·class="p">.</span><span·class="w">323 ·····</span><span·class="p"·data-group-id="0124338688-17">{</span><span·class="ss">require</span><span·class="p">,</span><span·class="ss">lm_directory</span><span·class="p"·data-group-id="0124338688-17">}</span><span·class="p"·data-group-id="0124338688-15">]</span><span·class="p">.</span><span·class="w">
  
324 </span><span·class="nf">ftptest</span><span·class="p"·data-group-id="9429532486-18">(</span><span·class="n">Config</span><span·class="p"·data-group-id="9429532486-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="0124338688-18">(</span><span·class="n">Config</span><span·class="p"·data-group-id="0124338688-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="9429532486-19">(</span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">get_config</span><span·class="p"·data-group-id="9429532486-20">(</span><span·class="ss">lm_directory</span><span·class="p"·data-group-id="9429532486-20">)</span><span[·...·truncated·by·diffoscope;·len:·127,·SHA:·b11fab87119fd7a1cb0c6d7b26e27e50f0e472d4c71f5fffd6e7532addc09c27·...·]-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="0124338688-19">(</span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">get_config</span><span·class="p"·data-group-id="0124338688-20">(</span><span·class="ss">lm_directory</span><span·class="p"·data-group-id="0124338688-20">)</span><span[·...·truncated·by·diffoscope;·len:·127,·SHA:·c0ac4f265a8e58c2fb72f401827ec20903c204a75979377dc77a223403a96f14·...·]-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="9429532486-21">(</span><span·class="nc">proplists</span><span·class="p">:</span><span·class="nf">get_value</span><span·class="p"·data-group-id="9429532486-22">(</span><span·class="ss">priv_dir</span><span·class="p">,</span><span·class="n">Config</span><spa[·...·truncated·by·diffoscope;·len:·184,·SHA:·b6105924ac50b0696b3457348e7accaf0279e851dad90c01f18033a3b2093288·...·]-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="0124338688-21">(</span><span·class="nc">proplists</span><span·class="p">:</span><span·class="nf">get_value</span><span·class="p"·data-group-id="0124338688-22">(</span><span·class="ss">priv_dir</span><span·class="p">,</span><span·class="n">Config</span><spa[·...·truncated·by·diffoscope;·len:·184,·SHA:·a8ccae0180fb066b0c5b59b07d07bd23ec770eb87b8ff81cae18bf7d496fc608·...·]-21">)</span><span·class="p">,</span><span·class="w">
327 ····</span><span·class="p"·data-group-id="9429532486-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="9429532486-23">]</span><span·class="w">·</span><span·class="o">=</s[·...·truncated·by·diffoscope;·len:·301,·SHA:·b1d1278f02c2ba48b66f0c68e09fa60a2fc1c53425fd48b2e617eb044db1dfc2·...·]-24">)</span><span·class="p">,</span><span·class="w">327 ····</span><span·class="p"·data-group-id="0124338688-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="0124338688-23">]</span><span·class="w">·</span><span·class="o">=</s[·...·truncated·by·diffoscope;·len:·301,·SHA:·dfbefd657d23c9218e050304f349b97bbaa0542d6321b80751920802f9f7da7b·...·]-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="9429532486-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="9429532486-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="0124338688-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="0124338688-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="1604144964-1">(</span><span·class="ss">config_driver</span><span·class="p"·data-group-id="1604144964-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="4168680067-1">(</span><span·class="ss">config_driver</span><span·class="p"·data-group-id="4168680067-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="1604144964-2">(</span><span·class="p"·data-group-id="1604144964-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:·17a3fc6ee0fb44493a88a58a452b113682e21c9e02c4171432de25ceaaa2b147·...·]-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="4168680067-2">(</span><span·class="p"·data-group-id="4168680067-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:·a9d9e4ba7d93b0dd11fc73c0cf519bd53cb174b23134ea214014dadf87fb5754·...·]-2">)</span><span·class="p">.</span><span·class="w">
  
338 </span><span·class="nf">read_config</span><span·class="p"·data-group-id="1604144964-4">(</span><span·class="n">ServerName</span><span·class="p"·data-group-id="1604144964-4">)</span><span·class="p">-&gt;</span><span·class="w">338 </span><span·class="nf">read_config</span><span·class="p"·data-group-id="4168680067-4">(</span><span·class="n">ServerName</span><span·class="p"·data-group-id="4168680067-4">)</span><span·class="p">-&gt;</span><span·class="w">
339 ····</span><span·class="n">ServerModule</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">list_to_atom</span><span·class="p"·data-group-id="1604144964-5">(</span><span·class="n">ServerName</span><span·class="p"·data-group-id="1604144964-5">)</span><span·class="p">,</span><span·class="w">339 ····</span><span·class="n">ServerModule</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">list_to_atom</span><span·class="p"·data-group-id="4168680067-5">(</span><span·class="n">ServerName</span><span·class="p"·data-group-id="4168680067-5">)</span><span·class="p">,</span><span·class="w">
Max diff block lines reached; 30301/81934 bytes (36.98%) of diff not shown.
15.5 KB
./usr/share/doc/erlang-doc/html/lib/common_test-1.27.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="8357481486-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="8357481486-1">}</span><span·class="p">.</span><span·class="w">204 </span><span·class="p"·data-group-id="3512701561-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="3512701561-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="8357481486-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="8357481486-2">}</span><span·class="p">.</span><span·class="w">207 </span><span·class="p"·data-group-id="3512701561-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="3512701561-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="8357481486-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="8357481486-3">}</span><span·class="p">.</span><span·class="w">210 </span><span·class="p"·data-group-id="3512701561-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="3512701561-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="8357481486-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="8357481486-4">}</span><span·class="p">.</span><span·class="w">213 </span><span·class="p"·data-group-id="3512701561-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="3512701561-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="8357481486-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="8357481486-5">}</span><span·class="p">.</span><span·class="w">216 </span><span·class="p"·data-group-id="3512701561-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="3512701561-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="8357481486-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="8357481486-6">}</span><span·class="p">.</span><span·class="w">218 </span><span·class="p"·data-group-id="3512701561-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="3512701561-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="8357481486-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="8357481486-7">}</span><span·class="p">.</span><span·class="w">221 </span><span·class="p"·data-group-id="3512701561-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="3512701561-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="8357481486-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="8357481486-8">}</span><span·class="p">.</span><span·class="w">223 </span><span·class="p"·data-group-id="3512701561-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="3512701561-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="8357481486-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="8357481486-9">}</span><span·class="p">.</span><span·class="w">225 </span><span·class="p"·data-group-id="3512701561-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="3512701561-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="8357481486-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="8357481486-10">}</span><span·class="p">.</span><span·class="w">227 </span><span·class="p"·data-group-id="3512701561-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="3512701561-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="8357481486-11">{</span><span·class="ss">cross</span><span·class="p">,</span><span·class="p"·data-group-id="8357481486-12">[</span><span·class="p"·data-group-id="8357481486-13">{</span><span·class="n">Tag</span><span·class="p">,</span><span·class="n">Mods</[·...·truncated·by·diffoscope;·len:·154,·SHA:·791c841fed4d31bfb48ef842e28a317e74bbaec56d3b6bc2b9d777ff3e5eae81·...·]-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="3512701561-11">{</span><span·class="ss">cross</span><span·class="p">,</span><span·class="p"·data-group-id="3512701561-12">[</span><span·class="p"·data-group-id="3512701561-13">{</span><span·class="n">Tag</span><span·class="p">,</span><span·class="n">Mods</[·...·truncated·by·diffoscope;·len:·154,·SHA:·a986029b1f0b6505dca531441d1dde0a22d292d8365a9f753ae43b6f977f2421·...·]-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="9527150360-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:·f3098aaf7c713b392b36f5ffa3727bc5589c21489abcfecafed2ea712b518767·...·]-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="0087973174-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:·51c8b69534a7d15b855403321182efc53c55e2cadcce58de77897ea97803ec26·...·]-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="6175634301-1">(</span><span·class="n">Level</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6175634301-2">[</span><span·class="p"·data-group-id="6175634301-3">{</span><span·class="ss">s1</span><span·class="p">,</span><s[·...·truncated·by·diffoscope;·len:·387,·SHA:·b18a437454ea571274f07e20c539e25891f97f3413119b9cb9f77e7b45506da6·...·]-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="0497008989-1">(</span><span·class="n">Level</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0497008989-2">[</span><span·class="p"·data-group-id="0497008989-3">{</span><span·class="ss">s1</span><span·class="p">,</span><s[·...·truncated·by·diffoscope;·len:·387,·SHA:·f9845909c36b6fae5070d1703b2b3548a7a40c9e4b07bce28d01406fe02a8fe3·...·]-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.6/doc/html/erlang.html#t:term/0">term</a>()·|·Default.</pre>1917 ························ValueOrElement·::·<a·href="../../../../erts-15.2.6/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="3088703984-1">{</span><span·class="ss">unix</span><span·class="p">,</span><span·class="p"·data-group-id="3088703984-2">[</span><span·class="p"·data-group-id="3088703984-3">{</span><span·class="ss">telnet</span><span·class="p">,</span><span·class="n">IpAddr</span><span·class="p"·data-group-id="3088703984-3">}</span><span·class="p">,</span><span·class="w"> 
1922 ·······</span><span·class="p"·data-group-id="3088703984-4">{</span><span·class="ss">user</span><span·class="p">,</span><span·class="p"·data-group-id="3088703984-5">[</span><span·class="p"·data-group-id="3088703984-6">{</span><span·class="ss">username</span><span·class="p">,</span><span·class="n">Username</span><span·class="p"·data-group-id="3088703984-6">}</span><span·class="p">,</span><span·class="w"> 
1923 ··············</span><span·class="p"·data-group-id="3088703984-7">{</span><span·class="ss">password</span><span·class="p">,</span><span·class="n">Password</span><span·class="p"·data-group-id="3088703984-7">}</span><span·class="p"·data-group-id="3088703984-5">]</span><span·class="p"·data-group-id="3088703984-4">}</span><span·class="p"·data-group-id="3088703984-2">]</span><span·class="p"·data-group-id="3088703984-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="9832520451-1">(</span><span·class="ss">unix</span><span·class="p">,</span><span·class="n">Default</span><span·class="p"·data-group-id="9832520451-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="9832520451-2">[</span><span·class="p"·data-group-id="9832520451-3">{</span><span·class="ss">telnet</span><span·class="p">,</span><span·class="n">IpAddr</span><span·class="p"·data-group-id="9832520451-3">}</span><span·class="p">,</span><span·class="w"> 
1924 ·</span><span·class="p"·data-group-id="9832520451-4">{</span><span·class="ss">user</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9832520451-5">[</span><span·class="p"·data-group-id="9832520451-6">{</span><span·class="[·...·truncated·by·diffoscope;·len:·520,·SHA:·d960ab0be3e28482dc4ffd60df777126788304789bc75c231e96d273af514cb1·...·]</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:·85e63c085484c5fec9224f5a248aeb3a86bdfb44e1c8fa2539a029336c16e748·...·]</span><span·class="w">
 1922 ·······</span><span·class="p"·data-group-id="6626633697-4">{</span><span·class="ss">user</span><span·class="p">,</span><span·class="p"·data-group-id="6626633697-5">[</span><span·class="p"·data-group-id="6626633697-6">{</span><span·class="ss">username</span><span·class="p">,</span><span·class="n">Username</span><span·class="p"·data-group-id="6626633697-6">}</span><span·class="p">,</span><span·class="w">
 1923 ··············</span><span·class="p"·data-group-id="6626633697-7">{</span><span·class="ss">password</span><span·class="p">,</span><span·class="n">Password</span><span·class="p"·data-group-id="6626633697-7">}</span><span·class="p"·data-group-id="6626633697-5">]</span><span·class="p"·data-group-id="6626633697-4">}</span><span·class="p"·data-group-id="6626633697-2">]</span><span·class="p"·data-group-id="6626633697-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="7370123763-1">(</span><span·class="ss">unix</span><span·class="p">,</span><span·class="n">Default</span><span·class="p"·data-group-id="7370123763-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="7370123763-2">[</span><span·class="p"·data-group-id="7370123763-3">{</span><span·class="ss">telnet</span><span·class="p">,</span><span·class="n">IpAddr</span><span·class="p"·data-group-id="7370123763-3">}</span><span·class="p">,</span><span·class="w">
 1924 ·</span><span·class="p"·data-group-id="7370123763-4">{</span><span·class="ss">user</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7370123763-5">[</span><span·class="p"·data-group-id="7370123763-6">{</span><span·class="ss">username</span><span·class="p">,</span><span·class="n">Username</span><span·class="p"·data-group-id="7370123763-6">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7370123763-7">{</span><span·class="ss">password</span><span·class="p">,</span><span·class="n">Password</span><span·class="p"·data-group-id="7370123763-7">}</span><span·class="p"·data-group-id="7370123763-5">]</span><span·class="p"·data-group-id="7370123763-4">}</span><span·class="p"·data-group-id="7370123763-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="9832520451-8">(</span><span·class="p"·data-group-id="9832520451-9">{</span><span·class="ss">unix</span><span·class="p">,</span><span·class="ss">telnet</span><span·class="p"·data-group-id="9832520451-9">}</span><span·class="p">,</span><span·class="n">Defaul[·...·truncated·by·diffoscope;·len:·49,·SHA:·45e37d543f14713048c523bd9d85d7cd6c3a68e6a68c2199bf49b4360eb87876·...·]-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="7370123763-8">(</span><span·class="p"·data-group-id="7370123763-9">{</span><span·class="ss">unix</span><span·class="p">,</span><span·class="ss">telnet</span><span·class="p"·data-group-id="7370123763-9">}</span><span·class="p">,</span><span·class="n">Defaul[·...·truncated·by·diffoscope;·len:·49,·SHA:·19a8af397ada6138890c088c77175831d9262cebf234da1eaf044fcf56c591be·...·]-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="9832520451-10">(</span><span·class="p"·data-group-id="9832520451-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="9832520451-1[·...·truncated·by·diffoscope;·len:·106,·SHA:·c3534a5c32103ec4855364ffef43a1a014cd5dfad4ff23f6b74363cd40c4c5a3·...·]-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="7370123763-10">(</span><span·class="p"·data-group-id="7370123763-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="7370123763-1[·...·truncated·by·diffoscope;·len:·106,·SHA:·3be9a8cdf9766f0383f3a02c8099d1791d651ca57fda8fb479f677f92ba3d05e·...·]-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="9832520451-12">(</span><span·class="p"·data-group-id="9832520451-13">{</span><span·class="ss">unix</span><span·class="p">,</span><span·class="ss">ftp</span><span·class="p"·data-group-id="9832520451-13">}</span><span·class="p">,</span><span·class="n">Defaul[·...·truncated·by·diffoscope;·len:·49,·SHA:·45e37d543f14713048c523bd9d85d7cd6c3a68e6a68c2199bf49b4360eb87876·...·]-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="7370123763-12">(</span><span·class="p"·data-group-id="7370123763-13">{</span><span·class="ss">unix</span><span·class="p">,</span><span·class="ss">ftp</span><span·class="p"·data-group-id="7370123763-13">}</span><span·class="p">,</span><span·class="n">Defaul[·...·truncated·by·diffoscope;·len:·49,·SHA:·19a8af397ada6138890c088c77175831d9262cebf234da1eaf044fcf56c591be·...·]-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="9832520451-14">(</span><span·class="ss">unknownkey</span><span·class="p">,</span><span·class="n">Default</span><span·class="p"·data-group-id="9832520451-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="7370123763-14">(</span><span·class="ss">unknownkey</span><span·class="p">,</span><span·class="n">Default</span><span·class="p"·data-group-id="7370123763-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="6475516523-1">(</span><span·class="ss">myuser</span><span·class="p">,</span><span·class="p"·data-group-id="6475516523-2">{</span><span·class="ss">unix</span><span·class="p">,</span><span·class="ss">user</span><span·class="p"·data-group-id="6475516523-2">}<[·...·truncated·by·diffoscope;·len:·47,·SHA:·343cacdfaffa5500cc970faca0effaadf8d2bb0db57eec72b4bcc92d9436aa80·...·]-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="3765154488-1">(</span><span·class="ss">myuser</span><span·class="p">,</span><span·class="p"·data-group-id="3765154488-2">{</span><span·class="ss">unix</span><span·class="p">,</span><span·class="ss">user</span><span·class="p"·data-group-id="3765154488-2">}<[·...·truncated·by·diffoscope;·len:·47,·SHA:·7aefe570447535603d2924852801bf37631183e48d7e89921604ae5ac8fe1f90·...·]-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="6475516523-3">(</span><span·class="ss">myuser</span><span·class="p">,</span><span·class="n">Default</span><span·class="p"·data-group-id="6475516523-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:·2386d2e9d3460e383890560568a41be51bf685bd34eee68d55eeea04186ec1b2·...·]-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="3765154488-3">(</span><span·class="ss">myuser</span><span·class="p">,</span><span·class="n">Default</span><span·class="p"·data-group-id="3765154488-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:·dbe2ac20ea70f2c62d678a1217a27fd3f79a8309fd82b194f1336468778c5d91·...·]-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.6/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.6/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="6671539006-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="6671539006-2">(</span><span·class="p"·data-group-id="6671539006-2">)</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·237,·SHA:·487867cbdedeb0555fbac5666bf258b4db82062403eae765f209b4fdbb15c89e·...·]-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="0773780051-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="0773780051-2">(</span><span·class="p"·data-group-id="0773780051-2">)</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·237,·SHA:·45e10138f49c3fec75fcd2a1986b263ee5893cf3bd9cb989972ee4eebc77d24a·...·]-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.6/doc/html/erlang.html#t:string/0">string</a>(),2236 ·····················Key·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:string/0">string</a>(),
2237 ·····················KeyFile·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:string/0">string</a>(),2237 ·····················KeyFile·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:string/0">string</a>(),
2238 ·····················Reason·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:term/0">term</a>().</pre>2238 ·····················Reason·::·<a·href="../../../../erts-15.2.6/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="7596580054-1">(</span><span·class="p"·data-group-id="7596580054-2">[</span><span·class="p"·data-group-id="7596580054-3">{</span><span·class="ss">config</span><span·class="p">,</span><span·class="p"·data-group-id="7596580054-4">[</span><span·class="s">&quot[·...·truncated·by·diffoscope;·len:·303,·SHA:·914b1dcfbc438f8155555a5aae9c3bda44a4a91ce6062ff3a7b022a27d53b700·...·]-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="0020132202-1">(</span><span·class="p"·data-group-id="0020132202-2">[</span><span·class="p"·data-group-id="0020132202-3">{</span><span·class="ss">config</span><span·class="p">,</span><span·class="p"·data-group-id="0020132202-4">[</span><span·class="s">&quot[·...·truncated·by·diffoscope;·len:·303,·SHA:·f909faf988627888aeb504ea197aa648c86ff5c679bb120c94155eab82beb12e·...·]-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.6/doc/html/erlang.html#t:atom/0">atom</a>(),3026 ·····················SubKey·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:atom/0">atom</a>(),
3027 ·····················Reason·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:term/0">term</a>().</pre>3027 ·····················Reason·::·<a·href="../../../../erts-15.2.6/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="0433011261-1">(</span><span·class="ss">myvar</span><span·class="p"·data-group-id="0433011261-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:·1c689489be20fca53b15ddad405d7b8ba0031d6f804f5400cfd036d7aea0bff8·...·]-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="5760138050-1">(</span><span·class="ss">myvar</span><span·class="p"·data-group-id="5760138050-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:·f266665dcb3a08040085fd2d414b60dfc436f18f4cc71d222c75832e7a87c4fd·...·]-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="8219439152-1">(</span><span·class="ss">a</span><span·class="p">,</span><span·class="p"·data-group-id="8219439152-2">{</span><span·class="ss">machine</span><span·class="p">,</span><span·class="nb">node</span><span·class="p"·data-group-id="8219439152-2">}</span><span·class="p"·data-group-id="8219439152-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:·ab91533c6b3e3df22fe684ef2ce91e1c7012ee10c2a4b70c366b9981d018fb4a·...·]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:·23d053c7fd70488179acc28940867a8a563e9e0159e65b45cd7a8efa543d411c·...·]
 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="3709611630-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="3709611630-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="5639606577-1">{</span><span·class="ss">machine</span><span·class="p">,</span><span·class="p"·data-group-id="5639606577-2">[</span><span·class="p"·data-group-id="5639606577-3">{</span><span·class="nb">node</span><span·class="p">,</span><span·class="p"·data-group-id="5639606577-4">[</span><span·class="p"·data-group-id="5639606577-5">{</span><span·class="ss">telnet</span><span·class="p">,</span><span·class="n">IpAddr</span><span·class="p"·data-group-id="5639606577-5">}</span><span·class="p">,</span><span·class="p"·data-group-id="5639606577-6">{</span><span·class="ss">ftp</span><span·class="p">,</span><span·class="n">IpAddr</span><span·class="p"·data-group-id="5639606577-6">}</span><span·class="p"·data-group-id="5639606577-4">]</span><span·class="p"·data-group-id="5639606577-3">}</span><span·class="p"·data-group-id="5639606577-2">]</span><span·class="p"·data-group-id="5639606577-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="6607804479-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="6607804479-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="0017688627-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="0017688627-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="6607804479-2">(</span><span·class="ss">unix_telnet</span><span·class="p"·data-group-id="6607804479-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="0017688627-2">(</span><span·class="ss">unix_telnet</span><span·class="p"·data-group-id="0017688627-2">)</span><span·class="p">.</span><span·class="w">
3434 </span><span·class="p"·data-group-id="6607804479-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="6607804479-3">}</span><span·class="gp·unselectable">3434 </span><span·class="p"·data-group-id="0017688627-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="0017688627-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="6607804479-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="6607804479-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="0017688627-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="0017688627-4">)</span><span·class="p">.</span><span·class="w">
3436 </span><span·class="p"·data-group-id="6607804479-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="6607804479-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:·38e49ae396166070c39db703a243ff82c724602030e4872c08ae36a605a49f59·...·]-5">}</span></code></pre>3436 </span><span·class="p"·data-group-id="0017688627-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="0017688627-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:·3644f3ac57fdbff208f6b9de078d9ba939059308dfbcb4b6b72d18b11eba6c50·...·]-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.6/doc/html/file.html#t:filename/0">file:filename</a>(),567 ·················LocalFile·::·<a·href="../../../../lib/kernel-10.2.6/doc/html/file.html#t:filename/0">file:filename</a>(),
568 ·················RemoteFile·::·<a·href="../../../../lib/kernel-10.2.6/doc/html/file.html#t:filename/0">file:filename</a>(),568 ·················RemoteFile·::·<a·href="../../../../lib/kernel-10.2.6/doc/html/file.html#t:filename/0">file:filename</a>(),
569 ·················Reason·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:term/0">term</a>().</pre>569 ·················Reason·::·<a·href="../../../../erts-15.2.6/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="9506167113-1">{</span><span·class="nb">node</span><span·class="p">,</span><span·class="p"·data-group-id="9506167113-2">[</span><span·class="p"·data-group-id="9506167113-3">{</span><span·class="ss">ftp</span><span·class="p">,</span><span·class="n">IpAddr</s[·...·truncated·by·diffoscope;·len:·151,·SHA:·38474edc08f5a38e304d52b330ab8542b50ad7bd7c2527200a93330fa8d8d497·...·]-1">}</span><span·class="p">.</span></code></pre><p>If·the·target·host·is·something·else,·for·example,·a·UNIX·host,·the572 configuration·file·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="7564011906-1">{</span><span·class="nb">node</span><span·class="p">,</span><span·class="p"·data-group-id="7564011906-2">[</span><span·class="p"·data-group-id="7564011906-3">{</span><span·class="ss">ftp</span><span·class="p">,</span><span·class="n">IpAddr</s[·...·truncated·by·diffoscope;·len:·151,·SHA:·763fdf695ace6cc8d0776c3a362397a19a4a94999d4071394d5cccf0ef5f04ac·...·]-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="6104125898-1">{</span><span·class="ss">unix</span><span·class="p">,</span><span·class="p"·data-group-id="6104125898-2">[</span><span·class="p"·data-group-id="6104125898-3">{</span><span·class="ss">ftp</span><span·class="p">,</span><span·class="n">IpAddr</s[·...·truncated·by·diffoscope;·len:·45,·SHA:·7db90bb3719f548cba988e1ffdbc56d99c9499e905f3233256f00d30fdd34cfa·...·]-3">}</span><span·class="p">,</span><span·class="w">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="5171855482-1">{</span><span·class="ss">unix</span><span·class="p">,</span><span·class="p"·data-group-id="5171855482-2">[</span><span·class="p"·data-group-id="5171855482-3">{</span><span·class="ss">ftp</span><span·class="p">,</span><span·class="n">IpAddr</s[·...·truncated·by·diffoscope;·len:·45,·SHA:·a870cd0f1289d097e5486c13479d161ebf6bf0d4076af99ac2c21025bfa1b052·...·]-3">}</span><span·class="p">,</span><span·class="w">
574 ·······</span><span·class="p"·data-group-id="6104125898-4">{</span><span·class="ss">username</span><span·class="p">,</span><span·class="n">Username</span><span·class="p"·data-group-id="6104125898-4">}</span><span·class="p">,</span><span·class="w">574 ·······</span><span·class="p"·data-group-id="5171855482-4">{</span><span·class="ss">username</span><span·class="p">,</span><span·class="n">Username</span><span·class="p"·data-group-id="5171855482-4">}</span><span·class="p">,</span><span·class="w">
575 ·······</span><span·class="p"·data-group-id="6104125898-5">{</span><span·class="ss">password</span><span·class="p">,</span><span·class="n">Password</span><span·class="p"·data-group-id="6104125898-5">}</span><span·class="p"·data-group-id="6104125898-2">]</span><span·class="p"·data-group-id="6104125898-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="5171855482-5">{</span><span·class="ss">password</span><span·class="p">,</span><span·class="n">Password</span><span·class="p"·data-group-id="5171855482-5">}</span><span·class="p"·data-group-id="5171855482-2">]</span><span·class="p"·data-group-id="5171855482-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="9204940596-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="9204940596-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="3866075048-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="3866075048-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="9204940596-2">(</span><span·class="p"·data-group-id="9204940596-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="3866075048-2">(</span><span·class="p"·data-group-id="3866075048-2">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
258 ····</span><span·class="p"·data-group-id="9204940596-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="9204940596-3">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">258 ····</span><span·class="p"·data-group-id="3866075048-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="3866075048-3">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
259 ······</span><span·class="p"·data-group-id="9204940596-4">{</span><span·class="p"·data-group-id="9204940596-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="9204940596-5">}<[·...·truncated·by·diffoscope;·len:·126,·SHA:·e49a0f0d24e322a4cec12d90bd584fd19ce5014d3f6572a6a3c06199df98fb30·...·]-4">}</span><span·class="p">;</span><span·class="w">259 ······</span><span·class="p"·data-group-id="3866075048-4">{</span><span·class="p"·data-group-id="3866075048-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="3866075048-5">}<[·...·truncated·by·diffoscope;·len:·126,·SHA:·bf248b1204aacb738f058fb7feb94dac27bc70451e18b08c24047d008c789798·...·]-4">}</span><span·class="p">;</span><span·class="w">
260 ····</span><span·class="p"·data-group-id="9204940596-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="9204940596-6">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">260 ····</span><span·class="p"·data-group-id="3866075048-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="3866075048-6">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
261 ······</span><span·class="p"·data-group-id="9204940596-7">{</span><span·class="p"·data-group-id="9204940596-8">[</span><span·class="p"·data-group-id="9204940596-9">{</span><span·class="ss">db_handle</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Handle</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·649,·SHA:·738121ade71f45ec586308f69a25f24c9aff61def8f22f8f158a4535fb9f5ea3·...·]-7">}</span><span·class="w">261 ······</span><span·class="p"·data-group-id="3866075048-7">{</span><span·class="p"·data-group-id="3866075048-8">[</span><span·class="p"·data-group-id="3866075048-9">{</span><span·class="ss">db_handle</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Handle</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·649,·SHA:·231db2342f9977d3d8cf3cbdbd76ed4723d0258cb13696b21a1a7c98e518b56e·...·]-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="1060481227-1">(</span><span·class="p">_</span><span·class="n">Suite</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">TC</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Config</span><span·cl[·...·truncated·by·diffoscope;·len:·506,·SHA:·2c4602a670f74a74d179905d80714a3a119aa83b603913e116209a6a27b5a663·...·]-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="7624028151-1">(</span><span·class="p">_</span><span·class="n">Suite</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">TC</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Config</span><span·cl[·...·truncated·by·diffoscope;·len:·506,·SHA:·06897f88d8818d6e6efb0e612994db6c1504955e9302ecf2bd2a01c263d551a7·...·]-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="1060481227-4">(</span><span·class="p"·data-group-id="1060481227-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="7624028151-4">(</span><span·class="p"·data-group-id="7624028151-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="1060481227-5">{</span><span·class="nc">proplists</span><span·class="p">:</span><span·class="nf">delete</span><span·class="p"·data-group-id="1060481227-6">(</span><span·class="ss">tc_status</span><span·class="p">,</span><span·class="w">·</span><span·class="[·...·truncated·by·diffoscope;·len:·189,·SHA:·0b4f8891bf07fd853674b97979280aeb34a275db11111aa36a4d7c659f490a4d·...·]-5">}</span><span·class="p">;</span><span·class="w">287 ······</span><span·class="p"·data-group-id="7624028151-5">{</span><span·class="nc">proplists</span><span·class="p">:</span><span·class="nf">delete</span><span·class="p"·data-group-id="7624028151-6">(</span><span·class="ss">tc_status</span><span·class="p">,</span><span·class="w">·</span><span·class="[·...·truncated·by·diffoscope;·len:·189,·SHA:·8663067f58d876762e817ff0ed11c7d79391ac518c02c7ad86afca62d314141f·...·]-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="1060481227-7">{</span><span·class="p"·data-group-id="1060481227-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="1060481227-8">}</spa[·...·truncated·by·diffoscope;·len:·122,·SHA:·dc59b20413a1cc9936772c56cb6f1e96e0c4a9592a5db608f80e6aa6e1a86347·...·]-7">}</span><span·class="w">290 ······</span><span·class="p"·data-group-id="7624028151-7">{</span><span·class="p"·data-group-id="7624028151-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="7624028151-8">}</spa[·...·truncated·by·diffoscope;·len:·122,·SHA:·0df786934fca0a2926c90cab52e274f713eba4517f6e22099ef13c3af9d0d03d·...·]-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="1060481227-9">(</span><span·class="p">_</span><span·class="n">Suite</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">TC</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Config</span><span·cl[·...·truncated·by·diffoscope;·len:·189,·SHA:·c5c8b5a28bb627923c2982dc514a32a15a4eb867a2f05b9c68365ad1d6e1e05e·...·]-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="7624028151-9">(</span><span·class="p">_</span><span·class="n">Suite</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">TC</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Config</span><span·cl[·...·truncated·by·diffoscope;·len:·189,·SHA:·3c7c82248610f0e80fec6c28656688960ed03601c45b34136a84afcbfe131aa8·...·]-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="1060481227-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="1060481227-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="7624028151-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="7624028151-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.6/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.6/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="5589161784-1">(</span><span·class="ss">example_cth</span><span·class="p"·data-group-id="5589161784-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="2762145460-1">(</span><span·class="ss">example_cth</span><span·class="p"·data-group-id="2762145460-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="5589161784-2">(</span><span·class="p"·data-group-id="5589161784-3">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">2</span><span·class="p"·data-group-id="5589161784-3">]</span><span·class="p"·data-group-id="5589161784-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="2762145460-2">(</span><span·class="p"·data-group-id="2762145460-3">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">2</span><span·class="p"·data-group-id="2762145460-3">]</span><span·class="p"·data-group-id="2762145460-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="5589161784-4">(</span><span·class="p"·data-group-id="5589161784-5">[</span><span·class="ss">id</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="5589161784-5">]</span><span·class="p"·data-group-id="5589161784-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="2762145460-4">(</span><span·class="p"·data-group-id="2762145460-5">[</span><span·class="ss">id</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="2762145460-5">]</span><span·class="p"·data-group-id="2762145460-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="5589161784-6">(</span><span·class="p"·data-group-id="5589161784-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="5589161784-7">]</span><span·class="p"·data-group-id="558916[·...·truncated·by·diffoscope;·len:·4,·SHA:·a142832c40dfb4b20f965c8822574a41a333be125fa010660b52494061515d6b·...·]-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="2762145460-6">(</span><span·class="p"·data-group-id="2762145460-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="2762145460-7">]</span><span·class="p"·data-group-id="276214[·...·truncated·by·diffoscope;·len:·4,·SHA:·7fed43c640957555ddac588be64822538078409a0acdaf22126623203ef9954a·...·]-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="5589161784-8">(</span><span·class="p"·data-group-id="5589161784-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="5589161784-9">]</span><span·class="p"·data-group-id="558916[·...·truncated·by·diffoscope;·len:·4,·SHA:·a142832c40dfb4b20f965c8822574a41a333be125fa010660b52494061515d6b·...·]-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="2762145460-8">(</span><span·class="p"·data-group-id="2762145460-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="2762145460-9">]</span><span·class="p"·data-group-id="276214[·...·truncated·by·diffoscope;·len:·4,·SHA:·7fed43c640957555ddac588be64822538078409a0acdaf22126623203ef9954a·...·]-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="5589161784-10">(</span><span·class="p"·data-group-id="5589161784-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="5589161784-11">]</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·10,·SHA:·b6764eb82bd7e5575cacd2fb96f3bfb14cd502350f526f0a7137192ad43289c0·...·]-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="2762145460-10">(</span><span·class="p"·data-group-id="2762145460-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="2762145460-11">]</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·10,·SHA:·e2cdccdf0e497788d86e56a3042d59bbcf69d6e1ac874c99a4c48740a1e3d417·...·]-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="5589161784-12">(</span><span·class="p"·data-group-id="5589161784-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="5589161784-13">]</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·10,·SHA:·b6764eb82bd7e5575cacd2fb96f3bfb14cd502350f526f0a7137192ad43289c0·...·]-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="2762145460-12">(</span><span·class="p"·data-group-id="2762145460-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="2762145460-13">]</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·10,·SHA:·e2cdccdf0e497788d86e56a3042d59bbcf69d6e1ac874c99a4c48740a1e3d417·...·]-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="5589161784-14">(</span><span·class="p"·data-group-id="5589161784-15">[</span><span·class="ss">on_tc_skip</span><span·class="p">/</span><span·class="mi">4</span><span·class="p"·data-group-id="5589161784-15">]</span><span·class="p"·data-group-id="5589161784-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="2762145460-14">(</span><span·class="p"·data-group-id="2762145460-15">[</span><span·class="ss">on_tc_skip</span><span·class="p">/</span><span·class="mi">4</span><span·class="p"·data-group-id="2762145460-15">]</span><span·class="p"·data-group-id="2762145460-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="5589161784-16">(</span><span·class="p"·data-group-id="5589161784-17">[</span><span·class="ss">terminate</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="5589161784-17">]</span><span·class="p"·data-group-id="5589161784-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="2762145460-16">(</span><span·class="p"·data-group-id="2762145460-17">[</span><span·class="ss">terminate</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="2762145460-17">]</span><span·class="p"·data-group-id="2762145460-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="5589161784-18">(</span><span·class="ss">state</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5589161784-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:·877f5e931ea754b17d77af26bb02b1428bc8822d204329fd84019e75230d5f1d·...·]-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="2762145460-18">(</span><span·class="ss">state</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2762145460-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:·bbc08311e3e9a8770b7b04f41f67087f7b8660b676916ee701174d7f5091f2f3·...·]-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="5589161784-20">(</span><span·class="ss">test_run</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5589161784-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:·dff773377b463d48f2c07f59861c0371201388dc5d24d29ade64b1e3ede70145·...·]-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="2762145460-20">(</span><span·class="ss">test_run</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2762145460-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:·0243b92a1143888fa442397da30986fc875a6d5f74c84c9ba87d920f3e53c715·...·]-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="5589161784-22">(</span><span·class="n">Opts</span><span·class="p"·data-group-id="5589161784-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="2762145460-22">(</span><span·class="n">Opts</span><span·class="p"·data-group-id="2762145460-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="5589161784-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:·7f91d05cd87381f98bf2900bba40697a413737ac419240b26b7429a2f36b4cf9·...·]-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="2762145460-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:·9a3f7c8b6b8bb66f6a3a6ee87fb665fca20c0df54bbf4beba28c2bc4f16b67a5·...·]-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="5589161784-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="5589161784-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="2762145460-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="2762145460-24">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
372 ····</span><span·class="p"·data-group-id="5589161784-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="5589161784-26">{</span><span·class="ss">filename</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·602,·SHA:·2c838f12d3600e54101dc27414cc7b54dfeae6a58ebaeefc56778f1b9a5c6520·...·]-25">}</span><span·class="p">.</span><span·class="w">372 ····</span><span·class="p"·data-group-id="2762145460-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="2762145460-26">{</span><span·class="ss">filename</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·602,·SHA:·b8e69f2a41ea1fa6d0cd3980776e8512ffe358595bac4f18920e8ee8c31232a6·...·]-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="5589161784-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="5589161784-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="2762145460-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="2762145460-28">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
375 ····</span><span·class="p"·data-group-id="5589161784-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="5589161784-30">{</span><span·class="ss">suit[·...·truncated·by·diffoscope;·len:·461,·SHA:·be03523f8d53f2e9cee540ab5294891630b02f3487cf8a9475dcddde25112553·...·]-29">}</span><span·class="p">.</span><span·class="w">375 ····</span><span·class="p"·data-group-id="2762145460-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="2762145460-30">{</span><span·class="ss">suit[·...·truncated·by·diffoscope;·len:·461,·SHA:·f9981e4ebf8b944cfa40030210e88d2cc9a96ce560fd5afd2307b29b6dbf8db3·...·]-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="5589161784-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:·3c41a1919906a4a0969aabbcc18a8325f1bfceb491c1026598fae65abbcaaccb·...·]-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="2762145460-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:·04e6190c22cab2c51bde09a4ab357031ea8c1011cbfbb22a4b3ff8a2399ce855·...·]-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="5589161784-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="2762145460-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="5589161784-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="5589161784-34">)</span><span·class="p"·data-group-id="5589161784-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="2762145460-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="2762145460-34">)</span><span·class="p"·data-group-id="2762145460-33">}</span><span·class="p">,</span><span·class="w">
380 ····</span><span·class="p"·data-group-id="5589161784-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="5589161784-36">{</span><span·class="ss">data[·...·truncated·by·diffoscope;·len:·406,·SHA:·870729c4e22dff2c5962e3f08a93030465b0083c17ac7723689f6976bcf91c14·...·]-37">]</span><span·class="p">,</span><span·class="w">380 ····</span><span·class="p"·data-group-id="2762145460-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="2762145460-36">{</span><span·class="ss">data[·...·truncated·by·diffoscope;·len:·406,·SHA:·85624f8a65e17f3a722cd44712b1d5ac96299f91f50ad5098d9b69b4bb9c1782·...·]-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="5589161784-36">}</span><span·class="p"·data-group-id="5589161784-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="2762145460-36">}</span><span·class="p"·data-group-id="2762145460-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="5589161784-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:·db8bda1ead94f04d6170cb9d3bf39e88e59f497e3b0bad78e67bf80235cc4be7·...·]-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="2762145460-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:·9466eee931a3ace492cf005714732666740eea6aaf09ca855ebf720c137c3bb1·...·]-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="5589161784-39">(</span><span·class="ss">microsecond</span><span·class="p"·data-group-id="5589161784-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="2762145460-39">(</span><span·class="ss">microsecond</span><span·class="p"·data-group-id="2762145460-39">)</span><span·class="p">,</span><span·class="w">
385 ····</span><span·class="p"·data-group-id="5589161784-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="5589161784-41">{</span><span·class="ss">ts</[·...·truncated·by·diffoscope;·len:·590,·SHA:·1c926220f093d79ff025abfc8b996d42955930beb0305870beb62f278ad1441e·...·]-40">}</span><span·class="p">.</span><span·class="w">385 ····</span><span·class="p"·data-group-id="2762145460-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="2762145460-41">{</span><span·class="ss">ts</[·...·truncated·by·diffoscope;·len:·590,·SHA:·65d22ca65e04083877bd22726fb34c1ead7f76d1f9a5e1e8456534a8ca3f4433·...·]-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="5589161784-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:·9da0c1e09e2a99e797446adc97773644bd4bbca7cf707c7c6b6f7d77a6c74c9d·...·]-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="2762145460-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:·de62a284418a11868988686b0a0ec7f8844c7f122d5a60445b2a3a2150b6a5a1·...·]-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="5589161784-43">(</span><span·class="ss">microsecond</span><span·class="p"·data-group-id="5589161784-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="2762145460-43">(</span><span·class="ss">microsecond</span><span·class="p"·data-group-id="2762145460-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="5589161784-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:·c3c2a6d81e515299c8e22e667a8ec62f2d86fb2d3cd2441c8daddef9c6d254a6·...·]-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="2762145460-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:·08d5c03d3ed6e5552f8fa0545b3415a10394602ae95ab1adfb05522a120fb372·...·]-44">}</span><span·class="p">,</span><span·class="w">
390 ····</span><span·class="p"·data-group-id="5589161784-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="5589161784-46">{</span><span·class="ss">ts</[·...·truncated·by·diffoscope;·len:·693,·SHA:·432d940e9257a4f387488187c80f6e728ff86e01ebd9ca2ddf9091c60c452be2·...·]-45">}</span><span·class="p">.</span><span·class="w">390 ····</span><span·class="p"·data-group-id="2762145460-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="2762145460-46">{</span><span·class="ss">ts</[·...·truncated·by·diffoscope;·len:·693,·SHA:·3aedab5b83e0598b6d5fe0922a93ca444f7bf2f4b1c551f08ff1065d9906970e·...·]-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="5589161784-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:·708493348fd92da9c549206f02bcfcac7a2a39001da9686e89ad8a7bab069758·...·]-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="2762145460-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:·427fbbca89b633ae04a5de446a2ec2f94e7866f661fac250fde0f4fc40503617·...·]-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="5589161784-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:·9bbc874c0a3af3ff0e27336c1b4dc5bc7294c7e51f72230ac29eef291c0ede54·...·]-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="2762145460-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:·0d3f0dc0a4df792f235e1fc22bd558615322e280fe1f0186dba1a4abf71f5661·...·]-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="5589161784-50">(</span><span·class="n">State</span><span·class="p"·data-group-id="5589161784-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="2762145460-50">(</span><span·class="n">State</span><span·class="p"·data-group-id="2762145460-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="5589161784-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="5589161784-51">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·569,·SHA:·22fac7f5bd6f6b97d8b8e4cf4b6d35a6802a4fe05d199b0479620a8ad7f03551·...·]-52">)</span><span·class="p">,</span><span·class="w">398 ····</span><span·class="p"·data-group-id="2762145460-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="2762145460-51">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·569,·SHA:·337f07b65749469b8ded0b2d27ea15b10014c71607b53735b48f0437592a1d59·...·]-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="5589161784-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:·69be0ac7c5d6aafc73f302546c9514d3bf37d51c8d91ce0f13b954d6e118de26·...·]-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="2762145460-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:·d9abed92f7d7282d427122d7e6a0370b8f589b8cd183f37bfee44e2c607e6134·...·]-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="5589161784-57">(</span><span·class="n">File</span><span·class="p"·data-group-id="5589161784-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="2762145460-57">(</span><span·class="n">File</span><span·class="p"·data-group-id="2762145460-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="5589161784-58">(</span><span·class="n">State</span><span·class="p"·data-group-id="5589161784-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="2762145460-58">(</span><span·class="n">State</span><span·class="p"·data-group-id="2762145460-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.6/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.6/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="0192298362-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="0192298362-2">(</span><span·class="p"·data-group-id="0192298362-2">)</span><span·class="p">,</span><span·[·...·truncated·by·diffoscope;·len:·244,·SHA:·074abf178aa80cbe835a090b78a1b7ea6fbc4a1748edd9591c3f9c53b4901679·...·]-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="2602480998-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="2602480998-2">(</span><span·class="p"·data-group-id="2602480998-2">)</span><span·class="p">,</span><span·[·...·truncated·by·diffoscope;·len:·244,·SHA:·07603d94a80676a9001060cc7eb33489ee5f3a43ade6247915485d093ceec322·...·]-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="6793711687-1">(</span><span·class="p"·data-group-id="6793711687-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="6793711687-3">[</span><spa[·...·truncated·by·diffoscope;·len:·243,·SHA:·d38ccbbe91ff85855d9c90975f17078a41ef694f706cb8ba846a86d6d7558068·...·]-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="0429125376-1">(</span><span·class="p"·data-group-id="0429125376-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="0429125376-3">[</span><spa[·...·truncated·by·diffoscope;·len:·243,·SHA:·3af960fef897153ba6bb2793bf4871cc621bf0ee5959ae19f40687c16e1df531·...·]-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="9961580108-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-i[·...·truncated·by·diffoscope;·len:·13,·SHA:·cbd4c5e77d46ca20c8e90ab31ad131265f588ee7edbe9d5c5c6377a32126884b·...·]-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="9913934154-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-i[·...·truncated·by·diffoscope;·len:·13,·SHA:·6ce46e184a2d54c9393c40158db28558dadbad6f582cc434c317d1f99895534e·...·]-1">}</span><span·class="p">.</span><span·class="w">
200 </span><span·class="p"·data-group-id="9961580108-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-gr[·...·truncated·by·diffoscope;·len:·18,·SHA:·bdd5ffc0833cdfc11477a6bd735fdb0d18afa95fb0f61d394ca97eacaab353f6·...·]-2">}</span><span·class="p">.</span><span·class="w">200 </span><span·class="p"·data-group-id="9913934154-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-gr[·...·truncated·by·diffoscope;·len:·18,·SHA:·f72e9addb931795ae30c242ba07c1436bf4a12a7c17a694627d854148b79c4e9·...·]-2">}</span><span·class="p">.</span><span·class="w">
201 </span><span·class="p"·data-group-id="9961580108-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-gr[·...·truncated·by·diffoscope;·len:·18,·SHA:·bdd5ffc0833cdfc11477a6bd735fdb0d18afa95fb0f61d394ca97eacaab353f6·...·]-3">}</span><span·class="p">.</span><span·class="w">201 </span><span·class="p"·data-group-id="9913934154-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-gr[·...·truncated·by·diffoscope;·len:·18,·SHA:·f72e9addb931795ae30c242ba07c1436bf4a12a7c17a694627d854148b79c4e9·...·]-3">}</span><span·class="p">.</span><span·class="w">
202 </span><span·class="p"·data-group-id="9961580108-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-gr[·...·truncated·by·diffoscope;·len:·18,·SHA:·bdd5ffc0833cdfc11477a6bd735fdb0d18afa95fb0f61d394ca97eacaab353f6·...·]-4">}</span><span·class="p">.</span><span·class="w">202 </span><span·class="p"·data-group-id="9913934154-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-gr[·...·truncated·by·diffoscope;·len:·18,·SHA:·f72e9addb931795ae30c242ba07c1436bf4a12a7c17a694627d854148b79c4e9·...·]-4">}</span><span·class="p">.</span><span·class="w">
203 </span><span·class="p"·data-group-id="9961580108-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-gro[·...·truncated·by·diffoscope;·len:·17,·SHA:·5586f4fc7eedeee7c59faf2d1981c5c88fd230e8a71696915e53f3cf02898fc7·...·]-5">}</span><span·class="p">.</span><span·class="w">203 </span><span·class="p"·data-group-id="9913934154-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-gro[·...·truncated·by·diffoscope;·len:·17,·SHA:·5f1668d46cabdd6c00598fe4aa2cfb3afebf84202d6cd02dbbddfd4f0028a59d·...·]-5">}</span><span·class="p">.</span><span·class="w">
204 </span><span·class="p"·data-group-id="9961580108-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="9961580108-6">}</span><span·class="p">.</span><span·class="w">204 </span><span·class="p"·data-group-id="9913934154-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="9913934154-6">}</span><span·class="p">.</span><span·class="w">
  
205 </span><span·class="p"·data-group-id="9961580108-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="9961580[·...·truncated·by·diffoscope;·len:·3,·SHA:·9537f32ec7599e1ae953af6c9f929fe747ff9dadf79a9beff1f304c550173011·...·]-7">}</span><span·class="p">.</span><span·class="w">205 </span><span·class="p"·data-group-id="9913934154-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="9913934[·...·truncated·by·diffoscope;·len:·3,·SHA:·1d0ebea552eb43d0b1e1561f6de8ae92e3de7f1abec52399244d1caed7dbdfa6·...·]-7">}</span><span·class="p">.</span><span·class="w">
206 </span><span·class="p"·data-group-id="9961580108-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="9961580[·...·truncated·by·diffoscope;·len:·3,·SHA:·9537f32ec7599e1ae953af6c9f929fe747ff9dadf79a9beff1f304c550173011·...·]-8">}</span><span·class="p">.</span><span·class="w">206 </span><span·class="p"·data-group-id="9913934154-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="9913934[·...·truncated·by·diffoscope;·len:·3,·SHA:·1d0ebea552eb43d0b1e1561f6de8ae92e3de7f1abec52399244d1caed7dbdfa6·...·]-8">}</span><span·class="p">.</span><span·class="w">
  
207 </span><span·class="p"·data-group-id="9961580108-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"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·52fa57f02a089dfa2ad2ae5ecf7c5e00e70ce8d5e685166647763be71de8e3cf·...·]-9">}</span><span·class="p">.</span><span·class="w">207 </span><span·class="p"·data-group-id="9913934154-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"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·ef8b6791e7ffe9025e9067523b7ad73e29ffc469e5c926e003f4dfdcae2b5f44·...·]-9">}</span><span·class="p">.</span><span·class="w">
208 </span><span·class="p"·data-group-id="9961580108-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="9961580108-10">}</span><span·class="p">.</span><span·class="w">208 </span><span·class="p"·data-group-id="9913934154-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="9913934154-10">}</span><span·class="p">.</span><span·class="w">
  
209 </span><span·class="p"·data-group-id="9961580108-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="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·5794d479e5b089ac8224a7312daa878fa28a0ac5a24d951e9ca1fe567750587b·...·]-11">}</span><span·class="p">.</span><span·class="w">209 </span><span·class="p"·data-group-id="9913934154-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="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·123999bb498f787d220c01816d22d66894991ad4d795bcb60510352a30e37dd8·...·]-11">}</span><span·class="p">.</span><span·class="w">
210 </span><span·class="p"·data-group-id="9961580108-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="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·5794d479e5b089ac8224a7312daa878fa28a0ac5a24d951e9ca1fe567750587b·...·]-12">}</span><span·class="p">.</span><span·class="w">210 </span><span·class="p"·data-group-id="9913934154-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="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·123999bb498f787d220c01816d22d66894991ad4d795bcb60510352a30e37dd8·...·]-12">}</span><span·class="p">.</span><span·class="w">
211 </span><span·class="p"·data-group-id="9961580108-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="9961580108-13">}</span><span·class="p">.</span><span·class="w">211 </span><span·class="p"·data-group-id="9913934154-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="9913934154-13">}</span><span·class="p">.</span><span·class="w">
  
212 </span><span·class="p"·data-group-id="9961580108-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">·</s[·...·truncated·by·diffoscope;·len:·72,·SHA:·048ccd16576efbeb4a1b6761a59a997e5a68b0edcb30a6ad8fabf3401cdfd8da·...·]-14">}</span><span·class="p">.</span><span·class="w">212 </span><span·class="p"·data-group-id="9913934154-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">·</s[·...·truncated·by·diffoscope;·len:·72,·SHA:·40f565dc965b37326f9ae36701077b9e58c027921e37e79141ddb135bcbbf68b·...·]-14">}</span><span·class="p">.</span><span·class="w">
213 </span><span·class="p"·data-group-id="9961580108-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="w"[·...·truncated·by·diffoscope;·len:·346,·SHA:·bc787382acc1a97d3a5894ff3db24339e9a0b56ec6074e1343da1c611e3ee79c·...·]-15">}</span><span·class="p">.</span><span·class="w">213 </span><span·class="p"·data-group-id="9913934154-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="w"[·...·truncated·by·diffoscope;·len:·346,·SHA:·fcb424a6eb56113969fbb6f8b3ae4fd46ec3d17406b932eddb4382d207dbdc99·...·]-15">}</span><span·class="p">.</span><span·class="w">
214 </span><span·class="p"·data-group-id="9961580108-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:·413,·SHA:·13e1e88d5cd0d06666cec27f20dfacbec809e471723b73c00e2bf2fa89411bd8·...·]-17">}</span><span·class="p">.</span><span·class="w">214 </span><span·class="p"·data-group-id="9913934154-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:·413,·SHA:·bd9f6c100f2efa7761fe3e184c9e3150cfbe170fef0004e177c78a999b4edadc·...·]-17">}</span><span·class="p">.</span><span·class="w">
215 </span><span·class="p"·data-group-id="9961580108-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:·356,·SHA:·ea31f79a42d55eeed95f4c5d8e9cef84fd45e12a1ce94663ba17838794f74ded·...·]-19">}</span><span·class="p">.</span><span·class="w">215 </span><span·class="p"·data-group-id="9913934154-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:·356,·SHA:·7736b7e7331aef05c6eb471ce61b2d607f4b0a5769a7a5696bbf0bfe4d008aed·...·]-19">}</span><span·class="p">.</span><span·class="w">
  
216 </span><span·class="p"·data-group-id="9961580108-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">·</s[·...·truncated·by·diffoscope;·len:·243,·SHA:·a7329b09325ec025779599b75b5d4841f7467af8946108e611031bef0623c39b·...·]-21">}</span><span·class="p">.</span><span·class="w">216 </span><span·class="p"·data-group-id="9913934154-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">·</s[·...·truncated·by·diffoscope;·len:·243,·SHA:·347499e41ea79f1924349d0820583d5534014e0c74da16d5a37744e446e331af·...·]-21">}</span><span·class="p">.</span><span·class="w">
217 </span><span·class="p"·data-group-id="9961580108-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">·</sp[·...·truncated·by·diffoscope;·len:·368,·SHA:·6af58198b9c6e2579407985bbec9a0d1d7d3b26f428b76fdc6d1726f113fcad3·...·]-23">}</span><span·class="p">.</span><span·class="w">217 </span><span·class="p"·data-group-id="9913934154-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">·</sp[·...·truncated·by·diffoscope;·len:·368,·SHA:·e9855e3045f3837f486914196276e8f26476acff2fe61f1390826287399edca4·...·]-23">}</span><span·class="p">.</span><span·class="w">
  
218 </span><span·class="p"·data-group-id="9961580108-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:·98,·SHA:·835c83e66c12b80b69f16000a760cee83e2fb485fea9952a1b0fa48289ba11f8·...·]-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="9913934154-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:·98,·SHA:·c7bf7f127ca345cda4c996d856dc69b36360b7940a104fd627b7e9e3bf93c8f2·...·]-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="5012350288-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="5012350288-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="8002707257-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="8002707257-1">}</span><span·class="p">.</span><span·class="w">
248 </span><span·class="p"·data-group-id="5012350288-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="5012350288-2">}</span><span·class="p">.</span><span·class="w">248 </span><span·class="p"·data-group-id="8002707257-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="8002707257-2">}</span><span·class="p">.</span><span·class="w">
249 </span><span·class="p"·data-group-id="5012350288-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="5012350288-3">}</span><span·class="p">.</span><span·class="w">249 </span><span·class="p"·data-group-id="8002707257-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="8002707257-3">}</span><span·class="p">.</span><span·class="w">
250 </span><span·class="p"·data-group-id="5012350288-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="5012350288-4">}</span><span·class="p">.</span><span·class="w">250 </span><span·class="p"·data-group-id="8002707257-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="8002707257-4">}</span><span·class="p">.</span><span·class="w">
251 </span><span·class="p"·data-group-id="5012350288-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="5012350288-6">[</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·594,·SHA:·d981e6347f64190a3b8bcb7cdbcdb222428650faa6d7d6f5fafa9f4275b5f46d·...·]-5">}</span><span·class="p">.</span><span·class="w">251 </span><span·class="p"·data-group-id="8002707257-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="8002707257-6">[</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·594,·SHA:·5715926d24679a4d6d21069066dcc5355b44575c7bfed8441ad607ab4577f2d8·...·]-5">}</span><span·class="p">.</span><span·class="w">
252 </span><span·class="p"·data-group-id="5012350288-10">{</span><span·class="ss">init</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5012350288-11">[</span><span·class="ss">node2</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">node3</sp[·...·truncated·by·diffoscope;·len:·956,·SHA:·b62c7660f8d44a240ab136250cf692b523e5b352eb07e2799e6520b8f48c4daf·...·]-10">}</span><span·class="p">.</span><span·class="w">252 </span><span·class="p"·data-group-id="8002707257-10">{</span><span·class="ss">init</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8002707257-11">[</span><span·class="ss">node2</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">node3</sp[·...·truncated·by·diffoscope;·len:·956,·SHA:·1dcaf0c5790b74e00ffc443617541b4db8e6ee71ae5985d5f929d7d5b2c16833·...·]-10">}</span><span·class="p">.</span><span·class="w">
253 </span><span·class="p"·data-group-id="5012350288-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="5012350288-17">{</span><span·class="ss">eval</spa[·...·truncated·by·diffoscope;·len:·519,·SHA:·a6620113222e0ab0de48fb56ed71b8577c707ee98b0db6b0a95c7c84a352f304·...·]-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·the253 </span><span·class="p"·data-group-id="8002707257-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="8002707257-17">{</span><span·class="ss">eval</spa[·...·truncated·by·diffoscope;·len:·519,·SHA:·2c38342f7476cece7b74810c406f80fc624b5ced2fc279778328603ee11a0d29·...·]-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="8172511065-1">{</span><span·class="nf">server_id</span><span·class="p"·data-group-id="8172511065-2">(</span><span·class="p"·data-group-id="8172511065-2">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8172511065-3">[<[·...·truncated·by·diffoscope;·len:·236,·SHA:·707066ed1757effba8809a3833ff7899f18b6ab71f48e5f5016162edf597e578·...·]-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="3419742623-1">{</span><span·class="nf">server_id</span><span·class="p"·data-group-id="3419742623-2">(</span><span·class="p"·data-group-id="3419742623-2">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3419742623-3">[<[·...·truncated·by·diffoscope;·len:·236,·SHA:·4b7736f49aabe6a5a72dd2c74fb89b5c611ad16b620fc883f83eebb7a1f0f27a·...·]-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="9947234359-1">(</span><span·class="p"·data-group-id="9947234359-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="6093641288-1">(</span><span·class="p"·data-group-id="6093641288-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
154 ····</span><span·class="p"·data-group-id="9947234359-2">[</span><span·class="p"·data-group-id="9947234359-3">{</span><span·class="ss">ct_hooks</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9947234359-4">[</span><span·class="p"·data-group-id="9947234359-5">{</[·...·truncated·by·diffoscope;·len:·937,·SHA:·2588b8494e1d4c4e87c3b13bb6a02ba284f3026366c093a671030d905c089af1·...·]-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="6093641288-2">[</span><span·class="p"·data-group-id="6093641288-3">{</span><span·class="ss">ct_hooks</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6093641288-4">[</span><span·class="p"·data-group-id="6093641288-5">{</[·...·truncated·by·diffoscope;·len:·937,·SHA:·1a810cffa3d534e7ab367403934c41913aa1fa00e30a88da1896ff1b38aeab80·...·]-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="0565064167-1">{</span><span·class="ss">ct_conn_log</span><span·class="p">,</span><span·class="p"·data-group-id="0565064167-2">[</span><span·class="p"·data-group-id="0565064167-3">{</span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">co[·...·truncated·by·diffoscope;·len:·1140,·SHA:·7e33fe09bec77f30297665b4ee23f265236c0c425276ed75cbf85fb0683493e9·...·]-5">}</span><span·class="p">,</span><span·class="w">165 configuration·variable·<code·class="inline">ct_conn_log</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="3027616456-1">{</span><span·class="ss">ct_conn_log</span><span·class="p">,</span><span·class="p"·data-group-id="3027616456-2">[</span><span·class="p"·data-group-id="3027616456-3">{</span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">co[·...·truncated·by·diffoscope;·len:·1140,·SHA:·6e4352f99c3c5553565ede18b3620f4294ce0d629088548c851b9ce76ed4a83a·...·]-5">}</span><span·class="p">,</span><span·class="w">
166 ····························</span><span·class="p"·data-group-id="3944463793-6">{</span><span·class="ss">hosts</span><span·class="p">,</span><span·class="p"·data-group-id="3944463793-7">[</span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">key_or_name</span><span·class="p"·data-group-id="3944463793-8[·...·truncated·by·diffoscope;·len:·369,·SHA:·f6fc74171beb6e8d55c2e1da6ffd9882747062b8b8ea4708fba6b464469eb260·...·]-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·hook166 ····························</span><span·class="p"·data-group-id="7464377712-6">{</span><span·class="ss">hosts</span><span·class="p">,</span><span·class="p"·data-group-id="7464377712-7">[</span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">key_or_name</span><span·class="p"·data-group-id="7464377712-8[·...·truncated·by·diffoscope;·len:·369,·SHA:·f71c5806ad16606b58b1e944df8bfddc4a33cb160e7cbee58e11464f0e84e6a0·...·]-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="1837565232-1">(</span><span·class="p"·data-group-id="1837565232-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="1534090757-1">(</span><span·class="p"·data-group-id="1534090757-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
170 ···</span><span·class="p"·data-group-id="1837565232-2">[</span><span·class="p"·data-group-id="1837565232-3">{</span><span·class="ss">ct_hooks</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1837565232-4">[</span><span·class="p"·data-group-id="1837565232-5">{</span><span·class="ss">cth_conn_log</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1837565232-6">[</span><span·class="p"·data-group-id="1837565232-7">{</span><span·class="ss">ct_netconfc</span><span·class="p">,</span><span·class="p"·data-group-id="1837565232-8">[</span><span·class="p"·data-group-id="1837565232-9">{</span><span·class="ss">log_type</span><span·class="p">,</span><span·class="ss">pretty</span><span·class="p"·data-group-id="1837565232-9">}</span><span·class="p">}</span><span·class="p">,</span><span·class="w"> 
171 ··············································</span><span·class="p"·data-group-id="1837565232-10">{</span><span·class="ss">hosts</span><span·class="p">,</span><span·class="p"·data-group-id="1837565232-11">[</span><span·class="ss">nc_server1</span><span·class="p">,</span><span·class="ss">nc_server2</span><span·class="p"·data-group-id="1837565232-11">]</span><span·class="p"·data-group-id="1837565232-10">}</span><span·class="p"·data-group-id="1837565232-8">]</span><span·class="p"·data-group-id="1837565232-7">}</span><span·class="w"> 
172 ·······························</span><span·class="p"·data-group-id="1837565232-6">]</span><span·class="p"·data-group-id="1837565232-5">}</span><span·class="p"·data-group-id="1837565232-4">]</span><span·class="p"·data-group-id="1837565232-3">}</span><span·class="p"·data-group-id="1837565232-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="5455236227-1">(</span><span·class="ss">nc_server1</span><span·class="p">,</span><span·class="p"·data-group-id="5455236227-2">[</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="5455236227-2">]</span><span·class="p"·data-group-id="5455236227-1">)</span><span·class="p">,</span><span·class="w"> 
173 </span><span·class="nf">open</span><span·class="p"·data-group-id="5455236227-3">(</span><span·class="ss">nc_server2</span><span·class="p">,</span><span·class="p"·data-group-id="5455236227-4">[</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="5455236227-4">]</span><span·class="p"·data-group-id="5455236227-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="4909952152-1">{</span><span·class="ss">ct_conn_log</span><span·class="p">,</span><span·class="p"·data-group-id="4909952152-2">[</span><span·class="p"·data-group-id="4909952152-3">{</span><span·class="ss">ct_netconfc</span><span·class="p">,</span><span·class="p"·data-group-id="4909952152-4">[</span><span·class="p"·data-group-id="4909952152-5">{</span><span·class="ss">log_type</span><span·class="p">,</span><span·class="ss">raw</span><span·class="p"·data-group-id="4909952152-5">}</span><span·class="p"·data-group-id="4909952152-4">]</span><span·class="p"·data-group-id="4909952152-3">}</span><span·class="p"·data-group-id="4909952152-2">]</span><span·class="p"·data-group-id="4909952152-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="2621337994-1">(</span><span·class="p"·data-group-id="2621337994-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w"> 
175 ····</span><span·class="p"·data-group-id="2621337994-2">[</span><span·class="p"·data-group-id="2621337994-3">{</span><span·class="ss">ct_hooks</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2621337994-4">[</span><span·cla[·...·truncated·by·diffoscope;·len:·589,·SHA:·a49309d0b06a7d0401afd281b663be1ea780734dc90adb127a608e041ec25589·...·]170 ···</span><span·class="p"·data-group-id="1534090757-2">[</span><span·class="p"·data-group-id="1534090757-3">{</span><span·class="ss">ct_hooks</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1534090757-4">[</span><span·clas[·...·truncated·by·diffoscope;·len:·601,·SHA:·0e5407883699869cb2bbfca602af130b6ee43a4fda771f0b313300de208c84c0·...·]
 171 ··············································</span><span·class="p"·data-group-id="1534090757-10">{</span><span·class="ss">hosts</span><span·class="p">,</span><span·class="p"·data-group-id="1534090757-11">[</span><span·class="ss">nc_server1</span><span·class="p">,</span><span·class="ss">nc_server2</span><span·class="p"·data-group-id="1534090757-11">]</span><span·class="p"·data-group-id="1534090757-10">}</span><span·class="p"·data-group-id="1534090757-8">]</span><span·class="p"·data-group-id="1534090757-7">}</span><span·class="w">
 172 ·······························</span><span·class="p"·data-group-id="1534090757-6">]</span><span·class="p"·data-group-id="1534090757-5">}</span><span·class="p"·data-group-id="1534090757-4">]</span><span·class="p"·data-group-id="1534090757-3">}</span><span·class="p"·data-group-id="1534090757-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="0050407786-1">(</span><span·class="ss">nc_server1</span><span·class="p">,</span><span·class="p"·data-group-id="0050407786-2">[</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="0050407786-2">]</span><span·class="p"·data-group-id="0050407786-1">)</span><span·class="p">,</span><span·class="w">
 173 </span><span·class="nf">open</span><span·class="p"·data-group-id="0050407786-3">(</span><span·class="ss">nc_server2</span><span·class="p">,</span><span·class="p"·data-group-id="0050407786-4">[</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="0050407786-4">]</span><span·class="p"·data-group-id="0050407786-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="8193237471-1">{</span><span·class="ss">ct_conn_log</span><span·class="p">,</span><span·class="p"·data-group-id="8193237471-2">[</span><span·class="p"·data-group-id="8193237471-3">{</span><span·class="ss">ct_netconfc</span><span·class="p">,</span><span·class="p"·data-group-id="8193237471-4">[</span><span·class="p"·data-group-id="8193237471-5">{</span><span·class="ss">log_type</span><span·class="p">,</span><span·class="ss">raw</span><span·class="p"·data-group-id="8193237471-5">}</span><span·class="p"·data-group-id="8193237471-4">]</span><span·class="p"·data-group-id="8193237471-3">}</span><span·class="p"·data-group-id="8193237471-2">]</span><span·class="p"·data-group-id="8193237471-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="5599391091-1">(</span><span·class="p"·data-group-id="5599391091-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
 175 ····</span><span·class="p"·data-group-id="5599391091-2">[</span><span·class="p"·data-group-id="5599391091-3">{</span><span·class="ss">ct_hooks</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5599391091-4">[</span><span·class="p"·data-group-id="5599391091-5">{</span><span·class="ss">cth_conn_log</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5599391091-6">[</span><span·class="p"·data-group-id="5599391091-6">]</span><span·class="p"·data-group-id="5599391091-5">}</span><span·class="p"·data-group-id="5599391091-4">]</span><span·class="p"·data-group-id="5599391091-3">}</span><span·class="p"·data-group-id="5599391091-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="3924262232-1">[</span><span·class="p"·data-group-id="3924262232-2">{</span><span·class="ss">&#39;default-operation&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3924262232-3">[</span><span·class="s">&quot;none&qu[·...·truncated·by·diffoscope;·len:·104,·SHA:·23d3e5208457efa66899f523fc88f652ccfe03a0504ba3d419853a4dfbbebaaf·...·]-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="1827141804-1">[</span><span·class="p"·data-group-id="1827141804-2">{</span><span·class="ss">&#39;default-operation&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1827141804-3">[</span><span·class="s">&quot;none&qu[·...·truncated·by·diffoscope;·len:·104,·SHA:·2806ea26f7370c0096c994f130e18cf2c861c9a82b128b19b3c450c1ef87022e·...·]-2">}</span><span·class="p">,</span><span·class="w">
2103 ·</span><span·class="p"·data-group-id="3924262232-4">{</span><span·class="ss">&#39;error-option&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3924262232-5">[</span><span·class="s">&quot;rollback-on-error&quot;</span><span·class="p"·data-group-id="3924[·...·truncated·by·diffoscope;·len:·112,·SHA:·588821b981962122c1e2f705e2458ae632ebc1688132eec3913be4e789b2b71d·...·]-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="1827141804-4">{</span><span·class="ss">&#39;error-option&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1827141804-5">[</span><span·class="s">&quot;rollback-on-error&quot;</span><span·class="p"·data-group-id="1827[·...·truncated·by·diffoscope;·len:·112,·SHA:·e20f8bdba283678689c8d85b03c7d83c7c2df55657ce56f05ef6bbb815a5d8dc·...·]-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="1402397145-1">(</span><span·class="ss">my_prop_test_SUITE</span><span·class="p"·data-group-id="1402397145-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="7632428694-1">(</span><span·class="ss">my_prop_test_SUITE</span><span·class="p"·data-group-id="7632428694-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="1402397145-2">(</span><span·class="ss">export_all</span><span·class="p"·data-group-id="1402397145-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="7632428694-2">(</span><span·class="ss">export_all</span><span·class="p"·data-group-id="7632428694-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="1402397145-3">(</span><span·class="s">&quot;common_test/include/ct.hrl&quot;</span><span·class="p"·data-group-id="1402397145-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="7632428694-3">(</span><span·class="s">&quot;common_test/include/ct.hrl&quot;</span><span·class="p"·data-group-id="7632428694-3">)</span><span·class="p">.</span><span·class="w">
  
142 </span><span·class="nf">all</span><span·class="p"·data-group-id="1402397145-4">(</span><span·class="p"·data-group-id="1402397145-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="1402397145-5">[</span><span·class="ss">prop_ftp_case</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·2716c97bf68519695ef0861c7113e8d6cbbe680c5641c39572b56880f88abe6b·...·]-5">]</span><span·class="p">.</span><span·class="w">142 </span><span·class="nf">all</span><span·class="p"·data-group-id="7632428694-4">(</span><span·class="p"·data-group-id="7632428694-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="7632428694-5">[</span><span·class="ss">prop_ftp_case</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·ccd30d86b1983a91ac462892c373e01ea596da0cebb58d7a88b631e657a624ec·...·]-5">]</span><span·class="p">.</span><span·class="w">
  
143 </span><span·class="nf">init_per_suite</span><span·class="p"·data-group-id="1402397145-6">(</span><span·class="n">Config</span><span·class="p"·data-group-id="1402397145-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="7632428694-6">(</span><span·class="n">Config</span><span·class="p"·data-group-id="7632428694-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="1402397145-7">(</span><span·class="n">Config</span><span·class="p"·data-group-id="1402397145-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="7632428694-7">(</span><span·class="n">Config</span><span·class="p"·data-group-id="7632428694-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="1402397145-8">(</span><span·class="n">Config</span><span·class="p"·data-group-id="1402397145-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="7632428694-8">(</span><span·class="n">Config</span><span·class="p"·data-group-id="7632428694-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="1402397145-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="7632428694-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="1402397145-10">(</span><span·class="p"·data-group-id="1402397145-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="7632428694-10">(</span><span·class="p"·data-group-id="7632428694-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="1402397145-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="7632428694-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="2664378113-1">(</span><span·class="ss">ftp_simple_client_server</span><span·class="p"·data-group-id="2664378113-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="2664378113-2">(</span><span·class="p"·data-group-id="2664378113-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:·cb99e4314aa4aadd0fff9e325332220efc816020e8fd049bb0fa993d0da54dad·...·]">)</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="3999131956-1">(</span><span·class="ss">ft[·...·truncated·by·diffoscope;·len:·72,·SHA:·a71276001f0b3f7f7d7d188472bd2ede87938c26b0cdd5d1a40cf07675105f81·...·]">)</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="3999131956-2">(</span><span·class="p"·data-group-id="3999131956-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="3999131956-3">]</span><span·class="p"·data-group-id="3999131956-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="2664378113-4">(</span><span·class="s">&quot;common_test/include/ct_property_test.hrl&quot;</span><span·class="p"·data-group-id="2664378113-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="3999131956-4">(</span><span·class="s">&quot;common_test/include/ct_property_test.hrl&quot;</span><span·class="p"·data-group-id="3999131956-4">)</span><span·class="p">.</span><span·class="w">
  
156 </span><span·class="nf">prop_ftp</span><span·class="p"·data-group-id="2664378113-5">(</span><span·class="p"·data-group-id="2664378113-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="3999131956-5">(</span><span·class="p"·data-group-id="3999131956-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="2664378113-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="3999131956-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="4273254122-1">(</span><span·class="s">&quot;common_test/include/ct_property_test.hrl&quot;</span><span·class="p"·data-group-id="4273254122-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="0773162255-1">(</span><span·class="s">&quot;common_test/include/ct_property_test.hrl&quot;</span><span·class="p"·data-group-id="0773162255-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.2/doc/html/proplists.html#t:proplist/0">proplists:proplist</a>(),947 ····························Config·::·<a·href="../../../../lib/stdlib-6.2.2/doc/html/proplists.html#t:proplist/0">proplists:proplist</a>(),
948 ····························Options0·::·<a·href="../../../../lib/stdlib-6.2.2/doc/html/proplists.html#t:proplist/0">proplists:proplist</a>().</pre>948 ····························Options0·::·<a·href="../../../../lib/stdlib-6.2.2/doc/html/proplists.html#t:proplist/0">proplists:proplist</a>().</pre>
  
949 ······</div>949 ······</div>
  
950 <p>Presents·the·result·of·<em>stateful·(statem)·property·testing</em>·using·the·aggregate950 <p>Presents·the·result·of·<em>stateful·(statem)·property·testing</em>·using·the·aggregate
951 function·in·PropEr,·QuickCheck·or·other·similar·property·testing·tool.</p><p>It·is·assumed·to·be·called·inside·the·property·called·by·<a·href="#quickcheck/2"><code·class="inline">quickcheck/2</code></a>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">951 function·in·PropEr,·QuickCheck·or·other·similar·property·testing·tool.</p><p>It·is·assumed·to·be·called·inside·the·property·called·by·<a·href="#quickcheck/2"><code·class="inline">quickcheck/2</code></a>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="w">
952 </span><span·class="n">RunResult</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">run_parallel_commands</span><span·class="p"·data-group-id="0729815687-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="0729815687-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="3889291486-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="3889291486-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="0729815687-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:·f83b8eb99561e923d95fa566522b2615cef0ac44595d047e959a8d89d8522264·...·]-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="3889291486-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:·facad0b9b12f4a585916de012a10011bd16ff26e30a6df1eaacb928bc6268fe8·...·]-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="4004524237-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="4004524237-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="9113531148-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="9113531148-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="9790798913-1">[</span><span·class="p"·data-group-id="9790798913-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:·dc762f51aa08dc68d32135d43faa7e59b3a8601796cac4cbf1572c8bae59ccd6·...·]-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="4450756674-1">[</span><span·class="p"·data-group-id="4450756674-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:·8656066f5d1d733249e8848d29986fc23f5dec4f1df7660b25ada3880bf5a314·...·]-2">}</span><span·class="p">,</span><span·class="w">
967 ·</span><span·class="p"·data-group-id="9790798913-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="4450756674-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="9790798913-3">}</span><span·class="p"·data-group-id="9790798913-1">]</span></code></pre></li><li><p>For·parallel·commands:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="3748658620-1">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·322,·SHA:·c63346a12856ae34650a2c79863998935de25e2ec9924e5d2ca73267282feb9c·...·]-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="4450756674-3">}</span><span·class="p"·data-group-id="4450756674-1">]</span></code></pre></li><li><p>For·parallel·commands:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="3582365128-1">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·322,·SHA:·5f9259638156e2b85f70a26ed5ba1ba7a38a358eb6dbe7dcdc0b9c0044d9a3c6·...·]-2">}</span><span·class="p">,</span><span·class="w">
969 ·</span><span·class="p"·data-group-id="3748658620-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:·e9cd765ffc6969bceb363976a1bc2e4184c7536887962078c24650a8d09b9044·...·]-3">}</span><span·class="p">,</span><span·class="w">969 ·</span><span·class="p"·data-group-id="3582365128-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:·c153a9d3b573281f55c5d1b1c0184518342f50b7125b9fc5c231b480530af979·...·]-3">}</span><span·class="p">,</span><span·class="w">
970 ·</span><span·class="p"·data-group-id="3748658620-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="3582365128-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="3748658620-4">}</span><span·class="p"·data-group-id="3748658620-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="3582365128-4">}</span><span·class="p"·data-group-id="3582365128-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="3888082248-1">(</span><span·class="ss">ct_prop</span><span·class="p"·data-group-id="3888082248-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="3398728142-1">(</span><span·class="ss">ct_prop</span><span·class="p"·data-group-id="3398728142-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="3888082248-2">(</span><span·class="p"·data-group-id="3888082248-3">[</span><span·class="ss">prop_sort</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="3888082248-3">]</span><span·class="p"·data-group-id="3888082248-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="3398728142-2">(</span><span·class="p"·data-group-id="3398728142-3">[</span><span·class="ss">prop_sort</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="3398728142-3">]</span><span·class="p"·data-group-id="3398728142-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="3888082248-4">(</span><span·class="s">&quot;common_test/include/ct_property_test.hrl&quot;</span><span·class="p"·data-group-id="3888082248-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="3398728142-4">(</span><span·class="s">&quot;common_test/include/ct_property_test.hrl&quot;</span><span·class="p"·data-group-id="3398728142-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="3888082248-5">(</span><span·class="p"·data-group-id="3888082248-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="3398728142-5">(</span><span·class="p"·data-group-id="3398728142-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="3888082248-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="3888082248-7">(</span><span·class="p"·data-group-id="3888082248-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="3398728142-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="3398728142-7">(</span><span·class="p"·data-group-id="3398728142-7">)</span><span·class="p">,</span><span·class="w">
159 ············</span><span·class="nf">is_sorted</span><span·class="p"·data-group-id="3888082248-8">(</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">sort</span><span·class="p"·data-group-id="3888082248-9">(</span><span·class="n">UnSorted</span><span·class="p"·data-group-id="3888082248-9">)</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·24,·SHA:·3849e887fcfe809d1ef24be62ae71acbe3677d8fdbd620dfb486a9dccbd86fc7·...·]-8">)</span><span·class="w">159 ············</span><span·class="nf">is_sorted</span><span·class="p"·data-group-id="3398728142-8">(</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">sort</span><span·class="p"·data-group-id="3398728142-9">(</span><span·class="n">UnSorted</span><span·class="p"·data-group-id="3398728142-9">)</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·24,·SHA:·39cfdecfcb6f946c8ea16b12c2d047a4e8e0d1174bc3a98dd1d8695dc226b2e3·...·]-8">)</span><span·class="w">
160 ···········</span><span·class="p"·data-group-id="3888082248-6">)</span><span·class="p">.</span><span·class="w">160 ···········</span><span·class="p"·data-group-id="3398728142-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="3888082248-10">(</span><span·class="p"·data-group-id="3888082248-11">[</span><span·class="p"·data-group-id="3888082248-11">]</span><span·class="p"·data-group-id="3888082248-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="3398728142-10">(</span><span·class="p"·data-group-id="3398728142-11">[</span><span·class="p"·data-group-id="3398728142-11">]</span><span·class="p"·data-group-id="3398728142-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="3888082248-12">(</span><span·class="p"·data-group-id="3888082248-13">[</span><span·class="p">_</span><span·class="p"·data-group-id="3888082248-13">]</span><span·class="p"·data-group-id="3888082248-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="3398728142-12">(</span><span·class="p"·data-group-id="3398728142-13">[</span><span·class="p">_</span><span·class="p"·data-group-id="3398728142-13">]</span><span·class="p"·data-group-id="3398728142-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="3888082248-14">(</span><span·class="p"·data-group-id="3888082248-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="3888082248-15">]</[·...·truncated·by·diffoscope;·len:·46,·SHA:·b505dd234a9d3c1c3747e1dc53027a4c349493a92898cbf11e00508cc760f600·...·]-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="3398728142-14">(</span><span·class="p"·data-group-id="3398728142-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="3398728142-15">]</[·...·truncated·by·diffoscope;·len:·46,·SHA:·db7fd68c888e3dfd8348b3301205ade9b00d346b3a0b5a1f452c516c0f1daff5·...·]-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="3888082248-16">(</span><span·class="p"·data-group-id="3888082248-17">[</span><span·class="n">H2</span><span·class="p">|</span><span·class="n">SortedTail</span><span·class="p"·data-group-id="3888082248-17">]</span><span·class="p"·data-group-id="3888082248-16">)</span><span·class="p">;</span><span·class="w">167 ····</span><span·class="nf">is_sorted</span><span·class="p"·data-group-id="3398728142-16">(</span><span·class="p"·data-group-id="3398728142-17">[</span><span·class="n">H2</span><span·class="p">|</span><span·class="n">SortedTail</span><span·class="p"·data-group-id="3398728142-17">]</span><span·class="p"·data-group-id="3398728142-16">)</span><span·class="p">;</span><span·class="w">
168 </span><span·class="nf">is_sorted</span><span·class="p"·data-group-id="3888082248-18">(</span><span·class="p">_</span><span·class="p"·data-group-id="3888082248-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="3398728142-18">(</span><span·class="p">_</span><span·class="p"·data-group-id="3398728142-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="0625064462-1">(</span><span·class="ss">ct_property_test_SUITE</span><span·class="p"·data-group-id="0625064462-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="3549536962-1">(</span><span·class="ss">ct_property_test_SUITE</span><span·class="p"·data-group-id="3549536962-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="0625064462-2">(</span><span·class="ss">export_all</span><span·class="p"·data-group-id="0625064462-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="3549536962-2">(</span><span·class="ss">export_all</span><span·class="p"·data-group-id="3549536962-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="0625064462-3">(</span><span·class="s">&quot;common_test/include/ct.hrl&quot;</span><span·class="p"·data-group-id="0625064462-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="3549536962-3">(</span><span·class="s">&quot;common_test/include/ct.hrl&quot;</span><span·class="p"·data-group-id="3549536962-3">)</span><span·class="p">.</span><span·class="w">
  
173 </span><span·class="nf">all</span><span·class="p"·data-group-id="0625064462-4">(</span><span·class="p"·data-group-id="0625064462-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="0625064462-5">[</span><span·class="ss">prop_sort</span><span·class="w">173 </span><span·class="nf">all</span><span·class="p"·data-group-id="3549536962-4">(</span><span·class="p"·data-group-id="3549536962-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="3549536962-5">[</span><span·class="ss">prop_sort</span><span·class="w">
174 ·········</span><span·class="p"·data-group-id="0625064462-5">]</span><span·class="p">.</span><span·class="w">174 ·········</span><span·class="p"·data-group-id="3549536962-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="0625064462-6">(</span><span·class="n">Config</span><span·class="p"·data-group-id="0625064462-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="3549536962-6">(</span><span·class="n">Config</span><span·class="p"·data-group-id="3549536962-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="0625064462-7">(</span><span·class="n">Config</span><span·class="p"·data-group-id="0625064462-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="3549536962-7">(</span><span·class="n">Config</span><span·class="p"·data-group-id="3549536962-7">)</span><span·class="p">.</span><span·class="w">
  
178 </span><span·class="nf">end_per_suite</span><span·class="p"·data-group-id="0625064462-8">(</span><span·class="n">Config</span><span·class="p"·data-group-id="0625064462-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="3549536962-8">(</span><span·class="n">Config</span><span·class="p"·data-group-id="3549536962-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="0625064462-9">(</span><span·class="n">Config</span><span·class="p"·data-group-id="0625064462-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="3549536962-9">(</span><span·class="n">Config</span><span·class="p"·data-group-id="3549536962-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="0625064462-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="3549536962-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="0625064462-11">(</span><span·class="p"·data-group-id="0625064462-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="3549536962-11">(</span><span·class="p"·data-group-id="3549536962-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="0625064462-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="3549536962-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="6914999889-1">(</span><span·class="n">Config</span><span·class="p"·data-group-id="6914999889-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="8196085921-1">(</span><span·class="n">Config</span><span·class="p"·data-group-id="8196085921-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="6914999889-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="8196085921-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="6914999889-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="6914999889-4">(</span><span·class="o">?</span><span·class="n">MODULE</span><span·class=[·...·truncated·by·diffoscope;·len:·29,·SHA:·facfd3b7d87ec938a59f63966e2b3e1374c8fffcb0a8d8531a60498c1c275eed·...·]-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="8196085921-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="8196085921-4">(</span><span·class="o">?</span><span·class="n">MODULE</span><span·class=[·...·truncated·by·diffoscope;·len:·29,·SHA:·e039008838a4a2317a86c8652ec60b067fbc38edb1a4c93952ba2bcb510d73b6·...·]-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="6914999889-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="6914999889-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="8196085921-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="8196085921-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="6914999889-6">(</span><span·class="o">?</span><span·class="n">MODULE</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cmds</span><span·class="p">,</span><span·class="w">·</span><span·class="n">RunResult</span><span·class="p">,</span><s[·...·truncated·by·diffoscope;·len:·92,·SHA:·ba9684af95a3427966a7e1415f8a3b916484f11db8fe1ec15316fae8d8771872·...·]-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="8196085921-6">(</span><span·class="o">?</span><span·class="n">MODULE</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Cmds</span><span·class="p">,</span><span·class="w">·</span><span·class="n">RunResult</span><span·class="p">,</span><s[·...·truncated·by·diffoscope;·len:·92,·SHA:·3d9a21357931431d860a5d2929a0750ab73be22f2d6930a264f1d646f88571e3·...·]-6">)</span><span·class="w">
230 ·····················</span><span·class="k">end</span><span·class="p"·data-group-id="6914999889-3">)</span><span·class="p"·data-group-id="6914999889-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="8196085921-3">)</span><span·class="p"·data-group-id="8196085921-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="0411098595-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:·a3a5ac3d989b2dadcaecb71c1688dd5e443c7d9e10a88005ad2ee69ee3d2ae7c·...·]-1">]</span><span·class="w">254 ··</span><span·class="p"·data-group-id="1597776632-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:·f7612603a0e39cdd962c2d1dcb687297d871878160ac3bc3297ee40c352e1f53·...·]-1">]</span><span·class="w">
255 ··</span><span·class="p"·data-group-id="0411098595-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="1597776632-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="0411098595-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="1597776632-2">]</span><span·class="w">
257 ··</span><span·class="p"·data-group-id="0411098595-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="0411098595-3">]</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·208,·SHA:·664a3f5956a2f83872eaea71b90db34fc48ecef3fdfdc98e223052996c24d462·...·]-4">]</span></code></pre><h2·id="start-a-common-test-master-node"·class="section-heading">257 ··</span><span·class="p"·data-group-id="1597776632-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="1597776632-3">]</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·208,·SHA:·9c4d3e0c2619480cdcd6551e991dc3f9af2f3c69b0a863a5dc019a2dd1f9181a·...·]-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.6/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.6/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="5563349315-1">(</span><span·class="p"·data-group-id="5563349315-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="5563349315-2">[</span><span·class="p"·data-group-id="5563349315-3">{</span[·...·truncated·by·diffoscope;·len:·682,·SHA:·7dab0f41b91fc937dea92060e154f7ae3bc95c47604a4616f35bd34d05d42e63·...·]6-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="9294834426-1">(</span><span·class="p"·data-group-id="9294834426-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="9294834426-2">[</span><span·class="p"·data-group-id="9294834426-3">{</span[·...·truncated·by·diffoscope;·len:·682,·SHA:·af69e852bdf124761553304b1c1d4fc216faddf94dec497fd8679ec228bb273f·...·]6-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.2/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.2/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="8898829914-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="8898829914-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="1813772166-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="1813772166-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.2/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.2/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="1857177044-1">{</span><span·class="ss">snmp_app</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1857177044-2">[</span><span·class="p"·data-group-id="1857177044-3">{</span><span·class="ss">manager</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·331,·SHA:·269ad0a6b5bff252b6d23b11ab098374c86604c49f302f83e377faccadba95f8·...·]-3">}</span><span·class="p">,</span><span·class="w">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="8575621616-1">{</span><span·class="ss">snmp_app</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8575621616-2">[</span><span·class="p"·data-group-id="8575621616-3">{</span><span·class="ss">manager</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·331,·SHA:·2d689b61376d2525828f70c4fcace0c0b11840cf706e554228ab81ec19e2abbd·...·]-3">}</span><span·class="p">,</span><span·class="w">
161 ············</span><span·class="p"·data-group-id="1857177044-6">{</span><span·class="ss">agent</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1857177044-7">[</span><span·class="nf">snmp_app_agent_params</span><span·class="p"·data-group-id="1857177044-8">(</span><span·[·...·truncated·by·diffoscope;·len:·247,·SHA:·46bc47d154a9e8efa0c34e8ae2746dc78137416b12bcd9aab61d1973d2c58c3a·...·]-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·the161 ············</span><span·class="p"·data-group-id="8575621616-6">{</span><span·class="ss">agent</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8575621616-7">[</span><span·class="nf">snmp_app_agent_params</span><span·class="p"·data-group-id="8575621616-8">(</span><span·[·...·truncated·by·diffoscope;·len:·247,·SHA:·45f2575975125faafae6af3ea69e4178b3e52aa86f0b2377e433a37748046b94·...·]-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.75 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="2071305330-1">[</span><span·class="p"·data-group-id="2071305330-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="2071305330-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="5835302848-1">[</span><span·class="p"·data-group-id="5835302848-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="5835302848-2">}</span><span·class="p">,</span><span·class="w">
136 ·</span><span·class="p"·data-group-id="2071305330-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="2071305330-3">}</span><span·class="p">,</span><span·class="w">136 ·</span><span·class="p"·data-group-id="5835302848-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="5835302848-3">}</span><span·class="p">,</span><span·class="w">
137 ·</span><span·class="p"·data-group-id="2071305330-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="2071305330-4">}</span><span·class="w">137 ·</span><span·class="p"·data-group-id="5835302848-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="5835302848-4">}</span><span·class="w">
138 ·</span><span·class="p"·data-group-id="2071305330-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="2071305330-5">}</span><span·class="w">138 ·</span><span·class="p"·data-group-id="5835302848-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="5835302848-5">}</span><span·class="w">
139 ·</span><span·class="p"·data-group-id="2071305330-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="2071305330-6">}</span><span·class="w">139 ·</span><span·class="p"·data-group-id="5835302848-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="5835302848-6">}</span><span·class="w">
140 ·</span><span·class="p"·data-group-id="2071305330-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="2071305330-7">}</span><span·class="w">140 ·</span><span·class="p"·data-group-id="5835302848-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="5835302848-7">}</span><span·class="w">
141 ·</span><span·class="p"·data-group-id="2071305330-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="2071305330-8">}</span><span·class="w">141 ·</span><span·class="p"·data-group-id="5835302848-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="5835302848-8">}</span><span·class="w">
142 ·</span><span·class="p"·data-group-id="2071305330-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="2071305330-9">}</span><span·class="p"·data-group-id="2071305330-1">]</span></code></pre><p><code·class="inline">ConnType·=·ssh·|·sftp</code>.</p><p>For·other·types,·see·<a·href="../../../../lib/ssh-5.2.10/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="5835302848-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="5835302848-9">}</span><span·class="p"·data-group-id="5835302848-1">]</span></code></pre><p><code·class="inline">ConnType·=·ssh·|·sftp</code>.</p><p>For·other·types,·see·<a·href="../../../../lib/ssh-5.2.10/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="4232300956-1">{</span><span·class="ss">telnet_settings</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4232300956-2">[</span><span·class="p"·data-group-id="4232300956-3">{</span><span·class="ss">connect_timeout</span><s[·...·truncated·by·diffoscope;·len:·94,·SHA:·619f4702c6cf055d4370a25641af370a62b1e53e5c7871dfc8a1322ef5cb8ad1·...·]-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="6830246578-1">{</span><span·class="ss">telnet_settings</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6830246578-2">[</span><span·class="p"·data-group-id="6830246578-3">{</span><span·class="ss">connect_timeout</span><s[·...·truncated·by·diffoscope;·len:·94,·SHA:·08bb6b3942a2c094ec5b2bfd2b6241115b9566665334ed30a9b9916012f49cd5·...·]-3">}</span><span·class="p">,</span><span·class="w">
140 ···················</span><span·class="p"·data-group-id="4232300956-4">{</span><span·class="ss">command_timeout</span><span·class="p">,</span><span·class="n">Millisec</span><span·class="p"·data-group-id="4232300956-4">}</span><span·class="p">,</span><span·class="w">140 ···················</span><span·class="p"·data-group-id="6830246578-4">{</span><span·class="ss">command_timeout</span><span·class="p">,</span><span·class="n">Millisec</span><span·class="p"·data-group-id="6830246578-4">}</span><span·class="p">,</span><span·class="w">
141 ···················</span><span·class="p"·data-group-id="4232300956-5">{</span><span·class="ss">reconnection_attempts</span><span·class="p">,</span><span·class="n">N</span><span·class="p"·data-group-id="4232300956-5">}</span><span·class="p">,</span><span·class="w">141 ···················</span><span·class="p"·data-group-id="6830246578-5">{</span><span·class="ss">reconnection_attempts</span><span·class="p">,</span><span·class="n">N</span><span·class="p"·data-group-id="6830246578-5">}</span><span·class="p">,</span><span·class="w">
142 ···················</span><span·class="p"·data-group-id="4232300956-6">{</span><span·class="ss">reconnection_interval</span><span·class="p">,</span><span·class="n">Millisec</span><span·class="p"·data-group-id="4232300956-6">}</span><span·class="p">,</span><span·class="w">142 ···················</span><span·class="p"·data-group-id="6830246578-6">{</span><span·class="ss">reconnection_interval</span><span·class="p">,</span><span·class="n">Millisec</span><span·class="p"·data-group-id="6830246578-6">}</span><span·class="p">,</span><span·class="w">
143 ···················</span><span·class="p"·data-group-id="4232300956-7">{</span><span·class="ss">keep_alive</span><span·class="p">,</span><span·class="n">Bool</span><span·class="p"·data-group-id="4232300956-7">}</span><span·class="p">,</span><span·class="w">143 ···················</span><span·class="p"·data-group-id="6830246578-7">{</span><span·class="ss">keep_alive</span><span·class="p">,</span><span·class="n">Bool</span><span·class="p"·data-group-id="6830246578-7">}</span><span·class="p">,</span><span·class="w">
144 ···················</span><span·class="p"·data-group-id="4232300956-8">{</span><span·class="ss">poll_limit</span><span·class="p">,</span><span·class="n">N</span><span·class="p"·data-group-id="4232300956-8">}</span><span·class="p">,</span><span·class="w">144 ···················</span><span·class="p"·data-group-id="6830246578-8">{</span><span·class="ss">poll_limit</span><span·class="p">,</span><span·class="n">N</span><span·class="p"·data-group-id="6830246578-8">}</span><span·class="p">,</span><span·class="w">
145 ···················</span><span·class="p"·data-group-id="4232300956-9">{</span><span·class="ss">poll_interval</span><span·class="p">,</span><span·class="n">Millisec</span><span·class="p"·data-group-id="4232300956-9">}</span><span·class="p">,</span><span·class="w">145 ···················</span><span·class="p"·data-group-id="6830246578-9">{</span><span·class="ss">poll_interval</span><span·class="p">,</span><span·class="n">Millisec</span><span·class="p"·data-group-id="6830246578-9">}</span><span·class="p">,</span><span·class="w">
146 ···················</span><span·class="p"·data-group-id="4232300956-10">{</span><span·class="ss">tcp_nodelay</span><span·class="p">,</span><span·class="n">Bool</span><span·class="p"·data-group-id="4232300956-10">}</span><span·class="p"·data-group-id="4232300956-2">]</span><span·class="p"·data-group-id="423230095[·...·truncated·by·diffoscope;·len:·1,·SHA:·e7f6c011776e8db7cd330b54174fd76f7d0216b612387a5ffcfb81e6f0919683·...·]-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="6830246578-10">{</span><span·class="ss">tcp_nodelay</span><span·class="p">,</span><span·class="n">Bool</span><span·class="p"·data-group-id="6830246578-10">}</span><span·class="p"·data-group-id="6830246578-2">]</span><span·class="p"·data-group-id="683024657[·...·truncated·by·diffoscope;·len:·1,·SHA:·2c624232cdd221771294dfbb310aca000a0df6ac8b66b696d90ef06fdefb64a3·...·]-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="6559179903-1">(</span><span·class="p"·data-group-id="6559179903-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="1256221682-1">(</span><span·class="p"·data-group-id="1256221682-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
162 ····</span><span·class="p"·data-group-id="6559179903-2">[</span><span·class="p"·data-group-id="6559179903-3">{</span><span·class="ss">ct_hooks</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6559179903-4">[</span><span·class="p"·data-group-id="6559179903-5">{</[·...·truncated·by·diffoscope;·len:·805,·SHA:·91fe4edd5f582604754c6c3e3d60bbf1053db6efc1cb884817dd6edbf0795c28·...·]-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="1256221682-2">[</span><span·class="p"·data-group-id="1256221682-3">{</span><span·class="ss">ct_hooks</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1256221682-4">[</span><span·class="p"·data-group-id="1256221682-5">{</[·...·truncated·by·diffoscope;·len:·805,·SHA:·d2115a9b77afcfeb9fc7a0d11dc0a5e8aada4de7f788ceb6a66f06af11c9b0f8·...·]-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="2484098897-1">{</span><span·class="ss">ct_conn_log</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2484098897-2">[</span><span·class="p"·data-group-id="2484098897-3">{</span><span·class="ss">ct_telnet</span><span·class=[·...·truncated·by·diffoscope;·len:·242,·SHA:·d92ea5f8b6681d568730c14c80b941bad27d7789c7ff6c35dcd0f45b82195fda·...·]-5">}</span><span·class="p">,</span><span·class="w">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="6245691923-1">{</span><span·class="ss">ct_conn_log</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6245691923-2">[</span><span·class="p"·data-group-id="6245691923-3">{</span><span·class="ss">ct_telnet</span><span·class=[·...·truncated·by·diffoscope;·len:·242,·SHA:·7ec72b43da40cfd1a14c6760997a5e6b5a982e6e8e687a5770f38c45f6703a42·...·]-5">}</span><span·class="p">,</span><span·class="w">
180 ···························</span><span·class="p"·data-group-id="2484098897-6">{</span><span·class="ss">hosts</span><span·class="p">,</span><span·class="p"·data-group-id="2484098897-7">[</span><span·class="nf">key_or_name</span><span·class="p"·data-group-id="2484098897-8">(</span><span·class="p"·data-group-id="248409889[·...·truncated·by·diffoscope;·len:·319,·SHA:·680d3469a1b9393a5b03a6e93140013092c8d4d9e6a07256f11422bb122a4327·...·]-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·hook180 ···························</span><span·class="p"·data-group-id="6245691923-6">{</span><span·class="ss">hosts</span><span·class="p">,</span><span·class="p"·data-group-id="6245691923-7">[</span><span·class="nf">key_or_name</span><span·class="p"·data-group-id="6245691923-8">(</span><span·class="p"·data-group-id="624569192[·...·truncated·by·diffoscope;·len:·319,·SHA:·c4d23f57582d00f9045cf0b7150cca4f828fcac463bbbebda1e026adfaa6bb8d·...·]-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="7113641301-1">(</span><span·class="p"·data-group-id="7113641301-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="1206923700-1">(</span><span·class="p"·data-group-id="1206923700-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
184 ····</span><span·class="p"·data-group-id="7113641301-2">[</span><span·class="p"·data-group-id="7113641301-3">{</span><span·class="ss">ct_hooks</span><span·class="p">,</span><span·class="w">184 ····</span><span·class="p"·data-group-id="1206923700-2">[</span><span·class="p"·data-group-id="1206923700-3">{</span><span·class="ss">ct_hooks</span><span·class="p">,</span><span·class="w">
185 ······</span><span·class="p"·data-group-id="7113641301-4">[</span><span·class="p"·data-group-id="7113641301-5">{</span><span·class="ss">cth_conn_log</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7113641301-6">[</span><span·class="p"·data-group-id="7113641301-7">{</span><span·class="ss">ct_telnet</span><span·class="p">,</span><span·class="p"·data-group-id="7113641301-8">[</span><span·class="p"·data-group-id="7113641301-9">{</span><span·class="ss">hosts</span><span·class="p">,</span><span·class="p"·data-group-id="7113641301-10">[</span><span·class="ss">server1</span><span·class="p">,</span><span·class="ss">server2</span><span·class="p"·data-group-id="7113641301-10">]</span><span·class="p"·data-group-id="7113641301-9">}</span><span·class="p"·data-group-id="7113641301-8">]</span><span·class="p"·data-group-id="7113641301-7">}</span><span·class="p"·data-group-id="7113641301-6">]</span><span·class="p"·data-group-id="7113641301-5">}</span><span·class="p"·data-group-id="7113641301-4">]</span><span·class="p"·data-group-id="7113641301-3">}</span><span·class="p"·data-group-id="7113641301-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="8943826137-1">{</span><span·class="ss">ct_conn_log</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·1151,·SHA:·9f4f4ccf2927c990b527a6768cd84eb840925285f0983251598ca10ff80ab005·...·]185 ······</span><span·class="p"·data-group-id="1206923700-4">[</span><span·class="p"·data-group-id="1206923700-5">{</span><span·class="ss">cth_conn_log</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1206923700-6">[</span>[·...·truncated·by·diffoscope;·len:·1003,·SHA:·1a68b0a5a6b0cbff5b0f78f136e6da74bb958bf99e0b2cfb48fc3bd1c9b7bb59·...·]
 186 like·the·following·in·a·configuration·file:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="2760802826-1">{</span><span·class="ss">ct_conn_log</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2760802826-2">[</span><span·class="p"·data-group-id="2760802826-3">{</span><span·class="ss">ct_telnet</span><span·class="p">,</span><span·class="p"·data-group-id="2760802826-4">[</span><span·class="p"·data-group-id="2760802826-5">{</span><span·class="ss">hosts</span><span·class="p">,</span><span·class="p"·data-group-id="2760802826-6">[</span><span·class="ss">server1</span><span·class="p">,</span><span·class="ss">server2</span><span·class="p"·data-group-id="2760802826-6">]</span><span·class="p"·data-group-id="2760802826-5">}</span><span·class="p"·data-group-id="2760802826-4">]</span><span·class="p"·data-group-id="2760802826-3">}</span><span·class="p"·data-group-id="2760802826-2">]</span><span·class="p"·data-group-id="2760802826-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="3724076712-1">(</span><span·class="p"·data-group-id="3724076712-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
187 ····</span><span·class="p"·data-group-id="3427777097-2">[</span><span·class="p"·data-group-id="3427777097-3">{</span><span·class="ss">ct_hooks</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3427777097-4">[</span><span·class="p"·data-group-id="3427777097-5">{</s[·...·truncated·by·diffoscope;·len:·394,·SHA:·521b1e1dce3de7f5725b91d99f87b882cfa46184b090552003dcd36896a10595·...·]-2">]</span><span·class="p">.</span></code></pre><h2·id="module-see-also"·class="section-heading">187 ····</span><span·class="p"·data-group-id="3724076712-2">[</span><span·class="p"·data-group-id="3724076712-3">{</span><span·class="ss">ct_hooks</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3724076712-4">[</span><span·class="p"·data-group-id="3724076712-5">{</s[·...·truncated·by·diffoscope;·len:·394,·SHA:·2537240b95e01bba1be5fab749b1cfcba8a8d3c8f44f3c160392e923b4e5f60d·...·]-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="4672870629-1">(</span><span·class="n">Connection</span><span·class="p">,</span><span·class="p"·data-group-id="4672870629-2">[</span><span·class="p"·data-group-id="4672870629-3">{</span><span·class="ss">abc</span><span·class="p">,</span><span·class="s">&quo[·...·truncated·by·diffoscope;·len:·1029,·SHA:·51c2d2333331355cbb562bc3bc342573034f8ccc3420c4e19b507940ba488d83·...·]-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="0253073786-1">(</span><span·class="n">Connection</span><span·class="p">,</span><span·class="p"·data-group-id="0253073786-2">[</span><span·class="p"·data-group-id="0253073786-3">{</span><span·class="ss">abc</span><span·class="p">,</span><span·class="s">&quo[·...·truncated·by·diffoscope;·len:·1029,·SHA:·0f6c4bcaa1c16279c0ea67d37ce36c6bf235866708e2a3b0fa70690063a4dfd3·...·]-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="6047088921-1">(</span><span·class="n">Connection</span><span·class="p">,</span><span·class="p"·data-group-id="6047088921-2">[</span><span·class="p"·data-group-id="6047088921-3">{</span><span·class="ss">abc</span><span·class="p">,</span><span·class="s">&quo[·...·truncated·by·diffoscope;·len:·1182,·SHA:·587aeb0cb0a2c9a5ce3639999afec0b176c2fd15b6d187504ec322592fcb8cbd·...·]-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="8642449513-1">(</span><span·class="n">Connection</span><span·class="p">,</span><span·class="p"·data-group-id="8642449513-2">[</span><span·class="p"·data-group-id="8642449513-3">{</span><span·class="ss">abc</span><span·class="p">,</span><span·class="s">&quo[·...·truncated·by·diffoscope;·len:·1182,·SHA:·f200231b3c11b451e875f9eea59dc228cf353082ab80b14b7e81300dfc1123ce·...·]-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="8251357434-1">(</span><span·class="ss">my_server_SUITE</span><span·class="p"·data-group-id="8251357434-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="8688279129-1">(</span><span·class="ss">my_server_SUITE</span><span·class="p"·data-group-id="8688279129-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="8251357434-2">(</span><span·class="ss">export_all</span><span·class="p"·data-group-id="8251357434-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="8688279129-2">(</span><span·class="ss">export_all</span><span·class="p"·data-group-id="8688279129-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="8251357434-3">(</span><span·class="s">&quot;ct.hrl&quot;</span><span·class="p"·data-group-id="8251357434-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="8688279129-3">(</span><span·class="s">&quot;ct.hrl&quot;</span><span·class="p"·data-group-id="8688279129-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="8251357434-4">(</span><span·class="p"·data-group-id="8251357434-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="8251357434-5">[</span><span·class="p"·data-group-id="8251357434-6">{</span>[·...·truncated·by·diffoscope;·len:·186,·SHA:·d547e0bfbd0456a23d759a282e7088c5016b9fd9e81a56877c4defe8332de290·...·]-5">]</span><span·class="p">.</span><span·class="w">168 </span><span·class="nf">suite</span><span·class="p"·data-group-id="8688279129-4">(</span><span·class="p"·data-group-id="8688279129-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="8688279129-5">[</span><span·class="p"·data-group-id="8688279129-6">{</span>[·...·truncated·by·diffoscope;·len:·186,·SHA:·cc269a0ad0a85eff949e06038daf650dc84ab97ad55fa0fea54de2653b3419b6·...·]-5">]</span><span·class="p">.</span><span·class="w">
  
169 </span><span·class="nf">init_per_testcase</span><span·class="p"·data-group-id="8251357434-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="8251357434-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="8688279129-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="8688279129-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="8251357434-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="8251357434-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="8688279129-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="8688279129-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
172 ····</span><span·class="p"·data-group-id="8251357434-9">[</span><span·class="p"·data-group-id="8251357434-10">{</span><span·class="ss">server_pid</span><span·class="p">,</span><span·class="nf">start_server</span><span·class="p"·data-group-id="8251357434-11">(</span><span·class="p"·data-group-id="82[·...·truncated·by·diffoscope;·len:·217,·SHA:·c900b3fef0e58e38a2b37d942577b38e05ba7d3a3aaae3e3bb1b65b926ca6121·...·]-9">]</span><span·class="p">;</span><span·class="w">172 ····</span><span·class="p"·data-group-id="8688279129-9">[</span><span·class="p"·data-group-id="8688279129-10">{</span><span·class="ss">server_pid</span><span·class="p">,</span><span·class="nf">start_server</span><span·class="p"·data-group-id="8688279129-11">(</span><span·class="p"·data-group-id="86[·...·truncated·by·diffoscope;·len:·217,·SHA:·15cec46009ffecd70c3528d079e5f1757391dc17829c29ef3851aee9b48717aa·...·]-9">]</span><span·class="p">;</span><span·class="w">
  
173 </span><span·class="nf">init_per_testcase</span><span·class="p"·data-group-id="8251357434-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="8251357434-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="8688279129-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="8688279129-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="8251357434-13">(</span><span·class="p"·data-group-id="8251357434-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="8688279129-13">(</span><span·class="p"·data-group-id="8688279129-13">)</span><span·class="p">,</span><span·class="w">
175 ····</span><span·class="nf">configure_server</span><span·class="p"·data-group-id="8251357434-14">(</span><span·class="p"·data-group-id="8251357434-14">)</span><span·class="p">,</span><span·class="w">175 ····</span><span·class="nf">configure_server</span><span·class="p"·data-group-id="8688279129-14">(</span><span·class="p"·data-group-id="8688279129-14">)</span><span·class="p">,</span><span·class="w">
176 ····</span><span·class="p"·data-group-id="8251357434-15">[</span><span·class="p"·data-group-id="8251357434-16">{</span><span·class="ss">server_pid</span><span·class="p">,</span><span·class="n">ServerPid</span><span·class="p"·data-group-id="8251357434-16">}</span><span·class="w">·</span><span·class=[·...·truncated·by·diffoscope;·len:·106,·SHA:·e0ea5021aa334e1eeaf54eb9757c6aca4126d502d11191de84d2f23a165714e5·...·]-15">]</span><span·class="p">.</span><span·class="w">176 ····</span><span·class="p"·data-group-id="8688279129-15">[</span><span·class="p"·data-group-id="8688279129-16">{</span><span·class="ss">server_pid</span><span·class="p">,</span><span·class="n">ServerPid</span><span·class="p"·data-group-id="8688279129-16">}</span><span·class="w">·</span><span·class=[·...·truncated·by·diffoscope;·len:·106,·SHA:·1695013300a2bdf9ba07daa70be030b40e408f55f6019b456e6915f4049326ae·...·]-15">]</span><span·class="p">.</span><span·class="w">
  
177 </span><span·class="nf">end_per_testcase</span><span·class="p"·data-group-id="8251357434-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="8251357434-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="8688279129-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="8688279129-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="8251357434-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="8251357434-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="8688279129-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="8688279129-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="8251357434-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="8251357434-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="8688279129-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="8688279129-19">)</span><span·class="p">,</span><span·class="w">
181 ····</span><span·class="nf">stop_server</span><span·class="p"·data-group-id="8251357434-20">(</span><span·class="n">ServerPid</span><span·class="p"·data-group-id="8251357434-20">)</span><span·class="p">.</span><span·class="w">181 ····</span><span·class="nf">stop_server</span><span·class="p"·data-group-id="8688279129-20">(</span><span·class="n">ServerPid</span><span·class="p"·data-group-id="8688279129-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="8251357434-21">(</span><span·class="p"·data-group-id="8251357434-21">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="8251357434-22">[</span><span·class="ss">start_and_stop</span><span·class=[·...·truncated·by·diffoscope;·len:·201,·SHA:·0df13bf2e7a0112b1db0d334cd152754abead907343bf2cc1264103534dc35a9·...·]-22">]</span><span·class="p">.</span><span·class="w">183 </span><span·class="nf">all</span><span·class="p"·data-group-id="8688279129-21">(</span><span·class="p"·data-group-id="8688279129-21">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="8688279129-22">[</span><span·class="ss">start_and_stop</span><span·class=[·...·truncated·by·diffoscope;·len:·201,·SHA:·84f67649529d670ceb7540350c9c367ab755522dc026884a1cff20c8f1a9bb92·...·]-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="8251357434-23">(</span><span·class="p">_</span><span·class="p"·data-group-id="8251357434-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="8688279129-23">(</span><span·class="p">_</span><span·class="p"·data-group-id="8688279129-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="8251357434-24">(</span><span·class="p"·data-group-id="8251357434-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="8688279129-24">(</span><span·class="p"·data-group-id="8688279129-24">)</span><span·class="p">,</span><span·class="w">
187 ····</span><span·class="nf">stop_server</span><span·class="p"·data-group-id="8251357434-25">(</span><span·class="n">ServerPid</span><span·class="p"·data-group-id="8251357434-25">)</span><span·class="p">.</span><span·class="w">187 ····</span><span·class="nf">stop_server</span><span·class="p"·data-group-id="8688279129-25">(</span><span·class="n">ServerPid</span><span·class="p"·data-group-id="8688279129-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="8251357434-26">(</span><span·class="n">Config</span><span·class="p"·data-group-id="8251357434-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="8688279129-26">(</span><span·class="n">Config</span><span·class="p"·data-group-id="8688279129-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="8251357434-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="8251357434-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="8688279129-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="8688279129-27">)</span><span·class="p">,</span><span·class="w">
191 ····</span><span·class="nf">configure_server</span><span·class="p"·data-group-id="8251357434-28">(</span><span·class="n">ServerPid</span><span·class="p"·data-group-id="8251357434-28">)</span><span·class="p">.</span><span·class="w">191 ····</span><span·class="nf">configure_server</span><span·class="p"·data-group-id="8688279129-28">(</span><span·class="n">ServerPid</span><span·class="p"·data-group-id="8688279129-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="8251357434-29">(</span><span·class="n">Config</span><span·class="p"·data-group-id="8251357434-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="8688279129-29">(</span><span·class="n">Config</span><span·class="p"·data-group-id="8688279129-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="8251357434-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="8251357434-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="8688279129-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="8688279129-30">)</span><span·class="p">,</span><span·class="w">
195 ····</span><span·class="p"·data-group-id="8251357434-31">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">SessionId</span><span·class="p"·data-group-id="8251357434-31">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">my_server[·...·truncated·by·diffoscope;·len:·189,·SHA:·5fe7ee1e2eb394fad4d891d8d3b5aa64574cdae69688d4ea9e681b7232b74e58·...·]-32">)</span><span·class="p">,</span><span·class="w">195 ····</span><span·class="p"·data-group-id="8688279129-31">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">SessionId</span><span·class="p"·data-group-id="8688279129-31">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">my_server[·...·truncated·by·diffoscope;·len:·189,·SHA:·215f7555c41e481515c3dce7273060d75fdc3338df353d9866a9aa4c1dccd9dd·...·]-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="8251357434-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="8251357434-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="8688279129-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="8688279129-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="8251357434-34">(</span><span·class="p"·data-group-id="8251357434-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="8688279129-34">(</span><span·class="p"·data-group-id="8688279129-34">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
199 ····</span><span·class="p"·data-group-id="8251357434-35">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">ServerPid</span><span·class="p"·data-group-id="8251357434-35">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">my_server[·...·truncated·by·diffoscope;·len:·155,·SHA:·7e17eff81e41955dc881f138070967d6d1d2e4a2dd4da0bbdc45c8ddcfd5c78c·...·]-36">)</span><span·class="p">,</span><span·class="w">199 ····</span><span·class="p"·data-group-id="8688279129-35">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">ServerPid</span><span·class="p"·data-group-id="8688279129-35">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">my_server[·...·truncated·by·diffoscope;·len:·155,·SHA:·77330c7dc7c1cebc6ecc87cb89eefbea9a9ecfedc77e7246db99b6c19998eca3·...·]-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="8251357434-37">(</span><span·class="n">ServerPid</span><span·class="p"·data-group-id="8251357434-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="8688279129-37">(</span><span·class="n">ServerPid</span><span·class="p"·data-group-id="8688279129-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="8251357434-38">(</span><span·class="p"·data-group-id="8251357434-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="8688279129-38">(</span><span·class="p"·data-group-id="8688279129-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="8251357434-39">(</span><span·class="n">ServerPid</span><span·class="p"·data-group-id="8251357434-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="8688279129-39">(</span><span·class="n">ServerPid</span><span·class="p"·data-group-id="8688279129-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="8251357434-40">(</span><span·class="ss">my_server_cfg</span><span·class="p"·data-group-id="8251357434-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="8688279129-40">(</span><span·class="ss">my_server_cfg</span><span·class="p"·data-group-id="8688279129-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="8251357434-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="8251357434-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="8688279129-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="8688279129-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="6054320927-1">(</span><span·class="ss">server_b_SUITE</span><span·class="p"·data-group-id="6054320927-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="2417228083-1">(</span><span·class="ss">server_b_SUITE</span><span·class="p"·data-group-id="2417228083-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="6054320927-2">(</span><span·class="ss">export_all</span><span·class="p"·data-group-id="6054320927-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="2417228083-2">(</span><span·class="ss">export_all</span><span·class="p"·data-group-id="2417228083-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="6054320927-3">(</span><span·class="s">&quot;ct.hrl&quot;</span><span·class="p"·data-group-id="6054320927-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="2417228083-3">(</span><span·class="s">&quot;ct.hrl&quot;</span><span·class="p"·data-group-id="2417228083-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="6054320927-4">(</span><span·class="n">Config</span><span·class="p"·data-group-id="6054320927-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="2417228083-4">(</span><span·class="n">Config</span><span·class="p"·data-group-id="2417228083-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="6054320927-5">{</span><span·class="ss">server_a_SUITE</span><span·class="p">,</span><span·class="n">OldConfig</span><span·class="p"·data-group-id="6054320927-5">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc[·...·truncated·by·diffoscope;·len:·282,·SHA:·05fd284f56cdc531f910fcabe7884a8866a98805c9ece23b9a8a9d3e7cdadb21·...·]-6">)</span><span·class="p">,</span><span·class="w">256 ····</span><span·class="p"·data-group-id="2417228083-5">{</span><span·class="ss">server_a_SUITE</span><span·class="p">,</span><span·class="n">OldConfig</span><span·class="p"·data-group-id="2417228083-5">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc[·...·truncated·by·diffoscope;·len:·282,·SHA:·b8e50efb4bfe8e82603855e0ce7b22b7616140c428e7a02b1673375ef3a774ea·...·]-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="6054320927-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="6054320927-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="2417228083-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="2417228083-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="6054320927-8">(</span><span·class="n">ServerId</span><span·class="p"·data-group-id="6054320927-8">)</span><span·class="p">,</span><span·class="w"> 
260 ····</span><span·class="p"·data-group-id="6054320927-9">[</span><span·class="p"·data-group-id="6054320927-10">{</span><span·class="ss">ids</span><span·class="p">,</span><span·class="p"·data-group-id="6054320927-11">{</span><span·class="n">ServerId</span><span·class="p">,</span><s[·...·truncated·by·diffoscope;·len:·309,·SHA:·54b7a2e44adc561bdeea919bee3e2eefe7f8c74a18085609c38bc59f536dc8eb·...·]</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="2417228083-8">(</span><span·class="n">ServerId</span><span·class="p"·data-group-id="241722808[·...·truncated·by·diffoscope;·len:·30,·SHA:·fb0d12b9386ee29a27f666c6e9fc1b7ed11a8a634b901536b6fe80fb4b5a4624·...·]</span><span·class="w">
 260 ····</span><span·class="p"·data-group-id="2417228083-9">[</span><span·class="p"·data-group-id="2417228083-10">{</span><span·class="ss">ids</span><span·class="p">,</span><span·class="p"·data-group-id="2417228083-11">{</span><span·class="n">ServerId</span><span·class="p">,</span><span·class="n">SessionId</span><span·class="p"·data-group-id="2417228083-11">}</span><span·class="p"·data-group-id="2417228083-10">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="n">Config</span><span·class="p"·data-group-id="2417228083-9">]</span><span·class="p">.</span><span·class="w">
  
261 </span><span·class="nf">end_per_suite</span><span·class="p"·data-group-id="6054320927-12">(</span><span·class="n">Config</span><span·class="p"·data-group-id="6054320927-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="2417228083-12">(</span><span·class="n">Config</span><span·class="p"·data-group-id="2417228083-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="6054320927-13">{</span><span·class="ss">save_config</span><span·class="p">,</span><span·class="n">Config</span><span·class="p"·data-group-id="6054320927-13">}</span><span·class="w">263 ····</span><span·class="p"·data-group-id="2417228083-13">{</span><span·class="ss">save_config</span><span·class="p">,</span><span·class="n">Config</span><span·class="p"·data-group-id="2417228083-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="6054320927-14">(</span><span·class="p"·data-group-id="6054320927-14">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="6054320927-15">[</span><span·class="ss">allocate</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·106,·SHA:·cb9bd72e37b7c2bd4d1c6663a5404e209660b7ea719bbdd2d077519c21da6ec7·...·]-15">]</span><span·class="p">.</span><span·class="w">265 </span><span·class="nf">all</span><span·class="p"·data-group-id="2417228083-14">(</span><span·class="p"·data-group-id="2417228083-14">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="2417228083-15">[</span><span·class="ss">allocate</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·106,·SHA:·6f84d4001733f1c5c55b69fe8d324bf61b093446b180a2bdf0a7b21f06128b8e·...·]-15">]</span><span·class="p">.</span><span·class="w">
  
266 </span><span·class="nf">allocate</span><span·class="p"·data-group-id="6054320927-16">(</span><span·class="n">Config</span><span·class="p"·data-group-id="6054320927-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="2417228083-16">(</span><span·class="n">Config</span><span·class="p"·data-group-id="2417228083-16">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
267 ····</span><span·class="p"·data-group-id="6054320927-17">{</span><span·class="n">ServerId</span><span·class="p">,</span><span·class="n">SessionId</span><span·class="p"·data-group-id="6054320927-17">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">pro[·...·truncated·by·diffoscope;·len:·269,·SHA:·2ca55310c2bc1b58935a630a4c40125c0f005262acda63cf158f4a2cf6d63225·...·]-18">)</span><span·class="p">,</span><span·class="w">267 ····</span><span·class="p"·data-group-id="2417228083-17">{</span><span·class="n">ServerId</span><span·class="p">,</span><span·class="n">SessionId</span><span·class="p"·data-group-id="2417228083-17">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">pro[·...·truncated·by·diffoscope;·len:·269,·SHA:·b186c23d02bd7a68dac791650f960a09350d08dfd7e28b517f2f8bee81d1894a·...·]-18">)</span><span·class="p">,</span><span·class="w">
268 ····</span><span·class="p"·data-group-id="6054320927-19">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Handle</span><span·class="p"·data-group-id="6054320927-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:·8f8903110036481646bf8bedca2a697b85cb92704f4008ec5c91c0a15bc34b90·...·]-20">)</span><span·class="p">,</span><span·class="w">268 ····</span><span·class="p"·data-group-id="2417228083-19">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Handle</span><span·class="p"·data-group-id="2417228083-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:·666a2f49e5bb09fe0746c654bc84092d84c2d12d8659b16cc9c550e8b3e805cd·...·]-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="6054320927-21">[</span><span·class="p"·data-group-id="6054320927-22">{</span><span·class="ss">handle</span><span·class="p">,</span><span·class="n">Handle</span><span·class="p"·data-group-id="6054320927-22">}</span><span·class="p"·data-group-id="6054320927-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="2417228083-21">[</span><span·class="p"·data-group-id="2417228083-22">{</span><span·class="ss">handle</span><span·class="p">,</span><span·class="n">Handle</span><span·class="p"·data-group-id="2417228083-22">}</span><span·class="p"·data-group-id="2417228083-21">]</span><span·class="p">,</span><span·class="w">
271 ····</span><span·class="p"·data-group-id="6054320927-23">{</span><span·class="ss">save_config</span><span·class="p">,</span><span·class="n">NewConfig</span><span·class="p"·data-group-id="6054320927-23">}</span><span·class="p">.</span><span·class="w">271 ····</span><span·class="p"·data-group-id="2417228083-23">{</span><span·class="ss">save_config</span><span·class="p">,</span><span·class="n">NewConfig</span><span·class="p"·data-group-id="2417228083-23">}</span><span·class="p">.</span><span·class="w">
  
272 </span><span·class="nf">deallocate</span><span·class="p"·data-group-id="6054320927-24">(</span><span·class="n">Config</span><span·class="p"·data-group-id="6054320927-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="2417228083-24">(</span><span·class="n">Config</span><span·class="p"·data-group-id="2417228083-24">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
273 ····</span><span·class="p"·data-group-id="6054320927-25">{</span><span·class="n">ServerId</span><span·class="p">,</span><span·class="n">SessionId</span><span·class="p"·data-group-id="6054320927-25">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">pro[·...·truncated·by·diffoscope;·len:·269,·SHA:·b11b416419e5d579e759aa797a7695ca0d13afb35f42ef21f922fbc15314755a·...·]-26">)</span><span·class="p">,</span><span·class="w">273 ····</span><span·class="p"·data-group-id="2417228083-25">{</span><span·class="n">ServerId</span><span·class="p">,</span><span·class="n">SessionId</span><span·class="p"·data-group-id="2417228083-25">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">pro[·...·truncated·by·diffoscope;·len:·269,·SHA:·12110a01adf175cbf9aca09637c9638812d0ea6d5bc16e723c6ed1aa3a5fce8c·...·]-26">)</span><span·class="p">,</span><span·class="w">
274 ····</span><span·class="p"·data-group-id="6054320927-27">{</span><span·class="ss">allocate</span><span·class="p">,</span><span·class="n">OldConfig</span><span·class="p"·data-group-id="6054320927-27">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">pr[·...·truncated·by·diffoscope;·len:·279,·SHA:·9d2ff43ad869983f7cb47e1a55e7db1d37671ed30b014b71d7951cd6e8e5c168·...·]-28">)</span><span·class="p">,</span><span·class="w">274 ····</span><span·class="p"·data-group-id="2417228083-27">{</span><span·class="ss">allocate</span><span·class="p">,</span><span·class="n">OldConfig</span><span·class="p"·data-group-id="2417228083-27">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">pr[·...·truncated·by·diffoscope;·len:·279,·SHA:·dd4054233d061a1514b0c35b83c813fd9987149a68bef9a09180a9358a89f543·...·]-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="6054320927-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="6054320927-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="2417228083-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="2417228083-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="6054320927-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="6054320927-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="2417228083-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="2417228083-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
Max diff block lines reached; 11566/57121 bytes (20.25%) 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="2453287252-1">{</span><span·class="ss">event_handler</span><span·class="p">,</span><span·class="n">EventHandlers</span><span·class="p"·data-group-id="2453287252-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="6384315308-1">{</span><span·class="ss">event_handler</span><span·class="p">,</span><span·class="n">EventHandlers</span><span·class="p"·data-group-id="6384315308-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="2453287252-2">[</span><span·class="n">EH</span><span·class="p"·data-group-id="2453287252-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="6384315308-2">[</span><span·class="n">EH</span><span·class="p"·data-group-id="6384315308-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="2453287252-3">(</span><span·class="p"·data-group-id="2453287252-3">)</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="2453287252-4">{</span><span·class="nf">atom</span><span·class="p"·data-group-id="2453287252-5">(</span><span·class="p"·data-group-id="2453287252-5">)</span><span·class="p">,</span><span·class="n">InitArgs</span><span·class="p"·data-group-id="2453287252-4">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="2453287252-6">{</span><span·class="p"·data-group-id="2453287252-7">[</span><span·class="nf">atom</span><span·class="p"·data-group-id="2453287252-8">(</span><span·class="p"·data-group-id="2453287252-8">)</span><span·class="p"·data-group-id="2453287252-7">]</span><span·class="p">,</span><span·class="n">InitArgs</span><span·class="p"·data-group-id="2453287252-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="2453287252-9">[</span><span·class="nf">term</span><span·class="p"·data-group-id="2453287252-10">(</span><span·class="p"·data-group-id="245[·...·truncated·by·diffoscope;·len:·187,·SHA:·3456e37495efc966e453fb9bf7e6323fd674d091e92a91adb4054467404f6c57·...·]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="6384315308-3">(</span><span·class="p"·data-group-id="6384315308-3">)</span><span·class="w">·</span><span·class="p">|[·...·truncated·by·diffoscope;·len:·815,·SHA:·1fb5fb643ea151e2070e6a7359188b0a7a2534a096700b86886be83f5168d393·...·]
 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="6384315308-9">[</span><span·class="nf">term</span><span·class="p"·data-group-id="6384315308-10">(</span><span·class="p"·data-group-id="6384315308-10">)</span><span·class="p"·data-group-id="6384315308-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="9122034059-1">(</span><span·class="p"·data-group-id="9122034059-2">[</span><span·class="p"·data-group-id="9122034059-3">{</span><span·class="ss">suite</span><span·class="p">,</span><span·class="s">&quot;test/my_SUITE&quot;</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·873,·SHA:·775d09c17866440221f8f86cc23a2fddd649271872e03eb6c39e930d2bfb2726·...·]-1">)</span><span·class="p">.</span></code></pre><p>Event·handler·<code·class="inline">my_evh1</code>·is·started·with·<code·class="inline">[]</code>·as·argument·to·the·init·function.175 installed:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">run_test</span><span·class="p"·data-group-id="6873528437-1">(</span><span·class="p"·data-group-id="6873528437-2">[</span><span·class="p"·data-group-id="6873528437-3">{</span><span·class="ss">suite</span><span·class="p">,</span><span·class="s">&quot;test/my_SUITE&quot;</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·873,·SHA:·b73f3c4674e78f724368e4e0ffa29eafef788d3b895a04b658f3900d620c99e6·...·]-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="0970917556-1">(</span><span·class="ss">db_data_type_SUITE</span><span·class="p"·data-group-id="0970917556-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="2599281820-1">(</span><span·class="ss">db_data_type_SUITE</span><span·class="p"·data-group-id="2599281820-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="0970917556-2">(</span><span·class="s">&quot;common_test/include/ct.hrl&quot;</span><span·class="p"·data-group-id="0970917556-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="2599281820-2">(</span><span·class="s">&quot;common_test/include/ct.hrl&quot;</span><span·class="p"·data-group-id="2599281820-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="0970917556-3">(</span><span·class="p"·data-group-id="0970917556-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="2599281820-3">(</span><span·class="p"·data-group-id="2599281820-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="0970917556-4">]</span><span·class="p"·data-group-id="0970917556-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="2599281820-4">]</span><span·class="p"·data-group-id="2599281820-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="0970917556-5">(</span><span·class="p"·data-group-id="0970917556-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:·61bf88a776e0c3136afe6f567dfec8daae3a1339a9bbed267ef99805a60ef41e·...·]-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="2599281820-5">(</span><span·class="p"·data-group-id="2599281820-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:·80d74c3a4b5f8227fe3098bfce88560269f64d1de3008f057c1db757c0ee36f5·...·]-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="0970917556-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="0970917556-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="2599281820-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="2599281820-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="0970917556-8">(</span><span·class="p"·data-group-id="0970917556-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="2599281820-8">(</span><span·class="p"·data-group-id="2599281820-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
157 ····</span><span·class="p"·data-group-id="0970917556-9">[</span><span·class="p"·data-group-id="0970917556-10">{</span><span·class="ss">timetrap</span><span·class="p">,</span><span·class="p"·data-group-id="0970917556-11">{</span><span·class="ss">minutes</span><span·class="p">,</span><span·class="mi[·...·truncated·by·diffoscope;·len:·159,·SHA:·f676e2311197b2e3a6cdd84ae38aa555d677c61a753f9919ff7c7f943d9bc7f9·...·]-9">]</span><span·class="p">.</span><span·class="w">157 ····</span><span·class="p"·data-group-id="2599281820-9">[</span><span·class="p"·data-group-id="2599281820-10">{</span><span·class="ss">timetrap</span><span·class="p">,</span><span·class="p"·data-group-id="2599281820-11">{</span><span·class="ss">minutes</span><span·class="p">,</span><span·class="mi[·...·truncated·by·diffoscope;·len:·159,·SHA:·f0bfefe9130a18ad84641d102d67a952b7850b5eebe8062029e1fe37da838e85·...·]-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="0970917556-12">(</span><span·class="n">Config</span><span·class="p"·data-group-id="0970917556-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="2599281820-12">(</span><span·class="n">Config</span><span·class="p"·data-group-id="2599281820-12">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
167 ····</span><span·class="p"·data-group-id="0970917556-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="0970917556-13">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·383,·SHA:·688c24beb83d0032575d0bb9269589102d874e230cf5a2ac7f0f98196fdae028·...·]-14">)</span><span·class="p">,</span><span·class="w">167 ····</span><span·class="p"·data-group-id="2599281820-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="2599281820-13">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·383,·SHA:·aabf306b7aa50499ee3c6180cc0a2c0c48d40bd535ae08167dcbf038b64f5753·...·]-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="0970917556-16">(</span><span·class="p"·data-group-id="0970917556-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="2599281820-16">(</span><span·class="p"·data-group-id="2599281820-16">)</span><span·class="p">,</span><span·class="w">
169 ····</span><span·class="p"·data-group-id="0970917556-17">[</span><span·class="p"·data-group-id="0970917556-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="0970917556-18">}</s[·...·truncated·by·diffoscope;·len:·368,·SHA:·20fd02ee92459cd41a46196d899674b71f27616feefce36bf117f5093af8dd87·...·]-17">]</span><span·class="p">.</span><span·class="w">169 ····</span><span·class="p"·data-group-id="2599281820-17">[</span><span·class="p"·data-group-id="2599281820-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="2599281820-18">}</s[·...·truncated·by·diffoscope;·len:·368,·SHA:·c20f56baac8edd4fb1be14b4ed044f746b49f9459855ee1d34341c0e9154fd04·...·]-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="0970917556-20">(</span><span·class="n">Config</span><span·class="p"·data-group-id="0970917556-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="2599281820-20">(</span><span·class="n">Config</span><span·class="p"·data-group-id="2599281820-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="0970917556-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="0970917556-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="2599281820-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="2599281820-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="0970917556-22">(</span><span·class="n">Ref</span><span·class="p"·data-group-id="0970917556-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="2599281820-22">(</span><span·class="n">Ref</span><span·class="p"·data-group-id="2599281820-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="0970917556-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="0970917556-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="2599281820-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="2599281820-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="0970917556-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="0970917556-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="2599281820-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="2599281820-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="0970917556-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="0970917556-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="2599281820-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="2599281820-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="0970917556-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="0970917556-27"[·...·truncated·by·diffoscope;·len:·131,·SHA:·155ee589f921a94dda5a70baf1d5c31ca2504452869feb6752a3d96504f9ee23·...·]-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="2599281820-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="2599281820-27"[·...·truncated·by·diffoscope;·len:·131,·SHA:·b899f49bc9bf9f50a26c1b00a0a45cbad5fa3fd0743133f238f7600cf5fafa50·...·]-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="0970917556-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="0970917556-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="2599281820-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="2599281820-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="0970917556-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="0970917556-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="2599281820-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="2599281820-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="0970917556-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="0970917556-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="2599281820-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="2599281820-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="0970917556-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="0970917556-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="2599281820-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="2599281820-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="0970917556-32">(</span><span·class="p"·data-group-id="0970917556-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="2599281820-32">(</span><span·class="p"·data-group-id="2599281820-32">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
225 ····</span><span·class="p"·data-group-id="0970917556-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="0970917556-33">]</span><span·class="p">.</span><span·class="w">225 ····</span><span·class="p"·data-group-id="2599281820-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="2599281820-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="0970917556-34">(</span><span·class="n">Config</span><span·class="p"·data-group-id="0970917556-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="2599281820-34">(</span><span·class="n">Config</span><span·class="p"·data-group-id="2599281820-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="0970917556-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:·d9b26b5b5d1de19a22fd9e1988cac4a8d9c382fd3f6da3412ac685433691ace9·...·]-35">)</span><span·class="p">.</span><span·class="w">230 ····</span><span·class="nf">insert_and_lookup</span><span·class="p"·data-group-id="2599281820-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:·4e873eb58321525c36d590ea0b970b9f389da1567b39090b4b84db4ea3fad82b·...·]-35">)</span><span·class="p">.</span><span·class="w">
  
231 </span><span·class="nf">integer</span><span·class="p"·data-group-id="0970917556-36">(</span><span·class="n">Config</span><span·class="p"·data-group-id="0970917556-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="2599281820-36">(</span><span·class="n">Config</span><span·class="p"·data-group-id="2599281820-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="0970917556-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="0970917556-37">)</span><span·class="p">.</span><span·class="w">232 ····</span><span·class="nf">insert_and_lookup</span><span·class="p"·data-group-id="2599281820-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="2599281820-37">)</span><span·class="p">.</span><span·class="w">
  
  
233 </span><span·class="nf">insert_and_lookup</span><span·class="p"·data-group-id="0970917556-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="0970917556-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="2599281820-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="2599281820-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="0970917556-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="0970917556-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="2599281820-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="2599281820-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="0970917556-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="0970917556-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="2599281820-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="2599281820-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="0970917556-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:·342ec2c4d52759b789e6bdb5551b0b61f101aa2b34950e1b8e2a0bc4ecbd5343·...·]-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="2599281820-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:·7c38030ded288c9967f10de2a6ac8323be7957a5934f8b52226cd5a590abc2e4·...·]-41">)</span><span·class="p">,</span><span·class="w">
237 ····</span><span·class="p"·data-group-id="0970917556-42">[</span><span·class="n">Value</span><span·class="p"·data-group-id="0970917556-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:·707f9c3c7bcc7c9917df04fc44270945d30b24e1f2ace6b3bf8080d9c2ae51b0·...·]-43">)</span><span·class="p">,</span><span·class="w">237 ····</span><span·class="p"·data-group-id="2599281820-42">[</span><span·class="n">Value</span><span·class="p"·data-group-id="2599281820-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:·9894768a86f9e83640ce99b5923e675e851c859eb6ffa7dfe0be1994eef68ffe·...·]-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="9799993653-1">(</span><span·class="ss">my1st_SUITE</span><span·class="p"·data-group-id="9799993653-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="7624719646-1">(</span><span·class="ss">my1st_SUITE</span><span·class="p"·data-group-id="7624719646-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="9799993653-2">(</span><span·class="ss">export_all</span><span·class="p"·data-group-id="9799993653-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="7624719646-2">(</span><span·class="ss">export_all</span><span·class="p"·data-group-id="7624719646-2">)</span><span·class="p">.</span><span·class="w">
  
174 </span><span·class="nf">all</span><span·class="p"·data-group-id="9799993653-3">(</span><span·class="p"·data-group-id="9799993653-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="7624719646-3">(</span><span·class="p"·data-group-id="7624719646-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
175 ····</span><span·class="p"·data-group-id="9799993653-4">[</span><span·class="ss">mod_exists</span><span·class="p"·data-group-id="9799993653-4">]</span><span·class="p">.</span><span·class="w">175 ····</span><span·class="p"·data-group-id="7624719646-4">[</span><span·class="ss">mod_exists</span><span·class="p"·data-group-id="7624719646-4">]</span><span·class="p">.</span><span·class="w">
  
176 </span><span·class="nf">mod_exists</span><span·class="p"·data-group-id="9799993653-5">(</span><span·class="p">_</span><span·class="p"·data-group-id="9799993653-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="7624719646-5">(</span><span·class="p">_</span><span·class="p"·data-group-id="7624719646-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
177 ····</span><span·class="p"·data-group-id="9799993653-6">{</span><span·class="ss">module</span><span·class="p">,</span><span·class="ss">mymod</span><span·class="p"·data-group-id="9799993653-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:·20891aa06138fb7fba3454744333a29083a8b4132104574de0a66c03742159fb·...·]-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="7624719646-6">{</span><span·class="ss">module</span><span·class="p">,</span><span·class="ss">mymod</span><span·class="p"·data-group-id="7624719646-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:·44300885fa1801647585f66060c2109d83a6b0bfb0533eefe457c09e09c31870·...·]-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="0467427742-1">(</span><span·class="ss">check_log_SUITE</span><span·class="p"·data-group-id="0467427742-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="1935472142-1">(</span><span·class="ss">check_log_SUITE</span><span·class="p"·data-group-id="1935472142-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="0467427742-2">(</span><span·class="p"·data-group-id="0467427742-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:·256,·SHA:·f4f2a030eedca250aff67adde5b96ae87f6541242b9351e599283b9a75b4f4f2·...·]42-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="1935472142-2">(</span><span·class="p"·data-group-id="1935472142-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:·256,·SHA:·510e4e66a2592f8e11790fcf028be5cc36b375700efc55a17ff9c54e8a3f07a8·...·]42-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="0467427742-4">(</span><span·class="p"·data-group-id="0467427742-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:·140,·SHA:·454f23f02fe0abe188673210c0906b5cdfc176f2145a46470316aa48acda4e6f·...·]42-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="1935472142-4">(</span><span·class="p"·data-group-id="1935472142-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:·140,·SHA:·d6448e57da37cdc83433e891887dbf52fef552830ac3514ee3bf8e16e0cffb82·...·]42-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="0467427742-6">(</span><span·class="nf">value</span><span·class="p"·data-group-id="0467427742-7">(</span><span·class="n">Key</span><span·class="p">,</span><span·class="n">Config</span><span·class="p"·data-group-id="0467427742-7">)</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·342,·SHA:·91f8c7ab045590992a9a3fe15eb334edaf4665bbf584e038b2ae8d5d11a399f9·...·]42-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="1935472142-6">(</span><span·class="nf">value</span><span·class="p"·data-group-id="1935472142-7">(</span><span·class="n">Key</span><span·class="p">,</span><span·class="n">Config</span><span·class="p"·data-group-id="1935472142-7">)</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·342,·SHA:·f7a9414d9e3f639a2899f2c76336d0d5d78306ca11170beed40ca88043b2aa76·...·]42-6">)</span><span·class="p">.</span><span·class="w">
  
195 </span><span·class="nf">all</span><span·class="p"·data-group-id="0467427742-9">(</span><span·class="p"·data-group-id="0467427742-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="0467427742-10">[</span><span·class="ss">check_restart_result</span><span·c[·...·truncated·by·diffoscope;·len:·119,·SHA:·3161c0bb10ac889e84baadea1e4cba7d00185f319638eaac67754fdd05b311d7·...·]42-10">]</span><span·class="p">.</span><span·class="w">195 </span><span·class="nf">all</span><span·class="p"·data-group-id="1935472142-9">(</span><span·class="p"·data-group-id="1935472142-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="1935472142-10">[</span><span·class="ss">check_restart_result</span><span·c[·...·truncated·by·diffoscope;·len:·119,·SHA:·f3eff89449af9a5c6186f3adc0ef3e80b8584d92a0ca50f622f2835bc18a46e8·...·]42-10">]</span><span·class="p">.</span><span·class="w">
  
196 </span><span·class="nf">init_per_suite</span><span·class="p"·data-group-id="0467427742-11">(</span><span·class="n">InitConfigData</span><span·class="p"·data-group-id="0467427742-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="1935472142-11">(</span><span·class="n">InitConfigData</span><span·class="p"·data-group-id="1935472142-11">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
197 ····</span><span·class="p"·data-group-id="0467427742-12">[</span><span·class="p"·data-group-id="0467427742-13">{</span><span·class="ss">logref</span><span·class="p">,</span><span·class="nf">open_log</span><span·class="p"·data-group-id="0467427742-14">(</span><span·class="p"·data-group-id="04674277[·...·truncated·by·diffoscope;·len:·217,·SHA:·52e92c50d1323b8fb51d1bb7d6f3bc4ac849aeada6d4a7330450c4ba056d584a·...·]42-12">]</span><span·class="p">.</span><span·class="w">197 ····</span><span·class="p"·data-group-id="1935472142-12">[</span><span·class="p"·data-group-id="1935472142-13">{</span><span·class="ss">logref</span><span·class="p">,</span><span·class="nf">open_log</span><span·class="p"·data-group-id="1935472142-14">(</span><span·class="p"·data-group-id="19354721[·...·truncated·by·diffoscope;·len:·217,·SHA:·1850556b7f1fed133da9704ef35c6dc3ebb53d6a2610abd756fe6897e02121f6·...·]42-12">]</span><span·class="p">.</span><span·class="w">
  
198 </span><span·class="nf">end_per_suite</span><span·class="p"·data-group-id="0467427742-15">(</span><span·class="n">ConfigData</span><span·class="p"·data-group-id="0467427742-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="1935472142-15">(</span><span·class="n">ConfigData</span><span·class="p"·data-group-id="1935472142-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="0467427742-16">(</span><span·class="o">?</span><span·class="nf">value</span><span·class="p"·data-group-id="0467427742-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:·78,·SHA:·73ef27715fcb3b4542ee8da5132619f80fca46c07421e18abb064b4bb697323c·...·]42-16">)</span><span·class="p">.</span><span·class="w">199 ····</span><span·class="nf">close_log</span><span·class="p"·data-group-id="1935472142-16">(</span><span·class="o">?</span><span·class="nf">value</span><span·class="p"·data-group-id="1935472142-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:·78,·SHA:·c060a66f9b24fedebd9a2fdcbd77b163b707963e9c89e13facd04cfc13f0c2d2·...·]42-16">)</span><span·class="p">.</span><span·class="w">
  
200 </span><span·class="nf">check_restart_result</span><span·class="p"·data-group-id="0467427742-18">(</span><span·class="n">ConfigData</span><span·class="p"·data-group-id="0467427742-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="1935472142-18">(</span><span·class="n">ConfigData</span><span·class="p"·data-group-id="1935472142-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="0467427742-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="0467427742-20">(</span><span·class="ss">logref</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·157,·SHA:·3e5147fd5618b66ab666cddcb89981b7d1fd1ac204f75c45e07d20095324d37d·...·]42-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="1935472142-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="1935472142-20">(</span><span·class="ss">logref</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·157,·SHA:·a61fd79711facb2e936f568e81b5bca33031ceaee16c5712e6a279e694584309·...·]42-19">)</span><span·class="p">,</span><span·class="w">
202 ····</span><span·class="p"·data-group-id="0467427742-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="0467427742-21">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·256,·SHA:·60efb23ca141b7a64be9fd9993753a9b5dbf5230bb9af6a9a8b1cee00bcf9f16·...·]42-22">)</span><span·class="p">.</span><span·class="w">202 ····</span><span·class="p"·data-group-id="1935472142-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="1935472142-21">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·256,·SHA:·d815ab6ab8f8f5e76522945420a8d2ba6d828869c9e7982b19b73a9956b65cda·...·]42-22">)</span><span·class="p">.</span><span·class="w">
  
203 </span><span·class="nf">check_no_errors</span><span·class="p"·data-group-id="0467427742-23">(</span><span·class="n">ConfigData</span><span·class="p"·data-group-id="0467427742-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="1935472142-23">(</span><span·class="n">ConfigData</span><span·class="p"·data-group-id="1935472142-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="0467427742-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="0467427742-25">(</span><span·class="ss">logref</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·153,·SHA:·6609373b9bca78ca47828a45b2bdad4df3502f7e158e14d7610095d437e00ff5·...·]42-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="1935472142-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="1935472142-25">(</span><span·class="ss">logref</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·153,·SHA:·2fe90e7ea34e2a7ccd30c2bd01d2bc28b2e360f7144765bfc100953d79aadd66·...·]42-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="0467427742-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="0467427742-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="1935472142-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="1935472142-26">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
206 ········</span><span·class="p"·data-group-id="0467427742-27">{</span><span·class="ss">match</span><span·class="p">,</span><span·class="n">Line</span><span·class="p"·data-group-id="0467427742-27">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nc">ct</sp[·...·truncated·by·diffoscope;·len:·349,·SHA:·fa763a43c5f30c5e3863d36d8bedc41699f6678d6f690d9759ce20af608131c4·...·]42-28">)</span><span·class="p">;</span><span·class="w">206 ········</span><span·class="p"·data-group-id="1935472142-27">{</span><span·class="ss">match</span><span·class="p">,</span><span·class="n">Line</span><span·class="p"·data-group-id="1935472142-27">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nc">ct</sp[·...·truncated·by·diffoscope;·len:·349,·SHA:·6e15e6acab7ac739a195cb9754766cd173d8c97f211d63dd68e19225bcde8a6f·...·]42-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="6892471949-1">(</span><span·class="p"·data-group-id="6892471949-2">[</span><span·class="p"·data-group-id="6892471949-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:·33a155ce2f56d48fecd7146b681f0652412c2cc0abe0ebb6f53c29f26e047a31·...·]-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="5648600635-1">(</span><span·class="p"·data-group-id="5648600635-2">[</span><span·class="p"·data-group-id="5648600635-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:·4bc1a8e4863e54f2b3ec2a83dfbda92455ad467d5dced8e80ffc9694c1767c82·...·]-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="7824076729-1">(</span><span·class="p"·data-group-id="7824076729-2">[</span><span·class="p"·data-group-id="7824076729-3">{</span><span·class="ss">group</span><span·class="p">,</span><span·class="n">GroupsNamesOrPaths</span><span·class="p"·data-group-id="782[·...·truncated·by·diffoscope;·len:·346,·SHA:·bdcf161716b9907775b94dab7881d9361c833659582dbd1cf7b92feb475dff78·...·]-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="3223085911-1">(</span><span·class="p"·data-group-id="3223085911-2">[</span><span·class="p"·data-group-id="3223085911-3">{</span><span·class="ss">group</span><span·class="p">,</span><span·class="n">GroupsNamesOrPaths</span><span·class="p"·data-group-id="322[·...·truncated·by·diffoscope;·len:·346,·SHA:·d51f00b1bf617fc5ee827d61edae92b43a95d64656e5531a59936e827b4acd9f·...·]-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="5853574773-1">(</span><span·class="ss">x_SUITE</span><span·class="p"·data-group-id="5853574773-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="8869544862-1">(</span><span·class="ss">x_SUITE</span><span·class="p"·data-group-id="8869544862-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="5853574773-2">(</span><span·class="p"·data-group-id="5853574773-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="8869544862-2">(</span><span·class="p"·data-group-id="8869544862-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
318 ··</span><span·class="p"·data-group-id="5853574773-3">[</span><span·class="p"·data-group-id="5853574773-4">{</span><span·class="ss">top1</span><span·class="p">,</span><span·class="p"·data-group-id="5853574773-5">[</span><span·class="p"·data-group-id="5853574773-5">]</span><span·class="p">,</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·9530796a6395ae735af94df98475408e35ce0e58bcc0bc97535e8614de46900f·...·]-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="8869544862-3">[</span><span·class="p"·data-group-id="8869544862-4">{</span><span·class="ss">top1</span><span·class="p">,</span><span·class="p"·data-group-id="8869544862-5">[</span><span·class="p"·data-group-id="8869544862-5">]</span><span·class="p">,</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·95eef1577721c4ac1d76c8c6ee034c965b13778d320e21fe4b9bff6b6e53089d·...·]-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="5853574773-7">{</span><span·class="ss">sub11</span><span·class="p">,</span><span·class="p"·data-group-id="5853574773-8">[</span><span·class="p"·data-group-id="5853574773-8">]</span><span·class="p">,</span><span·class="p"·data-group-id="5853574773-9">[</spa[·...·truncated·by·diffoscope;·len:·176,·SHA:·a865dec5467da6a7c8a0be3cafdccad144509daf6729ade5cda4590f9091e568·...·]-7">}</span><span·class="p">,</span><span·class="w">319 ·············</span><span·class="p"·data-group-id="8869544862-7">{</span><span·class="ss">sub11</span><span·class="p">,</span><span·class="p"·data-group-id="8869544862-8">[</span><span·class="p"·data-group-id="8869544862-8">]</span><span·class="p">,</span><span·class="p"·data-group-id="8869544862-9">[</spa[·...·truncated·by·diffoscope;·len:·176,·SHA:·85d3da9d8dc7f369f9cf8f8c9d95f2c27f820135e2b9b1b674b0d12da6f8754e·...·]-7">}</span><span·class="p">,</span><span·class="w">
320 ·············</span><span·class="p"·data-group-id="5853574773-10">{</span><span·class="ss">sub12</span><span·class="p">,</span><span·class="p"·data-group-id="5853574773-11">[</span><span·class="p"·data-group-id="5853574773-11">]</span><span·class="p">,</span><span·class="p"·data-group-id="5853574773-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="5853574773-13">{</span><span·class="ss">sub121</span><span·class="p">,</span><span·class="p"·data-group-id="5853574773-14">[</span><span·class="p"·data-group-id="5853574773-14">]</span><span·class="p">,</span><span·[·...·truncated·by·diffoscope;·len:·443,·SHA:·f636cd0a22640d0e871b7606acc3c94420f9684e99be99cf4f85bc6d68e8023f·...·]</span><span·class="p">,</span><span·class="w">320 ·············</span><span·class="p"·data-group-id="8869544862-10">{</span><span·class="ss">sub12</span><span·class="p">,</span><span·class="p"·data-group-id="8869544862-11">[</span><span·class="p"·data-group-id="8869544862-11">]</span><span·class="p">,</span><spa[·...·truncated·by·diffoscope;·len:·123,·SHA:·8c66f29703d4ae3a8f69dfa82de318f2d78ea71682ff669ca88bd2328e5d170e·...·]</span><span·class="p">,</span><span·class="w">
 321 ·······»       »       ·</span><span·class="p"·data-group-id="8869544862-13">{</span><span·class="ss">sub121</span><span·class="p">,</span><span·class="p"·data-group-id="8869544862-14">[</span><span·class="p"·data-group-id="8869544862-14">]</span><span·class="p">,</span><span·class="p"·data-group-id="8869544862-15">[</span><span·class="ss">tc12</span><span·class="p">,</span><span·class="ss">tc16</span><span·class="p"·data-group-id="8869544862-15">]</span><span·class="p"·data-group-id="8869544862-13">}</span><span·class="p"·data-group-id="8869544862-12">]</span><span·class="p"·data-group-id="8869544862-10">}</span><span·class="p"·data-group-id="8869544862-6">]</span><span·class="p"·data-group-id="8869544862-4">}</span><span·class="p">,</span><span·class="w">
  
322 ···</span><span·class="p"·data-group-id="5853574773-16">{</span><span·class="ss">top2</span><span·class="p">,</span><span·class="p"·data-group-id="5853574773-17">[</span><span·class="p"·data-group-id="5853574773-17">]</span><span·class="p">,</span><span·class="p"·data-group-id="5853574773-18">[</[·...·truncated·by·diffoscope;·len:·504,·SHA:·cb515ccd80b6af8dd23e99a634847c395758e160db8381c9743b04e3a63c8848·...·]-16">}</span><span·class="p">,</span><span·class="w">322 ···</span><span·class="p"·data-group-id="8869544862-16">{</span><span·class="ss">top2</span><span·class="p">,</span><span·class="p"·data-group-id="8869544862-17">[</span><span·class="p"·data-group-id="8869544862-17">]</span><span·class="p">,</span><span·class="p"·data-group-id="8869544862-18">[</[·...·truncated·by·diffoscope;·len:·504,·SHA:·bbc9827fcf7f3594414b896a23fc544eab3a2c29a88e0a9afc955cf91ee7c690·...·]-16">}</span><span·class="p">,</span><span·class="w">
323 ···</span><span·class="p"·data-group-id="5853574773-21">{</span><span·class="ss">sub21</span><span·class="p">,</span><span·class="p"·data-group-id="5853574773-22">[</span><span·class="p"·data-group-id="5853574773-22">]</span><span·class="p">,</span><span·class="p"·data-group-id="5853574773-23">[</span><span·class="ss">tc21</span><span·class="p">,</span><span·class="p"·data-group-id="5853574773-24">{</span><span·class="ss">group</span><span·class="p">,</span><span·class="ss">sub2X2</span><span·class="p"·data-group-id="5853574773-24">}</span><span·class="p"·data-group-id="5853574773-23">]</span><span·class="p"·data-group-id="5853574773-21">}</span><span·class="p">,</span><span·class="w"> 
324 ···</span><span·class="p"·data-group-id="5853574773-25">{</span><span·class="ss">sub22</span><span·class="p">,</span><span·class="p"·data-group-id="5853574773-26">[</span><span·class="p"·data-group-id="5853574773-26">]</span><span·class="p">,</span><span·class="p"·data-group-id="5853574773-27">[<[·...·truncated·by·diffoscope;·len:·614,·SHA:·4b6e098bcfe8f5bf37d8c964c4e8eb991b1b0de79c6ddfc98520bc5925a816da·...·]">}</span><span·class="p">,</span><span·class="w">323 ···</span><span·class="p"·data-group-id="8869544862-21">{</span><span·class="ss">sub21</span><span·class="p">,</span><span·class="p"·data-group-id="8869544862-22">[</span><span·class="p"·data-group-id="8869544862-22">]</span><span·class="p">,</span><span·class="p"·data-group-id="8869544862-23">[<[·...·truncated·by·diffoscope;·len:·347,·SHA:·37e5ed074668620264c98ab615ec4bb7c78307d3c58f4080ada4a668382c975b·...·]">}</span><span·class="p">,</span><span·class="w">
 324 ···</span><span·class="p"·data-group-id="8869544862-25">{</span><span·class="ss">sub22</span><span·class="p">,</span><span·class="p"·data-group-id="8869544862-26">[</span><span·class="p"·data-group-id="8869544862-26">]</span><span·class="p">,</span><span·class="p"·data-group-id="8869544862-27">[</span><span·class="p"·data-group-id="8869544862-28">{</span><span·class="ss">group</span><span·class="p">,</span><span·class="ss">sub221</span><span·class="p"·data-group-id="8869544862-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="8869544862-29">{</span><span·class="ss">group</span><span·class="p">,</span><span·class="ss">sub2X2</span><span·class="p"·data-group-id="8869544862-29">}</span><span·class="p"·data-group-id="8869544862-27">]</span><span·class="p"·data-group-id="8869544862-25">}</span><span·class="p">,</span><span·class="w">
325 ···</span><span·class="p"·data-group-id="5853574773-30">{</span><span·class="ss">sub221</span><span·class="p">,</span><span·class="p"·data-group-id="5853574773-31">[</span><span·class="p"·data-group-id="5853574773-31">]</span><span·class="p">,</span><span·class="p"·data-group-id="5853574773-32">[[·...·truncated·by·diffoscope;·len:·182,·SHA:·0d248918ad06fc035d08df87f8a9a66f763b20e064e3ad48bb675b68df6966f6·...·]-30">}</span><span·class="p">,</span><span·class="w">325 ···</span><span·class="p"·data-group-id="8869544862-30">{</span><span·class="ss">sub221</span><span·class="p">,</span><span·class="p"·data-group-id="8869544862-31">[</span><span·class="p"·data-group-id="8869544862-31">]</span><span·class="p">,</span><span·class="p"·data-group-id="8869544862-32">[[·...·truncated·by·diffoscope;·len:·182,·SHA:·687e520e0651ada525bbcef23cc8497f7cb13f2ac4896d982a35ff8dfa3fb4c1·...·]-30">}</span><span·class="p">,</span><span·class="w">
326 ···</span><span·class="p"·data-group-id="5853574773-33">{</span><span·class="ss">sub2X2</span><span·class="p">,</span><span·class="p"·data-group-id="5853574773-34">[</span><span·class="p"·data-group-id="5853574773-34">]</span><span·class="p">,</span><span·class="p"·data-group-id="5853574773-35">[[·...·truncated·by·diffoscope;·len:·236,·SHA:·e4a0a58cd96b167f9c49b14e1e3d07cebd21fa64e3ee5f784e2b8e56a80123d6·...·]-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="8869544862-33">{</span><span·class="ss">sub2X2</span><span·class="p">,</span><span·class="p"·data-group-id="8869544862-34">[</span><span·class="p"·data-group-id="8869544862-34">]</span><span·class="p">,</span><span·class="p"·data-group-id="8869544862-35">[[·...·truncated·by·diffoscope;·len:·236,·SHA:·2452e4637d7fee10783663bc8b5ce821c37de728cad2a79343cf426a3a91d188·...·]-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="0500613834-1">(</span><span·class="p"·data-group-id="0500613834-2">[</span><span·class="p"·data-group-id="0500613834-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="0500613834-3">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0500613834-4">{</span><span·class="ss">group</span><span·class="p">,</span><span·class="ss">all</span><span·class="p"·data-group-id="0500613834-4">}</span><span·class="p"·data-group-id="0500613834-2">]</span><span·class="p"·data-group-id="0500613834-1">)</span><span·class="p">.</span></code></pre><p>Using·<code·class="inline">-group·top1·top2</code>,·or·<code·class="inline">{group,[top1,top2]}</code>·gives·the·same·result.</p><p>The·following·executes·one·test·for·all·cases·and·subgroups·under·<code·class="inline">top1</code>:</p><pre><code·class="text">$·ct_run·-suite·&quot;x_SUITE&quot;·-group·top1</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="5117559038-1">(</span><span·class="p"·data-group-id="5117559038-2">[</span><span·class="p"·data-group-id="5117559038-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="5117559038-3">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5117559038-4">{</span><span·class="ss">group</span><span·class="p">,</span><span·class="p"·data-group-id="5117559038-5">[</span><span·class="ss">top1</span><span·class="p"·data-group-id="5117559038-5">]</span><span·class="p"·data-group-id="5117559038-4">}</span><span·class="p"·data-group-id="5117559038-2">]</span><span·class="p"·data-group-id="5117559038-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="5893501504-1">(</span><span·class="p"·data-group-id="5893501504-2">[</span><span·class="p"·data-group-id="5893501504-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="5893501504-3">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5893501504-4">{</span><span·class="ss">group</span><span·class="p">,</span><span·class="p"·data-group-id="5893501504-5">[</span><span·class="ss">top1</span><span·class="p"·data-group-id="5893501504-5">]</span><span·class="p"·data-group-id="5893501504-4">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5893501504-6">{</span><span·class="ss">testcase</span><span·class="p">,</span><span·class="p"·data-group-id="5893501504-7">[</span><span·class="ss">tc12</span><span·class="p"·data-group-id="5893501504-7">]</span><span·class="p"·data-group-id="5893501504-6">}</span><span·class="p"·data-group-id="5893501504-2">]</span><span·class="p"·data-group-id="5893501504-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="8359688423-1">(</span><span·class="p"·data-group-id="8359688423-2">[</span><span·class="p"·data-group-id="8359688423-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="8359688423-3">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8359688423-4">{</span><span·class="ss">group</span><span·class="p">,</span><span·class="p"·data-group-id="8359688423-5">[</span><span·class="p"·data-group-id="8359688423-6">[</span><span·class="ss">top1</span><span·class="p"·data-group-id="8359688423-6">]</span><span·class="p"·data-group-id="8359688423-5">]</span><span·class="p"·data-group-id="8359688423-4">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8359688423-7">{</span><span·class="ss">testcase</span><span·class="p">,</span><span·class="p"·data-group-id="8359688423-8">[</span><span·class="ss">tc12</span><span·class="p"·data-group-id="8359688423-8">]</span><span·class="p"·data-group-id="8359688423-7">}</span><span·class="p"·data-group-id="8359688423-2">]</span><span·class="p"·data-group-id="8359688423-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:·25bc2e089efb3492c4821dbdd803c041b4ab5add69eabed8db4365bd04193bac·...·]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&[·...·truncated·by·diffoscope;·len:·2193,·SHA:·38071d81c24f9cef682c944e7f8173df10c65554e3fc24133ce50abd6b346b2a·...·]
 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="8671848170-1">(</span><span·class="p"·data-group-id="8671848170-2">[</span><span·class="p"·data-group-id="8671848170-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="8671848170-3">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8671848170-4">{</span><span·class="ss">group</span><span·class="p">,</span><span·class="p"·data-group-id="8671848170-5">[</span><span·class="ss">top1</span><span·class="p"·data-group-id="8671848170-5">]</span><span·class="p"·data-group-id="8671848170-4">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8671848170-6">{</span><span·class="ss">testcase</span><span·class="p">,</span><span·class="p"·data-group-id="8671848170-7">[</span><span·class="ss">tc12</span><span·class="p"·data-group-id="8671848170-7">]</span><span·class="p"·data-group-id="8671848170-6">}</span><span·class="p"·data-group-id="8671848170-2">]</span><span·class="p"·data-group-id="8671848170-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="3181313727-1">(</span><span·class="p"·data-group-id="3181313727-2">[</span><span·class="p"·data-group-id="3181313727-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="3181313727-3">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3181313727-4">{</span><span·class="ss">group</span><span·class="p">,</span><span·class="p"·data-group-id="3181313727-5">[</span><span·class="p"·data-group-id="3181313727-6">[</span><span·class="ss">top1</span><span·class="p"·data-group-id="3181313727-6">]</span><span·class="p"·data-group-id="3181313727-5">]</span><span·class="p"·data-group-id="3181313727-4">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3181313727-7">{</span><span·class="ss">testcase</span><span·class="p">,</span><span·class="p"·data-group-id="3181313727-8">[</span><span·class="ss">tc12</span><span·class="p"·data-group-id="3181313727-8">]</span><span·class="p"·data-group-id="3181313727-7">}</span><span·class="p"·data-group-id="3181313727-2">]</span><span·class="p"·data-group-id="3181313727-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;·</span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">run_test</span><span·class="p"·data-group-id="8353526499-1">(</span><span·class="p"·data-group-id="8353526499-2">[</span><span·class="p"·data-group-id="8353526499-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="8353526499-3">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8353526499-4">{</span><span·class="ss">group</span><span·class="p">,</span><span·class="p"·data-group-id="8353526499-5">[</span><span·class="ss">top1</span><span·class="p"·data-group-id="8353526499-5">]</span><span·class="p"·data-group-id="8353526499-4">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8353526499-6">{</span><span·class="ss">testcase</span><span·class="p">,</span><span·class="p"·data-group-id="8353526499-7">[</span><span·class="ss">tc16</span><span·class="p"·data-group-id="8353526499-7">]</span><span·class="p"·data-group-id="8353526499-6">}</span><span·class="p"·data-group-id="8353526499-2">]</span><span·class="p"·data-group-id="8353526499-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="2413387840-1">(</span><span·class="p"·data-group-id="2413387840-2">[</span><span·class="p"·data-group-id="2413387840-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="24[·...·truncated·by·diffoscope;·len:·615,·SHA:·979393b359e8e1cc7ede32c73f93c18a395a80b0947886ebb16d31859f67bfc0·...·]-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="5670697005-1">(</span><span·class="p"·data-group-id="5670697005-2">[</span><span·class="p"·data-group-id="5670697005-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="56[·...·truncated·by·diffoscope;·len:·615,·SHA:·6f8de701a513225500800708d29f8daadfe0566a65a4689ba201c6fb09de75ec·...·]-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="5577762890-1">(</span><span·class="p"·data-group-id="5577762890-2">[</span><span·class="p"·data-group-id="5577762890-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="55[·...·truncated·by·diffoscope;·len:·456,·SHA:·915d1b6d81bfdbecbc0738b70c5c9fcaeb3f3f7180b6675068f6c9a30cb6adac·...·]0-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="4961611040-1">(</span><span·class="p"·data-group-id="4961611040-2">[</span><span·class="p"·data-group-id="4961611040-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="49[·...·truncated·by·diffoscope;·len:·456,·SHA:·74b79ca97b51f1b8752a74285262d9fcb9a57f81fe718f98d76aa03aa61b4284·...·]0-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="6014209920-1">(</span><span·class="p"·data-group-id="6014209920-2">[</span><span·class="p"·data-group-id="6014209920-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="60[·...·truncated·by·diffoscope;·len:·616,·SHA:·0e92489bb091a9ea69ae6b16d08baffddc22b555183abe01dfd735b6d6a569be·...·]-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·order335 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="5256815231-1">(</span><span·class="p"·data-group-id="5256815231-2">[</span><span·class="p"·data-group-id="5256815231-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="52[·...·truncated·by·diffoscope;·len:·616,·SHA:·23fb8b4afa6ddf32546eaff14507fb5deafd2802f7cda15a5dc4d37b112b4ac9·...·]-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><span·class="p">:</span><span·class="nf">run_test</span><span·class="p"·data-group-id="4534700637-1">(</span><span·class="p"·data-group-id="4534700637-2">[</span><span·class="p"·data-group-id="4534700637-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="45[·...·truncated·by·diffoscope;·len:·958,·SHA:·64174b999e8d2ffa7c1c9937c315ffdd47d7e665547c76a9063e8757dfbd69d1·...·]-1">)</span><span·class="p">.</span></code></pre><p>If·a·test·case·belonging·to·a·group·(according·to·the·group·definition)·is336 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="7218516743-1">(</span><span·class="p"·data-group-id="7218516743-2">[</span><span·class="p"·data-group-id="7218516743-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="72[·...·truncated·by·diffoscope;·len:·958,·SHA:·3f5dcfc7678d504d4792d0a394654c66bf46a0932c4d6341bb95aef29a9a6237·...·]-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="8984929490-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="8984929490-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="3769368461-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="3769368461-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="8984929490-2">(</span><span·class="ss">unix_telnet</span><span·class="p"·data-group-id="8984929490-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="3769368461-2">(</span><span·class="ss">unix_telnet</span><span·class="p"·data-group-id="3769368461-2">)</span><span·class="p">.</span><span·class="w">
368 </span><span·class="p"·data-group-id="8984929490-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="8984929490-3">}</span><span·class="gp·unselectable">368 </span><span·class="p"·data-group-id="3769368461-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="3769368461-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="8984929490-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="8984929490-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="3769368461-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="3769368461-4">)</span><span·class="p">.</span><span·class="w">
370 </span><span·class="p"·data-group-id="8984929490-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="8984929490-6">[</span><span·class="s">&quot;ls·.&quot;</span><span·class="p">,</span><span·class="s">&quot;file1··...&quot;</span><span·class="p">,</span[·...·truncated·by·diffoscope;·len:·167,·SHA:·ef56ca8357acd6650d6d30f1bcb3b9a8bb92d6b6b6877619005558984d133957·...·]-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="3769368461-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="3769368461-6">[</span><span·class="s">&quot;ls·.&quot;</span><span·class="p">,</span><span·class="s">&quot;file1··...&quot;</span><span·class="p">,</span[·...·truncated·by·diffoscope;·len:·167,·SHA:·81436af63def3e522c90e6f036eccd1e600b5ca6e52f9fbe726f0a979d65349e·...·]-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="9805854604-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="9805854604-2">[</span><span·class="s">&quot;b.spec[·...·truncated·by·diffoscope;·len:·196,·SHA:·6602e753d8253c4f3553c80ac671b4a5be1fbd6208105d06a092f13ab53bb518·...·]-1">}</span><span·class="p">.</span><span·class="w">457 </span><span·class="p"·data-group-id="3703177806-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="3703177806-2">[</span><span·class="s">&quot;b.spec[·...·truncated·by·diffoscope;·len:·196,·SHA:·bf62a69266b3d455823745c9c7421a7b0f63b4df95f61ad0ee6aaabd4b17405b·...·]-1">}</span><span·class="p">.</span><span·class="w">
458 </span><span·class="p"·data-group-id="9805854604-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="9805854604-4">[</span><span·class="s">&quot;d.[·...·truncated·by·diffoscope;·len:·200,·SHA:·d1d166381968648d5eec1e1ed498f1faad5786f3fa061fd45ed8861af486cd35·...·]-3">}</span><span·class="p">.</span><span·class="w">458 </span><span·class="p"·data-group-id="3703177806-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="3703177806-4">[</span><span·class="s">&quot;d.[·...·truncated·by·diffoscope;·len:·200,·SHA:·0b4181e7e6f8b362fab9b3f9bcea98581fa145e66d9538d71ca14bdb4cf98875·...·]-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="5471844374-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="5471844374-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="4321981702-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="4321981702-1">}</span><span·class="p">.</span><span·class="w">
  
521 </span><span·class="p"·data-group-id="5471844374-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="5471844374-2">}</span><span·class="p">.</span><span·class="w">521 </span><span·class="p"·data-group-id="4321981702-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="4321981702-2">}</span><span·class="p">.</span><span·class="w">
  
522 </span><span·class="p"·data-group-id="5471844374-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="54718443[·...·truncated·by·diffoscope;·len:·2,·SHA:·eb624dbe56eb6620ae62080c10a273cab73ae8eca98ab17b731446a31c79393a·...·]-3">}</span><span·class="p">.</span><span·class="w">522 </span><span·class="p"·data-group-id="4321981702-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="43219817[·...·truncated·by·diffoscope;·len:·2,·SHA:·a953f09a1b6b6725b81956e9ad0b1eb49e3ad40004c04307ef8af6246a054116·...·]-3">}</span><span·class="p">.</span><span·class="w">
  
523 </span><span·class="p"·data-group-id="5471844374-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="5471844374-4">}</span><span·class="p">.</span><span·class="w">523 </span><span·class="p"·data-group-id="4321981702-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="4321981702-4">}</span><span·class="p">.</span><span·class="w">
  
524 </span><span·class="p"·data-group-id="5471844374-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="5471844374-5">}</span><span·class="p">.</span><span·class="w">524 </span><span·class="p"·data-group-id="4321981702-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="4321981702-5">}</span><span·class="p">.</span><span·class="w">
525 </span><span·class="p"·data-group-id="5471844374-6">{</span><span·class="ss">init</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5471844374-7">[</span><span·class="n">NodeAlias</span><span·class="p"·data-group-id="5471844374-7">]</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·103,·SHA:·9daecdf8aaab331eac94837a4bed920c4e2d531099e9e6023d72985caf9d07b9·...·]-6">}</span><span·class="p">.</span><span·class="w">525 </span><span·class="p"·data-group-id="4321981702-6">{</span><span·class="ss">init</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4321981702-7">[</span><span·class="n">NodeAlias</span><span·class="p"·data-group-id="4321981702-7">]</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·103,·SHA:·a708c96d9b29d0d01ce8e11a705cb60cb420c77d76baacbee4a43a0d3cfb671e·...·]-6">}</span><span·class="p">.</span><span·class="w">
  
526 </span><span·class="p"·data-group-id="5471844374-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="5471844374-8">}</span><span·class="p">.</span><span·class="w">526 </span><span·class="p"·data-group-id="4321981702-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="4321981702-8">}</span><span·class="p">.</span><span·class="w">
527 </span><span·class="p"·data-group-id="5471844374-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="5471844374-9">}</span><span·class="p">.</span><span·class="w">527 </span><span·class="p"·data-group-id="4321981702-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="4321981702-9">}</span><span·class="p">.</span><span·class="w">
  
528 </span><span·class="p"·data-group-id="5471844374-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="5471844374-10">}</span><span·class="p">.</span><span·class="w">528 </span><span·class="p"·data-group-id="4321981702-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="4321981702-10">}</span><span·class="p">.</span><span·class="w">
529 </span><span·class="p"·data-group-id="5471844374-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="5471[·...·truncated·by·diffoscope;·len:·6,·SHA:·cd24f357c03db8be2eec736e4cec7cf2a5371d60141415604f9387e7c280e3f2·...·]-11">}</span><span·class="p">.</span><span·class="w">529 </span><span·class="p"·data-group-id="4321981702-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="4321[·...·truncated·by·diffoscope;·len:·6,·SHA:·cd25839ee014930e99094b6d93c243918a4cc96f102b4dc0c8f1714957bc9fe0·...·]-11">}</span><span·class="p">.</span><span·class="w">
  
530 </span><span·class="p"·data-group-id="5471844374-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="5471844374-12">}</span><span·class="p">.</span><span·class="w">530 </span><span·class="p"·data-group-id="4321981702-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="4321981702-12">}</span><span·class="p">.</span><span·class="w">
531 </span><span·class="p"·data-group-id="5471844374-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="5471844374-13">}</span><span·class="p">.</span><span·class="w">531 </span><span·class="p"·data-group-id="4321981702-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="4321981702-13">}</span><span·class="p">.</span><span·class="w">
  
532 </span><span·class="p"·data-group-id="5471844374-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="5471844374-14">}</span><span·class="p">.</span><span·class="w">532 </span><span·class="p"·data-group-id="4321981702-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="4321981702-14">}</span><span·class="p">.</span><span·class="w">
533 </span><span·class="p"·data-group-id="5471844374-15">{</span><span·class="ss">silent_connections</span><span·class="p">,</span><span·class="w">·</span><span·class="n">NodeRefs</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ConnTypes</span><span·class="p"·data-group-id="5[·...·truncated·by·diffoscope;·len:·9,·SHA:·03dcf52b01bb8b7d4f37e72a746287908e20f00f826995b4d125b96d652011a1·...·]-15">}</span><span·class="p">.</span><span·class="w">533 </span><span·class="p"·data-group-id="4321981702-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="4[·...·truncated·by·diffoscope;·len:·9,·SHA:·dc72023333ef4830c6c3cf53f77628d962c2ead4951151ee03d2b691ceb7d54d·...·]-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="6111663687-1">{</span><span·class="ss">unix</span><span·class="p">,</span><span·class="p"·data-group-id="6111663687-2">[</span><span·class="p"·data-group-id="6111663687-3">{</span><span·class="ss">telnet</span><span·class="p">,</span><span·class="n">HostNa[·...·truncated·by·diffoscope;·len:·61,·SHA:·7981f33158b1ea935ec80743b9e2dc1aa53f6b030cc87ac97835ea7f6c03530a·...·]-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="9620936636-1">{</span><span·class="ss">unix</span><span·class="p">,</span><span·class="p"·data-group-id="9620936636-2">[</span><span·class="p"·data-group-id="9620936636-3">{</span><span·class="ss">telnet</span><span·class="p">,</span><span·class="n">HostNa[·...·truncated·by·diffoscope;·len:·61,·SHA:·e616edd1779a1605ec759d1467457526029779d21e97b2c23f0cde2cdc5add7f·...·]-3">}</span><span·class="p">,</span><span·class="w">
130 ·······</span><span·class="p"·data-group-id="6111663687-4">{</span><span·class="ss">port</span><span·class="p">,</span><span·class="n">PortNum</span><span·class="p"·data-group-id="6111663687-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="9620936636-4">{</span><span·class="ss">port</span><span·class="p">,</span><span·class="n">PortNum</span><span·class="p"·data-group-id="9620936636-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="6111663687-5">{</span><span·class="ss">username</span><span·class="p">,</span><span·class="n">UserName</span><span·class="p"·data-group-id="6111663687-5">}</span><span·class="p">,</span><span·class="w">131 ·······</span><span·class="p"·data-group-id="9620936636-5">{</span><span·class="ss">username</span><span·class="p">,</span><span·class="n">UserName</span><span·class="p"·data-group-id="9620936636-5">}</span><span·class="p">,</span><span·class="w">
132 ·······</span><span·class="p"·data-group-id="6111663687-6">{</span><span·class="ss">password</span><span·class="p">,</span><span·class="n">Password</span><span·class="p"·data-group-id="6111663687-6">}</span><span·class="p">,</span><span·class="w">132 ·······</span><span·class="p"·data-group-id="9620936636-6">{</span><span·class="ss">password</span><span·class="p">,</span><span·class="n">Password</span><span·class="p"·data-group-id="9620936636-6">}</span><span·class="p">,</span><span·class="w">
133 ·······</span><span·class="p"·data-group-id="6111663687-7">{</span><span·class="ss">keep_alive</span><span·class="p">,</span><span·class="n">Bool</span><span·class="p"·data-group-id="6111663687-7">}</span><span·class="p"·data-group-id="6111663687-2">]</span><span·class="p"·data-group-id="6111663687-1">}</span><span·class="p">.</span><span·class="w">············</span><span·class="c1">%·optional</span></code></pre><p>To·communicate·through·Telnet·to·the·host·specified·by·<code·class="inline">HostNameOrIpAddress</code>,133 ·······</span><span·class="p"·data-group-id="9620936636-7">{</span><span·class="ss">keep_alive</span><span·class="p">,</span><span·class="n">Bool</span><span·class="p"·data-group-id="9620936636-7">}</span><span·class="p"·data-group-id="9620936636-2">]</span><span·class="p"·data-group-id="9620936636-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="7116353862-1">(</span><span·class="p"·data-group-id="7116353862-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="7116353862-2">[</span><span·class="p"·data-group-id="7116353862-3">{</span[·...·truncated·by·diffoscope;·len:·1121,·SHA:·5fc895409c8bae627260dca968c0afed6b6dd8c06444ff31c8f2955ba93a6a16·...·]-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="8644103077-1">(</span><span·class="p"·data-group-id="8644103077-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="8644103077-2">[</span><span·class="p"·data-group-id="8644103077-3">{</span[·...·truncated·by·diffoscope;·len:·1121,·SHA:·885f38baeccbbaf3f4e3024ba2fe87e2bc6760a88e0b8c5b2939c6a0c6ddfe7a·...·]-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="3962778129-1">(</span><span·class="p"·data-group-id="3962778129-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="6160651905-1">(</span><span·class="p"·data-group-id="6160651905-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
270 ····</span><span·class="p"·data-group-id="3962778129-2">[</span><span·class="p"·data-group-id="3962778129-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="3962778129-3">}</span><span·class="p">,</span><span·class="w">270 ····</span><span·class="p"·data-group-id="6160651905-2">[</span><span·class="p"·data-group-id="6160651905-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="6160651905-3">}</span><span·class="p">,</span><span·class="w">
271 ·····</span><span·class="p"·data-group-id="3962778129-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="3962778129-5">[</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·195,·SHA:·5b72940ac17fa1554f3e8422c5cfd3a9a07470e25687622b9b41986b9f927789·...·]-6">}</span><span·class="p">,</span><span·class="w">271 ·····</span><span·class="p"·data-group-id="6160651905-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="6160651905-5">[</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·195,·SHA:·2d1a7993764053fcebe2cac63a4250c08ba9a19d22945ea7ef916c7925ce76bc·...·]-6">}</span><span·class="p">,</span><span·class="w">
272 ····························</span><span·class="p"·data-group-id="3962778129-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="3962778129-7">}</span><span·class="p">,</span><span·class="w">272 ····························</span><span·class="p"·data-group-id="6160651905-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="6160651905-7">}</span><span·class="p">,</span><span·class="w">
273 ····························</span><span·class="p"·data-group-id="3962778129-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="3962778129-8">}</span><span·class="p"·data-group-id="3962778129-5">]</span><span·c[·...·truncated·by·diffoscope;·len:·334,·SHA:·f2c4f6ba44eacf2d572caf03457b0e09905cc9c692eff9ec1150921846f6b4ed·...·]3-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">273 ····························</span><span·class="p"·data-group-id="6160651905-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="6160651905-8">}</span><span·class="p"·data-group-id="6160651905-5">]</span><span·c[·...·truncated·by·diffoscope;·len:·334,·SHA:·cb50dccbd132eedfc262516a5294788604eb05059588ecaecd25772b53998978·...·]3-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
274 ····</span><span·class="p"·data-group-id="5344630893-2">[</span><span·class="p"·data-group-id="5344630893-3">{</span><span·class="ss">require</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">unix_telnet</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">un[·...·truncated·by·diffoscope;·len:·49,·SHA:·904f6180bbe714d4dc6a11f28f5ebb9285f09bdb12c9d3a4be2c0209d8bbb4b0·...·]3-3">}</span><span·class="p">,</span><span·class="w">274 ····</span><span·class="p"·data-group-id="2745368563-2">[</span><span·class="p"·data-group-id="2745368563-3">{</span><span·class="ss">require</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">unix_telnet</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">un[·...·truncated·by·diffoscope;·len:·49,·SHA:·f5c62766e2bb2a929e9e9699c812a498bf85342589e5f11d9f0b3e18ae1b186c·...·]3-3">}</span><span·class="p">,</span><span·class="w">
275 ·····</span><span·class="p"·data-group-id="5344630893-4">{</span><span·class="ss">require</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5344630893-5">{</span><span·class="ss">unix</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·363,·SHA:·82d8a0d3c9d52aa720c09292d382ce5d0ede7d1a9602dc773f359d72ca7095ec·...·]3-4">}</span><span·class="p">,</span><span·class="w">275 ·····</span><span·class="p"·data-group-id="2745368563-4">{</span><span·class="ss">require</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2745368563-5">{</span><span·class="ss">unix</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·363,·SHA:·d5d74069d6f36270340dc4de5994970af62cfa041a82655631ad88c2abdda5b7·...·]3-4">}</span><span·class="p">,</span><span·class="w">
276 ·····</span><span·class="p"·data-group-id="5344630893-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="5344630893-8">[</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·201,·SHA:·6122b6fac1dede6cab92ef42f512f1f62fe7f46f4e01f0342861d70e35a69e9a·...·]3-9">}</span><span·class="p">,</span><span·class="w">276 ·····</span><span·class="p"·data-group-id="2745368563-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="2745368563-8">[</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·201,·SHA:·b413118d20a30c4e411015f838a17d5fcf05e6142e2a7bf6cd1ad4aa75f98940·...·]3-9">}</span><span·class="p">,</span><span·class="w">
277 ·····························</span><span·class="p"·data-group-id="5344630893-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="5344630893-10">}</span><span·class="p">,</span><span·class="w">277 ·····························</span><span·class="p"·data-group-id="2745368563-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="2745368563-10">}</span><span·class="p">,</span><span·class="w">
278 ·····························</span><span·class="p"·data-group-id="5344630893-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="5344630893-11">}</span><span·class="p"·data-group-id="5344630893-8">]</span><span[·...·truncated·by·diffoscope;·len:·112,·SHA:·ce4f071a3c9bea09b9a969694463ded1d34d27dac48b8171d845d1d0f42c99b4·...·]3-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="2745368563-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="2745368563-11">}</span><span·class="p"·data-group-id="2745368563-8">]</span><span[·...·truncated·by·diffoscope;·len:·112,·SHA:·bde4158c3e6cd35bcda646d7a81d70b660b5624c2af51066b4a04b0cc4eb7dc0·...·]3-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="3466265277-1">(</span><span·class="p"·data-group-id="3466265277-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="7272305941-1">(</span><span·class="p"·data-group-id="7272305941-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
285 ····</span><span·class="p"·data-group-id="3466265277-2">[</span><span·class="w">285 ····</span><span·class="p"·data-group-id="7272305941-2">[</span><span·class="w">
286 ·····</span><span·class="p"·data-group-id="3466265277-3">{</span><span·class="ss">timetrap</span><span·class="p">,</span><span·class="p"·data-group-id="3466265277-4">{</span><span·class="ss">seconds</span><span·class="p">,</span><span·class="mi">60</span><span·class="p"·data-group-id="3466265277-4"[·...·truncated·by·diffoscope;·len:·50,·SHA:·ca6493f33540801247fbfa7c35b06604f15852453c301ed35433f54d79e1e9fa·...·]-3">}</span><span·class="p">,</span><span·class="w">286 ·····</span><span·class="p"·data-group-id="7272305941-3">{</span><span·class="ss">timetrap</span><span·class="p">,</span><span·class="p"·data-group-id="7272305941-4">{</span><span·class="ss">seconds</span><span·class="p">,</span><span·class="mi">60</span><span·class="p"·data-group-id="7272305941-4"[·...·truncated·by·diffoscope;·len:·50,·SHA:·26b7bc4ee9f2b57908edbb64eb9af9c49085bfdd78dde070de3fd5ce0f7366bf·...·]-3">}</span><span·class="p">,</span><span·class="w">
287 ·····</span><span·class="p"·data-group-id="3466265277-5">{</span><span·class="ss">require</span><span·class="p">,</span><span·class="ss">interfaces</span><span·class="p"·data-group-id="3466265277-5">}</span><span·class="p">,</span><span·class="w">287 ·····</span><span·class="p"·data-group-id="7272305941-5">{</span><span·class="ss">require</span><span·class="p">,</span><span·class="ss">interfaces</span><span·class="p"·data-group-id="7272305941-5">}</span><span·class="p">,</span><span·class="w">
288 ·····</span><span·class="p"·data-group-id="3466265277-6">{</span><span·class="ss">userdata</span><span·class="p">,</span><span·class="w">288 ·····</span><span·class="p"·data-group-id="7272305941-6">{</span><span·class="ss">userdata</span><span·class="p">,</span><span·class="w">
289 ·········</span><span·class="p"·data-group-id="3466265277-7">[</span><span·class="p"·data-group-id="3466265277-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="3466265277-8">}</span><span·class="p">,</span><span·class="w">289 ·········</span><span·class="p"·data-group-id="7272305941-7">[</span><span·class="p"·data-group-id="7272305941-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="7272305941-8">}</span><span·class="p">,</span><span·class="w">
290 ··········</span><span·class="p"·data-group-id="3466265277-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="3466265277-9">}</span><span·class="p"·data-group-id="3466265277-7">]</s[·...·truncated·by·diffoscope;·len:·45,·SHA:·f7156370251b494c58ca93ae9d1684636cdb90f393080909653e91df49d4580a·...·]-6">}</span><span·class="w">290 ··········</span><span·class="p"·data-group-id="7272305941-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="7272305941-9">}</span><span·class="p"·data-group-id="7272305941-7">]</s[·...·truncated·by·diffoscope;·len:·45,·SHA:·400b5f343f7b7010eb94d591168e5b99d0fdd3ae4571a86092f19ef40f96c40a·...·]-6">}</span><span·class="w">
291 ····</span><span·class="p"·data-group-id="3466265277-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="7272305941-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="1124514108-1">(</span><span·class="p"·data-group-id="1124514108-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="4931239631-1">(</span><span·class="p"·data-group-id="4931239631-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
306 ····</span><span·class="p"·data-group-id="1124514108-2">[</span><span·class="w">306 ····</span><span·class="p"·data-group-id="4931239631-2">[</span><span·class="w">
307 ·····</span><span·class="p"·data-group-id="1124514108-3">{</span><span·class="ss">timetrap</span><span·class="p">,</span><span·class="p"·data-group-id="1124514108-4">{</span><span·class="ss">minutes</span><span·class="p">,</span><span·class="mi">10</span><span·class="p"·data-group-id="1124514108-4"[·...·truncated·by·diffoscope;·len:·50,·SHA:·8db11515a461da2c28036058b2a91a3912fd33230c8bd437d64fc785d7f24833·...·]-3">}</span><span·class="p">,</span><span·class="w">307 ·····</span><span·class="p"·data-group-id="4931239631-3">{</span><span·class="ss">timetrap</span><span·class="p">,</span><span·class="p"·data-group-id="4931239631-4">{</span><span·class="ss">minutes</span><span·class="p">,</span><span·class="mi">10</span><span·class="p"·data-group-id="4931239631-4"[·...·truncated·by·diffoscope;·len:·50,·SHA:·f36ccc247460a47ea808ac9897ac6ac995a594ee7a2760034716d3cf65f80f9b·...·]-3">}</span><span·class="p">,</span><span·class="w">
308 ·····</span><span·class="p"·data-group-id="1124514108-5">{</span><span·class="ss">require</span><span·class="p">,</span><span·class="ss">global_names</span><span·class="p"·data-group-id="1124514108-5">}</span><span·class="p">,</span><span·class="w">308 ·····</span><span·class="p"·data-group-id="4931239631-5">{</span><span·class="ss">require</span><span·class="p">,</span><span·class="ss">global_names</span><span·class="p"·data-group-id="4931239631-5">}</span><span·class="p">,</span><span·class="w">
309 ·····</span><span·class="p"·data-group-id="1124514108-6">{</span><span·class="ss">userdata</span><span·class="p">,</span><span·class="p"·data-group-id="1124514108-7">[</span><span·class="p"·data-group-id="1124514108-8">{</span><span·class="ss">info</span><span·class="p">,</span><span·class="s">&quo[·...·truncated·by·diffoscope;·len:·201,·SHA:·7497bce8afbd2e8b097508dfb2d84e6eb7a4c05a6ed02ce7057c40fe164426a8·...·]-6">}</span><span·class="p">,</span><span·class="w">309 ·····</span><span·class="p"·data-group-id="4931239631-6">{</span><span·class="ss">userdata</span><span·class="p">,</span><span·class="p"·data-group-id="4931239631-7">[</span><span·class="p"·data-group-id="4931239631-8">{</span><span·class="ss">info</span><span·class="p">,</span><span·class="s">&quo[·...·truncated·by·diffoscope;·len:·201,·SHA:·2e8614550d89f88bbb688572cb74c23f8e3378a8384fbdb48e86b09fd271475c·...·]-6">}</span><span·class="p">,</span><span·class="w">
310 ·····</span><span·class="p"·data-group-id="1124514108-9">{</span><span·class="ss">silent_connections</span><span·class="p">,</span><span·class="p"·data-group-id="1124514108-10">[</span><span·class="ss">telnet</span><span·class="p"·data-group-id="1124514108-10">]</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·11,·SHA:·5a9ec3762a54de57603e9bab72e7bfb4dba4ca2dbab293db2e2f83734ca86664·...·]-9">}</span><span·class="p">,</span><span·class="w">310 ·····</span><span·class="p"·data-group-id="4931239631-9">{</span><span·class="ss">silent_connections</span><span·class="p">,</span><span·class="p"·data-group-id="4931239631-10">[</span><span·class="ss">telnet</span><span·class="p"·data-group-id="4931239631-10">]</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·11,·SHA:·2b393fe6a9598ef08441bde3b0d2db9172f9813252354fefe5d9756dd5d253c0·...·]-9">}</span><span·class="p">,</span><span·class="w">
311 ·····</span><span·class="p"·data-group-id="1124514108-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="1124514108-11">}</span><span·class="w">311 ·····</span><span·class="p"·data-group-id="4931239631-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="4931239631-11">}</span><span·class="w">
312 ····</span><span·class="p"·data-group-id="1124514108-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="4931239631-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="7643522353-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:·a09a53196e825e5102e66b5f2ecf4358a277e4ba6b3d1bd1d546aa81def426f1·...·]-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="6110418315-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:·805560c6a790983b520f4bc7ab85973795d52aacc1d02074745e9990daac5d53·...·]-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="7643522353-3">{</span><span·class="ss">shuffle</span><span·class="p">,</span><span·class="n">Seed</span><span·class="p"·data-group-id="7643522353-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="6110418315-3">{</span><span·class="ss">shuffle</span><span·class="p">,</span><span·class="n">Seed</span><span·class="p"·data-group-id="6110418315-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="7643522353-4">{</span><span·class="nf">integer</span><span·class="p"·data-group-id="7643522353-5">(</span><span·class="p"·data-group-id="7643522353-5">)</span><span·class="p">,</span><span·class="nf">integer</span><span·class="p"·data-group-id="7643522353-[·...·truncated·by·diffoscope;·len:·266,·SHA:·e7af7c621b36ce8c7203329f7182ae32bc7386d27fd7f02329a8526c9a3d343c·...·]-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="6110418315-4">{</span><span·class="nf">integer</span><span·class="p"·data-group-id="6110418315-5">(</span><span·class="p"·data-group-id="6110418315-5">)</span><span·class="p">,</span><span·class="nf">integer</span><span·class="p"·data-group-id="6110418315-[·...·truncated·by·diffoscope;·len:·266,·SHA:·88f3a6cddbb287e81b5591d063ff6bf369f3b7f921522c9e6e1659f9ad0f39ea·...·]-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="7643522353-8">(</span><span·class="p"·data-group-id="7643522353-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="6110418315-8">(</span><span·class="p"·data-group-id="6110418315-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="0491827583-1">(</span><span·class="p"·data-group-id="0491827583-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="0491827583-2">[</span><span·class="p"·data-group-id="0491827583-3">{</span><span·class="ss">group1</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0491827583-4">[</span><span·class="ss">parallel</span><span·class="p"·data-group-id="0491827583-4">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0491827583-5">[</span><span·class="ss">test1a</span><span·class="p">,</span><span·class="ss">test1b</span><span·class="p"·data-group-id="0491827583-5">]</span><span·class="p"·data-group-id="0491827583-3">}</span><span·class="p">,</span><span·class="w"> 
345 ·············</span><span·class="p"·data-group-id="0491827583-6">{</span><span·class="ss">group2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0491827583-7">[</span><span·class="ss">shuffle</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·604,·SHA:·9171cd4faf723978ec04a22cc8c98595b246c3e6011e47871bfa516300196927·...·]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="7132870866-1">(</span><span·class="p"·data-group-id="7132870866-1">)</span><span·class="w">·<[·...·truncated·by·diffoscope;·len:·711,·SHA:·31c13bf047f1eb5431db5b7c6c4bebf383214eb401b11a73e06aa2e331412775·...·]
 345 ·············</span><span·class="p"·data-group-id="7132870866-6">{</span><span·class="ss">group2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7132870866-7">[</span><span·class="ss">shuffle</span><span·class="p">,</span><span·class="ss">sequence</span><span·class="p"·data-group-id="7132870866-7">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7132870866-8">[</span><span·class="ss">test2a</span><span·class="p">,</span><span·class="ss">test2b</span><span·class="p">,</span><span·class="ss">test2c</span><span·class="p"·data-group-id="7132870866-8">]</span><span·class="p"·data-group-id="7132870866-6">}</span><span·class="p"·data-group-id="7132870866-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="3688743402-1">(</span><span·class="p"·data-group-id="3688743402-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="3688743402-2">[</span><span·class="ss">testcase1</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·1055,·SHA:·77bcb53df7295033486e76635cdf38b8a2507abc4ae3de181b97f5116ec7966c·...·]-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="7309747654-1">(</span><span·class="p"·data-group-id="7309747654-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="7309747654-2">[</span><span·class="ss">testcase1</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·1055,·SHA:·b91b6f2c8f80e4da9922ce2699e026fdf5e488c4df0c512a041175109b3fbba6·...·]-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="2996465058-1">(</span><span·class="p"·data-group-id="2996465058-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="2996465058-2">[</span><span·class="p"·data-group-id="2996465058-3">{</span><span·class="ss">tests1</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2996465058-4">[</span><span·class="p"·data-group-id="2996465058-4">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2996465058-5">[</span><span·class="p"·data-group-id="2996465058-6">{</span><span·class="ss">tests2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2996465058-7">[</span><span·class="p"·data-group-id="2996465058-7">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2996465058-8">[</span><span·class="ss">t2a</span><span·class="p">,</span><span·class="ss">t2b</span><span·class="p"·data-group-id="2996465058-8">]</span><span·class="p"·data-group-id="2996465058-6">}</span><span·class="p">,</span><span·class="w"> 
357 ··························</span><span·class="p"·data-group-id="2996465058-9">{</span><span·class="ss">tests3</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2996465058-10">[</span><span·class="p"·data-group-id="2996465[·...·truncated·by·diffoscope;·len:·629,·SHA:·a693652a64eed9a31899bce86439747457439501fcb765cdb75c79dc1b1cfa52·...·]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="1197306197-1">(</span><span·class="p"·data-group-id="1197306197-1">)</s[·...·truncated·by·diffoscope;·len:·1033,·SHA:·024978f27686e5d906dac717b874b54b345daca640b0027189b7416e8a146fd4·...·]
 357 ··························</span><span·class="p"·data-group-id="1197306197-9">{</span><span·class="ss">tests3</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1197306197-10">[</span><span·class="p"·data-group-id="1197306197-10">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1197306197-11">[</span><span·class="ss">t31</span><span·class="p">,</span><span·class="ss">t3b</span><span·class="p"·data-group-id="1197306197-11">]</span><span·class="p"·data-group-id="1197306197-9">}</span><span·class="p"·data-group-id="1197306197-5">]</span><span·class="p"·data-group-id="1197306197-3">}</span><span·class="p"·data-group-id="1197306197-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="3212015515-1">(</span><span·class="p"·data-group-id="3212015515-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="4599740607-1">(</span><span·class="p"·data-group-id="4599740607-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
359 ···</span><span·class="p"·data-group-id="3212015515-2">[</span><span·class="p"·data-group-id="3212015515-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="3212015515-4">[</span><span·class="p"·data-group-id="3212015515-5">{</span><span·class="ss">tests2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3212015515-6">[</span><span·class="ss">parallel</span><span·class="p"·data-group-id="3212015515-6">]</span><span·class="p"·data-group-id="3212015515-5">}</span><span·class="p"·data-group-id="3212015515-4">]</span><span·class="p"·data-group-id="3212015515-3">}</span><span·class="p">,</span><span·class="w"> 
360 ····</span><span·class="p"·data-group-id="3212015515-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="3212015515-8">[</span><span·class="p"·data-group-id="3212015515-9">{</span><span·class="ss">tests2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3212015515-10">[</span><span·class="ss">shuffle</span><span·class="p">,</span><span·class="p"·data-group-id="3212015515-11">{</span><span·class="ss">repeat</span><span·class="p">,</span><span·class="mi">10</span><span·class="p"·data-group-id="3212015515-11">}</span><span·class="p"·data-group-id="3212015515-10">]</span><span·class="p"·data-group-id="3212015515-9">}</span><span·class="p"·data-group-id="3212015515-8">]</span><span·class="p"·data-group-id="3212015515-7">}</span><span·class="p"·data-group-id="3212015515-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="0349919447-1">(</span><span·class="p"·data-group-id="0349919447-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w"> 
361 ···</span><span·class="p"·data-group-id="0349919447-2">[</span><span·class="p"·data-group-id="0349919447-3">{</span><span·class="ss">group</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">tests1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">default</[·...·truncated·by·diffoscope;·len:·418,·SHA:·e2a2e6871096f847116c6ecedde221e91791218b725aa645d962b9236624d8ef·...·]">}</span><span·class="p">,</span><span·class="w">359 ···</span><span·class="p"·data-group-id="4599740607-2">[</span><span·class="p"·data-group-id="4599740607-3">{</span><span·class="ss">group</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">tests1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">default</[·...·truncated·by·diffoscope;·len:·524,·SHA:·6235f3a5647f113887327799b5b22b405159860ed727511b85081f52c6032f21·...·]">}</span><span·class="p">,</span><span·class="w">
 360 ····</span><span·class="p"·data-group-id="4599740607-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="4599740607-8">[</span><span·class="p"·data-group-id="4599740607-9">{</span><span·class="ss">tests2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4599740607-10">[</span><span·class="ss">shuffle</span><span·class="p">,</span><span·class="p"·data-group-id="4599740607-11">{</span><span·class="ss">repeat</span><span·class="p">,</span><span·class="mi">10</span><span·class="p"·data-group-id="4599740607-11">}</span><span·class="p"·data-group-id="4599740607-10">]</span><span·class="p"·data-group-id="4599740607-9">}</span><span·class="p"·data-group-id="4599740607-8">]</span><span·class="p"·data-group-id="4599740607-7">}</span><span·class="p"·data-group-id="4599740607-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="7543328671-1">(</span><span·class="p"·data-group-id="7543328671-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
 361 ···</span><span·class="p"·data-group-id="7543328671-2">[</span><span·class="p"·data-group-id="7543328671-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="7543328671-4">[</span><span·class="p"·data-group-id="7543328671-5">{</span><span·class="ss">tests2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7543328671-6">[</span><span·class="ss">parallel</span><span·class="p"·data-group-id="7543328671-6">]</span><span·class="p"·data-group-id="7543328671-5">}</span><span·class="p">,</span><span·class="w">
362 ······························</span><span·class="p"·data-group-id="0349919447-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="0349919447-7">}</span><span·class="p"·data-group-id="0349919447-4">]</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·d8100d49a00ceb5c7039b95852dd5878900f2417f2cffc4e0d1bc584a2d0699a·...·]-3">}</span><span·class="p">,</span><span·class="w">362 ······························</span><span·class="p"·data-group-id="7543328671-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="7543328671-7">}</span><span·class="p"·data-group-id="7543328671-4">]</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·47ee4f28723d1ec9e6fe3ff4bf0bbd80af398c264a8563eb93ef9191516d0a17·...·]-3">}</span><span·class="p">,</span><span·class="w">
363 ····</span><span·class="p"·data-group-id="0349919447-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:·354100eace3e9fee885d3209ac37d707fd7c276e48cf7de4245bb4a2b3351a0b·...·]-10">}</span><span·class="p">,</span><span·class="w">363 ····</span><span·class="p"·data-group-id="7543328671-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:·83e76dc5daca357a89672f7105b5fd7f41ff697c675749cb421e765f15cca79a·...·]-10">}</span><span·class="p">,</span><span·class="w">
364 ······························</span><span·class="p"·data-group-id="0349919447-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="0349919447-13">}</span><span·class="p"·data-group-id="0349919447-9">]</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·77,·SHA:·47ae7420c41e8a2dae96c1f5e12461560ba25994abbdd8720d7f51b55b71483e·...·]-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="7543328671-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="7543328671-13">}</span><span·class="p"·data-group-id="7543328671-9">]</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·77,·SHA:·15199d93f8ca4b235325de65e8df532a6bd3056034c882ff6b2f526ac118d34a·...·]-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="7580455665-1">(</span><span·class="p"·data-group-id="7580455665-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="4222282813-1">(</span><span·class="p"·data-group-id="4222282813-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
366 ···</span><span·class="p"·data-group-id="7580455665-2">[</span><span·class="p"·data-group-id="7580455665-3">{</span><span·class="ss">tests1</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7580455665-4">[</span><span·class="p"·data-group-id="7580455665-4">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7580455665-5">[</span><span·class="p"·data-group-id="7580455665-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="7580455665-6">}</span><span·class="p"·data-group-id="7580455665-5">]</span><span·class="p"·data-group-id="7580455665-3">}</span><span·class="p">,</span><span·class="w"> 
367 ····</span><span·class="p"·data-group-id="7580455665-7">{</span><span·class="ss">tests2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7580455665-8">[</span><span·class="p"·data-group-id="7580455665-8">]</span><span·class[·...·truncated·by·diffoscope;·len:·401,·SHA:·b36efa2b35f85a703ffaeb644ec8c16918171f70a5dc9978832cdabf2868d1f9·...·]">}</span><span·class="p">,</span><span·class="w">366 ···</span><span·class="p"·data-group-id="4222282813-2">[</span><span·class="p"·data-group-id="4222282813-3">{</span><span·class="ss">tests1</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4222282813-4">[</span><span·class=[·...·truncated·by·diffoscope;·len:·451,·SHA:·9c483eafff4e87cf00143a25e00ba93748cae45df46aff45e421610a63e9de9a·...·]">}</span><span·class="p">,</span><span·class="w">
 367 ····</span><span·class="p"·data-group-id="4222282813-7">{</span><span·class="ss">tests2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4222282813-8">[</span><span·class="p"·data-group-id="4222282813-8">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4222282813-9">[</span><span·class="p"·data-group-id="4222282813-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="4222282813-10">}</span><span·class="p"·data-group-id="4222282813-9">]</span><span·class="p"·data-group-id="4222282813-7">}</span><span·class="p">,</span><span·class="w">
368 ····</span><span·class="p"·data-group-id="7580455665-11">{</span><span·class="ss">tests3</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7580455665-12">[</span><span·class="p"·data-group-id="7580455665-13">{</span><span·class="ss">repeat</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·520,·SHA:·e6a794a1be807acb9242f6b2ebbb88e5fa67248aa9d6ed777a9113d557df8e45·...·]-2">]</span><span·class="p">.</span><span·class="w">368 ····</span><span·class="p"·data-group-id="4222282813-11">{</span><span·class="ss">tests3</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4222282813-12">[</span><span·class="p"·data-group-id="4222282813-13">{</span><span·class="ss">repeat</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·520,·SHA:·cc704a8442d1aec7c3eecff0abaa5c97be52939b01a816af499b5d952ab45091·...·]-2">]</span><span·class="p">.</span><span·class="w">
  
369 </span><span·class="nf">all</span><span·class="p"·data-group-id="7580455665-15">(</span><span·class="p"·data-group-id="7580455665-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="4222282813-15">(</span><span·class="p"·data-group-id="4222282813-15">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
370 ···</span><span·class="p"·data-group-id="7580455665-16">[</span><span·class="p"·data-group-id="7580455665-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="4222282813-16">[</span><span·class="p"·data-group-id="4222282813-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="7580455665-18">[</span><span·class="p"·data-group-id="7580455665-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="4222282813-18">[</span><span·class="p"·data-group-id="4222282813-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="7580455665-20">[</span><span·class="p"·data-group-id="7580455665-21">{</span><span·class="ss">tests3</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7580455665-22">[</span><span·class="ss">parallel</span><span·class="p"[·...·truncated·by·diffoscope;·len:·563,·SHA:·d4f9dc82668e89e3d62478caef7aacfe499305161212745c13f3aecec103e67e·...·]-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="4222282813-20">[</span><span·class="p"·data-group-id="4222282813-21">{</span><span·class="ss">tests3</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4222282813-22">[</span><span·class="ss">parallel</span><span·class="p"[·...·truncated·by·diffoscope;·len:·563,·SHA:·e4f5741799c6acd7d863f138163cb1fb58b884ffd8f8abad2adeff6b67063bf8·...·]-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="3179759296-1">(</span><span·class="p"·data-group-id="3179759296-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="8796623107-1">(</span><span·class="p"·data-group-id="8796623107-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
374 ···</span><span·class="p"·data-group-id="3179759296-2">[</span><span·class="p"·data-group-id="3179759296-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:·d8a3972bb24c28c05915d8f4d49458885d6150852a38468d077836c7bc7235bf·...·]-3">}</span><span·class="p">,</span><span·class="w">374 ···</span><span·class="p"·data-group-id="8796623107-2">[</span><span·class="p"·data-group-id="8796623107-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:·2b93859b4c86f372ca2fde4fe263ef86df9d74bab95b2bf53ef0d1c161782f4b·...·]-3">}</span><span·class="p">,</span><span·class="w">
375 ····</span><span·class="p"·data-group-id="3179759296-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:·2072811d6c0c54f3a44964e6c85faa49f4fc86605df5baba1e111830b5887fb8·...·]-7">)</span><span·class="p">,</span><span·class="w">375 ····</span><span·class="p"·data-group-id="8796623107-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:·0984dd3fb2fa73741a19c7c51c564c2714d559a1de317ede0deba2a434203fea·...·]-7">)</span><span·class="p">,</span><span·class="w">
376 ······························</span><span·class="p"·data-group-id="3179759296-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="3179759296-8">}</span><span·class="p"·data-group-id="3179759296-6">]</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·75,·SHA:·5dd12d14fbcf6353ccc6d111c60c472ed5e7a1fe5cf8a492b197bc9626a855d1·...·]-2">]</span><span·class="p">.</span><span·class="w">376 ······························</span><span·class="p"·data-group-id="8796623107-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="8796623107-8">}</span><span·class="p"·data-group-id="8796623107-6">]</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·75,·SHA:·74f695e4cf5b98534c663d5878fdb3bb023b9abbf8b21dd7e916c464370d8839·...·]-2">]</span><span·class="p">.</span><span·class="w">
377 </span><span·class="nf">test_cases</span><span·class="p"·data-group-id="3179759296-9">(</span><span·class="p"·data-group-id="3179759296-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="8796623107-9">(</span><span·class="p"·data-group-id="8796623107-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
378 ···</span><span·class="p"·data-group-id="3179759296-10">[</span><span·class="p"·data-group-id="3179759296-11">{</span><span·class="ss">tests2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3179759296-12">[</span><span·class="ss">parallel</span><span·class="p"[·...·truncated·by·diffoscope;·len:·399,·SHA:·d803c16d672ab3776d2754ac052efe64eefedcad6f4c0441135f9ecbb26bff2c·...·]-10">]</span><span·class="p">.</span><span·class="w">378 ···</span><span·class="p"·data-group-id="8796623107-10">[</span><span·class="p"·data-group-id="8796623107-11">{</span><span·class="ss">tests2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8796623107-12">[</span><span·class="ss">parallel</span><span·class="p"[·...·truncated·by·diffoscope;·len:·399,·SHA:·489b11200b4a62ef2434a3e99d109a5944c9075e0ba91ee2fcf594fbefa133a7·...·]-10">]</span><span·class="p">.</span><span·class="w">
  
379 </span><span·class="nf">shuffle_test</span><span·class="p"·data-group-id="3179759296-14">(</span><span·class="p"·data-group-id="3179759296-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="8796623107-14">(</span><span·class="p"·data-group-id="8796623107-14">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
380 ···</span><span·class="p"·data-group-id="3179759296-15">{</span><span·class="ss">tests2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3179759296-16">[</span><span·class="ss">shuffle</span><span·class="p">,</span><span·class="p"·data-group-id="3179759296-17">[·...·truncated·by·diffoscope;·len:·237,·SHA:·7f724599775d56e0b1beeb707cb01e65f8debceddc5c5dd9269ef75b70113149·...·]-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="8796623107-15">{</span><span·class="ss">tests2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8796623107-16">[</span><span·class="ss">shuffle</span><span·class="p">,</span><span·class="p"·data-group-id="8796623107-17">[·...·truncated·by·diffoscope;·len:·237,·SHA:·8bc87f19f0c87413d4f4090a977011551278181641e2015751ef60584e1934e2·...·]-15">}</span><span·class="p">.</span></code></pre><p>The·described·syntax·can·also·be·used·in·test·specifications·to·change·group
381 properties·at·the·time·of·execution,·without·having·to·edit·the·test·suite.·For381 properties·at·the·time·of·execution,·without·having·to·edit·the·test·suite.·For
382 more·information,·see·section382 more·information,·see·section
383 <a·href="run_test_chapter.html#test_specifications">Test·Specifications</a>·in·section383 <a·href="run_test_chapter.html#test_specifications">Test·Specifications</a>·in·section
384 Running·Tests·and·Analyzing·Results.</p><p>As·illustrated,·properties·can·be·combined.·If,·for·example,·<code·class="inline">shuffle</code>,384 Running·Tests·and·Analyzing·Results.</p><p>As·illustrated,·properties·can·be·combined.·If,·for·example,·<code·class="inline">shuffle</code>,
385 <code·class="inline">repeat_until_any_fail</code>,·and·<code·class="inline">sequence</code>·are·all·specified,·the·test·cases·in·the385 <code·class="inline">repeat_until_any_fail</code>,·and·<code·class="inline">sequence</code>·are·all·specified,·the·test·cases·in·the
386 group·are·executed·repeatedly,·and·in·random·order,·until·a·test·case·fails.386 group·are·executed·repeatedly,·and·in·random·order,·until·a·test·case·fails.
387 Then·execution·is·immediately·stopped·and·the·remaining·cases·are·skipped.</p><p>Before·execution·of·a·group·begins,·the·configuration·function387 Then·execution·is·immediately·stopped·and·the·remaining·cases·are·skipped.</p><p>Before·execution·of·a·group·begins,·the·configuration·function
Max diff block lines reached; 42635/111869 bytes (38.11%) of diff not shown.
5.84 KB
./usr/share/doc/erlang-doc/html/lib/compiler-8.6.1/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="4371450719-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:·82895bec85ae7b1ba2172a928fdb156da4e7b7a1f710485c1d34606f1e5234a5·...·]-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="2190764217-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:·1ea630f1e1dd1ff3ffb72f4a7f3013332753a6a9f81c2cb25f6fc629f2235878·...·]-1">}</span><span·class="p">,</span><span·class="w">
190 ·············</span><span·class="p"·data-group-id="4371450719-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:·81c52f56e93667799752b8fc123022863fb601bff9d545b3e94f13a5aadd5394·...·]-2">}</span><span·class="w">190 ·············</span><span·class="p"·data-group-id="2190764217-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:·cb0fb4ec68af2a77b7068101c240e1765121d00c648e614e66152ee9879ea10d·...·]-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="0377634657-1">(</span><span·class="p"·data-group-id="0377634657-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="0377634657-2">(</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·420354fc002789fc30619db5b1c45fd92561534c0c20d4d08aa863af342fc4ba·...·]-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="0197222054-1">(</span><span·class="p"·data-group-id="0197222054-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="0197222054-2">(</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·d74da2fb18197cd9b72c5adbccd30b4f597b659bec2099cf88b9b20826752711·...·]-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.1/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="3340547996-1">(</span><span·class="ss">something</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3340547996-2">[</span><span·class="ss">nowarn_missing_spec</span><span·class="p">,</span><span·class="ss">warn_missing_spe[·...·truncated·by·diffoscope;·len:·102,·SHA:·421c9d300863f72aea447dde8372a9bd16b2926098c5fd8914c07cffb2f2f7b5·...·]-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="9808793141-1">(</span><span·class="ss">something</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9808793141-2">[</span><span·class="ss">nowarn_missing_spec</span><span·class="p">,</span><span·class="ss">warn_missing_spe[·...·truncated·by·diffoscope;·len:·102,·SHA:·2fbfb8221a565e37486ecb2dab24b41160ecc4c219f4fcd2b1c186ccc4190693·...·]-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="1087888872-1">(</span><span·class="p"·data-group-id="1087888872-2">{</span><span·class="ss">inline</span><span·class="p">,</span><span·class="p"·data-group-id="1087888872-3">[</span><span·class="ss">pi</span><span·class="p">/</span><span·class="mi">0</span[·...·truncated·by·diffoscope;·len:·148,·SHA:·3a6a96039f624b3ab54a3262881368ed3993d3022ab4ae9974229b1fc6e19148·...·]-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="8007195516-1">(</span><span·class="p"·data-group-id="8007195516-2">{</span><span·class="ss">inline</span><span·class="p">,</span><span·class="p"·data-group-id="8007195516-3">[</span><span·class="ss">pi</span><span·class="p">/</span><span·class="mi">0</span[·...·truncated·by·diffoscope;·len:·148,·SHA:·8b2956e00ba0f33938d7ceefe8160e462a3d951f72d95b46b7ed1455613164f3·...·]-1">)</span><span·class="p">.</span><span·class="w">
  
181 </span><span·class="nf">pi</span><span·class="p"·data-group-id="1087888872-4">(</span><span·class="p"·data-group-id="1087888872-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="8007195516-4">(</span><span·class="p"·data-group-id="8007195516-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="3042683788-1">(</span><span·class="ss">inline</span><span·class="p"·data-group-id="3042683788-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="6094627806-1">(</span><span·class="ss">inline</span><span·class="p"·data-group-id="6094627806-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="3042683788-2">(</span><span·class="p"·data-group-id="3042683788-3">{</span><span·class="ss">inline_size</span><span·class="p">,</span><span·class="mi">100</span><span·class="p"·data-group-id="3042683788-3">}</span><span·class="p"·data-group-id="3042683788-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="6094627806-2">(</span><span·class="p"·data-group-id="6094627806-3">{</span><span·class="ss">inline_size</span><span·class="p">,</span><span·class="mi">100</span><span·class="p"·data-group-id="6094627806-3">}</span><span·class="p"·data-group-id="6094627806-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="4205867636-1">(</span><span·class="ss">module</span><span·class="p"·data-group-id="4205867636-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="6780961907-1">(</span><span·class="ss">module</span><span·class="p"·data-group-id="6780961907-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="4205867636-2">(</span><span·class="s">&quot;eunit/include/eunit.hrl&quot;</span><span·class="p"·data-group-id="4205867636-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="6780961907-2">(</span><span·class="s">&quot;eunit/include/eunit.hrl&quot;</span><span·class="p"·data-group-id="6780961907-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="4205867636-3">(</span><span·class="s">&quot;header.hrl&quot;</span><span·class="p"·data-group-id="4205867636-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="6780961907-3">(</span><span·class="s">&quot;header.hrl&quot;</span><span·class="p"·data-group-id="6780961907-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="5876430769-1">(</span><span·class="p"·data-group-id="5876430769-2">{</span><span·class="ss">no_auto_import</span><span·class="p">,</span><span·class="p"·data-group-id="5876430769-3">[</span><span·class="ss">error</span><span·class="p">/</span><span·class="[·...·truncated·by·diffoscope;·len:·159,·SHA:·b0975939bef17ebd9d332f97f06113b041cee211cef5c0ed9816f3ea44dc6246·...·]-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="0082759120-1">(</span><span·class="p"·data-group-id="0082759120-2">{</span><span·class="ss">no_auto_import</span><span·class="p">,</span><span·class="p"·data-group-id="0082759120-3">[</span><span·class="ss">error</span><span·class="p">/</span><span·class="[·...·truncated·by·diffoscope;·len:·159,·SHA:·4370e46eec3b2120d43dcf736cde77c4f1e227209f12fb7813e573eb6dfe9f5d·...·]-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.1/doc/html/compiler.epub
2.67 KB
zipinfo {}
    
Offset 1, 18 lines modifiedOffset 1, 18 lines modified
1 Zip·file·size:·182061·bytes,·number·of·entries:·161 Zip·file·size:·182065·bytes,·number·of·entries:·16
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Apr-18·13:58·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Apr-18·15:19·mimetype
3 ?rw-r--r--··6.1·unx······720·bx·defN·25-Apr-18·13:58·OEBPS/title.xhtml3 ?rw-r--r--··6.1·unx······720·bx·defN·25-Apr-18·15:19·OEBPS/title.xhtml
4 ?rw-r--r--··6.1·unx····12180·bx·defN·25-Apr-18·13:58·OEBPS/ssa_checks.xhtml4 ?rw-r--r--··6.1·unx····12180·bx·defN·25-Apr-18·15:19·OEBPS/ssa_checks.xhtml
5 ?rw-r--r--··6.1·unx···251954·bx·defN·25-Apr-18·13:58·OEBPS/notes.xhtml5 ?rw-r--r--··6.1·unx···251954·bx·defN·25-Apr-18·15:19·OEBPS/notes.xhtml
6 ?rw-r--r--··6.1·unx·····1421·bx·defN·25-Apr-18·13:58·OEBPS/nav.xhtml6 ?rw-r--r--··6.1·unx·····1421·bx·defN·25-Apr-18·15:19·OEBPS/nav.xhtml
7 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Apr-18·13:58·OEBPS/dist/epub-erlang-ESPT6BQV.css7 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Apr-18·15:19·OEBPS/dist/epub-erlang-ESPT6BQV.css
8 ?rw-r--r--··6.1·unx······499·bx·defN·25-Apr-18·13:58·OEBPS/dist/epub-LSJCIYTM.js8 ?rw-r--r--··6.1·unx······499·bx·defN·25-Apr-18·15:19·OEBPS/dist/epub-LSJCIYTM.js
9 ?rw-r--r--··6.1·unx·····2064·bx·defN·25-Apr-18·13:58·OEBPS/content.opf9 ?rw-r--r--··6.1·unx·····2064·bx·defN·25-Apr-18·15:19·OEBPS/content.opf
10 ?rw-r--r--··6.1·unx····78223·bx·defN·25-Apr-18·13:58·OEBPS/compile.xhtml10 ?rw-r--r--··6.1·unx····78223·bx·defN·25-Apr-18·15:19·OEBPS/compile.xhtml
11 ?rw-r--r--··6.1·unx····23045·bx·defN·25-Apr-18·13:58·OEBPS/cerl_trees.xhtml11 ?rw-r--r--··6.1·unx····23045·bx·defN·25-Apr-18·15:19·OEBPS/cerl_trees.xhtml
12 ?rw-r--r--··6.1·unx····22790·bx·defN·25-Apr-18·13:58·OEBPS/cerl_clauses.xhtml12 ?rw-r--r--··6.1·unx····22790·bx·defN·25-Apr-18·15:19·OEBPS/cerl_clauses.xhtml
13 ?rw-r--r--··6.1·unx···444582·bx·defN·25-Apr-18·13:58·OEBPS/cerl.xhtml13 ?rw-r--r--··6.1·unx···444582·bx·defN·25-Apr-18·15:19·OEBPS/cerl.xhtml
14 ?rw-r--r--··6.1·unx····18166·bx·defN·25-Apr-18·13:58·OEBPS/beam_ssa.xhtml14 ?rw-r--r--··6.1·unx····18166·bx·defN·25-Apr-18·15:19·OEBPS/beam_ssa.xhtml
15 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Apr-18·13:58·OEBPS/assets/logo.png15 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Apr-18·15:19·OEBPS/assets/logo.png
16 ?rw-r--r--··6.1·unx······252·bx·defN·25-Apr-18·13:58·META-INF/container.xml16 ?rw-r--r--··6.1·unx······252·bx·defN·25-Apr-18·15:19·META-INF/container.xml
17 ?rw-r--r--··6.1·unx······162·bx·defN·25-Apr-18·13:58·META-INF/com.apple.ibooks.display-options.xml17 ?rw-r--r--··6.1·unx······162·bx·defN·25-Apr-18·15:19·META-INF/com.apple.ibooks.display-options.xml
18 16·files,·876477·bytes·uncompressed,·179297·bytes·compressed:··79.5%18 16·files,·876477·bytes·uncompressed,·179301·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,·Apr·18·2025·13:58: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,·Apr·18·2025·15:19:28,·uncompressed·size·20,·method=store
15.8 KB
OEBPS/ssa_checks.xhtml
Max HTML report size reached
45.7 KB
OEBPS/notes.xhtml
Max HTML report size reached
1.22 KB
OEBPS/content.opf
1.19 KB
OEBPS/content.opf
Max HTML report size reached
15.2 KB
OEBPS/compile.xhtml
Max HTML report size reached
5.74 KB
OEBPS/beam_ssa.xhtml
    
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="9039264888-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:·1f8159797cdd15a7baaa09b8508b288913719992b28f21cf2c6138bce6d75cd1·...·]-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="4037856775-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:·bbcd9f565c54175a4732ae371ad97993b1f358a8018d752696231cec17fc40ef·...·]-1">}</span><span·class="p">,</span><span·class="w">
85 ·············</span><span·class="p"·data-group-id="9039264888-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:·0d42b03a00b51c8dfee0c00bb97302939d742710ddb7cdcacd083da471adb74f·...·]-2">}</span><span·class="w">85 ·············</span><span·class="p"·data-group-id="4037856775-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:·400504298c89bafab036db068c5e9bf248c6e8dc629aef14ca36773210aaa2ac·...·]-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="1497707783-1">(</span><span·class="p"·data-group-id="1497707783-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="1497707783-2">(</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·24,·SHA:·88c49a25ded83fb1f33c81e395492b7b630cc852f2efdc44b20970a7a6aa7937·...·]-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="6819563688-1">(</span><span·class="p"·data-group-id="6819563688-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="6819563688-2">(</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·24,·SHA:·2f7f67085535fba316388d2b328c0bb5a10d46f18bb05e5d79c975de53de0588·...·]-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.1/doc/html/notes.html
    
Offset 169, 18 lines modifiedOffset 169, 18 lines modified
169 </h2>169 </h2>
170 <h3·id="fixed-bugs-and-malfunctions-2"·class="section-heading">170 <h3·id="fixed-bugs-and-malfunctions-2"·class="section-heading">
171 ··<a·href="#fixed-bugs-and-malfunctions-2"·class="hover-link">171 ··<a·href="#fixed-bugs-and-malfunctions-2"·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>
174 ··<span·class="text">Fixed·Bugs·and·Malfunctions</span>174 ··<span·class="text">Fixed·Bugs·and·Malfunctions</span>
175 </h3>175 </h3>
176 <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="3345810122-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="3345810122-1">&gt;&gt;</span><span·class="p">.</span><span·class="w">176 <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="2458620281-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="2458620281-1">&gt;&gt;</span><span·class="p">.</span><span·class="w">
177 </span><span·class="p"·data-group-id="3345810122-2">&lt;&lt;</span><span·class="s">&quot;ÿÿÿÿÿÿÿÿ&quot;</span><span·class="p"·data-group-id="3345810122-2">&gt;&gt;</span><span·class="gp·unselectable">177 </span><span·class="p"·data-group-id="2458620281-2">&lt;&lt;</span><span·class="s">&quot;ÿÿÿÿÿÿÿÿ&quot;</span><span·class="p"·data-group-id="2458620281-2">&gt;&gt;</span><span·class="gp·unselectable">
178 2&gt;·</span><span·class="p"·data-group-id="3345810122-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="3345810122-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:·306ac42a2f2ea67291ba191ad3ab3a78d30fb181872decfe481a713881b0bce9·...·]-3">]</span><span·class="p">.</span><span·class="w">178 2&gt;·</span><span·class="p"·data-group-id="2458620281-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="2458620281-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:·ae6f5c086c0dde4462b122ad9dc0a7751a5d5dfcaa61bc19dc09c7c63af01692·...·]-3">]</span><span·class="p">.</span><span·class="w">
179 </span><span·class="p"·data-group-id="3345810122-6">[</span><span·class="mf">0.0</span><span·class="p">,</span><span·class="mf">42.0</span><span·class="p"·data-group-id="3345810122-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">179 </span><span·class="p"·data-group-id="2458620281-6">[</span><span·class="mf">0.0</span><span·class="p">,</span><span·class="mf">42.0</span><span·class="p"·data-group-id="2458620281-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">
180 ··<a·href="#compiler-8-5-3"·class="hover-link">180 ··<a·href="#compiler-8-5-3"·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">Compiler·8.5.3</span>183 ··<span·class="text">Compiler·8.5.3</span>
184 </h2>184 </h2>
185 <h3·id="fixed-bugs-and-malfunctions-3"·class="section-heading">185 <h3·id="fixed-bugs-and-malfunctions-3"·class="section-heading">
186 ··<a·href="#fixed-bugs-and-malfunctions-3"·class="hover-link">186 ··<a·href="#fixed-bugs-and-malfunctions-3"·class="hover-link">
Offset 220, 61 lines modifiedOffset 220, 61 lines modified
220 </h2>220 </h2>
221 <h3·id="fixed-bugs-and-malfunctions-6"·class="section-heading">221 <h3·id="fixed-bugs-and-malfunctions-6"·class="section-heading">
222 ··<a·href="#fixed-bugs-and-malfunctions-6"·class="hover-link">222 ··<a·href="#fixed-bugs-and-malfunctions-6"·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">Fixed·Bugs·and·Malfunctions</span>225 ··<span·class="text">Fixed·Bugs·and·Malfunctions</span>
226 </h3>226 </h3>
227 <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="4083338744-1">(</span><span·class="ss">t</span><span·class="p"·data-group-id="4083338744-1">)</span><span·class="p">.</span><span·class="w">227 <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="6886723951-1">(</span><span·class="ss">t</span><span·class="p"·data-group-id="6886723951-1">)</span><span·class="p">.</span><span·class="w">
228 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="4083338744-2">(</span><span·class="p"·data-group-id="4083338744-3">[</span><span·class="ss">f</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="4083338744-3">]</span><span·class="p"·data-group-id="4083338744-2">)</span><span·class="p">.</span><span·class="w">228 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="6886723951-2">(</span><span·class="p"·data-group-id="6886723951-3">[</span><span·class="ss">f</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="6886723951-3">]</span><span·class="p"·data-group-id="6886723951-2">)</span><span·class="p">.</span><span·class="w">
  
229 </span><span·class="nf">f</span><span·class="p"·data-group-id="4083338744-4">(</span><span·class="p"·data-group-id="4083338744-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">229 </span><span·class="nf">f</span><span·class="p"·data-group-id="6886723951-4">(</span><span·class="p"·data-group-id="6886723951-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
230 ····</span><span·class="p"·data-group-id="4083338744-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:·a35665d25c278cbc80114f82778a49a9ff98048fd9db9c37653d79de10ef968d·...·]-1">)</span><span·class="p">.</span><span·class="w">230 ····</span><span·class="p"·data-group-id="6886723951-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:·e01d768d1953d380928590cf6fea518ef0689f021f621e03cbb9a1cb4b2f3136·...·]-1">)</span><span·class="p">.</span><span·class="w">
231 </span><span·class="gt">**·exception·error:·bad·generator·ok231 </span><span·class="gt">**·exception·error:·bad·generator·ok
232 ·····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="1118464376-1">(</span><span·class="p"·data-group-id="1118464376-1">)</span><span·class="p">.</span><span·class="w">232 ·····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="5187834281-1">(</span><span·class="p"·data-group-id="5187834281-1">)</span><span·class="p">.</span><span·class="w">
233 </span><span·class="p"·data-group-id="1118464376-2">&lt;&lt;</span><span·class="p"·data-group-id="1118464376-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">233 </span><span·class="p"·data-group-id="5187834281-2">&lt;&lt;</span><span·class="p"·data-group-id="5187834281-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">
234 ··<a·href="#improvements-and-new-features-1"·class="hover-link">234 ··<a·href="#improvements-and-new-features-1"·class="hover-link">
235 ····<i·class="ri-link-m"·aria-hidden="true"></i>235 ····<i·class="ri-link-m"·aria-hidden="true"></i>
236 ··</a>236 ··</a>
237 ··<span·class="text">Improvements·and·New·Features</span>237 ··<span·class="text">Improvements·and·New·Features</span>
238 </h3>238 </h3>
239 <ul><li><p>The·compiler·now·emits·nicer·error·message·for·function·head·mismatches.239 <ul><li><p>The·compiler·now·emits·nicer·error·message·for·function·head·mismatches.
240 For·example,·given:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">a</span><span·class="p"·data-group-id="5519148169-1">(</span><span·class="p"·data-group-id="5519148169-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">ok</span><span·class="p">;</span><span·class="w">240 For·example,·given:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">a</span><span·class="p"·data-group-id="0400803812-1">(</span><span·class="p"·data-group-id="0400803812-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">ok</span><span·class="p">;</span><span·class="w">
241 </span><span·class="nf">a</span><span·class="p"·data-group-id="5519148169-2">(</span><span·class="p">_</span><span·class="p"·data-group-id="5519148169-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">error</span><span·class="p">.</span></code></pre><p>Erlang/OTP·26·and·earlier·would·emit·a·diagnostic·similar·to:</p><pre><code·class="text">t.erl:6:1:·head·mismatch241 </span><span·class="nf">a</span><span·class="p"·data-group-id="0400803812-2">(</span><span·class="p">_</span><span·class="p"·data-group-id="0400803812-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">error</span><span·class="p">.</span></code></pre><p>Erlang/OTP·26·and·earlier·would·emit·a·diagnostic·similar·to:</p><pre><code·class="text">t.erl:6:1:·head·mismatch
242 %····6|·a(_)·-&gt;·error.242 %····6|·a(_)·-&gt;·error.
243 %·····|·^</code></pre><p>while·in·Erlang/OTP·27·the·diagnostic·is·similar·to:</p><pre><code·class="text">t.erl:6:1:·head·mismatch:·function·a·with·arities·0·and·1·is·regarded·as·two·distinct·functions.·Is·the·number·of·arguments·incorrect·or·is·the·semicolon·in·a/0·unwanted?243 %·····|·^</code></pre><p>while·in·Erlang/OTP·27·the·diagnostic·is·similar·to:</p><pre><code·class="text">t.erl:6:1:·head·mismatch:·function·a·with·arities·0·and·1·is·regarded·as·two·distinct·functions.·Is·the·number·of·arguments·incorrect·or·is·the·semicolon·in·a/0·unwanted?
244 %····6|·a(_)·-&gt;·error.244 %····6|·a(_)·-&gt;·error.
245 %·····|·^</code></pre><p>Own·Id:·OTP-18648·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7383"·title="">PR-7383</a></p></li><li><p>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="1422771917-1">(</span><span·class="p"·data-group-id="1422771917-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">245 %·····|·^</code></pre><p>Own·Id:·OTP-18648·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/7383"·title="">PR-7383</a></p></li><li><p>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="4588509303-1">(</span><span·class="p"·data-group-id="4588509303-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
246 ····</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="1422771917-2">(</span><span·class="p"·data-group-id="1422771917-2">)</span><span·class="p">,</span><span·class="w">246 ····</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="4588509303-2">(</span><span·class="p"·data-group-id="4588509303-2">)</span><span·class="p">,</span><span·class="w">
247 ····</span><span·class="p"·data-group-id="1422771917-3">&lt;&lt;</span><span·class="n">C</span><span·class="p"·data-group-id="1422771917-3">&gt;&gt;</span><span·class="p">.</span><span·class="w">247 ····</span><span·class="p"·data-group-id="4588509303-3">&lt;&lt;</span><span·class="n">C</span><span·class="p"·data-group-id="4588509303-3">&gt;&gt;</span><span·class="p">.</span><span·class="w">
  
248 </span><span·class="nf">char</span><span·class="p"·data-group-id="1422771917-4">(</span><span·class="p"·data-group-id="1422771917-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:·c9fa7b0353f2680a5815085c2a8be7cdcf98906097e7b88172f0daca2ea3770c·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">248 </span><span·class="nf">char</span><span·class="p"·data-group-id="4588509303-4">(</span><span·class="p"·data-group-id="4588509303-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:·3db735beb51d15cde622956c3523631de1b9ad3b693283e227a2cca17d0b644f·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
249 ····</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="5719913737-2">(</span><span·class="p"·data-group-id="5719913737-2">)</span><span·class="p">,</span><span·class="w">249 ····</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="1632791151-2">(</span><span·class="p"·data-group-id="1632791151-2">)</span><span·class="p">,</span><span·class="w">
250 ····</span><span·class="p"·data-group-id="5719913737-3">&lt;&lt;</span><span·class="sc">$*</span><span·class="p"·data-group-id="5719913737-3">&gt;&gt;</span><span·class="p">.</span><span·class="w">250 ····</span><span·class="p"·data-group-id="1632791151-3">&lt;&lt;</span><span·class="sc">$*</span><span·class="p"·data-group-id="1632791151-3">&gt;&gt;</span><span·class="p">.</span><span·class="w">
  
251 </span><span·class="nf">char</span><span·class="p"·data-group-id="5719913737-4">(</span><span·class="p"·data-group-id="5719913737-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:·11002c423847b0db5fe5f85482d20c3f9a291ca1dda84c4db1a3a72c59b66f2b·...·]-1">)</span><span·class="p">.</span><span·class="w">251 </span><span·class="nf">char</span><span·class="p"·data-group-id="1632791151-4">(</span><span·class="p"·data-group-id="1632791151-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:·8c461c3ae07cc39ef99c51c611e3dde91a4ea60256e737cf1712ebe0cdb8ab8b·...·]-1">)</span><span·class="p">.</span><span·class="w">
  
252 </span><span·class="nf">update</span><span·class="p"·data-group-id="2322629367-3">(</span><span·class="n">Value</span><span·class="p"·data-group-id="2322629367-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">252 </span><span·class="nf">update</span><span·class="p"·data-group-id="0316195211-3">(</span><span·class="n">Value</span><span·class="p"·data-group-id="0316195211-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
253 ····</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="2322629367-4">{</span><span·class="p"·data-group-id="2322629367-4">}</span><span·class="p">,</span><span·class="w">253 ····</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="0316195211-4">{</span><span·class="p"·data-group-id="0316195211-4">}</span><span·class="p">,</span><span·class="w">
254 ····</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="2322629367-5">{</span><span·class="ss">a</span><span·class="o">=</span><span·class="n">Value</span><span·class="p"·data-group-id="2322629367-5">}</span><span·class="p">,</span><span·class="w">254 ····</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="0316195211-5">{</span><span·class="ss">a</span><span·class="o">=</span><span·class="n">Value</span><span·class="p"·data-group-id="0316195211-5">}</span><span·class="p">,</span><span·class="w">
255 ····</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="2322629367-6">{</span><span·class="ss">b</span><span·class="o">=</span><span·class="mi">2</span><span·class="p"·data-group-id="2322629367-6">}</span><span·class="p">,</span><span·class="w">255 ····</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="0316195211-6">{</span><span·class="ss">b</span><span·class="o">=</span><span·class="mi">2</span><span·class="p"·data-group-id="0316195211-6">}</span><span·class="p">,</span><span·class="w">
256 ····</span><span·class="n">R2</span><span·class="o">#</span><span·class="ss">r</span><span·class="p"·data-group-id="2322629367-7">{</span><span·class="ss">c</span><span·class="o">=</span><span·class="mi">3</span><span·class="p"·data-group-id="2322629367-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.6/doc/html/code.html#coverage_support/0"><code·class="inline">code:coverage_support/0</code></a></li><li><a·href="../../../../lib/kernel-10.2.6/doc/html/code.html#get_coverage/2"><code·class="inline">code:get_coverage/2</code></a></li><li><a·href="../../../../lib/kernel-10.2.6/doc/html/code.html#reset_coverage/1"><code·class="inline">code:reset_coverage/1</code></a></li><li><a·href="../../../../lib/kernel-10.2.6/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.6/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.6/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.256 ····</span><span·class="n">R2</span><span·class="o">#</span><span·class="ss">r</span><span·class="p"·data-group-id="0316195211-7">{</span><span·class="ss">c</span><span·class="o">=</span><span·class="mi">3</span><span·class="p"·data-group-id="0316195211-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.6/doc/html/code.html#coverage_support/0"><code·class="inline">code:coverage_support/0</code></a></li><li><a·href="../../../../lib/kernel-10.2.6/doc/html/code.html#get_coverage/2"><code·class="inline">code:get_coverage/2</code></a></li><li><a·href="../../../../lib/kernel-10.2.6/doc/html/code.html#reset_coverage/1"><code·class="inline">code:reset_coverage/1</code></a></li><li><a·href="../../../../lib/kernel-10.2.6/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.6/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.6/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.
257 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·when257 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
258 <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·when258 <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
259 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="3303874489-1">(</span><span·class="p"·data-group-id="3303874489-2">[</span><span·class="ss">nowarn_missing_spec</span><span·class="p"·data-group-id="3303874489-2">]</span><span·class="p"·data-group-id="3303874489-1">)</span><span·class="p">.</span></code><[·...·truncated·by·diffoscope;·len:·1214,·SHA:·b2246a7136b1a08cc537294cb14dfd96938ca0b92ce26c9ccdc79b8fb2fc1084·...·]4-1">)</span><span·class="p">.</span><span·class="w">259 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="7999156762-1">(</span><span·class="p"·data-group-id="7999156762-2">[</span><span·class="ss">nowarn_missing_spec</span><span·class="p"·data-group-id="7999156762-2">]</span><span·class="p"·data-group-id="7999156762-1">)</span><span·class="p">.</span></code><[·...·truncated·by·diffoscope;·len:·1214,·SHA:·634d191a1b820460d085a2472d4ff2ad21f320ddf2fe4b2d92cab8d4a4e24046·...·]4-1">)</span><span·class="p">.</span><span·class="w">
  
260 </span><span·class="nf">update</span><span·class="p"·data-group-id="4911101804-3">(</span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="4911101804-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:·194,·SHA:·9101f8b85ad3120f48fa2af6f2f7192932ad1cfdb6349e1bb7104060eced579e·...·]4-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">260 </span><span·class="nf">update</span><span·class="p"·data-group-id="1726958774-3">(</span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="1726958774-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:·194,·SHA:·88b959431e569535cef962b3c03bf2d1dcf2410512a99fbc40a236be7f812c4d·...·]4-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
261 ····</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="4911101804-5">{</span><span·class="ss">a</span><span·class="o">=</span><span·class="ss">up_to_date</span><span·class="p"·data-group-id="4911101804-5">}</span><span·class="p">,</span><span·class="w">261 ····</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="1726958774-5">{</span><span·class="ss">a</span><span·class="o">=</span><span·class="ss">up_to_date</span><span·class="p"·data-group-id="1726958774-5">}</span><span·class="p">,</span><span·class="w">
262 ····</span><span·class="k">if</span><span·class="w">262 ····</span><span·class="k">if</span><span·class="w">
263 ········</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">263 ········</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">
264 ············</span><span·class="n">R</span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="4911101804-6">{</span><span·class="ss">c</span><span·class="o">=</span><span·class="ss">negative</span><span·class="p"·data-group-id="4911101804-6">}</span><span·class="p">;</span><span·class="w">264 ············</span><span·class="n">R</span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="1726958774-6">{</span><span·class="ss">c</span><span·class="o">=</span><span·class="ss">negative</span><span·class="p"·data-group-id="1726958774-6">}</span><span·class="p">;</span><span·class="w">
265 ········</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">265 ········</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">
266 ············</span><span·class="n">R</span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="4911101804-7">{</span><span·class="ss">c</span><span·class="o">=</span><span·class="ss">zero</span><span·class="p"·data-group-id="4911101804-7">}</span><span·class="p">;</span><span·class="w">266 ············</span><span·class="n">R</span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="1726958774-7">{</span><span·class="ss">c</span><span·class="o">=</span><span·class="ss">zero</span><span·class="p"·data-group-id="1726958774-7">}</span><span·class="p">;</span><span·class="w">
267 ········</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">267 ········</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">
268 ············</span><span·class="n">R</span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="4911101804-8">{</span><span·class="ss">c</span><span·class="o">=</span><span·class="ss">positive</span><span·class="p"·data-group-id="4911101804-8">}</span><span·class="w">268 ············</span><span·class="n">R</span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="1726958774-8">{</span><span·class="ss">c</span><span·class="o">=</span><span·class="ss">positive</span><span·class="p"·data-group-id="1726958774-8">}</span><span·class="w">
269 ····</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.6/doc/html/erlang.html#bit_size/1"><code·class="inline">bit_size/1</code></a>·and·<a·href="../../../../erts-15.2.6/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.2/doc/html/erl_lint.html"><code·class="inline">erl_lint</code></a>·(and·by·extension·the·<a·href="compile.html"><code·class="inline">compiler</code></a>)·will·now·warn·for·code·using·deprecated·callbacks.</p><p>The·only·callback·currenly·deprecated·is·<code·class="inline">format_status/2</code>·in·<a·href="../../../../lib/stdlib-6.2.2/doc/html/gen_server.html#c:format_status/2"><code·class="inline">gen_server</code></a>,·<a·href="../../../../lib/stdlib-6.2.2/doc/html/gen_event.html#c:format_status/2"><code·class="inline">gen_event</code></a>·and·<a·href="../../../../lib/stdlib-6.2.2/doc/html/gen_server.html#c:format_status/2"><code·class="inline">gen_statem</code></a>.</p><p>You·can·use·<code·class="inline">nowarn_deprecated_callback</code>·to·silence·the·warning.</p><p>Own·Id:·OTP-19010·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8205"·title="">PR-8205</a></p></li></ul><h2·id="compiler-8-4-3-2"·class="section-heading">269 ····</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.6/doc/html/erlang.html#bit_size/1"><code·class="inline">bit_size/1</code></a>·and·<a·href="../../../../erts-15.2.6/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.2/doc/html/erl_lint.html"><code·class="inline">erl_lint</code></a>·(and·by·extension·the·<a·href="compile.html"><code·class="inline">compiler</code></a>)·will·now·warn·for·code·using·deprecated·callbacks.</p><p>The·only·callback·currenly·deprecated·is·<code·class="inline">format_status/2</code>·in·<a·href="../../../../lib/stdlib-6.2.2/doc/html/gen_server.html#c:format_status/2"><code·class="inline">gen_server</code></a>,·<a·href="../../../../lib/stdlib-6.2.2/doc/html/gen_event.html#c:format_status/2"><code·class="inline">gen_event</code></a>·and·<a·href="../../../../lib/stdlib-6.2.2/doc/html/gen_server.html#c:format_status/2"><code·class="inline">gen_statem</code></a>.</p><p>You·can·use·<code·class="inline">nowarn_deprecated_callback</code>·to·silence·the·warning.</p><p>Own·Id:·OTP-19010·Aux·Id:·<a·href="https://github.com/erlang/otp/pull/8205"·title="">PR-8205</a></p></li></ul><h2·id="compiler-8-4-3-2"·class="section-heading">
270 ··<a·href="#compiler-8-4-3-2"·class="hover-link">270 ··<a·href="#compiler-8-4-3-2"·class="hover-link">
271 ····<i·class="ri-link-m"·aria-hidden="true"></i>271 ····<i·class="ri-link-m"·aria-hidden="true"></i>
272 ··</a>272 ··</a>
273 ··<span·class="text">Compiler·8.4.3.2</span>273 ··<span·class="text">Compiler·8.4.3.2</span>
274 </h2>274 </h2>
275 <h3·id="fixed-bugs-and-malfunctions-7"·class="section-heading">275 <h3·id="fixed-bugs-and-malfunctions-7"·class="section-heading">
15.9 KB
./usr/share/doc/erlang-doc/html/lib/compiler-8.6.1/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="9055804904-1">(</span><span·class="p"·data-group-id="9055804904-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="2382062000-1">(</span><span·class="p"·data-group-id="2382062000-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="9055804904-2">#{</span><span·class="p"·data-group-id="9055804904-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="2382062000-2">#{</span><span·class="p"·data-group-id="2382062000-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="8119111721-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="8119111721-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="3701211914-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="3701211914-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="2066785677-1">(</span><span·class="o">&lt;</span><span·class="ss">formals</span><span·class="o">&gt;</span><span·class="p"·data-group-id="2066785677-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="8823180971-1">(</span><span·class="o">&lt;</span><span·class="ss">formals</span><span·class="o">&gt;</span><span·class="p"·data-group-id="8823180971-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="7240855317-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="7240855317-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="8458731351-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="8458731351-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="2677370487-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:·1117b82dd9728ea51eadf0a5a0bf8f4c330bbeaad1c71effc2fd59337848d1c5·...·]-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="9375509773-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:·ab146e7d672a2a567d2025f715e46ab3e58f51ad59e5c0f1c857185a7411dda2·...·]-1">)</span><span·class="w">
  
163 </span><span·class="nf">switch</span><span·class="p"·data-group-id="2677370487-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:·b5b32932386026ae526e58712856d600570efa5a59df36effb1b15597bbf73c1·...·]-2">)</span><span·class="w">163 </span><span·class="nf">switch</span><span·class="p"·data-group-id="9375509773-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:·12c214e681966bde2a5cd23c4ebe75fe428080469719471a48e72a7e9ce07536·...·]-2">)</span><span·class="w">
  
164 </span><span·class="nf">ret</span><span·class="p"·data-group-id="2677370487-5">(</span><span·class="o">&lt;</span><span·class="ss">value</span><span·class="o">&gt;</span><span·class="p"·data-group-id="2677370487-5">)</span><span·class="w">164 </span><span·class="nf">ret</span><span·class="p"·data-group-id="9375509773-5">(</span><span·class="o">&lt;</span><span·class="ss">value</span><span·class="o">&gt;</span><span·class="p"·data-group-id="9375509773-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="3970604939-1">(</span><span·class="p"·data-group-id="3970604939-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="7510128699-1">(</span><span·class="p"·data-group-id="7510128699-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="3970604939-2">(</span><span·class="p"·data-group-id="3970604939-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="7510128699-2">(</span><span·class="p"·data-group-id="7510128699-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="3970604939-3">(</span><span·class="p"·data-group-id="3970604939-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="7510128699-3">(</span><span·class="p"·data-group-id="7510128699-3">)</span><span·class="p">,</span><span·class="w">
177 ····</span><span·class="p"·data-group-id="3970604939-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="3970604939-4">}</span><span·class="p">.</span></code></pre><h2·id="semantics"·class="section-heading">177 ····</span><span·class="p"·data-group-id="7510128699-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="7510128699-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:·127048·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-Apr-18·14:01·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Apr-18·15:28·mimetype
3 ?rw-r--r--··6.1·unx······716·bx·defN·25-Apr-18·14:01·OEBPS/title.xhtml3 ?rw-r--r--··6.1·unx······716·bx·defN·25-Apr-18·15:28·OEBPS/title.xhtml
4 ?rw-r--r--··6.1·unx···142075·bx·defN·25-Apr-18·14:01·OEBPS/notes.xhtml4 ?rw-r--r--··6.1·unx···142075·bx·defN·25-Apr-18·15:28·OEBPS/notes.xhtml
5 ?rw-r--r--··6.1·unx····48579·bx·defN·25-Apr-18·14:01·OEBPS/new_api.xhtml5 ?rw-r--r--··6.1·unx····48579·bx·defN·25-Apr-18·15:28·OEBPS/new_api.xhtml
6 ?rw-r--r--··6.1·unx·····1443·bx·defN·25-Apr-18·14:01·OEBPS/nav.xhtml6 ?rw-r--r--··6.1·unx·····1443·bx·defN·25-Apr-18·15:28·OEBPS/nav.xhtml
7 ?rw-r--r--··6.1·unx·····7065·bx·defN·25-Apr-18·14:01·OEBPS/licenses.xhtml7 ?rw-r--r--··6.1·unx·····7065·bx·defN·25-Apr-18·15:28·OEBPS/licenses.xhtml
8 ?rw-r--r--··6.1·unx·····9663·bx·defN·25-Apr-18·14:01·OEBPS/fips.xhtml8 ?rw-r--r--··6.1·unx·····9663·bx·defN·25-Apr-18·15:28·OEBPS/fips.xhtml
9 ?rw-r--r--··6.1·unx····14857·bx·defN·25-Apr-18·14:01·OEBPS/engine_load.xhtml9 ?rw-r--r--··6.1·unx····14857·bx·defN·25-Apr-18·15:28·OEBPS/engine_load.xhtml
10 ?rw-r--r--··6.1·unx····13755·bx·defN·25-Apr-18·14:01·OEBPS/engine_keys.xhtml10 ?rw-r--r--··6.1·unx····13755·bx·defN·25-Apr-18·15:28·OEBPS/engine_keys.xhtml
11 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Apr-18·14:01·OEBPS/dist/epub-erlang-ESPT6BQV.css11 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Apr-18·15:28·OEBPS/dist/epub-erlang-ESPT6BQV.css
12 ?rw-r--r--··6.1·unx······499·bx·defN·25-Apr-18·14:01·OEBPS/dist/epub-LSJCIYTM.js12 ?rw-r--r--··6.1·unx······499·bx·defN·25-Apr-18·15:28·OEBPS/dist/epub-LSJCIYTM.js
13 ?rw-r--r--··6.1·unx·····3970·bx·defN·25-Apr-18·14:01·OEBPS/crypto_app.xhtml13 ?rw-r--r--··6.1·unx·····3970·bx·defN·25-Apr-18·15:28·OEBPS/crypto_app.xhtml
14 ?rw-r--r--··6.1·unx···285776·bx·defN·25-Apr-18·14:01·OEBPS/crypto.xhtml14 ?rw-r--r--··6.1·unx···285776·bx·defN·25-Apr-18·15:28·OEBPS/crypto.xhtml
15 ?rw-r--r--··6.1·unx·····2365·bx·defN·25-Apr-18·14:01·OEBPS/content.opf15 ?rw-r--r--··6.1·unx·····2365·bx·defN·25-Apr-18·15:28·OEBPS/content.opf
16 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Apr-18·14:01·OEBPS/assets/logo.png16 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Apr-18·15:28·OEBPS/assets/logo.png
17 ?rw-r--r--··6.1·unx····29121·bx·defN·25-Apr-18·14:01·OEBPS/algorithm_details.xhtml17 ?rw-r--r--··6.1·unx····29121·bx·defN·25-Apr-18·15:28·OEBPS/algorithm_details.xhtml
18 ?rw-r--r--··6.1·unx······252·bx·defN·25-Apr-18·14:01·META-INF/container.xml18 ?rw-r--r--··6.1·unx······252·bx·defN·25-Apr-18·15:28·META-INF/container.xml
19 ?rw-r--r--··6.1·unx······162·bx·defN·25-Apr-18·14:01·META-INF/com.apple.ibooks.display-options.xml19 ?rw-r--r--··6.1·unx······162·bx·defN·25-Apr-18·15:28·META-INF/com.apple.ibooks.display-options.xml
20 18·files,·580717·bytes·uncompressed,·123934·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,·Apr·18·2025·14:01: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,·Apr·18·2025·15:28:32,·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="2744637119-1">(</span><span·class="p"·data-group-id="2744637119-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="2744637119-2">[</span><span·class="n">E</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·863,·SHA:·caef296b57602eb3f31ebd2d6c56c317157d4817bf3fb800830557c5613c1a15·...·]-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="1351034845-1">(</span><span·class="p"·data-group-id="1351034845-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="1351034845-2">[</span><span·class="n">E</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·863,·SHA:·a1f836771637a4a4e9bf7831ff65304cd8d5e94fe2e1deab44610b6e62509729·...·]-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.6/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.6/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="2744637119-1">(</span><span·class="p"·data-group-id="2744637119-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="2744637119-2">[</span><span·class="n">E</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·863,·SHA:·caef296b57602eb3f31ebd2d6c56c317157d4817bf3fb800830557c5613c1a15·...·]-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="1351034845-1">(</span><span·class="p"·data-group-id="1351034845-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="1351034845-2">[</span><span·class="n">E</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·863,·SHA:·a1f836771637a4a4e9bf7831ff65304cd8d5e94fe2e1deab44610b6e62509729·...·]-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.2/doc/html/rand.html">random·number·generation</a>,·in·order·to5317 <p>Create·a·state·object·for·<a·href="../../../../lib/stdlib-6.2.2/doc/html/rand.html">random·number·generation</a>,·in·order·to
5318 generate·cryptographically·strong·random·numbers·(based·on·OpenSSL's5318 generate·cryptographically·strong·random·numbers·(based·on·OpenSSL's
5319 <code·class="inline">BN_rand_range</code>).</p><p>Saves·the·state·in·the·process·dictionary·before·returning·it·as5319 <code·class="inline">BN_rand_range</code>).</p><p>Saves·the·state·in·the·process·dictionary·before·returning·it·as
5320 well.·See·also·<a·href="../../../../lib/stdlib-6.2.2/doc/html/rand.html#seed/1"><code·class="inline">rand:seed/1</code></a>·and·<a·href="#rand_seed_s/0"><code·class="inline">rand_seed_s/0</code></a>.</p><p>When·using·the·state·object·from·this·function·the·<a·href="../../../../lib/stdlib-6.2.2/doc/html/rand.html"><code·class="inline">rand</code></a>·functions·using·it5320 well.·See·also·<a·href="../../../../lib/stdlib-6.2.2/doc/html/rand.html#seed/1"><code·class="inline">rand:seed/1</code></a>·and·<a·href="#rand_seed_s/0"><code·class="inline">rand_seed_s/0</code></a>.</p><p>When·using·the·state·object·from·this·function·the·<a·href="../../../../lib/stdlib-6.2.2/doc/html/rand.html"><code·class="inline">rand</code></a>·functions·using·it
5321 may·raise·exception·<code·class="inline">error:low_entropy</code>·in·case·the·random·generator·failed·due5321 may·raise·exception·<code·class="inline">error:low_entropy</code>·in·case·the·random·generator·failed·due
5322 to·lack·of·secure·&quot;randomness&quot;.</p><p><em>Example</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">_</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">rand_seed</span><span·class="p"·data-group-id="3837231551-1">(</span><span·class="p"·data-group-id="3837231551-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="5707397506-1">(</span><span·class="p"·data-group-id="5707397506-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="3837231551-2">(</span><span·class="mi">42</span><span·class="p"·data-group-id="3837231551-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="5707397506-2">(</span><span·class="mi">42</span><span·class="p"·data-group-id="5707397506-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="3837231551-3">(</span><span·class="p"·data-group-id="3837231551-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="5707397506-3">(</span><span·class="p"·data-group-id="5707397506-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.2/doc/html/rand.html">random·number·generation</a>,·in·order·to5381 <p>Create·a·state·object·for·<a·href="../../../../lib/stdlib-6.2.2/doc/html/rand.html">random·number·generation</a>,·in·order·to
5382 generate·cryptographically·strong·random·numbers.</p><p>Saves·the·state·in·the·process·dictionary·before·returning·it·as·well.·See·also5382 generate·cryptographically·strong·random·numbers.</p><p>Saves·the·state·in·the·process·dictionary·before·returning·it·as·well.·See·also
5383 <a·href="../../../../lib/stdlib-6.2.2/doc/html/rand.html#seed/1"><code·class="inline">rand:seed/1</code></a>·and·<a·href="#rand_seed_alg_s/1"><code·class="inline">rand_seed_alg_s/1</code></a>.</p><p>When·using·the·state·object·from·this·function·the·<a·href="../../../../lib/stdlib-6.2.2/doc/html/rand.html"><code·class="inline">rand</code></a>·functions·using·it5383 <a·href="../../../../lib/stdlib-6.2.2/doc/html/rand.html#seed/1"><code·class="inline">rand:seed/1</code></a>·and·<a·href="#rand_seed_alg_s/1"><code·class="inline">rand_seed_alg_s/1</code></a>.</p><p>When·using·the·state·object·from·this·function·the·<a·href="../../../../lib/stdlib-6.2.2/doc/html/rand.html"><code·class="inline">rand</code></a>·functions·using·it
5384 may·raise·exception·<code·class="inline">error:low_entropy</code>·in·case·the·random·generator·failed·due5384 may·raise·exception·<code·class="inline">error:low_entropy</code>·in·case·the·random·generator·failed·due
5385 to·lack·of·secure·&quot;randomness&quot;.</p><p><em>Example</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">_</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">rand_seed_alg</span><span·class="p"·data-group-id="3016907347-1">(</span><span·class="ss">crypto_cache</span><span·class="p"·data-group-id="3016907347-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="4053212226-1">(</span><span·class="ss">crypto_cache</span><span·class="p"·data-group-id="4053212226-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="3016907347-2">(</span><span·class="mi">42</span><span·class="p"·data-group-id="3016907347-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="4053212226-2">(</span><span·class="mi">42</span><span·class="p"·data-group-id="4053212226-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="3016907347-3">(</span><span·class="p"·data-group-id="3016907347-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="4053212226-3">(</span><span·class="p"·data-group-id="4053212226-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.6/doc/html/erlang.html#t:atom/0">atom</a>(),·Seed·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:term/0">term</a>())·->·{<a·href="../../../../lib/stdlib-6.2.2/doc/html/rand.html#t:alg_handler/0">rand:alg_handler</a>(),·<a·href="../../../../erts-15.2.6/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.6/doc/html/erlang.html#t:atom/0">atom</a>(),·Seed·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:term/0">term</a>())·->·{<a·href="../../../../lib/stdlib-6.2.2/doc/html/rand.html#t:alg_handler/0">rand:alg_handler</a>(),·<a·href="../../../../erts-15.2.6/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.2/doc/html/rand.html">random·number·generation</a>,·in·order·to5414 <p>Creates·a·state·object·for·<a·href="../../../../lib/stdlib-6.2.2/doc/html/rand.html">random·number·generation</a>,·in·order·to
5415 generate·cryptographically·unpredictable·random·numbers.</p><p>Saves·the·state·in·the·process·dictionary·before·returning·it·as·well.·See·also5415 generate·cryptographically·unpredictable·random·numbers.</p><p>Saves·the·state·in·the·process·dictionary·before·returning·it·as·well.·See·also
5416 <a·href="#rand_seed_alg_s/2"><code·class="inline">rand_seed_alg_s/2</code></a>.</p><p><em>Example</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">_</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">rand_seed_alg</span><span·class="p"·data-group-id="1284080662-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="1284080662-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="7923020654-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="7923020654-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="1284080662-2">(</span><span·class="mi">42</span><span·class="p"·data-group-id="1284080662-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="7923020654-2">(</span><span·class="mi">42</span><span·class="p"·data-group-id="7923020654-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="1284080662-3">(</span><span·class="p"·data-group-id="1284080662-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="7923020654-3">(</span><span·class="p"·data-group-id="7923020654-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="1284080662-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="1284080662-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="7923020654-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="7923020654-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="1284080662-5">(</span><span·class="mi">42</span><span·class="p"·data-group-id="1284080662-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="7923020654-5">(</span><span·class="mi">42</span><span·class="p"·data-group-id="7923020654-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="1284080662-6">(</span><span·class="p"·data-group-id="1284080662-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="7923020654-6">(</span><span·class="p"·data-group-id="7923020654-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.6/doc/html/erlang.html#t:string/0">string</a>()·|·undefined,5886 ················cryptolib_version_compiled·=>·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:string/0">string</a>()·|·undefined,
5887 ················cryptolib_version_linked·:=·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:string/0">string</a>(),5887 ················cryptolib_version_linked·:=·<a·href="../../../../erts-15.2.6/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.6/doc/html/erlang.html#t:string/0">string</a>()}.</pre>5889 ················otp_crypto_version·:=·<a·href="../../../../erts-15.2.6/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="2204306898-1">(</span><span·class="p"·data-group-id="2204306898-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="8824992279-1">(</span><span·class="p"·data-group-id="8824992279-1">)</span><span·class="p">.</span><span·class="w">
5892 </span><span·class="p"·data-group-id="2204306898-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="8824992279-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="2204306898-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="8824992279-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.6/doc/html/erlang.html#t:binary/0">binary</a>(),·VerNum·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:integer/0">integer</a>(),·VerStr·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:binary/0">binary</a>().</pre>5955 ··················when·Name·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:binary/0">binary</a>(),·VerNum·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:integer/0">integer</a>(),·VerStr·::·<a·href="../../../../erts-15.2.6/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="3459625577-1">(</span><span·class="p"·data-group-id="3459625577-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="4037246594-1">(</span><span·class="p"·data-group-id="4037246594-1">)</span><span·class="p">.</span><span·class="w">
5960 </span><span·class="p"·data-group-id="3459625577-2">[</span><span·class="p"·data-group-id="3459625577-3">{</span><span·class="p"·data-group-id="3459625577-4">&lt;&lt;</span><span·class="s">&quot;OpenSSL&quot;</span><span·class="p"·data-group-id="3459625577-4">&gt;&gt;</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·367,·SHA:·8b507648caad66a3b3d688de0ac215f22f12fdf47495b8b5024e1245733b00ed·...·]-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="4037246594-2">[</span><span·class="p"·data-group-id="4037246594-3">{</span><span·class="p"·data-group-id="4037246594-4">&lt;&lt;</span><span·class="s">&quot;OpenSSL&quot;</span><span·class="p"·data-group-id="4037246594-4">&gt;&gt;</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·367,·SHA:·62656b6cabf0cb9c417e0a3becabdbec713e1144d856dfef6cf913e364a6563e·...·]-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="1414499630-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="1414499630-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·276,·SHA:·5f70c0273d6321e73aa24b8ce827b7548763a5b2a9669634b6ad18f808bad416·...·]-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="3799285156-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="3799285156-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·276,·SHA:·57a2d6eb80d5a5ef45fbbf360d6a2b6ee524fedf9f853bab9fbdb81b5cc5830d·...·]-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="1414499630-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:·002c1694d0c2c24a894bc00c59f10b32f617ce0f03f65017aae4ca1ea2ef11e3·...·]-3">}</span><span·class="gp·unselectable">166 </span><span·class="p"·data-group-id="3799285156-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:·4847972b862ae5613de29e6692358a10aac7a8b24a105195337915f1a37cc77f·...·]-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="1414499630-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="3799285156-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="1414499630-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="3799285156-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="1414499630-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="1414499630-6">&lt;&lt;</span><span·class="s">&quot;Th[·...·truncated·by·diffoscope;·len:·201,·SHA:·1380b7aa0e5f5604da05e949563963f5f3d67c69388e7ccc14d918d697e8de4e·...·]-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="3799285156-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="3799285156-6">&lt;&lt;</span><span·class="s">&quot;Th[·...·truncated·by·diffoscope;·len:·201,·SHA:·ef82aee0a795ea5ee06965fa676a5b88bd5d91967b361c6a7d54fc26f642ad5c·...·]-5">)</span><span·class="p">.</span><span·class="w">
171 </span><span·class="p"·data-group-id="1414499630-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="3799285156-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="1414499630-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="3799285156-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="0592665072-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="5345820802-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="0592665072-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="5345820802-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="0592665072-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="0592665072-3">&lt;&lt;</span><span·class="s">&quot;Th[·...·truncated·by·diffoscope;·len:·282,·SHA:·87eab0db9a4324bb449ec0d36e8c543b1214aeae9fd6f4501f8bb8c8b7cec87c·...·]2-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="5345820802-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="5345820802-3">&lt;&lt;</span><span·class="s">&quot;Th[·...·truncated·by·diffoscope;·len:·282,·SHA:·39f7450e1ec0d634128c065708985f821f47fa260f5a4578f15df1f1076c8923·...·]2-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="6920726933-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="7340617768-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="6920726933-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="7340617768-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="6920726933-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="6920726933-3">&lt;&lt;</span><span·class="s">&quot;Th[·...·truncated·by·diffoscope;·len:·204,·SHA:·49ac2b5e1f3d2a7aae8df0e326cdca6be9542fea11bbfaf335809d4e83c422e1·...·]-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="7340617768-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="7340617768-3">&lt;&lt;</span><span·class="s">&quot;Th[·...·truncated·by·diffoscope;·len:·204,·SHA:·aea1a983cd17df95a04e75e0a218b91a0adbc9a1db0cfb5d583bc4c364eb657a·...·]-2">)</span><span·class="p">.</span><span·class="w">
197 </span><span·class="p"·data-group-id="6920726933-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="7340617768-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="6920726933-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="7340617768-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="3486574498-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="3486574498-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·655,·SHA:·0bff74eab061ba452a6e7913a641c4a4a5ab4c6b680fa54c2641a528c2c4bc93·...·]-2">)</span><span·class="p">.</span><span·class="w">155 directory.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="p"·data-group-id="6753373560-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="6753373560-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·655,·SHA:·466040e47b2bb36665fd61c3b577b8d29d366876464037fe3959c9e1e598a04b·...·]-2">)</span><span·class="p">.</span><span·class="w">
156 ·</span><span·class="p"·data-group-id="3486574498-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="3486574498-6">}</span></code></pre><h3·id="load-an-engine-with-the-dynamic-engine"·class="section-heading">156 ·</span><span·class="p"·data-group-id="6753373560-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="6753373560-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="7543897361-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="7543897361-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·279,·SHA:·17bce05003c870170cc321d8fdba73707c7b66abf89fcc68f210dfd085d6de81·...·]-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="3631360360-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="3631360360-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·279,·SHA:·2d790888bd6ba974a058cdc2a2490ecc4dc3fe19f08d24dcf9193533b9586952·...·]-3">&gt;&gt;</span><span·class="p">,</span><span·class="w">
164 ······································</span><span·class="p"·data-group-id="7543897361-4">[</span><span·class="p"·data-group-id="7543897361-5">{</span><span·class="p"·data-group-id="7543897361-6">&lt;&lt;</span><span·class="s">&quot;SO_PATH&quot;</span><span·class="p"·data-group-id="7543897361-6">&gt;&gt;</span><span·class="p">,</span><span·class="w">164 ······································</span><span·class="p"·data-group-id="3631360360-4">[</span><span·class="p"·data-group-id="3631360360-5">{</span><span·class="p"·data-group-id="3631360360-6">&lt;&lt;</span><span·class="s">&quot;SO_PATH&quot;</span><span·class="p"·data-group-id="3631360360-6">&gt;&gt;</span><span·class="p">,</span><span·class="w">
165 ········································</span><span·class="p"·data-group-id="7543897361-7">&lt;&lt;</span><span·class="s">&quot;/some/path/otp_test_engine.so&quot;</span><span·class="p"·data-group-id="7543897361-7">&gt;&gt;</span><span·class="p"·data-group-id="7543897361-5">}</span><span·class="p">,</span><span·class="w">165 ········································</span><span·class="p"·data-group-id="3631360360-7">&lt;&lt;</span><span·class="s">&quot;/some/path/otp_test_engine.so&quot;</span><span·class="p"·data-group-id="3631360360-7">&gt;&gt;</span><span·class="p"·data-group-id="3631360360-5">}</span><span·class="p">,</span><span·class="w">
166 ·······································</span><span·class="p"·data-group-id="7543897361-8">{</span><span·class="p"·data-group-id="7543897361-9">&lt;&lt;</span><span·class="s">&quot;ID&quot;</span><span·class="p"·data-group-id="7543897361-9">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·172,·SHA:·2b7b44dde7097cfd83282b46d486a3e4c62cbede7a51e734c40156f7bc6558f5·...·]-8">}</span><span·class="p">,</span><span·class="w">166 ·······································</span><span·class="p"·data-group-id="3631360360-8">{</span><span·class="p"·data-group-id="3631360360-9">&lt;&lt;</span><span·class="s">&quot;ID&quot;</span><span·class="p"·data-group-id="3631360360-9">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·172,·SHA:·44607f370162ffdc7735de3cbd2a054b7da4b6bdd78e5f3e454247bdb9b7f38c·...·]-8">}</span><span·class="p">,</span><span·class="w">
167 ·······································</span><span·class="p"·data-group-id="7543897361-11">&lt;&lt;</span><span·class="s">&quot;LOAD&quot;</span><span·class="p"·data-group-id="7543897361-11">&gt;&gt;</span><span·class="p"·data-group-id="7543897361-4">]</span><span·class="p">,</span><span·class="w">167 ·······································</span><span·class="p"·data-group-id="3631360360-11">&lt;&lt;</span><span·class="s">&quot;LOAD&quot;</span><span·class="p"·data-group-id="3631360360-11">&gt;&gt;</span><span·class="p"·data-group-id="3631360360-4">]</span><span·class="p">,</span><span·class="w">
168 ······································</span><span·class="p"·data-group-id="7543897361-12">[</span><span·class="p"·data-group-id="7543897361-12">]</span><span·class="p"·data-group-id="7543897361-2">)</span><span·class="p">.</span><span·class="w">168 ······································</span><span·class="p"·data-group-id="3631360360-12">[</span><span·class="p"·data-group-id="3631360360-12">]</span><span·class="p"·data-group-id="3631360360-2">)</span><span·class="p">.</span><span·class="w">
169 ·</span><span·class="p"·data-group-id="7543897361-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="7543897361-13">}</span></code></pre><h3·id="load-an-engine-and-replace-some-methods"·class="section-heading">169 ·</span><span·class="p"·data-group-id="3631360360-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="3631360360-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="2959246333-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="2959246333-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="2959246333-2">(</span><span·class="p"·data-group-id="2959246333-3">&lt;&lt;</span><span·class="s">&quot;dynamic&quot;</span><span·class="p"·data-group-id="2959246333-3">&gt;&gt;</span><span·class="p">,</span><span·class="w"> 
177 ······································</span><span·class="p"·data-group-id="2959246333-4">[</span><span·class="p"·data-group-id="2959246333-5">{</span><span·class="p"·data-group-id="2959246333-6">&lt;&lt;</span><span·class="s">&quot;SO_PATH&quot;</span><sp[·...·truncated·by·diffoscope;·len:·40,·SHA:·c31cbf417ebd5f5ce84f100c0c6b1a04da3dc0d2e9a6e308818f35ff43bd49e4·...·]">&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="7940201803-1">{</span><span·class="ss">ok</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·472,·SHA:·afbf2cdf191fbab674052aeab672b3f0f219589df387a507e0589be9427f9a9c·...·]">&gt;&gt;</span><span·class="p">,</span><span·class="w">
 177 ······································</span><span·class="p"·data-group-id="7940201803-4">[</span><span·class="p"·data-group-id="7940201803-5">{</span><span·class="p"·data-group-id="7940201803-6">&lt;&lt;</span><span·class="s">&quot;SO_PATH&quot;</span><span·class="p"·data-group-id="7940201803-6">&gt;&gt;</span><span·class="p">,</span><span·class="w">
178 ········································</span><span·class="p"·data-group-id="2959246333-7">&lt;&lt;</span><span·class="s">&quot;/some/path/otp_test_engine.so&quot;</span><span·class="p"·data-group-id="2959246333-7">&gt;&gt;</span><span·class="p"·data-group-id="2959246333-5">}</span><span·class="p">,</span><span·class="w">178 ········································</span><span·class="p"·data-group-id="7940201803-7">&lt;&lt;</span><span·class="s">&quot;/some/path/otp_test_engine.so&quot;</span><span·class="p"·data-group-id="7940201803-7">&gt;&gt;</span><span·class="p"·data-group-id="7940201803-5">}</span><span·class="p">,</span><span·class="w">
179 ·······································</span><span·class="p"·data-group-id="2959246333-8">{</span><span·class="p"·data-group-id="2959246333-9">&lt;&lt;</span><span·class="s">&quot;ID&quot;</span><span·class="p"·data-group-id="2959246333-9">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2959246333-10">&lt;&lt;</span><span·class="s">&quot;MD5&quot;</span><span·class="p"·data-group-id="2959246333-10">&gt;&gt;</span><span·class="p"·data-group-id="2959246333-8">}</span><span·class="p">,</span><span·class="w"> 
180 ·······································</span><span·class="p"·data-group-id="2959246333-11">&lt;&lt;</span><span·class="s">&quot;LOAD&quot;</span><span·class="p"·data-group-id="2959246333-11">&gt;&gt;</span><span·class="p"·data-group-id="2959246333-4">]</span><span·class="p">,</span><span·class="w">179 ·······································</span><span·class="p"·data-group-id="7940201803-8">{</span><span·class="p"·data-group-id="7940201803-9">&lt;&lt;</span><span·class="s">&quot;ID&quot;</span><span·class="p"·data-group-id="7940201803-9">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·177,·SHA:·c6bc9d2bb99e59b5e2667db322e974369c680def420ce6c2b44eddb20bf6617e·...·]</span><span·class="p">,</span><span·class="w">
 180 ·······································</span><span·class="p"·data-group-id="7940201803-11">&lt;&lt;</span><span·class="s">&quot;LOAD&quot;</span><span·class="p"·data-group-id="7940201803-11">&gt;&gt;</span><span·class="p"·data-group-id="7940201803-4">]</span><span·class="p">,</span><span·class="w">
181 ······································</span><span·class="p"·data-group-id="2959246333-12">[</span><span·class="p"·data-group-id="2959246333-12">]</span><span·class="p"·data-group-id="2959246333-2">)</span><span·class="p">.</span><span·class="w">181 ······································</span><span·class="p"·data-group-id="7940201803-12">[</span><span·class="p"·data-group-id="7940201803-12">]</span><span·class="p"·data-group-id="7940201803-2">)</span><span·class="p">.</span><span·class="w">
182 </span><span·class="p"·data-group-id="2959246333-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="2959246333-13">}</span><span·class="gp·unselectable">182 </span><span·class="p"·data-group-id="7940201803-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="7940201803-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="2959246333-14">(</span><span·class="n">Engine</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2959246333-15">[</span><span·class="ss">engine_method_digests</span><span·class="p"·data-group-id="2959246333-15">]</span><sp[·...·truncated·by·diffoscope;·len:·37,·SHA:·a04ea47c94bb48b5680f20d6a227df8facc1cd049b6a0787619b9e5d2459decd·...·]3-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="7940201803-14">(</span><span·class="n">Engine</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7940201803-15">[</span><span·class="ss">engine_method_digests</span><span·class="p"·data-group-id="7940201803-15">]</span><sp[·...·truncated·by·diffoscope;·len:·37,·SHA:·e48c193ef719e9a401535ece03e54193c42080127eb87dfc2783aeb334a1b879·...·]3-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="1588760806-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="1588760806-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·284,·SHA:·0538646195e6c5a7cc45c51284baa83890013678585ac49457ceaf5e69143978·...·]-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="9607003662-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="9607003662-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·284,·SHA:·f1019edc39672a438e705388099df44383cf8876d9780ee28cef303131141265·...·]-3">&gt;&gt;</span><span·class="p">,</span><span·class="w">
193 ···············································</span><span·class="p"·data-group-id="1588760806-4">&lt;&lt;</span><span·class="s">&quot;/some/path/otp_test_engine.so&quot;</span><span·class="p"·data-group-id="1588760806-4">&gt;&gt;</span><span·class="p"·data-group-id="1588760806-2">)</span><span·class="p">.</span><span·class="w">193 ···············································</span><span·class="p"·data-group-id="9607003662-4">&lt;&lt;</span><span·class="s">&quot;/some/path/otp_test_engine.so&quot;</span><span·class="p"·data-group-id="9607003662-4">&gt;&gt;</span><span·class="p"·data-group-id="9607003662-2">)</span><span·class="p">.</span><span·class="w">
194 ·</span><span·class="p"·data-group-id="1588760806-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="1588760806-5">}</span></code></pre><p>To·remove·the·tag·from·the·OpenSSL·engine[·...·truncated·by·diffoscope;·len:·469,·SHA:·123841a4ee27aa0df8fe276116c641d56a33e0b8f31754c7c1526e9017f37ab2·...·]-1">)</span><span·class="p">.</span><span·class="w">194 ·</span><span·class="p"·data-group-id="9607003662-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="9607003662-5">}</span></code></pre><p>To·remove·the·tag·from·the·OpenSSL·engine[·...·truncated·by·diffoscope;·len:·469,·SHA:·627fb89d894f9bb01e98c4266d7f659f73f15ba8ddcac83864913fc4b50687dd·...·]-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="1870932651-1">(</span><span·class="n">Engine</span><span·class="p"·data-group-id="1870932651-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="4510060875-1">(</span><span·class="n">Engine</span><span·class="p"·data-group-id="4510060875-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="7845035466-1">(</span><span·class="p"·data-group-id="7845035466-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="4905218413-1">(</span><span·class="p"·data-group-id="4905218413-1">)</span><span·class="p">.</span><span·class="w">
204 </span><span·class="p"·data-group-id="7845035466-2">[</span><span·class="p"·data-group-id="7845035466-3">&lt;&lt;</span><span·class="s">&quot;dynamic&quot;</span><span·class="p"·data-group-id="7845035466-3">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·175,·SHA:·5f98a9a5856ba28327e29d5c635bfe12212e7b676d61a9a58eb05b7cfb874448·...·]-2">]</span></code></pre>204 </span><span·class="p"·data-group-id="4905218413-2">[</span><span·class="p"·data-group-id="4905218413-3">&lt;&lt;</span><span·class="s">&quot;dynamic&quot;</span><span·class="p"·data-group-id="4905218413-3">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·175,·SHA:·d7c6cad8c782c2a3c399a950c6b38176ba6f96ff5bb16fd5d8459c784203989c·...·]-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="4452003993-1">(</span><span·class="p"·data-group-id="4452003993-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="6927260642-1">(</span><span·class="p"·data-group-id="6927260642-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="4452003993-2">&lt;&lt;</span><span·class="mi">1</span><span·class="p">:</span><span·class="mi">128</span><span·class="p"·data-group-id="4452003993-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="6927260642-2">&lt;&lt;</span><span·class="mi">1</span><span·class="p">:</span><span·class="mi">128</span><span·class="p"·data-group-id="6927260642-2">&gt;&gt;</span><span·class="p">.</span><span·class="w">
198 »       </span><span·class="p"·data-group-id="4452003993-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:·6a9fa1cdf5da33d1cab4748904a7dd1e41df92023d50552bd4c7a58410deddec·...·]-3">&gt;&gt;</span><span·class="w">198 »       </span><span·class="p"·data-group-id="6927260642-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:·dcab973a2a0fbed0751d0847b9be82d9a0b0ffad61a1875f68bdaf49ce3cd685·...·]-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="4452003993-4">&lt;&lt;</span><span·class="mi">0</span><span·class="p">:</span><span·class="mi">128</span><span·class="p"·data-group-id="4452003993-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="6927260642-4">&lt;&lt;</span><span·class="mi">0</span><span·class="p">:</span><span·class="mi">128</span><span·class="p"·data-group-id="6927260642-4">&gt;&gt;</span><span·class="p">.</span><span·class="w">
200 »       </span><span·class="p"·data-group-id="4452003993-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:·0c58513ba82285092b0b789f4e7cf7fabd20faafe7bc6019deb56e9f74bdb31b·...·]-5">&gt;&gt;</span><span·class="w">200 »       </span><span·class="p"·data-group-id="6927260642-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:·04b8e872fe828ffa885025d235d9ba1d0cfdb924ce4e11cb67fc39d843f5ddb1·...·]-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="4452003993-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:·793f17dbc26f665e8fe3372d861e007fdcbe539fdf127db0c195d7bb98437a7b·...·]-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="6927260642-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:·4bdd01a7c8f1dee548d0e7f20b901688a856e09397f6ec2a1b9a4d2b29a66dfd·...·]-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="4452003993-7">(</span><span·class="n">StateEnc</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4452003993-8">&lt;&lt;</span><span·class="s">&quot;First·bytes&quot;</span><span·class="p"·data-group-id="4452003993-8">&gt;[·...·truncated·by·diffoscope;·len:·52,·SHA:·a0cc70c32bb36b03fdd250b9800429f69f619a3013ba351420773eb852f22d22·...·]-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="6927260642-7">(</span><span·class="n">StateEnc</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6927260642-8">&lt;&lt;</span><span·class="s">&quot;First·bytes&quot;</span><span·class="p"·data-group-id="6927260642-8">&gt;[·...·truncated·by·diffoscope;·len:·52,·SHA:·17685ed86b935e0104ec3b2a9db0ae05b7a6f1addc91fba3aa7a55b64a95568d·...·]-7">)</span><span·class="p">.</span><span·class="w">
204 »       </span><span·class="p"·data-group-id="4452003993-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:·5b8397dd3ff051221209b0396f0175494e9c43da2c22c02e42834576d6af5827·...·]-9">&gt;&gt;</span><span·class="w">204 »       </span><span·class="p"·data-group-id="6927260642-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:·0977c956e5840975b6a81c22d4d4650bf7625f94b7a301123f4144425d5d9b91·...·]-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="4452003993-10">(</span><span·class="n">StateEnc</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4452003993-11">&lt;&lt;</span><span·class="s">&quot;Second·bytes&quot;</span><span·class="p"·data-group-id="4452003993-11">[·...·truncated·by·diffoscope;·len:·56,·SHA:·17f8ead0bfaca1d4fa6187ab3ca78119727926f27452b449d4ff83430246309c·...·]-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="6927260642-10">(</span><span·class="n">StateEnc</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6927260642-11">&lt;&lt;</span><span·class="s">&quot;Second·bytes&quot;</span><span·class="p"·data-group-id="6927260642-11">[·...·truncated·by·diffoscope;·len:·56,·SHA:·70ba493f6ca8c099ae827334b35c70a8f376784117727f7dec5ca9262e44170f·...·]-10">)</span><span·class="p">.</span><span·class="w">
206 »       </span><span·class="p"·data-group-id="4452003993-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:·de19072df766b7f285814697a031374aad8aa3c07b4c2a2b7c96bf154013d81a·...·]-12">&gt;&gt;</span><span·class="w">206 »       </span><span·class="p"·data-group-id="6927260642-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:·a6f928cecbebc3926401b2af8475e46cda6c282d68cd2ee05c0faf14742809a0·...·]-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="4452003993-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:·a45f2dd45db2bdbef7dd4319630e7956f6d0fcbec9c307f1cab3a9c011a912cf·...·]-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="6927260642-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:·acafda17a5cb180811e6de09b0dc51bad663a5128ec831bfbd8b8fd7f9c4215f·...·]-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="4452003993-14">(</span><span·class="n">StateDec</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4452003993-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:·da3c96965eaecbe668da79e0de766a19bb92d9c82de5acf64565f7f07d1dbd6d·...·]-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="6927260642-14">(</span><span·class="n">StateDec</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6927260642-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:·ef6bf2b7237a6bf7c9ac7b0a15a1513a0904c2ea487cafcd336f367649bdc010·...·]-14">)</span><span·class="p">.</span><span·class="w">
211 »       </span><span·class="p"·data-group-id="4452003993-16">&lt;&lt;</span><span·class="s">&quot;First·b&quot;</span><span·class="p"·data-group-id="4452003993-16">&gt;&gt;</span><span·class="w">211 »       </span><span·class="p"·data-group-id="6927260642-16">&lt;&lt;</span><span·class="s">&quot;First·b&quot;</span><span·class="p"·data-group-id="6927260642-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="4452003993-17">(</span><span·class="n">StateDec</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4452003993-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="6927260642-17">(</span><span·class="n">StateDec</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6927260642-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="4452003993-18">&gt;&gt;</span><span·class="p"·data-group-id="4452003993-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="6927260642-18">&gt;&gt;</span><span·class="p"·data-group-id="6927260642-17">)</span><span·class="p">.</span><span·class="w">
214 »       </span><span·class="p"·data-group-id="4452003993-19">&lt;&lt;</span><span·class="s">&quot;ytesSecond·byte&quot;</span><span·class="p"·data-group-id="4452003993-19">&gt;&gt;</span><span·class="w">214 »       </span><span·class="p"·data-group-id="6927260642-19">&lt;&lt;</span><span·class="s">&quot;ytesSecond·byte&quot;</span><span·class="p"·data-group-id="6927260642-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="4452003993-20">(</span><span·class="n">StateDec</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4452003993-21">&lt;&lt;</span><span·class="mi">41</span><span·class="p"·data-group-id="4452003993-21">&gt;&gt;</span><span·[·...·truncated·by·diffoscope;·len:·35,·SHA:·a7b78e20fc79e243f62e59b7d532f083da9dbd5dfddb723757c99063eb95420c·...·]-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="6927260642-20">(</span><span·class="n">StateDec</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6927260642-21">&lt;&lt;</span><span·class="mi">41</span><span·class="p"·data-group-id="6927260642-21">&gt;&gt;</span><span·[·...·truncated·by·diffoscope;·len:·35,·SHA:·801a72410f73f6b46f973b1a2e689f6e7896710b3907b9dee88ad024e0353522·...·]-20">)</span><span·class="p">.</span><span·class="w">
216 »       </span><span·class="p"·data-group-id="4452003993-22">&lt;&lt;</span><span·class="s">&quot;s&quot;</span><span·class="p"·data-group-id="4452003993-22">&gt;&gt;</span><span·class="w">216 »       </span><span·class="p"·data-group-id="6927260642-22">&lt;&lt;</span><span·class="s">&quot;s&quot;</span><span·class="p"·data-group-id="6927260642-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="4614867772-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="4614867772-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="8460090589-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="8460090589-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="4614867772-2">(</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">crypto_init</span><span·class="p"·data-group-id="4614867772-3">(</span><span·class="n">Crypto</span><span·class="p">,</span><span·class="w">·</span><span·class="n"[·...·truncated·by·diffoscope;·len:·254,·SHA:·6756ff8c9abf398e054c6fb2b9e21903b94713b4a1b89bd152e9326addb0a143·...·]-2">)</span><span·class="p">.</span><span·class="w">223 »       </span><span·class="nf">crypto_loop</span><span·class="p"·data-group-id="8460090589-2">(</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">crypto_init</span><span·class="p"·data-group-id="8460090589-3">(</span><span·class="n">Crypto</span><span·class="p">,</span><span·class="w">·</span><span·class="n"[·...·truncated·by·diffoscope;·len:·254,·SHA:·a12ede6ddd88390be5e47825fb0a1bd5a3e129bf78a540853bd4ee5870ca3a16·...·]-2">)</span><span·class="p">.</span><span·class="w">
  
224 »       </span><span·class="nf">crypto_loop</span><span·class="p"·data-group-id="4614867772-4">(</span><span·class="n">State</span><span·class="p"·data-group-id="4614867772-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="8460090589-4">(</span><span·class="n">State</span><span·class="p"·data-group-id="8460090589-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="4614867772-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="4614867772-5">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">226 ········</span><span·class="p"·data-group-id="8460090589-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="8460090589-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="4614867772-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="4614867772-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="8460090589-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="8460090589-6">)</span><span·class="p">,</span><span·class="w">
228 »       </span><span·class="nf">loop</span><span·class="p"·data-group-id="4614867772-7">(</span><span·class="n">State</span><span·class="p"·data-group-id="4614867772-7">)</span><span·class="w">228 »       </span><span·class="nf">loop</span><span·class="p"·data-group-id="8460090589-7">(</span><span·class="n">State</span><span·class="p"·data-group-id="8460090589-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="6462257071-1">&lt;&lt;</span><span·class="mi">1</span><span·class="p">:</span><span·class="mi">128</span><span·class="p"·data-group-id="6462257071-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="5492427752-1">&lt;&lt;</span><span·class="mi">1</span><span·class="p">:</span><span·class="mi">128</span><span·class="p"·data-group-id="5492427752-1">&gt;&gt;</span><span·class="p">.</span><span·class="w">
238 »       </span><span·class="p"·data-group-id="6462257071-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:·deb8a3a809344232bc4ddea4918cb08dcee2f6b16c2ca06a97666648f29a5e73·...·]-2">&gt;&gt;</span><span·class="w">238 »       </span><span·class="p"·data-group-id="5492427752-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:·9df2b73e27d9a4a6d184fd9a020c1d7eac039be39fa198978d902cc1bca57a83·...·]-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="6462257071-3">&lt;&lt;</span><span·class="mi">0</span><span·class="p">:</span><span·class="mi">128</span><span·class="p"·data-group-id="6462257071-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="5492427752-3">&lt;&lt;</span><span·class="mi">0</span><span·class="p">:</span><span·class="mi">128</span><span·class="p"·data-group-id="5492427752-3">&gt;&gt;</span><span·class="p">.</span><span·class="w">
240 »       </span><span·class="p"·data-group-id="6462257071-4">&lt;&lt;</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·[·...·truncated·by·diffoscope;·len:·574,·SHA:·f3eb08f952ad9d746f1fc1eef39b266182c0f753b30234cd6f424a481d7d4a90·...·]-4">&gt;&gt;</span><span·class="w">240 »       </span><span·class="p"·data-group-id="5492427752-4">&lt;&lt;</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·[·...·truncated·by·diffoscope;·len:·574,·SHA:·4dde7b6f1a007aa665eae19f63f8e57515c2e6ffa01f6a6442c9bc6def2bb9b8·...·]-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="6462257071-5">[</span><span·class="p"·data-group-id="6462257071-6">&lt;&lt;</span><span·class="s">&quot;First·bytes&quot;</span><span·class="p"·data-group-id="6462257071-6">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="6462257071-7"[·...·truncated·by·diffoscope;·len:·164,·SHA:·0689b36277835958c35fe42ebd380d95172d8442bf97e51bab9b2b60085d36ad·...·]-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="5492427752-5">[</span><span·class="p"·data-group-id="5492427752-6">&lt;&lt;</span><span·class="s">&quot;First·bytes&quot;</span><span·class="p"·data-group-id="5492427752-6">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="5492427752-7"[·...·truncated·by·diffoscope;·len:·164,·SHA:·3adf924a28d9d73c5797ef6df1f63d0ac8f95ad5fab1f7408d6a2f407c3c6ffb·...·]-5">]</span><span·class="p">.</span><span·class="w">
242 »       </span><span·class="p"·data-group-id="6462257071-8">[</span><span·class="p"·data-group-id="6462257071-9">&lt;&lt;</span><span·class="s">&quot;First·bytes&quot;</span><span·class="p"·data-group-id="6462257071-9">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="6462257071-10[·...·truncated·by·diffoscope;·len:·166,·SHA:·57ca30f53d6fe76b18e00f4f63de138c325ac35321368045525e2d1bc7752710·...·]-8">]</span><span·class="w">242 »       </span><span·class="p"·data-group-id="5492427752-8">[</span><span·class="p"·data-group-id="5492427752-9">&lt;&lt;</span><span·class="s">&quot;First·bytes&quot;</span><span·class="p"·data-group-id="5492427752-9">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="5492427752-10[·...·truncated·by·diffoscope;·len:·166,·SHA:·7296599571f033c3e2d489aec1d5ba0bef8cfc92693e8a8f4314c048c6da6167·...·]-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="6462257071-11">(</span><span·class="ss">aes_128_ctr</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Key</span><span·class="p">,</span><span·class="w">·</span><span·class="n">IV</span><span·class="p">,</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·140,·SHA:·9b9075a432f2a123a26b9bbab31559ba17279b032b559d97eba3274c6cf5b6b6·...·]-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="5492427752-11">(</span><span·class="ss">aes_128_ctr</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Key</span><span·class="p">,</span><span·class="w">·</span><span·class="n">IV</span><span·class="p">,</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·140,·SHA:·8356633a4808ce23152b9b434a553e0a2518147957ed6865f43d7d7d9f023dc6·...·]-11">)</span><span·class="p">.</span><span·class="w">
244 »       </span><span·class="p"·data-group-id="6462257071-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="5492427752-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="6462257071-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="5492427752-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="1702649937-1">&lt;&lt;</span><span·class="mi">1</span><span·class="p">:</span><span·class="mi">128</span><span·class="p"·data-group-id="1702649937-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="7153416952-1">&lt;&lt;</span><span·class="mi">1</span><span·class="p">:</span><span·class="mi">128</span><span·class="p"·data-group-id="7153416952-1">&gt;&gt;</span><span·class="p">.</span><span·class="w">
256 »       </span><span·class="p"·data-group-id="1702649937-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:·1868c4c9a057a781ac61fbdd6a41f43d52377f7836d63d29d6e25679d086ffa0·...·]-2">&gt;&gt;</span><span·class="w">256 »       </span><span·class="p"·data-group-id="7153416952-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:·1dbda119987ffd5333f902f393ea812244e596c828d53f1dcb06ed935ee88b05·...·]-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="1702649937-3">&lt;&lt;</span><span·class="mi">0</span><span·class="p">:</span><span·class="mi">128</span><span·class="p"·data-group-id="1702649937-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="7153416952-3">&lt;&lt;</span><span·class="mi">0</span><span·class="p">:</span><span·class="mi">128</span><span·class="p"·data-group-id="7153416952-3">&gt;&gt;</span><span·class="p">.</span><span·class="w">
258 »       </span><span·class="p"·data-group-id="1702649937-4">&lt;&lt;</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·[·...·truncated·by·diffoscope;·len:·574,·SHA:·faf4a213ed1ed1c113c951647b866868800eaae4de3867ad725327f0a0b94aac·...·]-4">&gt;&gt;</span><span·class="w">258 »       </span><span·class="p"·data-group-id="7153416952-4">&lt;&lt;</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·[·...·truncated·by·diffoscope;·len:·574,·SHA:·5236a8fdd263c1e8b28963d8cd3b15b7e6f3731e20b33247cf520c828c0c16a7·...·]-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="1702649937-5">[</span><span·class="p"·data-group-id="1702649937-6">&lt;&lt;</span><span·class="s">&quot;First·bytes&quot;</span><span·class="p"·data-group-id="1702649937-6">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="1702649937-7"[·...·truncated·by·diffoscope;·len:·164,·SHA:·78cb73c0099a0de7bcc5e5c1d84c57e4b491a2abbe2b97096ab8b92e6d4d0849·...·]-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="7153416952-5">[</span><span·class="p"·data-group-id="7153416952-6">&lt;&lt;</span><span·class="s">&quot;First·bytes&quot;</span><span·class="p"·data-group-id="7153416952-6">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="7153416952-7"[·...·truncated·by·diffoscope;·len:·164,·SHA:·48ca59280149607daff5aa6185f584d3fa057a67c1fcc43b0a0fa98f642afe59·...·]-5">]</span><span·class="p">.</span><span·class="w">
260 »       </span><span·class="p"·data-group-id="1702649937-8">[</span><span·class="p"·data-group-id="1702649937-9">&lt;&lt;</span><span·class="s">&quot;First·bytes&quot;</span><span·class="p"·data-group-id="1702649937-9">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="1702649937-10[·...·truncated·by·diffoscope;·len:·166,·SHA:·0f3bf10c39947a393d260d485707c69ef14e7903f8ecf5168c6a4be5efae5b45·...·]-8">]</span><span·class="w">260 »       </span><span·class="p"·data-group-id="7153416952-8">[</span><span·class="p"·data-group-id="7153416952-9">&lt;&lt;</span><span·class="s">&quot;First·bytes&quot;</span><span·class="p"·data-group-id="7153416952-9">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="7153416952-10[·...·truncated·by·diffoscope;·len:·166,·SHA:·5f1020bdd3ff6e41f0c6b15e62c54fb15e022714c31753281f343cf991d9f24c·...·]-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="1702649937-11">&lt;&lt;</span><span·class="s">&quot;Some·additional·auth·data&quot;</span><span·class="p"·data-group-id="1702649937-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="7153416952-11">&lt;&lt;</span><span·class="s">&quot;Some·additional·auth·data&quot;</span><span·class="p"·data-group-id="7153416952-11">&gt;&gt;</span><span·class="p">.</span><span·class="w">
262 »       </span><span·class="p"·data-group-id="1702649937-12">&lt;&lt;</span><span·class="s">&quot;Some·additional·auth·data&quot;</span><span·class="p"·data-group-id="1702649937-12">&gt;&gt;</span><span·class="w">262 »       </span><span·class="p"·data-group-id="7153416952-12">&lt;&lt;</span><span·class="s">&quot;Some·additional·auth·data&quot;</span><span·class="p"·data-group-id="7153416952-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="1702649937-13">(</span><span·class="ss">aes_128_gcm</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Key</span><span·class="p">,</span><span·class="w">·</span><span·class="n">IV</span><span·class="p">,</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·214,·SHA:·1947d6566aa25247118ee76acc097faf1cbe89996992496c77430391a7098b35·...·]-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="7153416952-13">(</span><span·class="ss">aes_128_gcm</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Key</span><span·class="p">,</span><span·class="w">·</span><span·class="n">IV</span><span·class="p">,</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·214,·SHA:·4a68517bfb21642620d00407132aa6065091267df71714ce41a9429423e24d01·...·]-13">)</span><span·class="p">.</span><span·class="w">
264 »       </span><span·class="p"·data-group-id="1702649937-14">{</span><span·class="p"·data-group-id="1702649937-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="7153416952-14">{</span><span·class="p"·data-group-id="7153416952-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="1702649937-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="7153416952-15">&gt;&gt;</span><span·class="p">,</span><span·class="w">
266 »       </span><span·class="p"·data-group-id="1702649937-16">&lt;&lt;</span><span·class="mi">131</span><span·class="p">,</span><span·class="mi">47</span><span·class="p">,</span><span·class="mi">45</span><span·class="p">,</span><span·class="mi">91</span><span·class="p">,</span><span·class="mi">142</spa[·...·truncated·by·diffoscope;·len:·657,·SHA:·b37494665ad6f71998b1da99d80ee669163901d7eb2de31463cbe62787c58192·...·]-14">}</span><span·class="w">266 »       </span><span·class="p"·data-group-id="7153416952-16">&lt;&lt;</span><span·class="mi">131</span><span·class="p">,</span><span·class="mi">47</span><span·class="p">,</span><span·class="mi">45</span><span·class="p">,</span><span·class="mi">91</span><span·class="p">,</span><span·class="mi">142</spa[·...·truncated·by·diffoscope;·len:·657,·SHA:·a6ec35f445f7fa46efcd83364b515fa28eded9deb066701b261c6eed5868331f·...·]-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="3384866007-1">&lt;&lt;</span><span·class="mi">1</span><span·class="p">:</span><span·class="mi">128</span><span·class="p"·data-group-id="3384866007-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="6306491629-1">&lt;&lt;</span><span·class="mi">1</span><span·class="p">:</span><span·class="mi">128</span><span·class="p"·data-group-id="6306491629-1">&gt;&gt;</span><span·class="p">.</span><span·class="w">
275 »       </span><span·class="p"·data-group-id="3384866007-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:·5571243ec1830992928aa2808d27d14a5a9696ddf8a6d9d100d0aa7258c6dfde·...·]-2">&gt;&gt;</span><span·class="w">275 »       </span><span·class="p"·data-group-id="6306491629-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:·01514ffe7985c02af39b7009438ec90efa04b58b24eae87cd1232dd26159176c·...·]-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="3384866007-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="3384866007-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="6306491629-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="6306491629-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="3384866007-4">(</span><span·class="n">StateMac</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3384866007-5">&lt;&lt;</span><span·class="s">&quot;First·bytes&quot;</span><span·class="p"·data-group-id="3384866007-5">&gt;[·...·truncated·by·diffoscope;·len:·52,·SHA:·fadecf798c598bea2a9a9121291c8e37f84c6f64a7549e5d5d2d062e4db45472·...·]-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="6306491629-4">(</span><span·class="n">StateMac</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6306491629-5">&lt;&lt;</span><span·class="s">&quot;First·bytes&quot;</span><span·class="p"·data-group-id="6306491629-5">&gt;[·...·truncated·by·diffoscope;·len:·52,·SHA:·d4480c9519e3d8fd92b7ac551d4e51993df2060399d8012e3e086e2abcb4b080·...·]-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="3384866007-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="3384866007-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="6306491629-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="6306491629-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="3384866007-7">(</span><span·class="n">StateMac</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3384866007-8">&lt;&lt;</span><span·class="s">&quot;last·bytes&quot;</span><span·class="p"·data-group-id="3384866007-8">&gt;&[·...·truncated·by·diffoscope;·len:·51,·SHA:·a9cc809b62ab65707e5fb620c3e016fa0db434733d4d2fdcc9197b316c78489b·...·]-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="6306491629-7">(</span><span·class="n">StateMac</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6306491629-8">&lt;&lt;</span><span·class="s">&quot;last·bytes&quot;</span><span·class="p"·data-group-id="6306491629-8">&gt;&[·...·truncated·by·diffoscope;·len:·51,·SHA:·ffaa588c786df6f28045df920ed3970e84e6b1c8ba4a6ef29ed5bfdbb8eaf226·...·]-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="3384866007-9">(</span><span·class="n">StateMac</span><span·class="p"·data-group-id="3384866007-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="6306491629-9">(</span><span·class="n">StateMac</span><span·class="p"·data-group-id="6306491629-9">)</span><span·class="p">.</span><span·class="w">
285 »       </span><span·class="p"·data-group-id="3384866007-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="6306491629-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="3384866007-10">&gt;&gt;</span><span·class="w">286 »       </span><span·class="mi">249</span><span·class="p"·data-group-id="6306491629-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="6463899636-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:·34b6e1b9505bca1fb303ec93c7ba3bc44d4a46fb8587b5f4c8a9d30870cd22dc·...·]-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="3510361623-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:·9a2d271abc7c717e78d235e669c72e9e16fb804c281a7a30805a778913034490·...·]-1">)</span><span·class="p">.</span><span·class="w">
288 »       </span><span·class="p"·data-group-id="6463899636-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="3510361623-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="6463899636-2">&gt;&gt;</span><span·class="w">289 »       </span><span·class="mi">249</span><span·class="p"·data-group-id="3510361623-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="6463899636-3">(</span><span·class="mi">7</span><span·class="p"·data-group-id="6463899636-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="6463899636-4">(</span><span[·...·truncated·by·diffoscope;·len:·61,·SHA:·145310cc42c5e82e6d6bfcaf8a7bf931665c30c9e09464a1e6e0d6ccd0322336·...·]-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="3510361623-3">(</span><span·class="mi">7</span><span·class="p"·data-group-id="3510361623-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="3510361623-4">(</span><span[·...·truncated·by·diffoscope;·len:·61,·SHA:·f6ea5eb43bc86a7bfef094894ebab173b512a0838869d466d6dc51ea6390e2eb·...·]-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>
168 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:·219258·bytes,·number·of·entries:·22
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Apr-18·14:01·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Apr-18·15:27·mimetype
3 ?rw-r--r--··6.1·unx······716·bx·defN·25-Apr-18·14:01·OEBPS/title.xhtml3 ?rw-r--r--··6.1·unx······716·bx·defN·25-Apr-18·15:27·OEBPS/title.xhtml
4 ?rw-r--r--··6.1·unx····49258·bx·defN·25-Apr-18·14:01·OEBPS/notes.xhtml4 ?rw-r--r--··6.1·unx····49258·bx·defN·25-Apr-18·15:27·OEBPS/notes.xhtml
5 ?rw-r--r--··6.1·unx·····1227·bx·defN·25-Apr-18·14:01·OEBPS/nav.xhtml5 ?rw-r--r--··6.1·unx·····1227·bx·defN·25-Apr-18·15:27·OEBPS/nav.xhtml
6 ?rw-r--r--··6.1·unx·····1576·bx·defN·25-Apr-18·14:01·OEBPS/introduction.xhtml6 ?rw-r--r--··6.1·unx·····1576·bx·defN·25-Apr-18·15:27·OEBPS/introduction.xhtml
7 ?rw-r--r--··6.1·unx····55715·bx·defN·25-Apr-18·14:01·OEBPS/int.xhtml7 ?rw-r--r--··6.1·unx····55715·bx·defN·25-Apr-18·15:27·OEBPS/int.xhtml
8 ?rw-r--r--··6.1·unx····42294·bx·defN·25-Apr-18·14:01·OEBPS/i.xhtml8 ?rw-r--r--··6.1·unx····42294·bx·defN·25-Apr-18·15:27·OEBPS/i.xhtml
9 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Apr-18·14:01·OEBPS/dist/epub-erlang-ESPT6BQV.css9 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Apr-18·15:27·OEBPS/dist/epub-erlang-ESPT6BQV.css
10 ?rw-r--r--··6.1·unx······499·bx·defN·25-Apr-18·14:01·OEBPS/dist/epub-LSJCIYTM.js10 ?rw-r--r--··6.1·unx······499·bx·defN·25-Apr-18·15:27·OEBPS/dist/epub-LSJCIYTM.js
11 ?rw-r--r--··6.1·unx····46232·bx·defN·25-Apr-18·14:01·OEBPS/debugger_chapter.xhtml11 ?rw-r--r--··6.1·unx····46232·bx·defN·25-Apr-18·15:27·OEBPS/debugger_chapter.xhtml
12 ?rw-r--r--··6.1·unx·····7328·bx·defN·25-Apr-18·14:01·OEBPS/debugger.xhtml12 ?rw-r--r--··6.1·unx·····7328·bx·defN·25-Apr-18·15:27·OEBPS/debugger.xhtml
13 ?rw-r--r--··6.1·unx·····2548·bx·defN·25-Apr-18·14:01·OEBPS/content.opf13 ?rw-r--r--··6.1·unx·····2548·bx·defN·25-Apr-18·15:27·OEBPS/content.opf
14 ?rw-r--r--··6.1·unx····34504·bx·defN·25-Apr-18·14:01·OEBPS/assets/view.jpg14 ?rw-r--r--··6.1·unx····34504·bx·defN·25-Apr-18·15:27·OEBPS/assets/view.jpg
15 ?rw-r--r--··6.1·unx····40742·bx·defN·25-Apr-18·14:01·OEBPS/assets/monitor.jpg15 ?rw-r--r--··6.1·unx····40742·bx·defN·25-Apr-18·15:27·OEBPS/assets/monitor.jpg
16 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Apr-18·14:01·OEBPS/assets/logo.png16 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Apr-18·15:27·OEBPS/assets/logo.png
17 ?rw-r--r--··6.1·unx····14414·bx·defN·25-Apr-18·14:01·OEBPS/assets/line_break_dialog.jpg17 ?rw-r--r--··6.1·unx····14414·bx·defN·25-Apr-18·15:27·OEBPS/assets/line_break_dialog.jpg
18 ?rw-r--r--··6.1·unx····28924·bx·defN·25-Apr-18·14:01·OEBPS/assets/interpret.jpg18 ?rw-r--r--··6.1·unx····28924·bx·defN·25-Apr-18·15:27·OEBPS/assets/interpret.jpg
19 ?rw-r--r--··6.1·unx····13532·bx·defN·25-Apr-18·14:01·OEBPS/assets/function_break_dialog.jpg19 ?rw-r--r--··6.1·unx····13532·bx·defN·25-Apr-18·15:27·OEBPS/assets/function_break_dialog.jpg
20 ?rw-r--r--··6.1·unx····21770·bx·defN·25-Apr-18·14:01·OEBPS/assets/cond_break_dialog.jpg20 ?rw-r--r--··6.1·unx····21770·bx·defN·25-Apr-18·15:27·OEBPS/assets/cond_break_dialog.jpg
21 ?rw-r--r--··6.1·unx····56341·bx·defN·25-Apr-18·14:01·OEBPS/assets/attach.jpg21 ?rw-r--r--··6.1·unx····56341·bx·defN·25-Apr-18·15:27·OEBPS/assets/attach.jpg
22 ?rw-r--r--··6.1·unx······252·bx·defN·25-Apr-18·14:01·META-INF/container.xml22 ?rw-r--r--··6.1·unx······252·bx·defN·25-Apr-18·15:27·META-INF/container.xml
23 ?rw-r--r--··6.1·unx······162·bx·defN·25-Apr-18·14:01·META-INF/com.apple.ibooks.display-options.xml23 ?rw-r--r--··6.1·unx······162·bx·defN·25-Apr-18·15:27·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,·215372·bytes·compressed:··50.9%
125 KB
zipdetails --redact --scan --utc {}
Max HTML report size reached
370 B
filetype from file(1)
    
Offset 1, 1 lines modifiedOffset 1, 1 lines modified
1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Apr·18·2025·14:01:16,·uncompressed·size·20,·method=store1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Apr·18·2025·15:27:36,·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="6037405856-1">(</span><span·class="ss">a</span><span·class="p"·data-group-id="6037405856-1">)</span><span·class="p">.</span><span·class="w">37 &gt;·</span><span·class="n">F</span><span·class="p"·data-group-id="8595859669-1">(</span><span·class="ss">a</span><span·class="p"·data-group-id="8595859669-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="6037405856-2">(</span><span·class="mi">42</span><span·class="p"·data-group-id="6037405856-2">)</span><span·class="p">.</span><span·class="w">41 4&gt;·</span><span·class="n">Id</span><span·class="p"·data-group-id="8595859669-2">(</span><span·class="mi">42</span><span·class="p"·data-group-id="8595859669-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="6037405856-3">(</span><span·class="n">I</span><span·class="p"·data-group-id="6037405856-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="8595859669-3">(</span><span·class="n">I</span><span·class="p"·data-group-id="8595859669-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="6037405856-4">(</span><span·class="mi">42</span><span·class="p"·data-group-id="6037405856-4">)</span><span·class="p">.</span><span·class="w">45 6&gt;·</span><span·class="n">Id</span><span·class="p"·data-group-id="8595859669-4">(</span><span·class="mi">42</span><span·class="p"·data-group-id="8595859669-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="0097755655-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="0097755655-2">[</samp><samp·class="n">Pid</samp><sa[·...·truncated·by·diffoscope;·len:·190,·SHA:·bf8f8436d71a38610caa33d1b21d8bb324fae639e5561b812656947cf3942735·...·]-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="6522013769-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="6522013769-2">[</samp><samp·class="n">Pid</samp><sa[·...·truncated·by·diffoscope;·len:·190,·SHA:·3dda1be912d74f9f618f7463adbe8af8c5984a7f9143be21c2d98ab4b00484a1·...·]-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="7910878946-1">(</samp><samp·class="ss">t</samp><samp·class="p"·data-group-id="7910878946-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="3067851887-1">(</samp><samp·class="ss">t</samp><samp·class="p"·data-group-id="3067851887-1">)</samp><samp·class="p">.</samp><samp·class="w">
33 </samp><samp·class="p"·data-group-id="7910878946-2">{</samp><samp·class="ss">module</samp><samp·class="p">,</samp><samp·class="ss">t</samp><samp·class="p"·data-group-id="7910878946-2">}</samp><samp·class="gp·unselectable">33 </samp><samp·class="p"·data-group-id="3067851887-2">{</samp><samp·class="ss">module</samp><samp·class="p">,</samp><samp·class="ss">t</samp><samp·class="p"·data-group-id="3067851887-2">}</samp><samp·class="gp·unselectable">
34 2&gt;·</samp><samp·class="nf">iaa</samp><samp·class="p"·data-group-id="7910878946-3">(</samp><samp·class="p"·data-group-id="7910878946-4">[</samp><samp·class="ss">init</samp><samp·class="p"·data-group-id="7910878946-4">]</samp><samp·class="p"·data-group-id="7910878946-3">)</samp><samp·class="p">.</samp><samp·class="w">34 2&gt;·</samp><samp·class="nf">iaa</samp><samp·class="p"·data-group-id="3067851887-3">(</samp><samp·class="p"·data-group-id="3067851887-4">[</samp><samp·class="ss">init</samp><samp·class="p"·data-group-id="3067851887-4">]</samp><samp·class="p"·data-group-id="3067851887-3">)</samp><samp·class="p">.</samp><samp·class="w">
35 </samp><samp·class="ss">true</samp></code></pre>35 </samp><samp·class="ss">true</samp></code></pre>
36 ······</section>36 ······</section>
  
  
37 ······<section·id="summary"·class="details-list">37 ······<section·id="summary"·class="details-list">
38 ········<h1·class="section-heading">Summary</h1>38 ········<h1·class="section-heading">Summary</h1>
39 <div·class="summary-functions·summary">39 <div·class="summary-functions·summary">
25.5 KB
OEBPS/debugger_chapter.xhtml
Max HTML report size reached
2.8 KB
OEBPS/content.opf
2.77 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="5761151561-1">(</span><span·class="n">Module</span><span·class="p">,</span><span·class="n">Compiled</span><span·class="p"·data-group-id="5761151561-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="7622046720-1">(</span><span·class="n">Module</span><span·class="p">,</span><span·class="n">Compiled</span><span·class="p"·data-group-id="7622046720-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="5761151561-2">(</span><span·class="n">Module</span><span·class="p">,</span><span·class="n">Compiled</span><span·class="p"·data-group-id="5761151561-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="7622046720-2">(</span><span·class="n">Module</span><span·class="p">,</span><span·class="n">Compiled</span><span·class="p"·data-group-id="7622046720-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="5761151561-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">File</span><span·class="p"·data-group-id="5761151561-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="7622046720-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">File</span><span·class="p"·data-group-id="7622046720-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="5761151561-4">(</span><span·class="n">Module</span><span·class="p"·data-group-id="5761151561-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="7622046720-4">(</span><span·class="n">Module</span><span·class="p"·data-group-id="7622046720-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="5761151561-5">{</span><span·class="ss">loaded</span><span·class="p">,</span><span·class="n">File</span><span·class="p"·data-group-id="5761151561-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="7622046720-5">{</span><span·class="ss">loaded</span><span·class="p">,</span><span·class="n">File</span><span·class="p"·data-group-id="7622046720-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="1123424893-1">(</span><span·class="mi">0</span><span·class="p"·data-group-id="1123424893-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="5662155371-1">(</span><span·class="mi">0</span><span·class="p"·data-group-id="5662155371-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="1123424893-2">(</span><span·class="n">N</span><span·class="p"·data-group-id="1123424893-2">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="n">N</span><span·class="w">·</span><span·class="o">&gt;</span><span·c[·...·truncated·by·diffoscope;·len:·961,·SHA:·4cae4518d15fe6c81429d42319cffd8cfad1cb537018189fe00f616b803342f3·...·]-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="5662155371-2">(</span><span·class="n">N</span><span·class="p"·data-group-id="5662155371-2">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·class="n">N</span><span·class="w">·</span><span·class="o">&gt;</span><span·c[·...·truncated·by·diffoscope;·len:·961,·SHA:·726bdf0befc5fabd94729076de31598a1a719adb2217a627c426dd42ba8a36db·...·]-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="4198451617-2">(</span><span·class="p"·data-group-id="4198451617-3">[</span><span·class="ss">c_break</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="4198451617-3">]</span><span·class="p"·data-group-id="4198451617-2">)</span><span·class="p">.</span><span·class="w">213 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="2344734353-2">(</span><span·class="p"·data-group-id="2344734353-3">[</span><span·class="ss">c_break</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="2344734353-3">]</span><span·class="p"·data-group-id="2344734353-2">)</span><span·class="p">.</span><span·class="w">
  
214 </span><span·class="nf">c_break</span><span·class="p"·data-group-id="4198451617-4">(</span><span·class="n">Bindings</span><span·class="p"·data-group-id="4198451617-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="2344734353-4">(</span><span·class="n">Bindings</span><span·class="p"·data-group-id="2344734353-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="4198451617-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="4198451617-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="2344734353-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="2344734353-5">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
216 ········</span><span·class="p"·data-group-id="4198451617-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="4198451617-6">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">216 ········</span><span·class="p"·data-group-id="2344734353-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="2344734353-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="6802255473-1">{</span><span·class="ss">&#39;EXIT&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="6802255473-2">{</span><span·class="ss">badarith</span><span·class="p">,</span><span·class="p"·data-group-id="6802255473-3">[</span><span·clas[·...·truncated·by·diffoscope;·len:·507,·SHA:·0b62329ee2d0cfe1d915252d54db06e9a2218e64d33e483158f054f97805b47a·...·]-4">}</span><span·class="p">,</span><span·class="w">238 </span><span·class="p"·data-group-id="8371845564-1">{</span><span·class="ss">&#39;EXIT&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="8371845564-2">{</span><span·class="ss">badarith</span><span·class="p">,</span><span·class="p"·data-group-id="8371845564-3">[</span><span·clas[·...·truncated·by·diffoscope;·len:·507,·SHA:·2dff7c970d56fe4f4497455e42129f65f5560faace3196435e7723732fea681e·...·]-4">}</span><span·class="p">,</span><span·class="w">
239 ···················</span><span·class="p"·data-group-id="6802255473-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="6802255473-8">[</span><span·class="p"·data-group-id="6802255473-9">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="s">&quot;erl_eval.erl&quot;</span><span·class="p"·data-group-id="6802255473-9">}</span><span·class="p">,</span><span·class="p"·data-group-id="6802255473-10">{</span><span·class="ss">line</span><span·class="p">,</span><span·class="mi">573</span><span·class="p"·data-group-id="6802255473-10">}</span><span·class="p"·data-group-id="6802255473-8">]</span><span·class="p"·data-group-id="6802255473-7">}</span><span·class="p">,</span><span·class="w"> 
240 ···················</span><span·class="p"·data-group-id="6802255473-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="6802255473-12">[</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·494,·SHA:·c8dfffab75f294c444fc350771df2aca9f98ac373c986b3a362d675436a76a37·...·]">}</span><span·class="p">,</span><span·class="w">239 ···················</span><span·class="p"·data-group-id="8371845564-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="8371845564-8">[</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·492,·SHA:·7a8d3d14b1041378f8acc7cfa715baae8dbbff5727dfe7c70c7e3ff8244fbdb6·...·]">}</span><span·class="p">,</span><span·class="w">
 240 ···················</span><span·class="p"·data-group-id="8371845564-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="8371845564-12">[</span><span·class="p"·data-group-id="8371845564-13">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="s">&quot;erl_eval.erl&quot;</span><span·class="p"·data-group-id="8371845564-13">}</span><span·class="p">,</span><span·class="p"·data-group-id="8371845564-14">{</span><span·class="ss">line</span><span·class="p">,</span><span·class="mi">357</span><span·class="p"·data-group-id="8371845564-14">}</span><span·class="p"·data-group-id="8371845564-12">]</span><span·class="p"·data-group-id="8371845564-11">}</span><span·class="p">,</span><span·class="w">
241 ···················</span><span·class="p"·data-group-id="6802255473-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="6802255473-16">[</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·486,·SHA:·a8244dd36b0e9aec99d6969fd75cc9f90aad0a8d6a2935bfcbcc538f8af40a50·...·]-15">}</span><span·class="p">,</span><span·class="w">241 ···················</span><span·class="p"·data-group-id="8371845564-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="8371845564-16">[</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·486,·SHA:·798db796bef671c43817cdc8665b8e04824e239613286443e7749a26f4effeda·...·]-15">}</span><span·class="p">,</span><span·class="w">
242 ···················</span><span·class="p"·data-group-id="6802255473-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="6802255473-20">[</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·491,·SHA:·6eae9eaa2cc28d5e78aa15b86a3623867a5c6cc33afaf552588b20791b0ff93d·...·]-19">}</span><span·class="p">,</span><span·class="w">242 ···················</span><span·class="p"·data-group-id="8371845564-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="8371845564-20">[</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·491,·SHA:·eea8a39672b2413cbf876661c2462c5f9e2f4819d8f7bda685822cb58d183637·...·]-19">}</span><span·class="p">,</span><span·class="w">
243 ···················</span><span·class="p"·data-group-id="6802255473-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="6802255473-24">[</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·650,·SHA:·4b46ab508d873326d4a1610a661e246382fa5029325787189aaee4442c8bd972·...·]-1">}</span></code></pre><p>For·details·about·the·stack·trace,·see·section243 ···················</span><span·class="p"·data-group-id="8371845564-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="8371845564-24">[</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·650,·SHA:·4ec026c42eaf32d43c75c7bcb3287269ce79611731b81085665bd55412a75d87·...·]-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="3412959526-1">(</span><span·class="ss">t</span><span·class="p"·data-group-id="3412959526-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="4116721183-1">(</span><span·class="ss">t</span><span·class="p"·data-group-id="4116721183-1">)</span><span·class="p">.</span><span·class="w">
138 </span><span·class="p"·data-group-id="3412959526-2">{</span><span·class="ss">module</span><span·class="p">,</span><span·class="ss">t</span><span·class="p"·data-group-id="3412959526-2">}</span><span·class="gp·unselectable">138 </span><span·class="p"·data-group-id="4116721183-2">{</span><span·class="ss">module</span><span·class="p">,</span><span·class="ss">t</span><span·class="p"·data-group-id="4116721183-2">}</span><span·class="gp·unselectable">
139 2&gt;·</span><span·class="nf">iaa</span><span·class="p"·data-group-id="3412959526-3">(</span><span·class="p"·data-group-id="3412959526-4">[</span><span·class="ss">init</span><span·class="p"·data-group-id="3412959526-4">]</span><span·class="p"·data-group-id="3412959526-3">)</span><span·class="p">.</span><span·class="w">139 2&gt;·</span><span·class="nf">iaa</span><span·class="p"·data-group-id="4116721183-3">(</span><span·class="p"·data-group-id="4116721183-4">[</span><span·class="ss">init</span><span·class="p"·data-group-id="4116721183-4">]</span><span·class="p"·data-group-id="4116721183-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.6/doc/html/erlang.html#t:term/0">term</a>()].</pre>670 ·························Args·::·[<a·href="../../../../erts-15.2.6/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="3154395411-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="3154395411-2">[</span><span·class="n">Pid</span><sp[·...·truncated·by·diffoscope;·len:·190,·SHA:·30af932370b2cadb7c91abe30f4880c9a9813c72882812e814e0f5b4a9d8e405·...·]-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="1900937500-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="1900937500-2">[</span><span·class="n">Pid</span><sp[·...·truncated·by·diffoscope;·len:·190,·SHA:·e8e242f0ea9808fbca49ba9aeefa9fc55bf6350ed82222ac2feb6a5476f2d153·...·]-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="2321879002-1">(</span><span·class="ss">a</span><span·class="p"·data-group-id="2321879002-1">)</span><span·class="p">.</span><span·class="w">142 &gt;·</span><span·class="n">F</span><span·class="p"·data-group-id="5072499142-1">(</span><span·class="ss">a</span><span·class="p"·data-group-id="5072499142-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="2321879002-2">(</span><span·class="mi">42</span><span·class="p"·data-group-id="2321879002-2">)</span><span·class="p">.</span><span·class="w">146 4&gt;·</span><span·class="n">Id</span><span·class="p"·data-group-id="5072499142-2">(</span><span·class="mi">42</span><span·class="p"·data-group-id="5072499142-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="2321879002-3">(</span><span·class="n">I</span><span·class="p"·data-group-id="2321879002-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="5072499142-3">(</span><span·class="n">I</span><span·class="p"·data-group-id="5072499142-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="2321879002-4">(</span><span·class="mi">42</span><span·class="p"·data-group-id="2321879002-4">)</span><span·class="p">.</span><span·class="w">150 6&gt;·</span><span·class="n">Id</span><span·class="p"·data-group-id="5072499142-4">(</span><span·class="mi">42</span><span·class="p"·data-group-id="5072499142-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">
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:·66388·bytes,·number·of·entries:·13
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Apr-18·14:03·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Apr-18·15:32·mimetype
3 ?rw-r--r--··6.1·unx·····5041·bx·defN·25-Apr-18·14:03·OEBPS/typer_cmd.xhtml3 ?rw-r--r--··6.1·unx·····5041·bx·defN·25-Apr-18·15:32·OEBPS/typer_cmd.xhtml
4 ?rw-r--r--··6.1·unx······720·bx·defN·25-Apr-18·14:03·OEBPS/title.xhtml4 ?rw-r--r--··6.1·unx······720·bx·defN·25-Apr-18·15:32·OEBPS/title.xhtml
5 ?rw-r--r--··6.1·unx···125923·bx·defN·25-Apr-18·14:03·OEBPS/notes.xhtml5 ?rw-r--r--··6.1·unx···125923·bx·defN·25-Apr-18·15:32·OEBPS/notes.xhtml
6 ?rw-r--r--··6.1·unx·····1214·bx·defN·25-Apr-18·14:03·OEBPS/nav.xhtml6 ?rw-r--r--··6.1·unx·····1214·bx·defN·25-Apr-18·15:32·OEBPS/nav.xhtml
7 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Apr-18·14:03·OEBPS/dist/epub-erlang-ESPT6BQV.css7 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Apr-18·15:32·OEBPS/dist/epub-erlang-ESPT6BQV.css
8 ?rw-r--r--··6.1·unx······499·bx·defN·25-Apr-18·14:03·OEBPS/dist/epub-LSJCIYTM.js8 ?rw-r--r--··6.1·unx······499·bx·defN·25-Apr-18·15:32·OEBPS/dist/epub-LSJCIYTM.js
9 ?rw-r--r--··6.1·unx····19847·bx·defN·25-Apr-18·14:03·OEBPS/dialyzer_chapter.xhtml9 ?rw-r--r--··6.1·unx····19847·bx·defN·25-Apr-18·15:32·OEBPS/dialyzer_chapter.xhtml
10 ?rw-r--r--··6.1·unx····47575·bx·defN·25-Apr-18·14:03·OEBPS/dialyzer.xhtml10 ?rw-r--r--··6.1·unx····47575·bx·defN·25-Apr-18·15:32·OEBPS/dialyzer.xhtml
11 ?rw-r--r--··6.1·unx·····1653·bx·defN·25-Apr-18·14:03·OEBPS/content.opf11 ?rw-r--r--··6.1·unx·····1653·bx·defN·25-Apr-18·15:32·OEBPS/content.opf
12 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Apr-18·14:03·OEBPS/assets/logo.png12 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Apr-18·15:32·OEBPS/assets/logo.png
13 ?rw-r--r--··6.1·unx······252·bx·defN·25-Apr-18·14:03·META-INF/container.xml13 ?rw-r--r--··6.1·unx······252·bx·defN·25-Apr-18·15:32·META-INF/container.xml
14 ?rw-r--r--··6.1·unx······162·bx·defN·25-Apr-18·14:03·META-INF/com.apple.ibooks.display-options.xml14 ?rw-r--r--··6.1·unx······162·bx·defN·25-Apr-18·15:32·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,·64116·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,·Apr·18·2025·14:03: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,·Apr·18·2025·15:32:04,·uncompressed·size·20,·method=store
18.8 KB
OEBPS/dialyzer_chapter.xhtml
Max HTML report size reached
14.8 KB
OEBPS/dialyzer.xhtml
Max HTML report size reached
1.23 KB
OEBPS/content.opf
1.2 KB
OEBPS/content.opf
Max HTML report size reached
14.9 KB
./usr/share/doc/erlang-doc/html/lib/dialyzer-5.3.1/doc/html/dialyzer.html
    
Offset 266, 35 lines modifiedOffset 266, 35 lines modified
266 the·value·is·a·list,·it·is·used·as·is.·If·it·is·not·a·list,·it·is·put·into·a266 the·value·is·a·list,·it·is·used·as·is.·If·it·is·not·a·list,·it·is·put·into·a
267 list.</p><p>The·list·is·appended·to·any·options·given·to·<a·href="#run/1"><code·class="inline">run/1</code></a>·or·on·the·command·line.</p><p>The·list·can·be·retrieved·with·<a·href="../../../../lib/compiler-8.6.1/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.1/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.2/doc/html/filename.html#basedir/3"><code·class="inline">filename:basedir/3</code></a>.</p><p>An·example·configuration·file's·contents·might·be:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">······</span><span·class="p"·data-group-id="2691655529-1">{</span><span·class="ss">incremental</span><span·class="p">,</span><span·class="w">273 <a·href="../../../../lib/stdlib-6.2.2/doc/html/filename.html#basedir/3"><code·class="inline">filename:basedir/3</code></a>.</p><p>An·example·configuration·file's·contents·might·be:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">······</span><span·class="p"·data-group-id="7672244103-1">{</span><span·class="ss">incremental</span><span·class="p">,</span><span·class="w">
274 ········</span><span·class="p"·data-group-id="2691655529-2">{</span><span·class="ss">default_apps</span><span·class="p">,</span><span·class="p"·data-group-id="2691655529-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:·6ecb56471a715b95c83d56a2fbffb9affafd49eac63d788302f1dc8764662bca·...·]-2">}</span><span·class="p">,</span><span·class="w">274 ········</span><span·class="p"·data-group-id="7672244103-2">{</span><span·class="ss">default_apps</span><span·class="p">,</span><span·class="p"·data-group-id="7672244103-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:·82dc6de18dee509d85fe2357958dfd1699d7754880e3d3839cba00738ce30f2b·...·]-2">}</span><span·class="p">,</span><span·class="w">
275 ········</span><span·class="p"·data-group-id="2691655529-4">{</span><span·class="ss">default_warning_apps</span><span·class="p">,</span><span·class="p"·data-group-id="2691655529-5">[</span><span·class="ss">stdlib</span><span·class="p"·data-group-id="2691655529-5">]</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·11,·SHA:·e0cfa7849a5cf6c4e9d747dc95ea74655d1d0aada8c16e9b69ab522623aa51cf·...·]-4">}</span><span·class="w">275 ········</span><span·class="p"·data-group-id="7672244103-4">{</span><span·class="ss">default_warning_apps</span><span·class="p">,</span><span·class="p"·data-group-id="7672244103-5">[</span><span·class="ss">stdlib</span><span·class="p"·data-group-id="7672244103-5">]</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·11,·SHA:·3c2d91f03f6aa402fec08fe9309e7953765b836ab57b19dae3abaad57a636846·...·]-4">}</span><span·class="w">
276 ······</span><span·class="p"·data-group-id="2691655529-1">}</span><span·class="p">.</span><span·class="w">276 ······</span><span·class="p"·data-group-id="7672244103-1">}</span><span·class="p">.</span><span·class="w">
277 ······</span><span·class="p"·data-group-id="2691655529-6">{</span><span·class="ss">warnings</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2691655529-7">[</span><span·class="ss">no_improper_lists</span><span·class="p"·data-group-id="2691655529-7">]</span><span·c[·...·truncated·by·diffoscope;·len:·34,·SHA:·e93860e1bb1871f676e0cd9a20ee184193ad7e89f3fab2044a20df0c85bdd577·...·]-6">}</span><span·class="p">.</span><span·class="w">277 ······</span><span·class="p"·data-group-id="7672244103-6">{</span><span·class="ss">warnings</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7672244103-7">[</span><span·class="ss">no_improper_lists</span><span·class="p"·data-group-id="7672244103-7">]</span><span·c[·...·truncated·by·diffoscope;·len:·34,·SHA:·6f8e0a48caebf83c7e5b372d10ef8b9485ab9eaf18154c4dde60b05ae0a84761·...·]-6">}</span><span·class="p">.</span><span·class="w">
278 ······</span><span·class="p"·data-group-id="2691655529-8">{</span><span·class="ss">add_pathsa</span><span·class="p">,</span><span·class="p"·data-group-id="2691655529-9">[</span><span·class="s">&quot;/users/samwise/potatoes/ebin&quot;</span><span·class="p"·data-group-id="2691655529-9">]</span><span·class="p"·data-group-id="2691655529-8">}</span><span·class="p">.</span><span·class="w"> 
279 ······</span><span·class="p"·data-group-id="2691655529-10">{</span><span·class="ss">add_pathsz</span><span·class="p">,</span><span·class="p"·data-group-id="2691655529-11">[</span><span·class="s">&quot;/users/smeagol/fish/ebin&quot;</span><span·class="p"·data-group-id="2691655529-11">]</span><span·cl[·...·truncated·by·diffoscope;·len:·211,·SHA:·da61b6ae6a8f2e5f5c0dcedcae73cbc2f217f60cd45f4860d19a32a7b63e5312·...·]">278 ······</span><span·class="p"·data-group-id="7672244103-8">{</span><span·class="ss">add_pathsa</span><span·class="p">,</span><span·class="p"·data-group-id="7672244103-9">[</span><span·class="s">&quot;/users/samwise/potatoes/ebin&quot;</span><span·class="p"·data-group-id="7672244103-9">]</span><span·c[·...·truncated·by·diffoscope;·len:·84,·SHA:·c86ee1378686d0368e28d13d0d73689246a90e5e5456228316756ba5897617fc·...·]">
 279 ······</span><span·class="p"·data-group-id="7672244103-10">{</span><span·class="ss">add_pathsz</span><span·class="p">,</span><span·class="p"·data-group-id="7672244103-11">[</span><span·class="s">&quot;/users/smeagol/fish/ebin&quot;</span><span·class="p"·data-group-id="7672244103-11">]</span><span·class="p"·data-group-id="7672244103-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="8350554197-1">(</span><span·class="p"·data-group-id="8350554197-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:·73,·SHA:·81ddabe3bcd2fe8ca775eece7aedbe83942004ec8c4ea1c763ca730709a3d328·...·]7-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="9110761757-1">(</span><span·class="p"·data-group-id="9110761757-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:·73,·SHA:·f04bcc4c3adea6a61c28c359522a2775284c8375632c30a7c73172978724122a·...·]7-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="1683974309-1">(</span><span·class="p"·data-group-id="1683974309-2">[</span><span·class="p"·data-group-id="1683974309-3">{</span><span·class="ss">nowarn_function</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1683974309[·...·truncated·by·diffoscope;·len:·1867,·SHA:·cbbe6f5144b2ad8862f6958d19022d77b7f457062af24f771704c1448f0e9f87·...·]-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="4198408094-1">(</span><span·class="p"·data-group-id="4198408094-2">[</span><span·class="p"·data-group-id="4198408094-3">{</span><span·class="ss">nowarn_function</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4198408094[·...·truncated·by·diffoscope;·len:·1867,·SHA:·ca953d20c36e66155a4b4b04acb197dfa8364d624d32ac0e68e8f61d272effdc·...·]-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="0459700661-1">(</span><span·class="p"·data-group-id="0459700661-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-gr[·...·truncated·by·diffoscope;·len:·71,·SHA:·a5aaa4225f960e28134f57cf3bea24ae530299ee133ea620fa45c0c43c89d4b2·...·]-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="0226311843-1">(</span><span·class="p"·data-group-id="0226311843-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-gr[·...·truncated·by·diffoscope;·len:·71,·SHA:·ef3f453cf1ec112c8f4c7fab1e292513c53c2ec89a83df2c7244f42cebe64025·...·]-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="7821022738-1">(</span><span·class="nf">boolean</span><span·class="p"·data-group-id="7821022738-2">(</span><span·class="p"·data-group-id="7821022738-2">)</span><span·class="p"·data-group-id="7821022738-1">)</span><span·class="w">·</span><span·class="p">-&gt[·...·truncated·by·diffoscope;·len:·156,·SHA:·81aa478e35bdd8c1207736113fae0b750960f93b8b18387b7fbb2ad39c6962ad·...·]-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="9605794752-1">(</span><span·class="nf">boolean</span><span·class="p"·data-group-id="9605794752-2">(</span><span·class="p"·data-group-id="9605794752-2">)</span><span·class="p"·data-group-id="9605794752-1">)</span><span·class="w">·</span><span·class="p">-&gt[·...·truncated·by·diffoscope;·len:·156,·SHA:·7bacbe727553eabf04923e92aed2c638e02f70538a226cd0b7c2bf8c3b9fac24·...·]-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="7821022738-4">(</span><span·class="n">N</span><span·class="p"·data-group-id="7821022738-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="9605794752-4">(</span><span·class="n">N</span><span·class="p"·data-group-id="9605794752-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="7821022738-5">(</span><span·class="n">N</span><span·class="p"·data-group-id="7821022738-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="9605794752-5">(</span><span·class="n">N</span><span·class="p"·data-group-id="9605794752-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="1564332435-1">(</span><span·class="nf">integer</span><span·class="p"·data-group-id="1564332435-2">(</span><span·class="p"·data-group-id="1564332435-2">)</span><span·class="p"·data-group-id="1564332435-1">)</span><span·class="w">·</span><span·class="p">-&gt[·...·truncated·by·diffoscope;·len:·156,·SHA:·88cd69977d51255d3ae843e08458cdb10312810a289045c47dc8f09f12059ede·...·]-3">)</span><span·class="w">218 ··········</span><span·class="p"·data-group-id="2958765474-1">(</span><span·class="nf">integer</span><span·class="p"·data-group-id="2958765474-2">(</span><span·class="p"·data-group-id="2958765474-2">)</span><span·class="p"·data-group-id="2958765474-1">)</span><span·class="w">·</span><span·class="p">-&gt[·...·truncated·by·diffoscope;·len:·156,·SHA:·97d7603bec9896a052e3cea5b957fbf693d72b78acf472286200c866ecf799a9·...·]-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="1564332435-4">(</span><span·class="nf">boolean</span><span·class="p"·data-group-id="1564332435-5">(</span><span·class="p"·data-group-id="1564332435-5">)</span><span·class="p"·data-group-id="1564332435-4">)</span><span·class="w">·</span><span·class="p">-&gt[·...·truncated·by·diffoscope;·len:·156,·SHA:·9bd2a0bdbec84f355fdfcb5bd5f1e0329e568f10c854362897626fa32d12023d·...·]-6">)</span><span·class="w">220 ··········</span><span·class="p"·data-group-id="2958765474-4">(</span><span·class="nf">boolean</span><span·class="p"·data-group-id="2958765474-5">(</span><span·class="p"·data-group-id="2958765474-5">)</span><span·class="p"·data-group-id="2958765474-4">)</span><span·class="w">·</span><span·class="p">-&gt[·...·truncated·by·diffoscope;·len:·156,·SHA:·8dc9c243a2b1e61d60a6a9509b65ad366e051e032f46601a468efac76b404888·...·]-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="5448827164-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="5448827164-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·c[·...·truncated·by·diffoscope;·len:·139,·SHA:·2ab55030ccaf1fe2cb2182306a7f755c5d65ec49bc82557eabc61685980f03fb·...·]-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="2994505752-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="2994505752-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·c[·...·truncated·by·diffoscope;·len:·139,·SHA:·f0924c1e3740e96a0435956707c61851bc31ccc193b72bab0dd9ee36a4ab45ab·...·]-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="5448827164-3">(</span><span·class="ss">a</span><span·class="p"·data-group-id="5448827164-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="5448827164-4">&lt;&lt;</span><span·class="s">&quo[·...·truncated·by·diffoscope;·len:·57,·SHA:·c5612a41d050c72aef23dd4dca08fb0fe1b0bfc7bdf3b6252ae0e24f92b0a682·...·]-4">&gt;&gt;</span><span·class="p">;</span><span·class="w">223 </span><span·class="nf">bar</span><span·class="p"·data-group-id="2994505752-3">(</span><span·class="ss">a</span><span·class="p"·data-group-id="2994505752-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="2994505752-4">&lt;&lt;</span><span·class="s">&quo[·...·truncated·by·diffoscope;·len:·57,·SHA:·26c722c84c0f7bf6f05821ba1e44244629c3cc9a79a239f6e85d54226e9bfe60·...·]-4">&gt;&gt;</span><span·class="p">;</span><span·class="w">
224 </span><span·class="nf">bar</span><span·class="p"·data-group-id="5448827164-5">(</span><span·class="ss">b</span><span·class="p"·data-group-id="5448827164-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="5448827164-6">&lt;&lt;</span><span·class="s">&quo[·...·truncated·by·diffoscope;·len:·57,·SHA:·a090534c4b2635092c78522c2b784b30ddd3f420bf071db75d0e6b1bd8bfa049·...·]-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·are224 </span><span·class="nf">bar</span><span·class="p"·data-group-id="2994505752-5">(</span><span·class="ss">b</span><span·class="p"·data-group-id="2994505752-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="2994505752-6">&lt;&lt;</span><span·class="s">&quo[·...·truncated·by·diffoscope;·len:·57,·SHA:·a921b43949d046358c4d9e377326dd7ca1d4a120e2f21155d7fef4c4f1e5f590·...·]-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="8159809109-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="8159809109-1">)</span><span·class="w">·</span><span·class="p"[·...·truncated·by·diffoscope;·len:·211,·SHA:·1467c31ef6b54e9ba6c38e82a32f294db388b89dcabb75493b87a7a08a512a84·...·]-2">&gt;&gt;</span><span·class="w">227 ··········</span><span·class="p"·data-group-id="4192783875-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="4192783875-1">)</span><span·class="w">·</span><span·class="p"[·...·truncated·by·diffoscope;·len:·211,·SHA:·90c78bb0f199cd5663efee0ac1c04941a52174676143f5c52a33ade2d7fdbb66·...·]-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="8159809109-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="8159809109-3">)</span><span·class="w">·</span><span·class="p"[·...·truncated·by·diffoscope;·len:·159,·SHA:·47fbed3bc332a23d80e79673fd46f21be607399d2ccd0bfb899bfe998be449c4·...·]-4">)</span><span·class="w">229 ··········</span><span·class="p"·data-group-id="4192783875-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="4192783875-3">)</span><span·class="w">·</span><span·class="p"[·...·truncated·by·diffoscope;·len:·159,·SHA:·98c4f39a1c4a65e4eed139ec073e7f13b7feaa59ff77a02af21c86d75a53388d·...·]-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="9569749939-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="9569749939-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·c[·...·truncated·by·diffoscope;·len:·150,·SHA:·342e5d8728c1d658be44d4d2391a1c2e5bca867eeaf412271d6f58fdb0a765fe·...·]-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="6876635543-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="6876635543-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·c[·...·truncated·by·diffoscope;·len:·150,·SHA:·0f79b9d24eac170e20ea7d528da4115ee1b0e15b4bc4703139e6bf0523133047·...·]-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="9569749939-3">(</span><span·class="ss">b</span><span·class="p"·data-group-id="9569749939-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="6876635543-3">(</span><span·class="ss">b</span><span·class="p"·data-group-id="6876635543-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="9569749939-4">(</span><span·class="ss">c</span><span·class="p"·data-group-id="9569749939-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="6876635543-4">(</span><span·class="ss">c</span><span·class="p"·data-group-id="6876635543-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="9569749939-5">(</span><span·class="ss">d</span><span·class="p"·data-group-id="9569749939-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="6876635543-5">(</span><span·class="ss">d</span><span·class="p"·data-group-id="6876635543-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>
645 KB
./usr/share/doc/erlang-doc/html/lib/diameter-2.4.1/doc/html/diameter.epub
3.99 KB
zipinfo {}
    
Offset 1, 26 lines modifiedOffset 1, 26 lines modified
1 Zip·file·size:·143790·bytes,·number·of·entries:·241 Zip·file·size:·143786·bytes,·number·of·entries:·24
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Apr-18·14:02·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Apr-18·15:30·mimetype
3 ?rw-r--r--··6.1·unx······720·bx·defN·25-Apr-18·14:02·OEBPS/title.xhtml3 ?rw-r--r--··6.1·unx······720·bx·defN·25-Apr-18·15:30·OEBPS/title.xhtml
4 ?rw-r--r--··6.1·unx····93844·bx·defN·25-Apr-18·14:02·OEBPS/notes.xhtml4 ?rw-r--r--··6.1·unx····93844·bx·defN·25-Apr-18·15:30·OEBPS/notes.xhtml
5 ?rw-r--r--··6.1·unx·····2002·bx·defN·25-Apr-18·14:02·OEBPS/nav.xhtml5 ?rw-r--r--··6.1·unx·····2002·bx·defN·25-Apr-18·15:30·OEBPS/nav.xhtml
6 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Apr-18·14:02·OEBPS/dist/epub-erlang-ESPT6BQV.css6 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Apr-18·15:30·OEBPS/dist/epub-erlang-ESPT6BQV.css
7 ?rw-r--r--··6.1·unx······499·bx·defN·25-Apr-18·14:02·OEBPS/dist/epub-LSJCIYTM.js7 ?rw-r--r--··6.1·unx······499·bx·defN·25-Apr-18·15:30·OEBPS/dist/epub-LSJCIYTM.js
8 ?rw-r--r--··6.1·unx·····3956·bx·defN·25-Apr-18·14:02·OEBPS/diameterc_cmd.xhtml8 ?rw-r--r--··6.1·unx·····3956·bx·defN·25-Apr-18·15:30·OEBPS/diameterc_cmd.xhtml
9 ?rw-r--r--··6.1·unx······620·bx·defN·25-Apr-18·14:02·OEBPS/diameter_using.xhtml9 ?rw-r--r--··6.1·unx······620·bx·defN·25-Apr-18·15:30·OEBPS/diameter_using.xhtml
10 ?rw-r--r--··6.1·unx····13050·bx·defN·25-Apr-18·14:02·OEBPS/diameter_transport.xhtml10 ?rw-r--r--··6.1·unx····13050·bx·defN·25-Apr-18·15:30·OEBPS/diameter_transport.xhtml
11 ?rw-r--r--··6.1·unx····17167·bx·defN·25-Apr-18·14:02·OEBPS/diameter_tcp.xhtml11 ?rw-r--r--··6.1·unx····17167·bx·defN·25-Apr-18·15:30·OEBPS/diameter_tcp.xhtml
12 ?rw-r--r--··6.1·unx····43142·bx·defN·25-Apr-18·14:02·OEBPS/diameter_soc.xhtml12 ?rw-r--r--··6.1·unx····43142·bx·defN·25-Apr-18·15:30·OEBPS/diameter_soc.xhtml
13 ?rw-r--r--··6.1·unx·····2082·bx·defN·25-Apr-18·14:02·OEBPS/diameter_service.xhtml13 ?rw-r--r--··6.1·unx·····2082·bx·defN·25-Apr-18·15:30·OEBPS/diameter_service.xhtml
14 ?rw-r--r--··6.1·unx····14287·bx·defN·25-Apr-18·14:02·OEBPS/diameter_sctp.xhtml14 ?rw-r--r--··6.1·unx····14287·bx·defN·25-Apr-18·15:30·OEBPS/diameter_sctp.xhtml
15 ?rw-r--r--··6.1·unx····16021·bx·defN·25-Apr-18·14:02·OEBPS/diameter_make.xhtml15 ?rw-r--r--··6.1·unx····16021·bx·defN·25-Apr-18·15:30·OEBPS/diameter_make.xhtml
16 ?rw-r--r--··6.1·unx·····3472·bx·defN·25-Apr-18·14:02·OEBPS/diameter_intro.xhtml16 ?rw-r--r--··6.1·unx·····3472·bx·defN·25-Apr-18·15:30·OEBPS/diameter_intro.xhtml
17 ?rw-r--r--··6.1·unx······718·bx·defN·25-Apr-18·14:02·OEBPS/diameter_examples.xhtml17 ?rw-r--r--··6.1·unx······718·bx·defN·25-Apr-18·15:30·OEBPS/diameter_examples.xhtml
18 ?rw-r--r--··6.1·unx····26449·bx·defN·25-Apr-18·14:02·OEBPS/diameter_dict.xhtml18 ?rw-r--r--··6.1·unx····26449·bx·defN·25-Apr-18·15:30·OEBPS/diameter_dict.xhtml
19 ?rw-r--r--··6.1·unx····23141·bx·defN·25-Apr-18·14:02·OEBPS/diameter_codec.xhtml19 ?rw-r--r--··6.1·unx····23141·bx·defN·25-Apr-18·15:30·OEBPS/diameter_codec.xhtml
20 ?rw-r--r--··6.1·unx····51180·bx·defN·25-Apr-18·14:02·OEBPS/diameter_app.xhtml20 ?rw-r--r--··6.1·unx····51180·bx·defN·25-Apr-18·15:30·OEBPS/diameter_app.xhtml
21 ?rw-r--r--··6.1·unx···247889·bx·defN·25-Apr-18·14:02·OEBPS/diameter.xhtml21 ?rw-r--r--··6.1·unx···247889·bx·defN·25-Apr-18·15:30·OEBPS/diameter.xhtml
22 ?rw-r--r--··6.1·unx·····3430·bx·defN·25-Apr-18·14:02·OEBPS/content.opf22 ?rw-r--r--··6.1·unx·····3430·bx·defN·25-Apr-18·15:30·OEBPS/content.opf
23 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Apr-18·14:02·OEBPS/assets/logo.png23 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Apr-18·15:30·OEBPS/assets/logo.png
24 ?rw-r--r--··6.1·unx······252·bx·defN·25-Apr-18·14:02·META-INF/container.xml24 ?rw-r--r--··6.1·unx······252·bx·defN·25-Apr-18·15:30·META-INF/container.xml
25 ?rw-r--r--··6.1·unx······162·bx·defN·25-Apr-18·14:02·META-INF/com.apple.ibooks.display-options.xml25 ?rw-r--r--··6.1·unx······162·bx·defN·25-Apr-18·15:30·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,·139530·bytes·compressed:··76.1%
125 KB
zipdetails --redact --scan --utc {}
Max HTML report size reached
370 B
filetype from file(1)
    
Offset 1, 1 lines modifiedOffset 1, 1 lines modified
1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Apr·18·2025·14:02: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,·Apr·18·2025·15:30:42,·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="7380441804-1">[</span><span·class="o">&lt;</span><span·class="ss">options</span><span·class="o">&gt;</span><span·class="p"·data-group-id="7380441804-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="1093270298-1">[</span><span·class="o">&lt;</span><span·class="ss">options</span><span·class="o">&gt;</span><span·class="p"·data-group-id="1093270298-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="9719682860-1">(</samp><samp·class="s">&quot;diameter/include/diameter.hrl&quot;</samp><samp·class="p"·data-group-id="9719682860-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="4517025743-1">(</samp><samp·class="s">&quot;diameter/include/diameter.hrl&quot;</samp><samp·class="p"·data-group-id="4517025743-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="3207539228-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="3207539228-2">{</samp><samp·class="p"·[·...·truncated·by·diffoscope;·len:·24,·SHA:·b50c86c65bf39c9bd1e608aef22f2bab79fd047e43ad569d0c3de8f79ca5084e·...·]8-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="9523285898-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="9523285898-2">{</samp><samp·class="p"·[·...·truncated·by·diffoscope;·len:·24,·SHA:·c262cefdc6ba8fde0b434dbb62c237078389535c3956f6996356d4621adb25ac·...·]8-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="3207539228-3">[</samp><samp·class="o">#</samp><samp·class="ss">diameter_avp</samp><samp·class="p"·data-group-id="3207539228-4">{</samp><samp·class="p"·data-group-id="3207539228-4">}</samp><samp·class="p"·data-group-id="3207539228-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="9523285898-3">[</samp><samp·class="o">#</samp><samp·class="ss">diameter_avp</samp><samp·class="p"·data-group-id="9523285898-4">{</samp><samp·class="p"·data-group-id="9523285898-4">}</samp><samp·class="p"·data-group-id="9523285898-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="3207539228-5">(</samp><samp·class="p"·data-group-id="3207539228-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="9523285898-5">(</samp><samp·class="p"·data-group-id="9523285898-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="3207539228-6">[</samp><samp·class="n">Unsigned32</samp><samp·class="p"·data-group-id="3207539228-7">(</samp><samp·class="p"·data-group-id="3207539228-7">)</samp><samp·class="w">·</samp><samp·class="p">|</samp><samp·class="w">·</samp><samp·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·478,·SHA:·00c95bde30bc89d2d7edd54e312e786bb682792575e874ef7f1dd69e88afa1a4·...·]8-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="9523285898-6">[</samp><samp·class="n">Unsigned32</samp><samp·class="p"·data-group-id="9523285898-7">(</samp><samp·class="p"·data-group-id="9523285898-7">)</samp><samp·class="w">·</samp><samp·class="p">|</samp><samp·class="w">·</samp><samp·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·478,·SHA:·3773fa18742344cd072752cb999964e5e802bbde00d35fa510bcd4352c6e482d·...·]8-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="3207539228-11">(</samp><samp·class="p"·data-group-id="3207539228-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="9523285898-11">(</samp><samp·class="p"·data-group-id="9523285898-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="3207539228-12">(</samp><samp·class="p"·data-group-id="3207539228-12">)</samp><samp·class="p"·data-group-id="3207539228-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="9523285898-12">(</samp><samp·class="p"·data-group-id="9523285898-12">)</samp><samp·class="p"·data-group-id="9523285898-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="4084553491-1">(</span><span·class="p"·data-group-id="4084553491-2">[</span><span·class="p"·data-group-id="4084553491-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:·e39037e716bfe7e6ce90fb504c7b8318b946afccf9afc0f456736ff51f8f0a30·...·]-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="1282959763-1">(</span><span·class="p"·data-group-id="1282959763-2">[</span><span·class="p"·data-group-id="1282959763-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:·3244233381acf7ebcd755d9dc607342558fd35ea4c6fd6984cf7ac37ec06fb88·...·]-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="4084553491-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:·3a4c92da3c2a16626da27080f57825abb4090b34f229422c244a533817394525·...·]-4">)</span><span·class="p">;</span><span·class="w">233 ····</span><span·class="nf">apply</span><span·class="p"·data-group-id="1282959763-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:·7150c1fba01aab6bc2195514c52e88cbe106828d44f552787bb84d47fbe57898·...·]-4">)</span><span·class="p">;</span><span·class="w">
234 </span><span·class="nf">eval</span><span·class="p"·data-group-id="4084553491-5">(</span><span·class="p"·data-group-id="4084553491-6">[</span><span·class="p"·data-group-id="4084553491-7">[</span><span·class="n">F</span><span·class="p">|</span><span·class="n">A</span><span·class="p"·data-group-id="4084553491-7">]</span><sp[·...·truncated·by·diffoscope;·len:·187,·SHA:·095115bb15b857c458b111f3dc8eca3e571b4df82d76cae9c8f221fa636f3f5b·...·]-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="1282959763-5">(</span><span·class="p"·data-group-id="1282959763-6">[</span><span·class="p"·data-group-id="1282959763-7">[</span><span·class="n">F</span><span·class="p">|</span><span·class="n">A</span><span·class="p"·data-group-id="1282959763-7">]</span><sp[·...·truncated·by·diffoscope;·len:·187,·SHA:·265b68283eaa7acb4de90d4fe1f96888200c2878480dbae5cc36310dfda30fe0·...·]-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="4084553491-8">(</span><span·class="p"·data-group-id="4084553491-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:·28998d936475c8e89c5cdc3ec93df2250303efcc39da8f6f4519a1bb30977c86·...·]-8">)</span><span·class="p">;</span><span·class="w">235 ····</span><span·class="nf">eval</span><span·class="p"·data-group-id="1282959763-8">(</span><span·class="p"·data-group-id="1282959763-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:·db6fb525100a217a039a7b24ac264395ba2bcb4d4f2339e8494dee72bdbd1f01·...·]-8">)</span><span·class="p">;</span><span·class="w">
236 </span><span·class="nf">eval</span><span·class="p"·data-group-id="4084553491-10">(</span><span·class="p"·data-group-id="4084553491-11">[</span><span·class="n">F</span><span·class="p">|</span><span·class="n">A</span><span·class="p"·data-group-id="4084553491-11">]</span><span·class="p"·data-group-id="4084553491-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="1282959763-10">(</span><span·class="p"·data-group-id="1282959763-11">[</span><span·class="n">F</span><span·class="p">|</span><span·class="n">A</span><span·class="p"·data-group-id="1282959763-11">]</span><span·class="p"·data-group-id="1282959763-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="4084553491-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="4084553491-12">)</span><span·class="p">;</span><span·class="w">237 ····</span><span·class="nf">apply</span><span·class="p"·data-group-id="1282959763-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="1282959763-12">)</span><span·class="p">;</span><span·class="w">
238 </span><span·class="nf">eval</span><span·class="p"·data-group-id="4084553491-13">(</span><span·class="n">F</span><span·class="p"·data-group-id="4084553491-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="1282959763-13">(</span><span·class="n">F</span><span·class="p"·data-group-id="1282959763-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="4084553491-14">(</span><span·class="p"·data-group-id="4084553491-15">[</span><span·class="n">F</span><span·class="p"·data-group-id="4084553491-15">]</span><span·class="p"·data-group-id="4084553491-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="1282959763-14">(</span><span·class="p"·data-group-id="1282959763-15">[</span><span·class="n">F</span><span·class="p"·data-group-id="1282959763-15">]</span><span·class="p"·data-group-id="1282959763-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="3832872445-1">(</span><span·class="p"·data-group-id="3832872445-1">)</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="3832872445-2">{</span><span·class="ss">capabilities_cb</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·233,·SHA:·0152c076a0e52848ca6d98ad1984d5b57dddda6db1fd814016906c29407899ca·...·]-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="2409226111-1">(</span><span·class="p"·data-group-id="2409226111-1">)</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="2409226111-2">{</span><span·class="ss">capabilities_cb</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·233,·SHA:·da86e6016dcea34c1b958d30cd3debf1933340581dbfba345a29a5de2413f7cc·...·]-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="3832872445-3">{</span><span·class="p"·data-group-id="3832872445-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="2409226111-3">{</span><span·class="p"·data-group-id="2409226111-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="3832872445-4">{</span><span·class="p"·data-group-id="3832872445-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="2409226111-4">{</span><span·class="p"·data-group-id="2409226111-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="3832872445-5">(</span><span·class="p"·data-group-id="3832872445-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="2409226111-5">(</span><span·class="p"·data-group-id="2409226111-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="4565755252-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="4565755252-1">}</span><span·class="w">572 the·same)·over·TCP.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="3715409898-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="3715409898-1">}</span><span·class="w">
573 </span><span·class="p"·data-group-id="4565755252-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="45657552[·...·truncated·by·diffoscope;·len:·2,·SHA:·41cfc0d1f2d127b04555b7246d84019b4d27710a3f3aff6e7764375b1e06e05d·...·]-2">}</span><span·class="w">573 </span><span·class="p"·data-group-id="3715409898-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="37154098[·...·truncated·by·diffoscope;·len:·2,·SHA:·29db0c6782dbd5000559ef4d9e953e300e2b479eed26d887ef3f92b921c06a67·...·]-2">}</span><span·class="w">
574 </span><span·class="p"·data-group-id="4565755252-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="4565755252-3">}</span><span·class="w">574 </span><span·class="p"·data-group-id="3715409898-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="3715409898-3">}</span><span·class="w">
575 </span><span·class="p"·data-group-id="4565755252-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="4565755252-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="3715409898-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="3715409898-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.6/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.6/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="2763479787-1">(</span><span·class="nf">transport_ref</span><span·class="p"·data-group-id="2763479787-2">(</span><span·class="p"·data-group-id="2763479787-2">)</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">list</span><span·class="p"[·...·truncated·by·diffoscope;·len:·797,·SHA:·1f8cc31aeb91db386c56640ebd94add69da5a6cb310db1fe9a6661117971490f·...·]-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="9983071644-1">(</span><span·class="nf">transport_ref</span><span·class="p"·data-group-id="9983071644-2">(</span><span·class="p"·data-group-id="9983071644-2">)</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">list</span><span·class="p"[·...·truncated·by·diffoscope;·len:·797,·SHA:·337b2ec21c2d09992ab6d8c0598f02366d8fadc2db518ac8a6de664d97989d15·...·]-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="2763479787-6">(</span><span·class="nf">list</span><span·class="p"·data-group-id="2763479787-7">(</span><span·class="p"·data-group-id="2763479787-7">)</span><span·class="p"·data-group-id="2763479787-6">)</span><span·class="p">:</span><span·class="w">·······[·...·truncated·by·diffoscope;·len:·547,·SHA:·5e4cce02e0698956cabe78787d3c60c93bf187f36a39928bdd556fb544892c1b·...·]-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="9983071644-6">(</span><span·class="nf">list</span><span·class="p"·data-group-id="9983071644-7">(</span><span·class="p"·data-group-id="9983071644-7">)</span><span·class="p"·data-group-id="9983071644-6">)</span><span·class="p">:</span><span·class="w">·······[·...·truncated·by·diffoscope;·len:·547,·SHA:·68704cbee82f809f21adce24ab6b2090871adc24ca27a84a6e0beba6652356c8·...·]-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="2763479787-10">(</span><span·class="p"·data-group-id="2763479787-10">)</span><span·class="p">:</span><span·class="w">···············</span><span·class="nf">fun</span><span·class="p"·data-group-id="2763479787-11">(</span><span·class="n">Ref</span><span·clas[·...·truncated·by·diffoscope;·len:·175,·SHA:·01123b3c507bfab4c200fc41009dd0feb3aaea37a846ed07058aa3a702974094·...·]-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="9983071644-10">(</span><span·class="p"·data-group-id="9983071644-10">)</span><span·class="p">:</span><span·class="w">···············</span><span·class="nf">fun</span><span·class="p"·data-group-id="9983071644-11">(</span><span·class="n">Ref</span><span·clas[·...·truncated·by·diffoscope;·len:·175,·SHA:·16cca27c3e2fb10a2a9c097ec024118e73aea07784e45c416cd88b36addf5ff5·...·]-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="2763479787-12">(</span><span·class="p"·data-group-id="2763479787-12">)</span><span·class="p">:</span><span·class="w">························</span><span·class="nf">fun</span><span·class="p"·data-group-id="2763479787-13">(</span><span·class="p">_</span><sp[·...·truncated·by·diffoscope;·len:·369,·SHA:·75e893323daf168f11d67afc0058a6b660089eb3b7a579a20fea8913c492b6cb·...·]-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="9983071644-12">(</span><span·class="p"·data-group-id="9983071644-12">)</span><span·class="p">:</span><span·class="w">························</span><span·class="nf">fun</span><span·class="p"·data-group-id="9983071644-13">(</span><span·class="p">_</span><sp[·...·truncated·by·diffoscope;·len:·369,·SHA:·59713701497a9136959fa5221a298c23e89b8c3fb7707972d795ad4539a1f706·...·]-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="2763479787-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="2763479787-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="9983071644-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="9983071644-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="2763479787-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="2763479787-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="9983071644-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="9983071644-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="2763479787-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="2763479787-17">}</span><span·class="p">:</span><span·class="w">··</span><span·clas[·...·truncated·by·diffoscope;·len:·1025,·SHA:·94ba407ba6df8b21fb20792ee393d21b1e095bb73f20b9ecfcf34f9be2cee5d3·...·]-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="9983071644-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="9983071644-17">}</span><span·class="p">:</span><span·class="w">··</span><span·clas[·...·truncated·by·diffoscope;·len:·1025,·SHA:·e3789cf6612bbdb23a84fbc471ffee05bb2a362ac591558840c97d10b2c64639·...·]-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="4024569213-1">[</span><span·class="p"·data-group-id="4024569213-2">[</span><span·class="p"·data-group-id="4024569213-3">{</span><span·class="ss">ref</span><span·class="p">,</span><span·class="p">#</span><span·class="n">Ref</span><span·class="o">&lt;</span>[·...·truncated·by·diffoscope;·len:·147,·SHA:·95219b67136fc6a0e513ce5eb8b4ccdddfaf78690698f8b1642c064d2b651e98·...·]-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="8829606501-1">[</span><span·class="p"·data-group-id="8829606501-2">[</span><span·class="p"·data-group-id="8829606501-3">{</span><span·class="ss">ref</span><span·class="p">,</span><span·class="p">#</span><span·class="n">Ref</span><span·class="o">&lt;</span>[·...·truncated·by·diffoscope;·len:·147,·SHA:·948a228fea2816c6b6e5b5728d737348b3b9a8abf392687e8a071b70af65ca12·...·]-3">}</span><span·class="p">,</span><span·class="w">
2527 ··</span><span·class="p"·data-group-id="4024569213-4">{</span><span·class="ss">type</span><span·class="p">,</span><span·class="ss">connect</span><span·class="p"·data-group-id="4024569213-4">}</span><span·class="p">,</span><span·class="w">2527 ··</span><span·class="p"·data-group-id="8829606501-4">{</span><span·class="ss">type</span><span·class="p">,</span><span·class="ss">connect</span><span·class="p"·data-group-id="8829606501-4">}</span><span·class="p">,</span><span·class="w">
2528 ··</span><span·class="p"·data-group-id="4024569213-5">{</span><span·class="ss">options</span><span·class="p">,</span><span·class="p"·data-group-id="4024569213-6">[</span><span·class="p"·data-group-id="4024569213-7">{</span><span·class="ss">transport_module</span><span·class="p">,</span><span·class="ss">diameter_tcp</span><span·class="p"·data-group-id="4024569213-7">}</span><span·class="p">,</span><span·class="w"> 
2529 ············</span><span·class="p"·data-group-id="4024569213-8">{</span><span·class="ss">transport_config</span><span·class="p">,</span><span·class="p"·data-group-id="4024569213-9">[</span><span·class="p"·data-group-id="4024569213-10">{</span><span·class="ss[·...·truncated·by·diffoscope;·len:·361,·SHA:·bf29779366392978ff87460e9da8f57e43d2d89a95667bc1fff54c44f5e48bce·...·]">}</span><span·class="p">,</span><span·class="w">2528 ··</span><span·class="p"·data-group-id="8829606501-5">{</span><span·class="ss">options</span><span·class="p">,</span><span·class="p"·data-group-id="8829606501-6">[</span><span·class="p"·data-group-id="8829606501-7">{</span><span·class="ss">transport_module</[·...·truncated·by·diffoscope;·len:·108,·SHA:·8ca5bbedc627862fa5df51604359c118ec016e015796d37e43609b85a13404e0·...·]">}</span><span·class="p">,</span><span·class="w">
 2529 ············</span><span·class="p"·data-group-id="8829606501-8">{</span><span·class="ss">transport_config</span><span·class="p">,</span><span·class="p"·data-group-id="8829606501-9">[</span><span·class="p"·data-group-id="8829606501-10">{</span><span·class="ss">ip</span><span·class="p">,</span><span·class="p"·data-group-id="8829606501-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="8829606501-11">}</span><span·class="p"·data-group-id="8829606501-10">}</span><span·class="p">,</span><span·class="w">
2530 ·······························</span><span·class="p"·data-group-id="4024569213-12">{</span><span·class="ss">raddr</span><span·class="p">,</span><span·class="p"·data-group-id="4024569213-13">{</span><span·class="mi">127</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><[·...·truncated·by·diffoscope;·len:·143,·SHA:·debd7497ef2ff2cebee31c9bcafeca048017787fc138c3c85ef91ac9d3ca40be·...·]-12">}</span><span·class="p">,</span><span·class="w">2530 ·······························</span><span·class="p"·data-group-id="8829606501-12">{</span><span·class="ss">raddr</span><span·class="p">,</span><span·class="p"·data-group-id="8829606501-13">{</span><span·class="mi">127</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><[·...·truncated·by·diffoscope;·len:·143,·SHA:·e3fe0bc021223a8f8cfab4a0b7a5da16f742632d666bbcce1a3ea6965e6ff2df·...·]-12">}</span><span·class="p">,</span><span·class="w">
2531 ·······························</span><span·class="p"·data-group-id="4024569213-14">{</span><span·class="ss">rport</span><span·class="p">,</span><span·class="mi">3868</span><span·class="p"·data-group-id="4024569213-14">}</span><span·class="p">,</span><span·class="w">2531 ·······························</span><span·class="p"·data-group-id="8829606501-14">{</span><span·class="ss">rport</span><span·class="p">,</span><span·class="mi">3868</span><span·class="p"·data-group-id="8829606501-14">}</span><span·class="p">,</span><span·class="w">
2532 ·······························</span><span·class="p"·data-group-id="4024569213-15">{</span><span·class="ss">reuseaddr</span><span·class="p">,</span><span·class="ss">true</span><span·class="p"·data-group-id="4024569213-15">}</span><span·class="p"·data-group-id="4024569213-9">]</span><span·class="p"·data-group-id="4024569213[·...·truncated·by·diffoscope;·len:·106,·SHA:·bdfdf86368adc10197275280ea0f50341ae987a9b925a2127eefd4867ac8010e·...·]-5">}</span><span·class="p">,</span><span·class="w">2532 ·······························</span><span·class="p"·data-group-id="8829606501-15">{</span><span·class="ss">reuseaddr</span><span·class="p">,</span><span·class="ss">true</span><span·class="p"·data-group-id="8829606501-15">}</span><span·class="p"·data-group-id="8829606501-9">]</span><span·class="p"·data-group-id="8829606501[·...·truncated·by·diffoscope;·len:·106,·SHA:·d718b7eeac6c5c68c1db672525dfe0f9604a5b1d5d8eb4536cc151db0a410814·...·]-5">}</span><span·class="p">,</span><span·class="w">
2533 ··</span><span·class="p"·data-group-id="4024569213-16">{</span><span·class="ss">watchdog</span><span·class="p">,</span><span·class="p"·data-group-id="4024569213-17">{</span><span·class="o">&lt;</span><span·class="mf">0.66</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt[·...·truncated·by·diffoscope;·len:·245,·SHA:·07c3f9d84116b31b73e73c99c7d19348b731e06abcaebc757dbc6998bca46f38·...·]-16">}</span><span·class="p">,</span><span·class="w">2533 ··</span><span·class="p"·data-group-id="8829606501-16">{</span><span·class="ss">watchdog</span><span·class="p">,</span><span·class="p"·data-group-id="8829606501-17">{</span><span·class="o">&lt;</span><span·class="mf">0.66</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt[·...·truncated·by·diffoscope;·len:·245,·SHA:·a8d58e66fde5bef3d6c5ebbbef24d36dcf6d589fcdd73fc0e521e542bc92f84b·...·]-16">}</span><span·class="p">,</span><span·class="w">
2534 ··</span><span·class="p"·data-group-id="4024569213-18">{</span><span·class="ss">peer</span><span·class="p">,</span><span·class="p"·data-group-id="4024569213-19">{</span><span·class="o">&lt;</span><span·class="mf">0.67</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</s[·...·truncated·by·diffoscope;·len:·189,·SHA:·cb272dd5d28a83e681a8329c069495d303b1a80e066e6bc7694cacffe5bc0538·...·]-18">}</span><span·class="p">,</span><span·class="w">2534 ··</span><span·class="p"·data-group-id="8829606501-18">{</span><span·class="ss">peer</span><span·class="p">,</span><span·class="p"·data-group-id="8829606501-19">{</span><span·class="o">&lt;</span><span·class="mf">0.67</span><span·class="p">.</span><span·class="mi">0</span><span·class="o">&gt;</s[·...·truncated·by·diffoscope;·len:·189,·SHA:·5c9499cb6da0d7e4b06186427c8d5faf7cbcf431b37ae2e3f33e3a3455b1a446·...·]-18">}</span><span·class="p">,</span><span·class="w">
2535 ··</span><span·class="p"·data-group-id="4024569213-20">{</span><span·class="ss">apps</span><span·class="p">,</span><span·class="p"·data-group-id="4024569213-21">[</span><span·class="p"·data-group-id="4024569213-22">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="ss">common<[·...·truncated·by·diffoscope;·len:·155,·SHA:·4b2118062f822f6ecbd0346cdcf8c8a0beea140e358b3d071d040c8febafcd08·...·]-20">}</span><span·class="p">,</span><span·class="w">2535 ··</span><span·class="p"·data-group-id="8829606501-20">{</span><span·class="ss">apps</span><span·class="p">,</span><span·class="p"·data-group-id="8829606501-21">[</span><span·class="p"·data-group-id="8829606501-22">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="ss">common<[·...·truncated·by·diffoscope;·len:·155,·SHA:·32068b66d3040cead337178dc5a57928ae56c9868bfc068a6e38f22c70a95a5b·...·]-20">}</span><span·class="p">,</span><span·class="w">
2536 ··</span><span·class="p"·data-group-id="4024569213-23">{</span><span·class="ss">caps</span><span·class="p">,</span><span·class="p"·data-group-id="4024569213-24">[</span><span·class="p"·data-group-id="4024569213-25">{</span><span·class="ss">origin_host</span><span·class="p">,</span><span·class="p"·data-group-id="4024569213-26">{</span><span·class="s">&quot;client.example.com&quot;</span><span·class="p">,</span><span·class="s">&quot;server.example.com&quot;</span><span·class="p"·data-group-id="4024569213-26">}</span><span·class="p"·data-group-id="4024569213-25">}</span><span·class="p">,</span><span·class="w"> 
2537 ·········</span><span·class="p"·data-group-id="4024569213-27">{</span><span·class="ss">origin_realm</span><span·class="p">,</span><span·class="p"·data-group-id="4024569213-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="4024569213-28">}</span><span·class="p"·data-group-id="4024569213-27">}</span><span·class="p">,</span><span·class="w"> 
2538 ·········</span><span·class="p"·data-group-id="4024569213-29">{</span><span·class="ss">host_ip_address</span><span·class="p">,</span><span·class="p"·data-group-id="4024569213-30">{</span><span·class="p"·data-group-id="4024569213-31">[</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·831,·SHA:·d135a4ca9732fe359e91263abef1ceb10444cb433fa424f13437e7850d6868fe·...·]">}</span><span·class="p">,</span><span·class="w">2536 ··</span><span·class="p"·data-group-id="8829606501-23">{</span><span·class="ss">caps</span><span·class="p">,</span><span·class="p"·data-group-id="8829606501-24">[</span><span·class="p"·data-group-id="8829606501-25">{</span><span·class="ss">origin_host</span>[·...·truncated·by·diffoscope;·len:·306,·SHA:·29ca000d4c6fe8ba9586299ae65c635ebe203f64d8d575d4cef9e18e7fcfbbaf·...·]">}</span><span·class="p">,</span><span·class="w">
 2537 ·········</span><span·class="p"·data-group-id="8829606501-27">{</span><span·class="ss">origin_realm</span><span·class="p">,</span><span·class="p"·data-group-id="8829606501-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="8829606501-28">}</span><span·class="p"·data-group-id="8829606501-27">}</span><span·class="p">,</span><span·class="w">
 2538 ·········</span><span·class="p"·data-group-id="8829606501-29">{</span><span·class="ss">host_ip_address</span><span·class="p">,</span><span·class="p"·data-group-id="8829606501-30">{</span><span·class="p"·data-group-id="8829606501-31">[</span><span·class="p"·data-group-id="8829606501-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="8829606501-32">}</span><span·class="p"·data-group-id="8829606501-31">]</span><span·class="p">,</span><span·class="p"·data-group-id="8829606501-33">[</span><span·class="p"·data-group-id="8829606501-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="8829606501-34">}</span><span·class="p"·data-group-id="8829606501-33">]</span><span·class="p"·data-group-id="8829606501-30">}</span><span·class="p"·data-group-id="8829606501-29">}</span><span·class="p">,</span><span·class="w">
2539 ·········</span><span·class="p"·data-group-id="4024569213-35">{</span><span·class="ss">vendor_id</span><span·class="p">,</span><span·class="p"·data-group-id="4024569213-36">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">193</span><span·class="p"·data-group-id="4024569213-36">[·...·truncated·by·diffoscope;·len:·49,·SHA:·681374bf637c039adc47a5316890cfee6636e6c6959b7a23d0828513c1549f6f·...·]-35">}</span><span·class="p">,</span><span·class="w">2539 ·········</span><span·class="p"·data-group-id="8829606501-35">{</span><span·class="ss">vendor_id</span><span·class="p">,</span><span·class="p"·data-group-id="8829606501-36">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">193</span><span·class="p"·data-group-id="8829606501-36">[·...·truncated·by·diffoscope;·len:·49,·SHA:·ccf6727ad2e56c44885751d3e5d774e4230091294dca3d40512548ab9446ea41·...·]-35">}</span><span·class="p">,</span><span·class="w">
2540 ·········</span><span·class="p"·data-group-id="4024569213-37">{</span><span·class="ss">product_name</span><span·class="p">,</span><span·class="p"·data-group-id="4024569213-38">{</span><span·class="s">&quot;Client&quot;</span><span·class="p">,</span><span·class="s">&quot;Server&quot;</span><span·class="[·...·truncated·by·diffoscope;·len:·82,·SHA:·bcfebb62fe5bff86fddf753473254ca9217c23e2ee48c4f9813c8b1d8fe71923·...·]-37">}</span><span·class="p">,</span><span·class="w">2540 ·········</span><span·class="p"·data-group-id="8829606501-37">{</span><span·class="ss">product_name</span><span·class="p">,</span><span·class="p"·data-group-id="8829606501-38">{</span><span·class="s">&quot;Client&quot;</span><span·class="p">,</span><span·class="s">&quot;Server&quot;</span><span·class="[·...·truncated·by·diffoscope;·len:·82,·SHA:·e2e4f2ce79e6c8221f79a7eb19b94bf953a060da9b960a1b54e7c71007747326·...·]-37">}</span><span·class="p">,</span><span·class="w">
2541 ·········</span><span·class="p"·data-group-id="4024569213-39">{</span><span·class="ss">origin_state_id</span><span·class="p">,</span><span·class="p"·data-group-id="4024569213-40">{</span><span·class="p"·data-group-id="4024569213-41">[</span><span·class="p"·data-group-id="4024569213-41">]</span><span·class="p">,</span><span·class="p"·data-group-id="4024569213-42">[</span><span·class="p"·data-group-id="4024569213-42">]</span><span·class="p"·data-group-id="4024569213-40">}</span><span·class="p"·data-group-id="4024569213-39">}</span><span·class="p">,</span><span·class="w"> 
2542 ·········</span><span·class="p"·data-group-id="4024569213-43">{</span><span·class="ss">supported_vendor_id</span><span·class="p">,</span><span·class="p"·data-group-id="4024569213-44">{</span><span·class="p"·data-group-id="4024569213-45">[</span><span·class="p"·data-group-id="4024569213-45">]</span><span·class="p">,</span><span·class="p"·data-group-id="4024569213-46">[</span><span·class="p"·data-group-id="4024569213-46">]</span><span·class="p"·data-group-id="4024569213-44">}</span><span·class="p"·data-group-id="4024569213-43">}</span><span·class="p">,</span><span·class="w"> 
2543 ·········</span><span·class="p"·data-group-id="4024569213-47">{</span><span·class="ss">auth_application_id</span><span·class="p">,</span><span·class="p"·data-group-id="4024569213-48">{</span><span·class="p"·data-group-id="4024569213-49">[</span><span·class="mi">0</span><span·class="p"·data-group-id="4024569213-49">]</span><span·class="p">,</span><span·class="p"·data-group-id="4024569213-50">[</span><span·class="mi">0</span><span·class="p"·data-group-id="4024569213-50">]</span><span·class="p"·data-group-id="4024569213-48">}</span><span·class="p"·data-group-id="4024569213-47">}</span><span·class="p">,</span><span·class="w"> 
2544 ·········</span><span·class="p"·data-group-id="4024569213-51">{</span><span·class="ss">inband_security_id</span><span·class="p">,</span><span·class="p"·data-group-id="4024569213-52">{</span><span·class="p"·data-group-id="4024569213-53">[</span><span·class="p"·data-group-id="4024569213-53">]</span><span[·...·truncated·by·diffoscope;·len:·250,·SHA:·e9116a79bafd5e7d4d6eff485cbee13d12655114beeb14614d41047c7e9997cc·...·]">}</span><span·class="p">,</span><span·class="w">2541 ·········</span><span·class="p"·data-group-id="8829606501-39">{</span><span·class="ss">origin_state_id</span><span·class="p">,</span><span·class="p"·data-group-id="8829606501-40">{</span><span·class="p"·data-group-id="8829606501-41">[</span><span·class="p"·data-group-id="8829606501-41">]</span><span·cl[·...·truncated·by·diffoscope;·len:·222,·SHA:·f93603eb59891456c96f6658e38a24f28681a7534b1582eb7d365f7bf9bb2086·...·]">}</span><span·class="p">,</span><span·class="w">
 2542 ·········</span><span·class="p"·data-group-id="8829606501-43">{</span><span·class="ss">supported_vendor_id</span><span·class="p">,</span><span·class="p"·data-group-id="8829606501-44">{</span><span·class="p"·data-group-id="8829606501-45">[</span><span·class="p"·data-group-id="8829606501-45">]</span><span·class="p">,</span><span·class="p"·data-group-id="8829606501-46">[</span><span·class="p"·data-group-id="8829606501-46">]</span><span·class="p"·data-group-id="8829606501-44">}</span><span·class="p"·data-group-id="8829606501-43">}</span><span·class="p">,</span><span·class="w">
 2543 ·········</span><span·class="p"·data-group-id="8829606501-47">{</span><span·class="ss">auth_application_id</span><span·class="p">,</span><span·class="p"·data-group-id="8829606501-48">{</span><span·class="p"·data-group-id="8829606501-49">[</span><span·class="mi">0</span><span·class="p"·data-group-id="8829606501-49">]</span><span·class="p">,</span><span·class="p"·data-group-id="8829606501-50">[</span><span·class="mi">0</span><span·class="p"·data-group-id="8829606501-50">]</span><span·class="p"·data-group-id="8829606501-48">}</span><span·class="p"·data-group-id="8829606501-47">}</span><span·class="p">,</span><span·class="w">
 2544 ·········</span><span·class="p"·data-group-id="8829606501-51">{</span><span·class="ss">inband_security_id</span><span·class="p">,</span><span·class="p"·data-group-id="8829606501-52">{</span><span·class="p"·data-group-id="8829606501-53">[</span><span·class="p"·data-group-id="8829606501-53">]</span><span·class="p">,</span><span·class="p"·data-group-id="8829606501-54">[</span><span·class="mi">0</span><span·class="p"·data-group-id="8829606501-54">]</span><span·class="p"·data-group-id="8829606501-52">}</span><span·class="p"·data-group-id="8829606501-51">}</span><span·class="p">,</span><span·class="w">
2545 ·········</span><span·class="p"·data-group-id="4024569213-55">{</span><span·class="ss">acct_application_id</span><span·class="p">,</span><span·class="p"·data-group-id="4024569213-56">{</span><span·class="p"·data-group-id="4024569213-57">[</span><span·class="p"·data-group-id="4024569213-57">]</span><spa[·...·truncated·by·diffoscope;·len:·223,·SHA:·6fd57293e1c37a02dda5058490aadc248e443c37e490721634dad30d566b5ee3·...·]-55">}</span><span·class="p">,</span><span·class="w">2545 ·········</span><span·class="p"·data-group-id="8829606501-55">{</span><span·class="ss">acct_application_id</span><span·class="p">,</span><span·class="p"·data-group-id="8829606501-56">{</span><span·class="p"·data-group-id="8829606501-57">[</span><span·class="p"·data-group-id="8829606501-57">]</span><spa[·...·truncated·by·diffoscope;·len:·223,·SHA:·19c79940bbdafaa1d9ec06b71f0967fd8422933db5fc6b91dd8bf7a72cb1626e·...·]-55">}</span><span·class="p">,</span><span·class="w">
2546 ·········</span><span·class="p"·data-group-id="4024569213-59">{</span><span·class="ss">vendor_specific_application_id</span><span·class="p">,</span><span·class="p"·data-group-id="4024569213-60">{</span><span·class="p"·data-group-id="4024569213-61">[</span><span·class="p"·data-group-id="4024569213-61">][·...·truncated·by·diffoscope;·len:·234,·SHA:·964a58e49c4643c2d3e6f1724137a7ce5a0cd3867ac3c2f9216b1d0182dff9cf·...·]-59">}</span><span·class="p">,</span><span·class="w">2546 ·········</span><span·class="p"·data-group-id="8829606501-59">{</span><span·class="ss">vendor_specific_application_id</span><span·class="p">,</span><span·class="p"·data-group-id="8829606501-60">{</span><span·class="p"·data-group-id="8829606501-61">[</span><span·class="p"·data-group-id="8829606501-61">][·...·truncated·by·diffoscope;·len:·234,·SHA:·581b4c459636289ee82188c0cf600216f53d8b1807395841149a1231430a81df·...·]-59">}</span><span·class="p">,</span><span·class="w">
2547 ·········</span><span·class="p"·data-group-id="4024569213-63">{</span><span·class="ss">firmware_revision</span><span·class="p">,</span><span·class="p"·data-group-id="4024569213-64">{</span><span·class="p"·data-group-id="4024569213-65">[</span><span·class="p"·data-group-id="4024569213-65">]</span><span·class="p">,</span><span·class="p"·data-group-id="4024569213-66">[</span><span·class="p"·data-group-id="4024569213-66">]</span><span·class="p"·data-group-id="4024569213-64">}</span><span·class="p"·data-group-id="4024569213-63">}</span><span·class="p">,</span><span·class="w"> 
2548 ·········</span><span·class="p"·data-group-id="4024569213-67">{</span><span·class="ss">avp</span><span·class="p">,</span><span·class="p"·data-group-id="4024569213-68">{</span><span·class="p"·data-group-id="4024569213-69">[</span><span·class="p"·data-group-id="4024569213-69">]</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·317,·SHA:·ffe3a70440a7d90412174c80ee25515783445ee20a3a09181218ed05619d742b·...·]3">}</span><span·class="p">,</span><span·class="w">2547 ·········</span><span·class="p"·data-group-id="8829606501-63">{</span><span·class="ss">firmware_revision</span><span·class="p">,</span><span·class="p"·data-group-id="8829606501-64">{</span><span·class="p"·data-group-id="8829606501-65">[</span><span·class="p"·data-group-id="8829606501-65">]</span><span·[·...·truncated·by·diffoscope;·len:·223,·SHA:·184ed201cca75b25a88152568104d07ed3a7e73e1ad326c4205ea1a7d45e254b·...·]3">}</span><span·class="p">,</span><span·class="w">
 2548 ·········</span><span·class="p"·data-group-id="8829606501-67">{</span><span·class="ss">avp</span><span·class="p">,</span><span·class="p"·data-group-id="8829606501-68">{</span><span·class="p"·data-group-id="8829606501-69">[</span><span·class="p"·data-group-id="8829606501-69">]</span><span·class="p">,</span><span·class="p"·data-group-id="8829606501-70">[</span><span·class="p"·data-group-id="8829606501-70">]</span><span·class="p"·data-group-id="8829606501-68">}</span><span·class="p"·data-group-id="8829606501-67">}</span><span·class="p"·data-group-id="8829606501-24">]</span><span·class="p"·data-group-id="8829606501-23">}</span><span·class="p">,</span><span·class="w">
2549 ··</span><span·class="p"·data-group-id="4024569213-71">{</span><span·class="ss">port</span><span·class="p">,</span><span·class="p"·data-group-id="4024569213-72">[</span><span·class="p"·data-group-id="4024569213-73">{</span><span·class="ss">owner</span><span·class="p">,</span><span·class="o">&lt;[·...·truncated·by·diffoscope;·len:·152,·SHA:·3345b85aee004bfe8a7cdf4cdc8af0999626bb0f2f8585ce17118fbc47b19936·...·]-73">}</span><span·class="p">,</span><span·class="w">2549 ··</span><span·class="p"·data-group-id="8829606501-71">{</span><span·class="ss">port</span><span·class="p">,</span><span·class="p"·data-group-id="8829606501-72">[</span><span·class="p"·data-group-id="8829606501-73">{</span><span·class="ss">owner</span><span·class="p">,</span><span·class="o">&lt;[·...·truncated·by·diffoscope;·len:·152,·SHA:·13a2af4bed1aca24d6ab3c993fe73af747207822f524e1dabfe59b989f5945fa·...·]-73">}</span><span·class="p">,</span><span·class="w">
2550 ·········</span><span·class="p"·data-group-id="4024569213-74">{</span><span·class="ss">module</span><span·class="p">,</span><span·class="ss">diameter_tcp</span><span·class="p"·data-group-id="4024569213-74">}</span><span·class="p">,</span><span·class="w">2550 ·········</span><span·class="p"·data-group-id="8829606501-74">{</span><span·class="ss">module</span><span·class="p">,</span><span·class="ss">diameter_tcp</span><span·class="p"·data-group-id="8829606501-74">}</span><span·class="p">,</span><span·class="w">
2551 ·········</span><span·class="p"·data-group-id="4024569213-75">{</span><span·class="ss">socket</span><span·class="p">,</span><span·class="p"·data-group-id="4024569213-76">{</span><span·class="p"·data-group-id="4024569213-77">{</span><span·class="mi">127</span><span·class="p">,</span><span·class="mi">0</[·...·truncated·by·diffoscope;·len:·305,·SHA:·90d6737ecece0da34a96a45646273576bef38fd359e5f6f83683ae4f7e329281·...·]-75">}</span><span·class="p">,</span><span·class="w">2551 ·········</span><span·class="p"·data-group-id="8829606501-75">{</span><span·class="ss">socket</span><span·class="p">,</span><span·class="p"·data-group-id="8829606501-76">{</span><span·class="p"·data-group-id="8829606501-77">{</span><span·class="mi">127</span><span·class="p">,</span><span·class="mi">0</[·...·truncated·by·diffoscope;·len:·305,·SHA:·b6e685b3fe537788607602b5034fbcfc11a7dcab881ba949e1a4a6720e24f671·...·]-75">}</span><span·class="p">,</span><span·class="w">
2552 ·········</span><span·class="p"·data-group-id="4024569213-78">{</span><span·class="ss">peer</span><span·class="p">,</span><span·class="p"·data-group-id="4024569213-79">{</span><span·class="p"·data-group-id="4024569213-80">{</span><span·class="mi">127</span><span·class="p">,</span><span·class="mi">0</sp[·...·truncated·by·diffoscope;·len:·302,·SHA:·e564d15e5e0030865a02a23d3ec0877630bbad5e55236be90bad87dcae07e034·...·]-78">}</span><span·class="p">,</span><span·class="w">2552 ·········</span><span·class="p"·data-group-id="8829606501-78">{</span><span·class="ss">peer</span><span·class="p">,</span><span·class="p"·data-group-id="8829606501-79">{</span><span·class="p"·data-group-id="8829606501-80">{</span><span·class="mi">127</span><span·class="p">,</span><span·class="mi">0</sp[·...·truncated·by·diffoscope;·len:·302,·SHA:·7de7f5439de57cc748ba1d56d98bdee25e1132d167a6b4f8f9782769f89ca87c·...·]-78">}</span><span·class="p">,</span><span·class="w">
2553 ·········</span><span·class="p"·data-group-id="4024569213-81">{</span><span·class="nb">statistics</span><span·class="p">,</span><span·class="p"·data-group-id="4024569213-82">[</span><span·class="p"·data-group-id="4024569213-83">{</span><span·class="ss">recv_oct</span><span·class="p">,</span><span·class[·...·truncated·by·diffoscope;·len:·57,·SHA:·6401650d263cf5a4165e95a124f0d23aa73e457a188acf142e0c2f18590afc47·...·]-83">}</span><span·class="p">,</span><span·class="w">2553 ·········</span><span·class="p"·data-group-id="8829606501-81">{</span><span·class="nb">statistics</span><span·class="p">,</span><span·class="p"·data-group-id="8829606501-82">[</span><span·class="p"·data-group-id="8829606501-83">{</span><span·class="ss">recv_oct</span><span·class="p">,</span><span·class[·...·truncated·by·diffoscope;·len:·57,·SHA:·6213ecff7f7820babb9120394ab300eb916b768205e6699889c3b6fe168361fc·...·]-83">}</span><span·class="p">,</span><span·class="w">
2554 ······················</span><span·class="p"·data-group-id="4024569213-84">{</span><span·class="ss">recv_cnt</span><span·class="p">,</span><span·class="mi">6</span><span·class="p"·data-group-id="4024569213-84">}</span><span·class="p">,</span><span·class="w">2554 ······················</span><span·class="p"·data-group-id="8829606501-84">{</span><span·class="ss">recv_cnt</span><span·class="p">,</span><span·class="mi">6</span><span·class="p"·data-group-id="8829606501-84">}</span><span·class="p">,</span><span·class="w">
2555 ······················</span><span·class="p"·data-group-id="4024569213-85">{</span><span·class="ss">recv_max</span><span·class="p">,</span><span·class="mi">148</span><span·class="p"·data-group-id="4024569213-85">}</span><span·class="p">,</span><span·class="w">2555 ······················</span><span·class="p"·data-group-id="8829606501-85">{</span><span·class="ss">recv_max</span><span·class="p">,</span><span·class="mi">148</span><span·class="p"·data-group-id="8829606501-85">}</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="9731047773-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="9731047773-2">{</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·24,·SHA:·befb31136219ade0ba59d21ebeaf66e92a075dbac837fd3a95267be9fd8f0c7a·...·]3-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="6870617033-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="6870617033-2">{</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·24,·SHA:·17cd268a3b3645df2f3596ec4ccc12f5bcd0d0b071a5832fee2174729e1b7248·...·]3-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="9731047773-3">[</span><span·class="o">#</span><span·class="ss">diameter_avp</span><span·class="p"·data-group-id="9731047773-4">{</span><span·class="p"·data-group-id="9731047773-4">}</span><span·class="p"·data-group-id="9731047773-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="6870617033-3">[</span><span·class="o">#</span><span·class="ss">diameter_avp</span><span·class="p"·data-group-id="6870617033-4">{</span><span·class="p"·data-group-id="6870617033-4">}</span><span·class="p"·data-group-id="6870617033-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="9731047773-5">(</span><span·class="p"·data-group-id="9731047773-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="6870617033-5">(</span><span·class="p"·data-group-id="6870617033-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="9731047773-6">[</span><span·class="n">Unsigned32</span><span·class="p"·data-group-id="9731047773-7">(</span><span·class="p"·data-group-id="9731047773-7">)</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·478,·SHA:·e761628bedd439215eb75984c88494d4810e4ae616b948c4ef98aa805e43467f·...·]3-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="6870617033-6">[</span><span·class="n">Unsigned32</span><span·class="p"·data-group-id="6870617033-7">(</span><span·class="p"·data-group-id="6870617033-7">)</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·478,·SHA:·685c1e1da04125be5442cc9d5e9051a45cd28da4e1958853673a2740dc0ee118·...·]3-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="9731047773-11">(</span><span·class="p"·data-group-id="9731047773-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="6870617033-11">(</span><span·class="p"·data-group-id="6870617033-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="9731047773-12">(</span><span·class="p"·data-group-id="9731047773-12">)</span><span·class="p"·data-group-id="9731047773-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="6870617033-12">(</span><span·class="p"·data-group-id="6870617033-12">)</span><span·class="p"·data-group-id="6870617033-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="9630945752-1">(</span><span·class="s">&quot;diameter/include/diameter.hrl&quot;</span><span·class="p"·data-group-id="9630945752-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="4555868140-1">(</span><span·class="s">&quot;diameter/include/diameter.hrl&quot;</span><span·class="p"·data-group-id="4555868140-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="3218445024-1">(</span><span·class="p"·data-group-id="3218445024-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="3218445024-2">(</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·223,·SHA:·6ff294755f4a0d1410c867f0c56b9dfcedfe075dd13c464c1a3e135985d27700·...·]-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="7674127213-1">(</span><span·class="p"·data-group-id="7674127213-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="7674127213-2">(</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·223,·SHA:·df3db6557bf98f221adec547f15a61c7db227fe32b97c1fd6ec2213bbcd6a8a9·...·]-3">)</span><span·class="w">
313 </span><span·class="n">Integer32</span><span·class="p"·data-group-id="3218445024-4">(</span><span·class="p"·data-group-id="3218445024-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="7674127213-4">(</span><span·class="p"·data-group-id="7674127213-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="3218445024-5">(</span><span·class="p"·data-group-id="3218445024-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="7674127213-5">(</span><span·class="p"·data-group-id="7674127213-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="3218445024-6">(</span><span·class="p"·data-group-id="3218445024-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="7674127213-6">(</span><span·class="p"·data-group-id="7674127213-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="3218445024-7">(</span><span·class="p"·data-group-id="3218445024-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="7674127213-7">(</span><span·class="p"·data-group-id="7674127213-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="3218445024-8">(</span><span·class="p"·data-group-id="3218445024-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:·0254d4fd270e909743464a4d271eab7f6bf4b19eb77e06bf64c41dc1b1aef15f·...·]-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="7674127213-8">(</span><span·class="p"·data-group-id="7674127213-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:·e2b58d0325f6006de76ee722bf1889f286db551cd5a6c3d79e23aada52c877f7·...·]-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="3218445024-10">(</span><span·class="p"·data-group-id="3218445024-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:·4b8bad7157e7385a31b15e19e28072b3cb61e90157f8064308621edfc913152c·...·]-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="7674127213-10">(</span><span·class="p"·data-group-id="7674127213-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:·b33e4def3860e25adfeaf093732a00258a0da8c0401af4c3d9806b807d5af63b·...·]-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="3218445024-12">(</span><span·class="p"·data-group-id="3218445024-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="3218445024-13">(</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·3c09e472bc61df2488c22f920698842cc4fbdef9300cade15ebf7bb4dd679628·...·]-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="7674127213-12">(</span><span·class="p"·data-group-id="7674127213-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="7674127213-13">(</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·52d6126549b137435e8311038696dfc80db55435b45c61383d55be02d63f5f11·...·]-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="4547883901-1">(</span><span·class="p"·data-group-id="4547883901-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="4547883901-2">{</span><span·class="nf">date</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·301,·SHA:·872b414ef4e6e574de34f52034435d757386c17ff83c059b96cf583dd27aba84·...·]-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="8207262849-1">(</span><span·class="p"·data-group-id="8207262849-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="8207262849-2">{</span><span·class="nf">date</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·301,·SHA:·fe37eb9daac9684461ed7750afd761b1a4430faa2c689d747a4b8cea76be78ff·...·]-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="4547883901-5">(</span><span·class="p"·data-group-id="4547883901-5">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="4547883901-6">{</span><span·class="n">Year</span><span·class="p">,</span><span[·...·truncated·by·diffoscope;·len:·162,·SHA:·152ed5c4fd0a96f090a81b34bd3aa0573ea24958b2cbb009a623158d511065c0·...·]-6">}</span><span·class="w">329 ··</span><span·class="nf">date</span><span·class="p"·data-group-id="8207262849-5">(</span><span·class="p"·data-group-id="8207262849-5">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="8207262849-6">{</span><span·class="n">Year</span><span·class="p">,</span><span[·...·truncated·by·diffoscope;·len:·162,·SHA:·dac36cc149d02d123bd07d17d093f0520d4bc9d56cffa24c899b019ec9bd99a6·...·]-6">}</span><span·class="w">
330 ··</span><span·class="nf">time</span><span·class="p"·data-group-id="4547883901-7">(</span><span·class="p"·data-group-id="4547883901-7">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="4547883901-8">{</span><span·class="n">Hour</span><span·class="p">,</span><span[·...·truncated·by·diffoscope;·len:·166,·SHA:·81011d26d57987058a54f0cbee0d07f81539f1693baf68b5bff517a088a87b00·...·]-8">}</span><span·class="w">330 ··</span><span·class="nf">time</span><span·class="p"·data-group-id="8207262849-7">(</span><span·class="p"·data-group-id="8207262849-7">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="8207262849-8">{</span><span·class="n">Hour</span><span·class="p">,</span><span[·...·truncated·by·diffoscope;·len:·166,·SHA:·a89c45bd5230aa410fb139f69195eb961be78cc0566ab4b9a231752a64a61bd5·...·]-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="4547883901-9">(</span><span·class="p"·data-group-id="4547883901-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="8207262849-9">(</span><span·class="p"·data-group-id="8207262849-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="6104186644-1">(</span><span·class="p"·data-group-id="6104186644-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="6104186644-2">(</span><span·class="p"·data-group-id="6104186644-2">)</span><span·class="w"> 
363 </span><span·class="n">QoSFilterRule</span><span·class="p"·data-group-id="6104186644-3">(</span><span·class="p"·data-group-id="6104186644-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:·67da0d64e7f002e172eb29a4062da745e5c87dd7deb49ed5740820ee3cb133a6·...·]">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="5830787159-1">(</span><span·class="p"·data-group-id="5[·...·truncated·by·diffoscope;·len:·248,·SHA:·a435237560a7f700038e9cfd8c008a8923ebcfdeb07dae505a30e37926d6eb6f·...·]">
 363 </span><span·class="n">QoSFilterRule</span><span·class="p"·data-group-id="5830787159-3">(</span><span·class="p"·data-group-id="5830787159-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="5830787159-4">(</span><span·class="p"·data-group-id="5830787159-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="1559664238-1">[</span><span·class="o">&lt;</span><span·class="ss">options</span><span·class="o">&gt;</span><span·class="p"·data-group-id="1559664238-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="5143699645-1">[</span><span·class="o">&lt;</span><span·class="ss">options</span><span·class="o">&gt;</span><span·class="p"·data-group-id="5143699645-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="2971268564-1">(</span><span·class="ss">example</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2971268564-2">[</span><span·class="p"·data-group-id="2971268564-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="2971268564-3">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2971268564-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="2971268564-4">}</span><span·class="p">,</span><span·class="w"> 
129 ·······</span><span·class="p"·data-group-id="2971268564-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="2971268564-5">}</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·603,·SHA:·ca3d3553a62dc574c10057874e9361f927951b4a54a2585566820f1dd9a4a959·...·]>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:·73114aea3f39b456678083dc8fd791c3edf38bc75f1ac5720f076d6e6395435f·...·]>
 129 ·······</span><span·class="p"·data-group-id="7393890583-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="7393890583-5">}</span><span·class="p"·data-group-id="7393890583-2">]</span><span·class="p"·data-group-id="7393890583-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">
590 B
./usr/share/doc/erlang-doc/html/lib/eldap-1.2.14/doc/html/.build
    
Offset 14, 13 lines modifiedOffset 14, 13 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-64896945.js21 dist/search_data-4C9C58FE.js
22 dist/sidebar_items-6C979BC1.js22 dist/sidebar_items-6C979BC1.js
23 eldap.html23 eldap.html
24 index.html24 index.html
25 notes.html25 notes.html
26 search.html26 search.html
70.2 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:·33099·bytes,·number·of·entries:·111 Zip·file·size:·33099·bytes,·number·of·entries:·11
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Apr-18·14:02·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Apr-18·15:31·mimetype
3 ?rw-r--r--··6.1·unx······716·bx·defN·25-Apr-18·14:02·OEBPS/title.xhtml3 ?rw-r--r--··6.1·unx······716·bx·defN·25-Apr-18·15:31·OEBPS/title.xhtml
4 ?rw-r--r--··6.1·unx····19167·bx·defN·25-Apr-18·14:02·OEBPS/notes.xhtml4 ?rw-r--r--··6.1·unx····19167·bx·defN·25-Apr-18·15:31·OEBPS/notes.xhtml
5 ?rw-r--r--··6.1·unx······936·bx·defN·25-Apr-18·14:02·OEBPS/nav.xhtml5 ?rw-r--r--··6.1·unx······936·bx·defN·25-Apr-18·15:31·OEBPS/nav.xhtml
6 ?rw-r--r--··6.1·unx····88626·bx·defN·25-Apr-18·14:02·OEBPS/eldap.xhtml6 ?rw-r--r--··6.1·unx····88626·bx·defN·25-Apr-18·15:31·OEBPS/eldap.xhtml
7 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Apr-18·14:02·OEBPS/dist/epub-erlang-ESPT6BQV.css7 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Apr-18·15:31·OEBPS/dist/epub-erlang-ESPT6BQV.css
8 ?rw-r--r--··6.1·unx······499·bx·defN·25-Apr-18·14:02·OEBPS/dist/epub-LSJCIYTM.js8 ?rw-r--r--··6.1·unx······499·bx·defN·25-Apr-18·15:31·OEBPS/dist/epub-LSJCIYTM.js
9 ?rw-r--r--··6.1·unx·····1323·bx·defN·25-Apr-18·14:02·OEBPS/content.opf9 ?rw-r--r--··6.1·unx·····1323·bx·defN·25-Apr-18·15:31·OEBPS/content.opf
10 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Apr-18·14:02·OEBPS/assets/logo.png10 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Apr-18·15:31·OEBPS/assets/logo.png
11 ?rw-r--r--··6.1·unx······252·bx·defN·25-Apr-18·14:02·META-INF/container.xml11 ?rw-r--r--··6.1·unx······252·bx·defN·25-Apr-18·15:31·META-INF/container.xml
12 ?rw-r--r--··6.1·unx······162·bx·defN·25-Apr-18·14:02·META-INF/com.apple.ibooks.display-options.xml12 ?rw-r--r--··6.1·unx······162·bx·defN·25-Apr-18·15:31·META-INF/com.apple.ibooks.display-options.xml
13 11·files,·132100·bytes·uncompressed,·31187·bytes·compressed:··76.4%13 11·files,·132100·bytes·uncompressed,·31187·bytes·compressed:··76.4%
37.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,·Apr·18·2025·14:02: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,·Apr·18·2025·15:31:52,·uncompressed·size·20,·method=store
29.3 KB
OEBPS/eldap.xhtml
Max HTML report size reached
1.19 KB
OEBPS/content.opf
1.15 KB
OEBPS/content.opf
Max HTML report size reached
29.4 KB
./usr/share/doc/erlang-doc/html/lib/eldap-1.2.14/doc/html/eldap.html
    
Offset 951, 21 lines modifiedOffset 951, 21 lines modified
951 ·················Dn·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:string/0">string</a>(),951 ·················Dn·::·<a·href="../../../../erts-15.2.6/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.6/doc/html/erlang.html#t:term/0">term</a>().</pre>954 ·················Reason·::·<a·href="../../../../erts-15.2.6/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="6234704860-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="4870868594-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="6234704860-2">[</span><span·class="p"·data-group-id="6234704860-3">{</span><span·class="s">&quot;objectclass&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6234704860-4">[</span><span·class="s">&quot;person&quot;[·...·truncated·by·diffoscope;·len:·101,·SHA:·717a4ecb5bae1212a9844945951c12c72f88643b952e3a2152a8b7e33bcb2f1a·...·]-3">}</span><span·class="p">,</span><span·class="w">958 ·······</span><span·class="p"·data-group-id="4870868594-2">[</span><span·class="p"·data-group-id="4870868594-3">{</span><span·class="s">&quot;objectclass&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4870868594-4">[</span><span·class="s">&quot;person&quot;[·...·truncated·by·diffoscope;·len:·101,·SHA:·33a34466b0930a09b039b30d96b27487bd2b1a900dd670f78741cf77889008e4·...·]-3">}</span><span·class="p">,</span><span·class="w">
959 ········</span><span·class="p"·data-group-id="6234704860-5">{</span><span·class="s">&quot;cn&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6234704860-6">[</span><span·class="s">&quot;Bill·Valentine&quot;</span><span·class="p"·data-group-id="6234704860-6">]<[·...·truncated·by·diffoscope;·len:·47,·SHA:·03a4e8194777c01b34fed59e68d7549d0f42a2ca7f2c4a84ce518e1813076aed·...·]-5">}</span><span·class="p">,</span><span·class="w">959 ········</span><span·class="p"·data-group-id="4870868594-5">{</span><span·class="s">&quot;cn&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4870868594-6">[</span><span·class="s">&quot;Bill·Valentine&quot;</span><span·class="p"·data-group-id="4870868594-6">]<[·...·truncated·by·diffoscope;·len:·47,·SHA:·77d3df150b989d017e813e7e78d0b9a6595ab4ae1e08ee6e54d62999f50c9b74·...·]-5">}</span><span·class="p">,</span><span·class="w">
960 ········</span><span·class="p"·data-group-id="6234704860-7">{</span><span·class="s">&quot;sn&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6234704860-8">[</span><span·class="s">&quot;Valentine&quot;</span><span·class="p"·data-group-id="6234704860-8">]</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·ab4739333c8a5bc8326ea6a2ebd9474dad710d1b38849eb486cd030c399cb210·...·]-7">}</span><span·class="p">,</span><span·class="w">960 ········</span><span·class="p"·data-group-id="4870868594-7">{</span><span·class="s">&quot;sn&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4870868594-8">[</span><span·class="s">&quot;Valentine&quot;</span><span·class="p"·data-group-id="4870868594-8">]</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·ac460506fba503ce811873ca8693c6db500a7f11d2211cbaf2f1453a83bc8ed6·...·]-7">}</span><span·class="p">,</span><span·class="w">
961 ········</span><span·class="p"·data-group-id="6234704860-9">{</span><span·class="s">&quot;telephoneNumber&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6234704860-10">[</span><span·class="s">&quot;545·555·00&quot;</span><span·class="p"·data-group-id="623470[·...·truncated·by·diffoscope;·len:·111,·SHA:·a823c793524ccb79dddbf3b303999e31a90c74da40f04f59abceaec27a348f42·...·]-2">]</span><span·class="w">961 ········</span><span·class="p"·data-group-id="4870868594-9">{</span><span·class="s">&quot;telephoneNumber&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4870868594-10">[</span><span·class="s">&quot;545·555·00&quot;</span><span·class="p"·data-group-id="487086[·...·truncated·by·diffoscope;·len:·111,·SHA:·c8a6bdddb72183b49d6606be0bf650ca2707d5a73d45b90312e3939cc16298f0·...·]-2">]</span><span·class="w">
962 ·····</span><span·class="p"·data-group-id="6234704860-1">)</span></code></pre>962 ·····</span><span·class="p"·data-group-id="4870868594-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.6/doc/html/erlang.html#t:string/0">string</a>()}·|1250 ·································[{matchingRule,·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:string/0">string</a>()}·|
1251 ··································{type,·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:string/0">string</a>()}·|1251 ··································{type,·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:string/0">string</a>()}·|
1252 ··································{dnAttributes,·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:boolean/0">boolean</a>()}].</pre>1252 ··································{dnAttributes,·<a·href="../../../../erts-15.2.6/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="5716759831-1">(</span><span·class="s">&quot;Bar&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5716759831-2">[</span><span·class="p"·data-group-id="5716759831-3">{</span><span·class="ss">type</span><span·class="p"[·...·truncated·by·diffoscope;·len:·456,·SHA:·fc9180f0fe1beb06d73d7e39c3b1276e54db1405c6f9da71bcbad441a86a9a33·...·]-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="5514782184-1">(</span><span·class="s">&quot;Bar&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5514782184-2">[</span><span·class="p"·data-group-id="5514782184-3">{</span><span·class="ss">type</span><span·class="p"[·...·truncated·by·diffoscope;·len:·456,·SHA:·7ad37e25cc59eab04ba185c836b646a7a9b442a491785a8f129c49b22d855f93·...·]-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.6/doc/html/erlang.html#t:string/0">string</a>(),1453 ····················Dn·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:string/0">string</a>(),
1454 ····················ModifyOps·::·[<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:term/0">term</a>()],1454 ····················ModifyOps·::·[<a·href="../../../../erts-15.2.6/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.6/doc/html/erlang.html#t:term/0">term</a>().</pre>1456 ····················Reason·::·<a·href="../../../../erts-15.2.6/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="0126720234-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="3606420124-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="0126720234-2">[</span><span·class="nc">eldap</span><span·class="p">:</span><span·class="nf">mod_replace</span><span·class="p"·data-group-id="0126720234-3">(</span><span·class="s">&quot;telephoneNumber&quot;</span><span·class="p">,</span><span·class="w">·</[·...·truncated·by·diffoscope;·len:·196,·SHA:·e4aa8a21c9abb41327beeb96e891f4704bd0887e62e8bf3ad344d68b4eef46eb·...·]4-3">)</span><span·class="p">,</span><span·class="w">1459 ·········</span><span·class="p"·data-group-id="3606420124-2">[</span><span·class="nc">eldap</span><span·class="p">:</span><span·class="nf">mod_replace</span><span·class="p"·data-group-id="3606420124-3">(</span><span·class="s">&quot;telephoneNumber&quot;</span><span·class="p">,</span><span·class="w">·</[·...·truncated·by·diffoscope;·len:·196,·SHA:·df9b5b2b996b4121ce19db1f75cea5bcc82e666468a07b8ef8916fb155ed4035·...·]4-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="0126720234-5">(</span><span·class="s">&quot;description&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0126720234-6">[</span><span·class="s">&quot;LDAP·Hacker&quot;</span><span·class="p"·data-group-id="0126720234[·...·truncated·by·diffoscope;·len:·182,·SHA:·ea130159d03952bd55e1119a2768f9b2926591794231a2a4ccf5d17e4597d478·...·]4-1">)</span></code></pre>1460 »       ··</span><span·class="nc">eldap</span><span·class="p">:</span><span·class="nf">mod_add</span><span·class="p"·data-group-id="3606420124-5">(</span><span·class="s">&quot;description&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3606420124-6">[</span><span·class="s">&quot;LDAP·Hacker&quot;</span><span·class="p"·data-group-id="3606420124[·...·truncated·by·diffoscope;·len:·182,·SHA:·4bebdc2c3b4de879acbd7f4882b7d92327291aeb076f9234729ea117eacf9da6·...·]4-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.6/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.6/doc/html/erlang.html#t:binary/0">binary</a>()}
1758 ······························when·PageSize·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:integer/0">integer</a>(),·ControlOID·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:string/0">string</a>().</pre>1758 ······························when·PageSize·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:integer/0">integer</a>(),·ControlOID·::·<a·href="../../../../erts-15.2.6/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="2917036330-1">(</span><span·class="mi">50</span><span·class="p"·data-group-id="2917036330-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="5335859929-1">(</span><span·class="mi">50</span><span·class="p"·data-group-id="5335859929-1">)</span><span·class="p">,</span><span·class="w">
1762 </span><span·class="p"·data-group-id="2917036330-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="2917036330-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·727,·SHA:·95b3ca3005c50b9eee504fb529f3104f459473951ae2c667b7521f9819e0d510·...·]-3">)</span><span·class="p">,</span></code></pre>1762 </span><span·class="p"·data-group-id="5335859929-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="5335859929-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·727,·SHA:·c5a114f067ad80e7aa053233f017e8ce71d6a3f44831fe51ac9fac5e5f5210e4·...·]-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.6/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.6/doc/html/erlang.html#t:binary/0">binary</a>()}
1790 ······························when·PageSize·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:integer/0">integer</a>(),·Cookie·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:string/0">string</a>(),·ControlOID·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:string/0">string</a>().</pre>1790 ······························when·PageSize·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:integer/0">integer</a>(),·Cookie·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:string/0">string</a>(),·ControlOID·::·<a·href="../../../../erts-15.2.6/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="9946915333-1">(</span><span·class="n">PageSize</span><span·class="p"·data-group-id="9946915333-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="2858105120-1">(</span><span·class="n">PageSize</span><span·class="p"·data-group-id="2858105120-1">)</span><span·class="p">,</span><span·class="w">
1795 </span><span·class="p"·data-group-id="9946915333-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="9946915333-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·729,·SHA:·80fb262bb6a8eb6b0d897fbb6eb55461bad2007f5c8df31ee1c9151e9f3f8414·...·]-3">)</span><span·class="p">,</span><span·class="w">1795 </span><span·class="p"·data-group-id="2858105120-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="2858105120-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·729,·SHA:·dc3d20cbd8f2c8ad61fe751b27229e08710b734ca36c1e38a80eee4d9d8c3209·...·]-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="9946915333-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="9946915333-7">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·222,·SHA:·4152b9325adf06d8ec8c503d3fcf2bd855b1bb95cf08a68e49e648c80b7b12e8·...·]-8">)</span><span·class="p">,</span><span·class="w">1797 </span><span·class="p"·data-group-id="2858105120-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="2858105120-7">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·222,·SHA:·5367df53d5e9bbff7abeeb9b3405e1f029f0362a0a7e3be481dce906097dd3ab·...·]-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="9946915333-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="9946915333-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="2858105120-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="2858105120-9">)</span><span·class="p">,</span><span·class="w">
1799 </span><span·class="p"·data-group-id="9946915333-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="9946915333-10">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·790,·SHA:·4dfbce7285776bb2551e8de199e1686e3837229a937d975f532dd9e82ce2c14f·...·]-11">)</span><span·class="p">,</span><span·class="w">1799 </span><span·class="p"·data-group-id="2858105120-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="2858105120-10">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·790,·SHA:·b26c33d6aa080356e7a60adada3b3ac3120dd8c41c8c4836048817ae3f341046·...·]-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.6/doc/html/erlang.html#t:term/0">term</a>().</pre>1909 ····················Reason·::·<a·href="../../../../erts-15.2.6/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="5262743354-1">(</span><span·class="s">&quot;cn&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5262743354-2">[</span><span·class="p"·data-group-id="5262743354-3">{</span><span·class="ss">any</span><span·class="p">[·...·truncated·by·diffoscope;·len:·191,·SHA:·c00a6d1008d32f086c9a41b2bdf2a1e4c84ff24a601b8b8c2b78f174e0056959·...·]-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="2890207030-1">(</span><span·class="s">&quot;cn&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2890207030-2">[</span><span·class="p"·data-group-id="2890207030-3">{</span><span·class="ss">any</span><span·class="p">[·...·truncated·by·diffoscope;·len:·191,·SHA:·dba0fc6cd85313425211cf7613bf1a39788403b8650354b558bfbb0a9bf1e236·...·]-1">)</span><span·class="p">,</span><span·class="w">
1914 ··</span><span·class="nf">search</span><span·class="p"·data-group-id="5262743354-4">(</span><span·class="n">Handle</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5262743354-5">[</span><span·class="p"·data-group-id="5262743354-6">{</span><span·class="ss">base</span><span·class="p">,</span[·...·truncated·by·diffoscope;·len:·865,·SHA:·ede5b9226b3b40ecdb0394ef503a4b0f5ca7b994aee5389aa750ada9bd279d88·...·]-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="2890207030-4">(</span><span·class="n">Handle</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2890207030-5">[</span><span·class="p"·data-group-id="2890207030-6">{</span><span·class="ss">base</span><span·class="p">,</span[·...·truncated·by·diffoscope;·len:·865,·SHA:·51730396567871bef29075c14d6cab898da38c3d1183f749d9143002c8386910·...·]-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">
630 B
./usr/share/doc/erlang-doc/html/lib/eldap-1.2.14/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-64896945.js"></script>124 <script·src="dist/search_data-4C9C58FE.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>
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="8086143538-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="8086143538-2">[</span><[·...·truncated·by·diffoscope;·len:·322,·SHA:·cb900eabd2bb355657ebe74145236431d74629898d089b81446299c52a111399·...·]-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="4497147786-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="4497147786-2">[</span><[·...·truncated·by·diffoscope;·len:·322,·SHA:·3359c96e232b33db4ed7537aed197b97b25cef79e0658cc4c05510c1a81a49ed·...·]-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="8086143538-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="8086143538-5">[</spa[·...·truncated·by·diffoscope;·len:·343,·SHA:·1c0b71f028c385b1d897f0e1e6ffdb697c592095cfa437ca85aab03d564dedf8·...·]-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="4497147786-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="4497147786-5">[</spa[·...·truncated·by·diffoscope;·len:·343,·SHA:·bfd34ed3f28de288c20677b8adeb97c43ecf3f98a35f575b93afeca087476383·...·]-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">
83.7 KB
./usr/share/doc/erlang-doc/html/lib/erl_interface-5.5.2/doc/html/erl_interface.epub
2.53 KB
zipinfo {}
    
Offset 1, 17 lines modifiedOffset 1, 17 lines modified
1 Zip·file·size:·84947·bytes,·number·of·entries:·151 Zip·file·size:·84946·bytes,·number·of·entries:·15
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Apr-18·13:59·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Apr-18·15:23·mimetype
3 ?rw-r--r--··6.1·unx······730·bx·defN·25-Apr-18·13:59·OEBPS/title.xhtml3 ?rw-r--r--··6.1·unx······730·bx·defN·25-Apr-18·15:23·OEBPS/title.xhtml
4 ?rw-r--r--··6.1·unx···105507·bx·defN·25-Apr-18·13:59·OEBPS/notes.xhtml4 ?rw-r--r--··6.1·unx···105507·bx·defN·25-Apr-18·15:23·OEBPS/notes.xhtml
5 ?rw-r--r--··6.1·unx·····1261·bx·defN·25-Apr-18·13:59·OEBPS/nav.xhtml5 ?rw-r--r--··6.1·unx·····1261·bx·defN·25-Apr-18·15:23·OEBPS/nav.xhtml
6 ?rw-r--r--··6.1·unx····16997·bx·defN·25-Apr-18·13:59·OEBPS/erl_call_cmd.xhtml6 ?rw-r--r--··6.1·unx····16997·bx·defN·25-Apr-18·15:23·OEBPS/erl_call_cmd.xhtml
7 ?rw-r--r--··6.1·unx····21296·bx·defN·25-Apr-18·13:59·OEBPS/ei_users_guide.xhtml7 ?rw-r--r--··6.1·unx····21296·bx·defN·25-Apr-18·15:23·OEBPS/ei_users_guide.xhtml
8 ?rw-r--r--··6.1·unx·····6279·bx·defN·25-Apr-18·13:59·OEBPS/ei_global.xhtml8 ?rw-r--r--··6.1·unx·····6279·bx·defN·25-Apr-18·15:23·OEBPS/ei_global.xhtml
9 ?rw-r--r--··6.1·unx····67143·bx·defN·25-Apr-18·13:59·OEBPS/ei_connect.xhtml9 ?rw-r--r--··6.1·unx····67143·bx·defN·25-Apr-18·15:23·OEBPS/ei_connect.xhtml
10 ?rw-r--r--··6.1·unx····68130·bx·defN·25-Apr-18·13:59·OEBPS/ei.xhtml10 ?rw-r--r--··6.1·unx····68130·bx·defN·25-Apr-18·15:23·OEBPS/ei.xhtml
11 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Apr-18·13:59·OEBPS/dist/epub-erlang-ESPT6BQV.css11 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Apr-18·15:23·OEBPS/dist/epub-erlang-ESPT6BQV.css
12 ?rw-r--r--··6.1·unx······499·bx·defN·25-Apr-18·13:59·OEBPS/dist/epub-LSJCIYTM.js12 ?rw-r--r--··6.1·unx······499·bx·defN·25-Apr-18·15:23·OEBPS/dist/epub-LSJCIYTM.js
13 ?rw-r--r--··6.1·unx·····1948·bx·defN·25-Apr-18·13:59·OEBPS/content.opf13 ?rw-r--r--··6.1·unx·····1948·bx·defN·25-Apr-18·15:23·OEBPS/content.opf
14 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Apr-18·13:59·OEBPS/assets/logo.png14 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Apr-18·15:23·OEBPS/assets/logo.png
15 ?rw-r--r--··6.1·unx······252·bx·defN·25-Apr-18·13:59·META-INF/container.xml15 ?rw-r--r--··6.1·unx······252·bx·defN·25-Apr-18·15:23·META-INF/container.xml
16 ?rw-r--r--··6.1·unx······162·bx·defN·25-Apr-18·13:59·META-INF/com.apple.ibooks.display-options.xml16 ?rw-r--r--··6.1·unx······162·bx·defN·25-Apr-18·15:23·META-INF/com.apple.ibooks.display-options.xml
17 15·files,·310623·bytes·uncompressed,·82343·bytes·compressed:··73.5%17 15·files,·310623·bytes·uncompressed,·82342·bytes·compressed:··73.5%
74.8 KB
zipdetails --redact --scan --utc {}
Max HTML report size reached
370 B
filetype from file(1)
    
Offset 1, 1 lines modifiedOffset 1, 1 lines modified
1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Apr·18·2025·13:59: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,·Apr·18·2025·15:23:38,·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="3478259222-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="3478259222-2">[</span><[·...·truncated·by·diffoscope;·len:·322,·SHA:·7d9e2ced5ce50fd46e761dcd74b23cacaece47b2475e64d4996a312dcb18bf6e·...·]-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="4294193575-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="4294193575-2">[</span><[·...·truncated·by·diffoscope;·len:·322,·SHA:·c886f45c60fbf0d1b2346ac712ded4f2f82aedeaccdc342330567e3dacc044a5·...·]-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="3478259222-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="3478259222-5">[</spa[·...·truncated·by·diffoscope;·len:·343,·SHA:·fd927a80505ff619f4155b9e3e6b4caabbd3712da9734bbce0b8549a03382f9a·...·]-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="4294193575-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="4294193575-5">[</spa[·...·truncated·by·diffoscope;·len:·343,·SHA:·84c8a7479fcbb673fac1581491e1473fa109b509797304da093054fc30bc14ac·...·]-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
450 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:·302548·bytes,·number·of·entries:·291 Zip·file·size:·302550·bytes,·number·of·entries:·29
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Apr-18·14:02·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Apr-18·15:30·mimetype
3 ?rw-r--r--··6.1·unx······708·bx·defN·25-Apr-18·14:02·OEBPS/title.xhtml3 ?rw-r--r--··6.1·unx······708·bx·defN·25-Apr-18·15:30·OEBPS/title.xhtml
4 ?rw-r--r--··6.1·unx····20297·bx·defN·25-Apr-18·14:02·OEBPS/notes.xhtml4 ?rw-r--r--··6.1·unx····20297·bx·defN·25-Apr-18·15:30·OEBPS/notes.xhtml
5 ?rw-r--r--··6.1·unx·····1427·bx·defN·25-Apr-18·14:02·OEBPS/nav.xhtml5 ?rw-r--r--··6.1·unx·····1427·bx·defN·25-Apr-18·15:30·OEBPS/nav.xhtml
6 ?rw-r--r--··6.1·unx····15128·bx·defN·25-Apr-18·14:02·OEBPS/et_viewer.xhtml6 ?rw-r--r--··6.1·unx····15128·bx·defN·25-Apr-18·15:30·OEBPS/et_viewer.xhtml
7 ?rw-r--r--··6.1·unx····39785·bx·defN·25-Apr-18·14:02·OEBPS/et_tutorial.xhtml7 ?rw-r--r--··6.1·unx····39785·bx·defN·25-Apr-18·15:30·OEBPS/et_tutorial.xhtml
8 ?rw-r--r--··6.1·unx····14495·bx·defN·25-Apr-18·14:02·OEBPS/et_selector.xhtml8 ?rw-r--r--··6.1·unx····14495·bx·defN·25-Apr-18·15:30·OEBPS/et_selector.xhtml
9 ?rw-r--r--··6.1·unx·····3893·bx·defN·25-Apr-18·14:02·OEBPS/et_intro.xhtml9 ?rw-r--r--··6.1·unx·····3893·bx·defN·25-Apr-18·15:30·OEBPS/et_intro.xhtml
10 ?rw-r--r--··6.1·unx····94737·bx·defN·25-Apr-18·14:02·OEBPS/et_examples.xhtml10 ?rw-r--r--··6.1·unx····94737·bx·defN·25-Apr-18·15:30·OEBPS/et_examples.xhtml
11 ?rw-r--r--··6.1·unx····46399·bx·defN·25-Apr-18·14:02·OEBPS/et_desc.xhtml11 ?rw-r--r--··6.1·unx····46399·bx·defN·25-Apr-18·15:30·OEBPS/et_desc.xhtml
12 ?rw-r--r--··6.1·unx····51100·bx·defN·25-Apr-18·14:02·OEBPS/et_collector.xhtml12 ?rw-r--r--··6.1·unx····51100·bx·defN·25-Apr-18·15:30·OEBPS/et_collector.xhtml
13 ?rw-r--r--··6.1·unx····16970·bx·defN·25-Apr-18·14:02·OEBPS/et.xhtml13 ?rw-r--r--··6.1·unx····16970·bx·defN·25-Apr-18·15:30·OEBPS/et.xhtml
14 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Apr-18·14:02·OEBPS/dist/epub-erlang-ESPT6BQV.css14 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Apr-18·15:30·OEBPS/dist/epub-erlang-ESPT6BQV.css
15 ?rw-r--r--··6.1·unx······499·bx·defN·25-Apr-18·14:02·OEBPS/dist/epub-LSJCIYTM.js15 ?rw-r--r--··6.1·unx······499·bx·defN·25-Apr-18·15:30·OEBPS/dist/epub-LSJCIYTM.js
16 ?rw-r--r--··6.1·unx·····3489·bx·defN·25-Apr-18·14:02·OEBPS/content.opf16 ?rw-r--r--··6.1·unx·····3489·bx·defN·25-Apr-18·15:30·OEBPS/content.opf
17 ?rw-r--r--··6.1·unx····13425·bx·defN·25-Apr-18·14:02·OEBPS/assets/sim_trans_write_lock.png17 ?rw-r--r--··6.1·unx····13425·bx·defN·25-Apr-18·15:30·OEBPS/assets/sim_trans_write_lock.png
18 ?rw-r--r--··6.1·unx····19026·bx·defN·25-Apr-18·14:02·OEBPS/assets/sim_trans_move_actor.png18 ?rw-r--r--··6.1·unx····19026·bx·defN·25-Apr-18·15:30·OEBPS/assets/sim_trans_move_actor.png
19 ?rw-r--r--··6.1·unx····18936·bx·defN·25-Apr-18·14:02·OEBPS/assets/sim_trans_mgr_actors.png19 ?rw-r--r--··6.1·unx····18936·bx·defN·25-Apr-18·15:30·OEBPS/assets/sim_trans_mgr_actors.png
20 ?rw-r--r--··6.1·unx····15235·bx·defN·25-Apr-18·14:02·OEBPS/assets/sim_trans_contents_viewer_mgr_actors.png20 ?rw-r--r--··6.1·unx····15235·bx·defN·25-Apr-18·15:30·OEBPS/assets/sim_trans_contents_viewer_mgr_actors.png
21 ?rw-r--r--··6.1·unx····13361·bx·defN·25-Apr-18·14:02·OEBPS/assets/sim_trans_contents_viewer_collector.png21 ?rw-r--r--··6.1·unx····13361·bx·defN·25-Apr-18·15:30·OEBPS/assets/sim_trans_contents_viewer_collector.png
22 ?rw-r--r--··6.1·unx····19026·bx·defN·25-Apr-18·14:02·OEBPS/assets/sim_trans.png22 ?rw-r--r--··6.1·unx····19026·bx·defN·25-Apr-18·15:30·OEBPS/assets/sim_trans.png
23 ?rw-r--r--··6.1·unx····46696·bx·defN·25-Apr-18·14:02·OEBPS/assets/megaco_tracer.png23 ?rw-r--r--··6.1·unx····46696·bx·defN·25-Apr-18·15:30·OEBPS/assets/megaco_tracer.png
24 ?rw-r--r--··6.1·unx····19067·bx·defN·25-Apr-18·14:02·OEBPS/assets/megaco_filter.png24 ?rw-r--r--··6.1·unx····19067·bx·defN·25-Apr-18·15:30·OEBPS/assets/megaco_filter.png
25 ?rw-r--r--··6.1·unx····37915·bx·defN·25-Apr-18·14:02·OEBPS/assets/megaco_collector.png25 ?rw-r--r--··6.1·unx····37915·bx·defN·25-Apr-18·15:30·OEBPS/assets/megaco_collector.png
26 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Apr-18·14:02·OEBPS/assets/logo.png26 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Apr-18·15:30·OEBPS/assets/logo.png
27 ?rw-r--r--··6.1·unx····19999·bx·defN·25-Apr-18·14:02·OEBPS/assets/live_trans.png27 ?rw-r--r--··6.1·unx····19999·bx·defN·25-Apr-18·15:30·OEBPS/assets/live_trans.png
28 ?rw-r--r--··6.1·unx····23692·bx·defN·25-Apr-18·14:02·OEBPS/assets/coffee_order.png28 ?rw-r--r--··6.1·unx····23692·bx·defN·25-Apr-18·15:30·OEBPS/assets/coffee_order.png
29 ?rw-r--r--··6.1·unx······252·bx·defN·25-Apr-18·14:02·META-INF/container.xml29 ?rw-r--r--··6.1·unx······252·bx·defN·25-Apr-18·15:30·META-INF/container.xml
30 ?rw-r--r--··6.1·unx······162·bx·defN·25-Apr-18·14:02·META-INF/com.apple.ibooks.display-options.xml30 ?rw-r--r--··6.1·unx······162·bx·defN·25-Apr-18·15:30·META-INF/com.apple.ibooks.display-options.xml
31 29·files,·576138·bytes·uncompressed,·297250·bytes·compressed:··48.4%31 29·files,·576138·bytes·uncompressed,·297252·bytes·compressed:··48.4%
167 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,·Apr·18·2025·14:02: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,·Apr·18·2025·15:30:52,·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.87 KB
OEBPS/content.opf
3.84 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="2988122568-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="2988122568-1">)</span><span·class="w">·</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·1130,·SHA:·692b05d54211ed2389fa6d746bbd977e52458a97adba839c9e101ea70c4f57c3·...·]-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="0813177382-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="0813177382-1">)</span><span·class="w">·</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·1130,·SHA:·709321137ae74b3878e4a9e439206e13a62e966f61cca08e67ea6731474511f9·...·]-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="2988122568-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="2988122568-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="0813177382-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="0813177382-7">)</span><span·class="gp·unselectable">
143 1&gt;·</span><span·class="p"·data-group-id="2988122568-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="2988122568-8">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·282,·SHA:·3bc18a3c3c100c7ab61266249353c86e90b0b001c29e9266c94b0c0b27e80a2f·...·]-9">)</span><span·class="p">.</span><span·class="w">143 1&gt;·</span><span·class="p"·data-group-id="0813177382-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="0813177382-8">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·282,·SHA:·44be8be9d0c963f133df8ab73177087f29254f36baa84d77824b7daa17af952c·...·]-9">)</span><span·class="p">.</span><span·class="w">
144 </span><span·class="p"·data-group-id="2988122568-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="2988122568-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="0813177382-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="0813177382-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="0069275010-1">(</span><span·class="n">Viewer</span><span·class="p"·data-group-id="0069275010-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="2622516547-1">(</span><span·class="n">Viewer</span><span·class="p"·data-group-id="2622516547-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="0069275010-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="2622516547-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="0069275010-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="2622516547-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="0069275010-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="2622516547-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="0069275010-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="2622516547-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="0069275010-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="2622516547-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="0069275010-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="2622516547-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="0069275010-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="2622516547-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="0069275010-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="2622516547-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="0069275010-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="2622516547-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="0069275010-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="2622516547-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="0069275010-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="2622516547-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="0069275010-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="2622516547-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="0069275010-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="2622516547-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="0069275010-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="2622516547-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="0069275010-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="2622516547-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="0069275010-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="2622516547-9">)</span><span·class="p">.</span><span·class="w">
164 </span><span·class="p"·data-group-id="0069275010-10">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="0069275010-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="2622516547-10">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2622516547-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="0069275010-11">}</span><span·class="p"·data-group-id="0069275010-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="2622516547-11">}</span><span·class="p"·data-group-id="2622516547-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="3782165316-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="3782165316-2">(</span><span·class="p"·data-group-id="3782165316-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nc">mnesia</[·...·truncated·by·diffoscope;·len:·541,·SHA:·a6792ba6589a874aa08665b963c337cb7145e7e5c14538576a18233ee9efbeee·...·]-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="5484945754-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="5484945754-2">(</span><span·class="p"·data-group-id="5484945754-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nc">mnesia</[·...·truncated·by·diffoscope;·len:·541,·SHA:·99ac087d5e163b5c7118df5a511fe2399c53bba90b7c1fb65ece6d396088af62·...·]-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="6632895277-1">(</span><span·class="n">TraceData</span><span·class="p"·data-group-id="6632895277-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:·20f711330bbf1273241124f9d58cdeef375fa929fedb9ab011899c0921ad817f·...·]-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="0943610289-1">(</span><span·class="n">TraceData</span><span·class="p"·data-group-id="0943610289-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:·a81920b7132c793a4dd726c96151cc85c8dab0c49ff116fb14df69a69a18472b·...·]-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="6632895277-3">(</span><span·class="p"·data-group-id="6632895277-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="0943610289-3">(</span><span·class="p"·data-group-id="0943610289-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="6632895277-4">{</span><span·class="p"·data-group-id="6632895277-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="0943610289-4">{</span><span·class="p"·data-group-id="0943610289-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="6632895277-5">{</span><span·class="p"·data-group-id="6632895277-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="0943610289-5">{</span><span·class="p"·data-group-id="0943610289-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.2/doc/html/lists.html#filtermap/2"><code·class="inline">lists:filtermap/2</code></a>.·If·the·filter·returns·<code·class="inline">false</code>·it·means·that188 the·good·old·<a·href="../../../../lib/stdlib-6.2.2/doc/html/lists.html#filtermap/2"><code·class="inline">lists:filtermap/2</code></a>.·If·the·filter·returns·<code·class="inline">false</code>·it·means·that
189 the·trace·data·should·silently·be·dropped.·<code·class="inline">true</code>·means·that·the·trace·data·data189 the·trace·data·should·silently·be·dropped.·<code·class="inline">true</code>·means·that·the·trace·data·data
190 already·is·an·<code·class="inline">Event·Record</code>·and·that·it·should·be·kept·as·it·is.·<code·class="inline">true</code>·means190 already·is·an·<code·class="inline">Event·Record</code>·and·that·it·should·be·kept·as·it·is.·<code·class="inline">true</code>·means
191 that·the·<code·class="inline">TraceData</code>·already·is·an·<code·class="inline">Event·Record</code>·and·that·it·should·be·kept·as191 that·the·<code·class="inline">TraceData</code>·already·is·an·<code·class="inline">Event·Record</code>·and·that·it·should·be·kept·as
192 it·is.·<code·class="inline">{true,·NewEvent}</code>·means·that·the·original·trace·data·should·be·replaced192 it·is.·<code·class="inline">{true,·NewEvent}</code>·means·that·the·original·trace·data·should·be·replaced
193 with·<code·class="inline">Event</code>.·This·provides·means·to·get·rid·of·unwanted·<code·class="inline">Events</code>·as·well·as193 with·<code·class="inline">Event</code>.·This·provides·means·to·get·rid·of·unwanted·<code·class="inline">Events</code>·as·well·as
194 enabling·alternate·views·of·an·<code·class="inline">Event</code>.</p><p>The·first·filter·that·the·trace·data·is·exposed·for·is·the·<code·class="inline">Collector·Filter</code>.194 enabling·alternate·views·of·an·<code·class="inline">Event</code>.</p><p>The·first·filter·that·the·trace·data·is·exposed·for·is·the·<code·class="inline">Collector·Filter</code>.
Offset 208, 29 lines modifiedOffset 208, 29 lines modified
208 When·a·<code·class="inline">Viewer</code>·is·started·it·is·registered·as·a·subscriber·of·dictionary208 When·a·<code·class="inline">Viewer</code>·is·started·it·is·registered·as·a·subscriber·of·dictionary
209 updates.</p><p>In·each·<code·class="inline">Viewer</code>·there·is·only·one·filter·that·is·active·and·all·trace·<code·class="inline">Events</code>209 updates.</p><p>In·each·<code·class="inline">Viewer</code>·there·is·only·one·filter·that·is·active·and·all·trace·<code·class="inline">Events</code>
210 that·the·<code·class="inline">Viewer</code>·gets·from·the·<code·class="inline">Collector</code>·will·pass·thru·that·filter.·By210 that·the·<code·class="inline">Viewer</code>·gets·from·the·<code·class="inline">Collector</code>·will·pass·thru·that·filter.·By
211 writing·clever·filters·it·is·possible·to·customize·how·the·<code·class="inline">Events</code>·looks·like211 writing·clever·filters·it·is·possible·to·customize·how·the·<code·class="inline">Events</code>·looks·like
212 in·the·viewer.·The·following·filter·in·<code·class="inline">et/examples/et_demo.erl</code>·replaces·the212 in·the·viewer.·The·following·filter·in·<code·class="inline">et/examples/et_demo.erl</code>·replaces·the
213 actor·names·<code·class="inline">mnesia_tm</code>·and·<code·class="inline">mnesia_locker</code>·and·leaves·everything·else·in·the213 actor·names·<code·class="inline">mnesia_tm</code>·and·<code·class="inline">mnesia_locker</code>·and·leaves·everything·else·in·the
214 record·as·it·was:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">214 record·as·it·was:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">
215 </span><span·class="nf">mgr_actors</span><span·class="p"·data-group-id="4011277170-1">(</span><span·class="n">E</span><span·class="p"·data-group-id="4011277170-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="4011277170-2">(</s[·...·truncated·by·diffoscope;·len:·146,·SHA:·42a0bf3ab78daf075e9c649b2019ba85abbb18d2d0def137680ff55f8dd2b02c·...·]-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="1282163931-1">(</span><span·class="n">E</span><span·class="p"·data-group-id="1282163931-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="1282163931-2">(</s[·...·truncated·by·diffoscope;·len:·146,·SHA:·b85fc089ae70a6aebc91403fba29867aaf4c9ddaef00621f620177d62d18ad58·...·]-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="4011277170-3">(</span><span·class="n">A</span><span·class="p"·data-group-id="4011277170-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="1282163931-3">(</span><span·class="n">A</span><span·class="p"·data-group-id="1282163931-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="4011277170-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="4011277170-5">{</span><span·class="ss">from</span>[·...·truncated·by·diffoscope;·len:·323,·SHA:·7886567d262f27bb55efa5d44fe35589c43d9f3178a22694162a04a01d2c86eb·...·]-6">)</span><span·class="p">,</span><span·class="w">223 ····</span><span·class="p"·data-group-id="1282163931-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="1282163931-5">{</span><span·class="ss">from</span>[·...·truncated·by·diffoscope;·len:·323,·SHA:·6283c3a15a9eb248e031c89043788e4a148b324d685bde519dda2284a11deb2b·...·]-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="4011277170-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="4011277170-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="1282163931-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="1282163931-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="4011277170-8">[</span><span·class="p"·data-group-id="4011277170-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:·4a6b250ad2762676cbb12c6a5324151b6163ab5d17acad2cb69c8fb629beb18f·...·]-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="1282163931-8">[</span><span·class="p"·data-group-id="1282163931-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:·5551914832624145d8cb11d77ccbe6e5212565776972e23c455a2e4e527c3bed·...·]-9">}</span><span·class="p">,</span><span·class="w">
226 ·······························</span><span·class="p"·data-group-id="4011277170-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:·89c22a23f8b04f31756d4a4cc1902e88fd183a2deda3d9a829b3d0bb379e5cbf·...·]-10">}</span><span·class="p">,</span><span·class="w">226 ·······························</span><span·class="p"·data-group-id="1282163931-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:·a77c3d33d7ed72ab4c6ed5545158540d9bda21fb414e90f6ca0c15615fef7597·...·]-10">}</span><span·class="p">,</span><span·class="w">
227 ·······························</span><span·class="p"·data-group-id="4011277170-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:·7f7723a93177fb7b3dd93b9537a37ba2660e49f590fa07ee5a7b9f0b40a8c71a·...·]-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="1282163931-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:·cfd95b2536aa192ea4e76ee68db6f724eca2044fb8fc7fb2ba4be727f817f462·...·]-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="4838184193-3">(</span><span·class="n">Collector</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4838184193-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:·3fa9f29f6b3b0551618db7172a31a21a36d0da15093f67c6d38418a0fbbd156d·...·]-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="7431634200-3">(</span><span·class="n">Collector</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7431634200-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:·c53dcf2bda6c93558df3ba6fd97ced76f7ee4156093efcfca9b61f5c373a63ad·...·]-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="6754440588-1">(</span><span·class="p"·data-group-id="6754440588-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="9778745758-1">(</span><span·class="p"·data-group-id="9778745758-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="6754440588-2">(</span><span·class="p"·data-group-id="6754440588-3">[</span><span·class="p"·data-group-id="6754440588-3">]</span><span·class="p"·data-group-id="6754440588-2">)</span><span·class="p">.</span><span·class="w">137 ····</span><span·class="nf">sim_trans</span><span·class="p"·data-group-id="9778745758-2">(</span><span·class="p"·data-group-id="9778745758-3">[</span><span·class="p"·data-group-id="9778745758-3">]</span><span·class="p"·data-group-id="9778745758-2">)</span><span·class="p">.</span><span·class="w">
  
138 </span><span·class="nf">sim_trans</span><span·class="p"·data-group-id="6754440588-4">(</span><span·class="n">ExtraOptions</span><span·class="p"·data-group-id="6754440588-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="9778745758-4">(</span><span·class="n">ExtraOptions</span><span·class="p"·data-group-id="9778745758-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="6754440588-5">[</span><span·class="p"·data-group-id="6754440588-6">{</span><span·class="ss">dict_insert</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6754440588-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="6754440588-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="6754440588-6">}</span><span·class="p"·data-group-id="6754440588-5">]</span><span·class="p">,</span><span·class="w"> 
140 ····</span><span·class="p"·data-group-id="6754440588-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="6754440588-8">}</span><span·class="w">·</span><span·class="o">=</span><span·class=[·...·truncated·by·diffoscope;·len:·340,·SHA:·ca8fc883912a454aebb4da826c6cccddd0a9ff6ef7d9cd7148953db64c311690·...·]</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="9778745758-5">[</span><span·class="p"·data-group-id="9778745758-6">{</span><span·class="ss">dict_insert</span><span·class="p">,</span><s[·...·truncated·by·diffoscope;·len:·520,·SHA:·87b0599af94adce4cb9b7db9be9101d68b97fe37843a2b2dec391888d79dd427·...·]</span><span·class="p">,</span><span·class="w">
 140 ····</span><span·class="p"·data-group-id="9778745758-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="9778745758-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="9778745758-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="9778745758-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="6754440588-10">(</span><span·class="n">Viewer</span><span·class="p"·data-group-id="6754440588-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="9778745758-10">(</span><span·class="n">Viewer</span><span·class="p"·data-group-id="9778745758-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="6754440588-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="9778745758-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="6754440588-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="9778745758-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="6754440588-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="9778745758-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="6754440588-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="9778745758-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="6754440588-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="9778745758-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="6754440588-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="9778745758-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="6754440588-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="9778745758-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="6754440588-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="9778745758-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="6754440588-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="9778745758-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="6754440588-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="9778745758-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="6754440588-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="9778745758-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="6754440588-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="9778745758-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="6754440588-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="9778745758-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="6754440588-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="9778745758-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="6754440588-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="9778745758-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="6754440588-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="9778745758-18">)</span><span·class="p">,</span><span·class="w">
158 ····</span><span·class="p"·data-group-id="6754440588-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="6754440588-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="9778745758-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="9778745758-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="4749121982-1">(</span><span·class="n">E</span><span·class="p"·data-group-id="4749121982-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="4749121982-2">(</s[·...·truncated·by·diffoscope;·len:·146,·SHA:·4d21e2a309babb034156338cac2d991faa0ff2e27eb926682cf857a3abede50c·...·]-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="3560787965-1">(</span><span·class="n">E</span><span·class="p"·data-group-id="3560787965-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="3560787965-2">(</s[·...·truncated·by·diffoscope;·len:·146,·SHA:·10d4147a8f84f634a1639f1d956ede60398363327bbefc9446a7b569efd4055e·...·]-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="4749121982-3">(</span><span·class="n">A</span><span·class="p"·data-group-id="4749121982-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="3560787965-3">(</span><span·class="n">A</span><span·class="p"·data-group-id="3560787965-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="4749121982-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="4749121982-5">{</span><span·class="ss">from</span>[·...·truncated·by·diffoscope;·len:·323,·SHA:·47cc096a96527182ec6123f3c11bf77b9b9793e74f3c31b5098307da70908000·...·]-6">)</span><span·class="p">,</span><span·class="w">167 ····</span><span·class="p"·data-group-id="3560787965-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="3560787965-5">{</span><span·class="ss">from</span>[·...·truncated·by·diffoscope;·len:·323,·SHA:·05f1c17f6439c677399465f29657d5687e0f0caa1ac32b2fa880e52f6cf04d4b·...·]-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="4749121982-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="4749121982-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="3560787965-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="3560787965-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="4749121982-8">[</span><span·class="p"·data-group-id="4749121982-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:·6a7f2531b1c928169d970f9a7f060b010b29756fd4c965bb1288958ace0e49de·...·]-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="3560787965-8">[</span><span·class="p"·data-group-id="3560787965-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:·1668c43f43ad33527d6a38116ae3b51d55ce07fd314918f835b464215486ba93·...·]-9">}</span><span·class="p">,</span><span·class="w">
170 ·······························</span><span·class="p"·data-group-id="4749121982-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:·f27ba4a7f1172ab3d9d003168ffa7b456d4d440c2a7b1ff429ce0f24a0efc14d·...·]-10">}</span><span·class="p">,</span><span·class="w">170 ·······························</span><span·class="p"·data-group-id="3560787965-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:·ef4bcb6813853b7ccce29f3f402533122f20a8e3eb67662619ad69745dc4b360·...·]-10">}</span><span·class="p">,</span><span·class="w">
171 ·······························</span><span·class="p"·data-group-id="4749121982-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:·c6aec6fe4c31aad415af50ec74b8dba088bd50e3a498277957ddbe76857cab3b·...·]-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="3560787965-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:·a2ae59497172b15f9b870ad9d2ac70b11097539ba57804522c0ef9693b17a03d·...·]-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="9404471290-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="9404471290-2">(</span><span·class="p"·data-group-id="9404471290-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:·d8674663884e4baa6eff87fb3b470230f0a9b9408b089de75015882a1972aec9·...·]-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="1074150362-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="1074150362-2">(</span><span·class="p"·data-group-id="1074150362-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:·87498fd32ae5ed4bc025b529c6f510f1b12427a2f784df3a49ab4054bdfd8643·...·]-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="9732841151-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="9732841151-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="3085510059-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="3085510059-7">)</span><span·class="gp·unselectable">
175 1&gt;·</span><span·class="p"·data-group-id="9732841151-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="9732841151-8">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·282,·SHA:·87f180362de144c2e9359c2a13320d5f045bd83c561a8ab82e8022f259c7b736·...·]-9">)</span><span·class="p">.</span><span·class="w">175 1&gt;·</span><span·class="p"·data-group-id="3085510059-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="3085510059-8">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·282,·SHA:·40bf070e3449bb84e4d99f262ccf5da31f3dfc61de56af62dec9d876b0b57ae2·...·]-9">)</span><span·class="p">.</span><span·class="w">
176 </span><span·class="p"·data-group-id="9732841151-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:·00fef1ad9381ae44fd808f64d7b99455bf8a8ddaddcea0066c1f52af031b424d·...·]-11">}</span><span·class="gp·unselectable">176 </span><span·class="p"·data-group-id="3085510059-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:·86a69b65cc67cbaf0c1752878d5888c4fc17b13dbff96efc57a868082b6dff0a·...·]-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="9732841151-12">(</span><span·class="p"·data-group-id="9732841151-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="3085510059-12">(</span><span·class="p"·data-group-id="3085510059-12">)</span><span·class="p">.</span><span·class="w">
178 </span><span·class="p"·data-group-id="9732841151-13">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9732841151-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="3085510059-13">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="3085510059-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="9732841151-14">}</span><span·class="p"·data-group-id="9732841151-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="3085510059-14">}</span><span·class="p"·data-group-id="3085510059-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="5581785617-1">(</span><span·class="n">E</span><span·class="p"·data-group-id="5581785617-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="5581785617-2">(</s[·...·truncated·by·diffoscope;·len:·146,·SHA:·d3b8074b6f7ece93adbf44b60ef828dfce427940bbbc4aabbd5c9ef214d7f3bf·...·]-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="3798498719-1">(</span><span·class="n">E</span><span·class="p"·data-group-id="3798498719-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="3798498719-2">(</s[·...·truncated·by·diffoscope;·len:·146,·SHA:·de3f9a069080b3c401f95ea2b08633f2753b5339d4f943276950ce6b019b5736·...·]-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="5581785617-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:·3dd8c2e64b412db90df22e27fcec2ed00d359965e9102f8274be902e39b4898f·...·]-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="3798498719-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:·5001923568fe6e82ee122c69c7d46add9d06ba659d860fd86774d125ca7f32ce·...·]-3">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
193 ········</span><span·class="p"·data-group-id="5581785617-4">{</span><span·class="ss">value</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5581785617-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:·06deb9686a4f1b62a159bef0b2aa12acbf538fc29c45406405c2be9f768cc108·...·]-4">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">193 ········</span><span·class="p"·data-group-id="3798498719-4">{</span><span·class="ss">value</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3798498719-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:·9369622f0475b88798f58afac36c1d00530f2b1888b0ac5d3bef11d721769e11·...·]-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="5581785617-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:·569e6db0b243c25bafbb2db4cbb07f66f6c9cefeb0ab5d342748d18422392f1f·...·]-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="3798498719-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:·4976b3c33597c339c73bece58df8a09a7bc53e3359e3865f4cabda354a433e66·...·]-7">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
195 ················</span><span·class="p"·data-group-id="5581785617-8">{</span><span·class="ss">value</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5581785617-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:·db02bf5d1e14c4c5a2f701614d11a9904f686507ad389a8808f496e887ce019f·...·]-8">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">195 ················</span><span·class="p"·data-group-id="3798498719-8">{</span><span·class="ss">value</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3798498719-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:·46ab85102d5ea19a6bb19b3639f3075f5c13184205ea775875f6bd037d0eef7b·...·]-8">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
196 ····················</span><span·class="p"·data-group-id="5581785617-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="5581785617-12">{</span><span·class="ss">label</sp[·...·truncated·by·diffoscope;·len:·537,·SHA:·3ecdfb22c79b7a5e313b7088c5d3ec99fe76356907bbdc654c2f31b67a7f9e7e·...·]-11">}</span><span·class="p">;</span><span·class="w">196 ····················</span><span·class="p"·data-group-id="3798498719-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="3798498719-12">{</span><span·class="ss">label</sp[·...·truncated·by·diffoscope;·len:·537,·SHA:·7f36bb0a3b80ae8afff9bd7a6ec0aedb3150b6de30d8227fdee54a03c203e998·...·]-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="5581785617-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="5581785617-14">{</span><span·class="ss">label</sp[·...·truncated·by·diffoscope;·len:·536,·SHA:·0cc19274920e7058e9df72becab24c90227eb61fbe0a7567046482a70fa9e179·...·]-13">}</span><span·class="w">198 ····················</span><span·class="p"·data-group-id="3798498719-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="3798498719-14">{</span><span·class="ss">label</sp[·...·truncated·by·diffoscope;·len:·536,·SHA:·f1ca5737f3d0b08a081177c6d1ef6cc62ae33fcdb09b0b6b0b90b0257fb2496f·...·]-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="1991575425-1">(</span><span·class="n">E</span><span·class="p"·data-group-id="1991575425-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="1991575425-2">(</s[·...·truncated·by·diffoscope;·len:·146,·SHA:·7a978de993d1f2b49c4614a0f74f37e51fd4a2549f24c6b951f50525ef45ab54·...·]-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="8080711347-1">(</span><span·class="n">E</span><span·class="p"·data-group-id="8080711347-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="8080711347-2">(</s[·...·truncated·by·diffoscope;·len:·146,·SHA:·d3021dd9eca80bdbbaefdba722cd7dced052b246e1a91c2a0919cfe200d9e754·...·]-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="1991575425-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="1991575425-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="8080711347-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="8080711347-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="1991575425-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="1991575425-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="8080711347-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="8080711347-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="1991575425-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="1991575425-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="8080711347-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="8080711347-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="1991575425-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="1991575425-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="8080711347-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="8080711347-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="2495647861-1">(</span><span·class="n">E</span><span·class="p"·data-group-id="2495647861-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="2495647861-2">(</sp[·...·truncated·by·diffoscope;·len:·145,·SHA:·db1e2662ccfac11531c141c3328cbccf053de99e0c48b004de888518ddf2b5b1·...·]-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="2703220287-1">(</span><span·class="n">E</span><span·class="p"·data-group-id="2703220287-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="2703220287-2">(</sp[·...·truncated·by·diffoscope;·len:·145,·SHA:·f38de647bcf6e9a098d44991f93d8d56d173ffef6df0c238b6ec0feb7e577dac·...·]-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
223 ····</span><span·class="p"·data-group-id="2495647861-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><spa[·...·truncated·by·diffoscope;·len:·37,·SHA:·0e22089dbb009e5f404252e56a4dc1584ef915624cd1a5fbf129c0916fb88f6e·...·]-3">)</span><span·class="w">·</span><span·class="nf">and</span><span·class="w">223 ····</span><span·class="p"·data-group-id="2703220287-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><spa[·...·truncated·by·diffoscope;·len:·37,·SHA:·0bb716d0d077b45bad01a4700790d01313ba58a025b02177492183decb375f3e·...·]-3">)</span><span·class="w">·</span><span·class="nf">and</span><span·class="w">
224 ····</span><span·class="p"·data-group-id="2495647861-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><s[·...·truncated·by·diffoscope;·len:·39,·SHA:·27bfc72e8bfff04a9fa5078a616abf81b90b2db66153f7b6e8e9540df7c276ee·...·]-4">)</span><span·class="w">·</span><span·class="nf">and</span><span·class="w">224 ····</span><span·class="p"·data-group-id="2703220287-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><s[·...·truncated·by·diffoscope;·len:·39,·SHA:·e1151848a3c5daffe994b254d47571bc74dc4e3fd95f7818018164ef542135f5·...·]-4">)</span><span·class="w">·</span><span·class="nf">and</span><span·class="w">
225 ····</span><span·class="p"·data-group-id="2495647861-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:·47,·SHA:·ee1aa684aeb868ea4bb971d04d3b1e02b55acc2aff34590b751dc962110bad3b·...·]-5">)</span><span·class="w">·</span><span·class="ow">and</span><span·class="w">225 ····</span><span·class="p"·data-group-id="2703220287-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:·47,·SHA:·0825108dc4b812fa0e7a7aafd259dec2f28a593c72e544bcd0b2aa212443f629·...·]-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="2495647861-6">(</span><span·class="n">E</span><span·class="p"·data-group-id="2495647861-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="2703220287-6">(</span><span·class="n">E</span><span·class="p"·data-group-id="2703220287-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="5838113004-1">(</span><span·class="p"·data-group-id="5838113004-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="6061495716-1">(</span><span·class="p"·data-group-id="6061495716-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="5838113004-2">(</span><span·class="p"·data-group-id="5838113004-3">[</span><span·class="p"·data-group-id="5838113004-3">]</span><span·class="p"·data-group-id="5838113004-2">)</span><span·class="p">.</span><span·class="w">231 ····</span><span·class="nf">start</span><span·class="p"·data-group-id="6061495716-2">(</span><span·class="p"·data-group-id="6061495716-3">[</span><span·class="p"·data-group-id="6061495716-3">]</span><span·class="p"·data-group-id="6061495716-2">)</span><span·class="p">.</span><span·class="w">
  
232 </span><span·class="nf">start</span><span·class="p"·data-group-id="5838113004-4">(</span><span·class="n">ExtraOptions</span><span·class="p"·data-group-id="5838113004-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="6061495716-4">(</span><span·class="n">ExtraOptions</span><span·class="p"·data-group-id="6061495716-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="5838113004-5">[</span><span·class="p"·data-group-id="5838113004-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="5838113004-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="6061495716-5">[</span><span·class="p"·data-group-id="6061495716-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="6061495716-6">}</span><span·class="p">,</span><span·class="w">
234 ···············</span><span·class="p"·data-group-id="5838113004-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="5838113004-7">}</span><span·class="p">,</span><span·class="w">234 ···············</span><span·class="p"·data-group-id="6061495716-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="6061495716-7">}</span><span·class="p">,</span><span·class="w">
235 ···············</span><span·class="p"·data-group-id="5838113004-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="5838113004-8">}</span><span·class="p">,</span><span·class="w">235 ···············</span><span·class="p"·data-group-id="6061495716-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="6061495716-8">}</span><span·class="p">,</span><span·class="w">
236 ···············</span><span·class="p"·data-group-id="5838113004-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="5838113004-9">}</span><span·class="p">,</span><span·class="w">236 ···············</span><span·class="p"·data-group-id="6061495716-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="6061495716-9">}</span><span·class="p">,</span><span·class="w">
237 ···············</span><span·class="p"·data-group-id="5838113004-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="5838113004-10">}</span><span·class="p"·data-group-id="5838113004-5">]</span><span·class="p">,</span><span·class="w">237 ···············</span><span·class="p"·data-group-id="6061495716-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="6061495716-10">}</span><span·class="p"·data-group-id="6061495716-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="5838113004-11">(</span><span·class="nf">filters</span><span·class="p"·data-group-id="5838113004-12">(</span><span·class="p"·data-group-id="5838113004-12">)</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="n">Optio[·...·truncated·by·diffoscope;·len:·158,·SHA:·316d04e1f2a98d4e8b64dff84615e37746ebce7ad81db216154786786d3b526b·...·]-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="6061495716-11">(</span><span·class="nf">filters</span><span·class="p"·data-group-id="6061495716-12">(</span><span·class="p"·data-group-id="6061495716-12">)</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="n">Optio[·...·truncated·by·diffoscope;·len:·158,·SHA:·517e12ec425baa3f42e05d9fd7c4144bfb510f9db208fefb2964a1cba1f4e771·...·]-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="1750707147-1">(</span><span·class="p"·data-group-id="1750707147-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="1058191494-1">(</span><span·class="p"·data-group-id="1058191494-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
240 ····</span><span·class="p"·data-group-id="1750707147-2">[</span><span·class="p"·data-group-id="1750707147-3">{</span><span·class="ss">dict_insert</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1750707147-4">{</span><span·class="ss">filter</span><span·class="p">[·...·truncated·by·diffoscope;·len:·112,·SHA:·e1b55a94f54b8346e565b639ddc254dfcd3c971f30a35cc95a02eba62cea94d1·...·]-4">}</span><span·class="p">,</span><span·class="w">240 ····</span><span·class="p"·data-group-id="1058191494-2">[</span><span·class="p"·data-group-id="1058191494-3">{</span><span·class="ss">dict_insert</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1058191494-4">{</span><span·class="ss">filter</span><span·class="p">[·...·truncated·by·diffoscope;·len:·112,·SHA:·4a355903d581086c5b85da9a3eec79321bfa2b4da9c8d01eded11ac740ddee8c·...·]-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="1750707147-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="1058191494-3">}</span><span·class="p">,</span><span·class="w">
242 ·····</span><span·class="p"·data-group-id="1750707147-5">{</span><span·class="ss">dict_insert</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1750707147-6">{</span><span·class="ss">filter</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">plai[·...·truncated·by·diffoscope;·len:·62,·SHA:·7807e870ece719f00ed4d5eec92771c1231b4cfc82b4bc09fbd3801aa91cc829·...·]-6">}</span><span·class="p">,</span><span·class="w">242 ·····</span><span·class="p"·data-group-id="1058191494-5">{</span><span·class="ss">dict_insert</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1058191494-6">{</span><span·class="ss">filter</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">plai[·...·truncated·by·diffoscope;·len:·62,·SHA:·e213532f1eee7990fd2d5747167ef002cdde82c5d7844df7c226b3dd58da86db·...·]-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="1750707147-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="1058191494-5">}</span><span·class="p">,</span><span·class="w">
244 ·····</span><span·class="p"·data-group-id="1750707147-7">{</span><span·class="ss">dict_insert</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1750707147-8">{</span><span·class="ss">filter</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">plai[·...·truncated·by·diffoscope;·len:·69,·SHA:·46b3361384d79519c967cb5a24cc44c6f28642572e91993ca033728ccfe2f174·...·]-8">}</span><span·class="p">,</span><span·class="w">244 ·····</span><span·class="p"·data-group-id="1058191494-7">{</span><span·class="ss">dict_insert</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1058191494-8">{</span><span·class="ss">filter</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">plai[·...·truncated·by·diffoscope;·len:·69,·SHA:·7f18fa435cc306339b9c7b79d26db53eb167ea2ea11566d0c154b312ec086465·...·]-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="1750707147-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="1058191494-7">}</span><span·class="p">,</span><span·class="w">
246 ·····</span><span·class="p"·data-group-id="1750707147-9">{</span><span·class="ss">dict_insert</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1750707147-10">{</span><span·class="ss">filter</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">nam[·...·truncated·by·diffoscope;·len:·63,·SHA:·2bbb40d2b11b9267cf427b4e702b81359d85d8e41358e6a1475d26a1d9c03f00·...·]-10">}</span><span·class="p">,</span><span·class="w">246 ·····</span><span·class="p"·data-group-id="1058191494-9">{</span><span·class="ss">dict_insert</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1058191494-10">{</span><span·class="ss">filter</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">nam[·...·truncated·by·diffoscope;·len:·63,·SHA:·f7b7d104c950666a091fb4ba90f17a476cae9ba725729758b65603f3983c91b8·...·]-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="1750707147-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="1058191494-9">}</span><span·class="p">,</span><span·class="w">
248 ·····</span><span·class="p"·data-group-id="1750707147-11">{</span><span·class="ss">dict_insert</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1750707147-12">{</span><span·class="ss">filter</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">na[·...·truncated·by·diffoscope;·len:·71,·SHA:·4bf26ef0a7a8ffdf6eafe54b0e1f80aac233808edce2c813593629350ff6f9aa·...·]-12">}</span><span·class="p">,</span><span·class="w">248 ·····</span><span·class="p"·data-group-id="1058191494-11">{</span><span·class="ss">dict_insert</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1058191494-12">{</span><span·class="ss">filter</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">na[·...·truncated·by·diffoscope;·len:·71,·SHA:·3eb5e8d6dd85b2bb64a2a4fead6f1fc0806ebba1de250e1b9669d842793365c7·...·]-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="1750707147-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="1058191494-11">}</span><span·class="p">,</span><span·class="w">
250 ·····</span><span·class="p"·data-group-id="1750707147-13">{</span><span·class="ss">dict_insert</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1750707147-14">{</span><span·class="ss">filter</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">no[·...·truncated·by·diffoscope;·len:·63,·SHA:·a2b089bfa2d6e007b16f45c2a4c685b037d0fb06abb354ad60d5a3d0bc748c94·...·]-14">}</span><span·class="p">,</span><span·class="w">250 ·····</span><span·class="p"·data-group-id="1058191494-13">{</span><span·class="ss">dict_insert</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1058191494-14">{</span><span·class="ss">filter</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">no[·...·truncated·by·diffoscope;·len:·63,·SHA:·0e2a0f7c487e605dbdb9f429de43d0f061f4b518e68d0e5033de7847368fe744·...·]-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="1750707147-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="1058191494-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="9355120045-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="9355120045-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·489,·SHA:·63c03c1ab7acba856a013ffaeb5a59eb4b7f00f035102bdef48acbf60d622770·...·]-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="8416123778-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="8416123778-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·489,·SHA:·217a7f16884ab9364118a5969e8b0d69df7b385ccdd031b8289c262901c6c4c8·...·]-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="9355120045-5">(</span><span·class="n">ViewerPid</span><span·class="p"·data-group-id="9355120045-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="8416123778-5">(</span><span·class="n">ViewerPid</span><span·class="p"·data-group-id="8416123778-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="5356426809-1">(</span><span·class="ss">et_display_demo</span><span·class="p"·data-group-id="5356426809-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="5660854622-1">(</span><span·class="ss">et_display_demo</span><span·class="p"·data-group-id="5660854622-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="5356426809-2">(</span><span·class="p"·data-group-id="5356426809-3">[</span><span·class="ss">test</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="5356426809-3">]</span><span·class="p"·data-group-id="5356426809-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="5660854622-2">(</span><span·class="p"·data-group-id="5660854622-3">[</span><span·class="ss">test</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="5660854622-3">]</span><span·class="p"·data-group-id="5660854622-2">)</span><span·class="p">.</span><span·class="w">
  
150 </span><span·class="nf">test</span><span·class="p"·data-group-id="5356426809-4">(</span><span·class="p"·data-group-id="5356426809-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="5660854622-4">(</span><span·class="p"·data-group-id="5660854622-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
151 ····</span><span·class="p"·data-group-id="5356426809-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="5356426809-5">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·723,·SHA:·d30ac0f4e9eda76e9cd90460c2d1e78664a9db5e1d1fc4d1e370b211833acc57·...·]-6">)</span><span·class="p">,</span><span·class="w">151 ····</span><span·class="p"·data-group-id="5660854622-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="5660854622-5">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·723,·SHA:·be82c67e4e8711e4325eb0990459375014ad7b1a3a8b94cad801c4dc48e4e61b·...·]-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="5356426809-10">{</span><span·class="ss">drink</span><span·class="p">,</span><span·class="ss">iced_chai_latte</span><span·class="p"·data-group-id="5356426809-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="5660854622-10">{</span><span·class="ss">drink</span><span·class="p">,</span><span·class="ss">iced_chai_latte</span><span·class="p"·data-group-id="5660854622-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="5356426809-11">{</span><span·class="nb">size</span><span·class="p">,</span><span·class="ss">grande</span><span·class="p"·data-group-id="5356426809-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="5660854622-11">{</span><span·class="nb">size</span><span·class="p">,</span><span·class="ss">grande</span><span·class="p"·data-group-id="5660854622-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="5356426809-12">{</span><span·class="ss">milk</span><span·class="p">,</span><span·class="ss">whole</span><span·class="p"·data-group-id="5356426809-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="5660854622-12">{</span><span·class="ss">milk</span><span·class="p">,</span><span·class="ss">whole</span><span·class="p"·data-group-id="5660854622-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="5356426809-13">{</span><span·class="ss">flavor</span><span·class="p">,</span><span·class="ss">vanilla</span><span·class="p"·data-group-id="5356426809-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="5660854622-13">{</span><span·class="ss">flavor</span><span·class="p">,</span><span·class="ss">vanilla</span><span·class="p"·data-group-id="5660854622-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="5356426809-14">(</span><span·class="n">Viewer</span><span·class="p"·data-group-id="5356426809-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="5660854622-14">(</span><span·class="n">Viewer</span><span·class="p"·data-group-id="5660854622-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="5356426809-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:·368,·SHA:·026e28aaf85c2c406386f0cbbda51e2059a83d3b7b35022d472462d74ff4c737·...·]-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="5660854622-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:·368,·SHA:·818d2c1b010caf41185952fb05e42d467a1b9d8a73ecd9b50db5d53f46186e42·...·]-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="5356426809-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:·317,·SHA:·618c82c3e6dc9ff909848f0c084c0ad16bf072b50747f5a3ef6d237af426c692·...·]-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="5660854622-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:·317,·SHA:·84aaa0d09f58cfb600a7bb7eab5de93a861ad27de65975a7c833846c0ad5eefe·...·]-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="5356426809-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_t[·...·truncated·by·diffoscope;·len:·113,·SHA:·1a33ae9aadf1d4a2d823b72075cd175a4808044f57c5de3aa627b1ee3369c363·...·]-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="5660854622-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_t[·...·truncated·by·diffoscope;·len:·113,·SHA:·076b2ee620e6c4a15f9058c8069f2f0dd05df91fa63f894e6fa97866f8fe374b·...·]-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="5356426809-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_c[·...·truncated·by·diffoscope;·len:·261,·SHA:·55c38f78f8e70a14d363f4574c761a651597b9d78a3824063d1cccb280784749·...·]-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="5660854622-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_c[·...·truncated·by·diffoscope;·len:·261,·SHA:·b7245244782b6e7718634b4e2a35402b16470aefe65612fd9aab135f8ad77136·...·]-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="5356426809-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:·183,·SHA:·b0ec2da794041acfe16f03c8f31f8dc998d64aff588efeb71b6ff11c77997f9a·...·]-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="5660854622-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:·183,·SHA:·275f546622787900408a48e959ea9a733a9ca8aa5ca9ba16852774a6dd3e71e1·...·]-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="5356426809-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">reques[·...·truncated·by·diffoscope;·len:·116,·SHA:·61b461246e04bed9b48943136f2e07ca0dd04251cc2704bda62c0003ff433647·...·]-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="5660854622-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">reques[·...·truncated·by·diffoscope;·len:·116,·SHA:·e477bc038bfdbe97a195603db6b5396e66cf4b38e77c04976c1eb20a880ef424·...·]-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="5356426809-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_mo[·...·truncated·by·diffoscope;·len:·112,·SHA:·09f2caf06f6163be88dae6e4b17f53532ee27d4d15284c12b51d5c97347ed736·...·]-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="5660854622-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_mo[·...·truncated·by·diffoscope;·len:·112,·SHA:·462800b09f9300ded6232967448e21e5454941c32ee98daf2c37970d90a3316d·...·]-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="5356426809-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_c[·...·truncated·by·diffoscope;·len:·187,·SHA:·a301ccc3ac5915e00d0e7e7df538c930f6d578ea8cb253f4fbca2c3890786ed3·...·]-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="5660854622-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_c[·...·truncated·by·diffoscope;·len:·187,·SHA:·52872302334ce0c7da21a1d69f0bce40cd3c7f0d39e8017e52f3d4638c1c6676·...·]-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="5356426809-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_flavor</span><span·class="p">,</span><span·class="p"·data-group-id="5356426809-29">[</span><span·class="n">Flavor</span><span·class="p"·data-group-id="5356426809-29">]</span><span·class="p"·data-group-id="5356426809-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="5356426809-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_m[·...·truncated·by·diffoscope;·len:·213,·SHA:·db8debd26ce1be468bb358f292925c48500badb7deee2d9779eb3ddd25a14856·...·]">)</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="5660854622-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_f[·...·truncated·by·diffoscope;·len:·217,·SHA:·fdcdf2966c6871c4119522c04bb1a1538c1996c6f62c40bd5284cd33348c578f·...·]">)</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="5660854622-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_milk</span><span·class="p">,</span><span·class="p"·data-group-id="5660854622-31">[</span><span·class="n">Milk</span><span·class="p"·data-group-id="5660854622-31">]</span><span·class="p"·data-group-id="5660854622-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="5356426809-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_i[·...·truncated·by·diffoscope;·len:·182,·SHA:·85a1855aaf2acdb18183192a31db21b0acc5a39cd94e562a77ac81190bfd7650·...·]-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="5660854622-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_i[·...·truncated·by·diffoscope;·len:·182,·SHA:·f5fd605b107e6446c651854d7d6ace64ceb89e32d96a4eec900e79a42d5f8ec4·...·]-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="5356426809-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">swirl[·...·truncated·by·diffoscope;·len:·180,·SHA:·04a2debaab1461adfbd272ecd527dd479440d9a2e3fb1e8419cd9da51b0aeb28·...·]-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="5660854622-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">swirl[·...·truncated·by·diffoscope;·len:·180,·SHA:·537f145dc7b4e013d7918959758f6168e63e7b5b6f8575edb74024ac134938e5·...·]-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="5356426809-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_t[·...·truncated·by·diffoscope;·len:·272,·SHA:·2c469ff0505e8304154bbc4ac23109d7b0e4e96fc659362a45d2af745797a621·...·]-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="5660854622-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_t[·...·truncated·by·diffoscope;·len:·272,·SHA:·c3ff5988f2e31affc70740086f3fe417fbf722da4f227634236831a363653d85·...·]-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="3297100291-1">(</span><span·class="p"·data-group-id="3297100291-2">[</span><span·class="p"·data-group-id="3297100291-3">{</span><span·class="ss">trace_global</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">true</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·553,·SHA:·fd9a5faab2e3678ae82e4885f724bd951cb3812cf233a60246c25cba9ec48810·...·]-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="4621392175-1">(</span><span·class="p"·data-group-id="4621392175-2">[</span><span·class="p"·data-group-id="4621392175-3">{</span><span·class="ss">trace_global</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">true</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·553,·SHA:·fd19856621a3f193596cc3a880e81529ceb4ab50d4e9d647c7dbd45561b42145·...·]-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="0455503148-1">(</span><span·class="ss">et_trace_demo</span><span·class="p"·data-group-id="0455503148-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="7196816676-1">(</span><span·class="ss">et_trace_demo</span><span·class="p"·data-group-id="7196816676-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="0455503148-2">(</span><span·class="p"·data-group-id="0455503148-3">[</span><span·class="ss">test</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="0455503148-3">]</span><span·class="p"·data-group-id="0455503148-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="7196816676-2">(</span><span·class="p"·data-group-id="7196816676-3">[</span><span·class="ss">test</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="7196816676-3">]</span><span·class="p"·data-group-id="7196816676-2">)</span><span·class="p">.</span><span·class="w">
  
261 </span><span·class="nf">test</span><span·class="p"·data-group-id="0455503148-4">(</span><span·class="p"·data-group-id="0455503148-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="7196816676-4">(</span><span·class="p"·data-group-id="7196816676-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="0455503148-5">(</span><span·class="p"·data-group-id="0455503148-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="7196816676-5">(</span><span·class="p"·data-group-id="7196816676-6">[</span><span·class="w">
263 ········</span><span·class="p"·data-group-id="0455503148-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="0455503148-7">}</span><span·class="p">,</span><span·class="w">263 ········</span><span·class="p"·data-group-id="7196816676-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="7196816676-7">}</span><span·class="p">,</span><span·class="w">
264 ········</span><span·class="p"·data-group-id="0455503148-8">{</span><span·class="ss">trace_global</span><span·class="p">,</span><span·class="ss">true</span><span·class="p"·data-group-id="0455503148-8">}</span><span·class="p">,</span><span·class="w">264 ········</span><span·class="p"·data-group-id="7196816676-8">{</span><span·class="ss">trace_global</span><span·class="p">,</span><span·class="ss">true</span><span·class="p"·data-group-id="7196816676-8">}</span><span·class="p">,</span><span·class="w">
265 ········</span><span·class="p"·data-group-id="0455503148-9">{</span><span·class="nb">trace_pattern</span><span·class="p">,</span><span·class="p"·data-group-id="0455503148-10">{</span><span·class="ss">et</span><span·class="p">,</span><span·class="ss">max</span><span·class="p"·data-group-id="0455503148-[·...·truncated·by·diffoscope;·len:·53,·SHA:·96f11e1eecd5a27ce4f88153f0994befbb8e5f1f34df3f584421c2e09891670d·...·]-9">}</span><span·class="p">,</span><span·class="w">265 ········</span><span·class="p"·data-group-id="7196816676-9">{</span><span·class="nb">trace_pattern</span><span·class="p">,</span><span·class="p"·data-group-id="7196816676-10">{</span><span·class="ss">et</span><span·class="p">,</span><span·class="ss">max</span><span·class="p"·data-group-id="7196816676-[·...·truncated·by·diffoscope;·len:·53,·SHA:·6eac8ded0e00ce4861f128b51fc299ab31a537abd325c83f8a10d86d14c3d26f·...·]-9">}</span><span·class="p">,</span><span·class="w">
266 ········</span><span·class="p"·data-group-id="0455503148-11">{</span><span·class="ss">max_actors</span><span·class="p">,</span><span·class="mi">10</span><span·class="p"·data-group-id="0455503148-11">}</span><span·class="w">266 ········</span><span·class="p"·data-group-id="7196816676-11">{</span><span·class="ss">max_actors</span><span·class="p">,</span><span·class="mi">10</span><span·class="p"·data-group-id="7196816676-11">}</span><span·class="w">
267 ······</span><span·class="p"·data-group-id="0455503148-6">]</span><span·class="p"·data-group-id="0455503148-5">)</span><span·class="p">,</span><span·class="w">267 ······</span><span·class="p"·data-group-id="7196816676-6">]</span><span·class="p"·data-group-id="7196816676-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="0455503148-12">{</span><span·class="ss">drink</span><span·class="p">,</span><span·class="ss">iced_chai_latte</span><span·class="p"·data-group-id="0455503148-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="7196816676-12">{</span><span·class="ss">drink</span><span·class="p">,</span><span·class="ss">iced_chai_latte</span><span·class="p"·data-group-id="7196816676-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="0455503148-13">{</span><span·class="nb">size</span><span·class="p">,</span><span·class="ss">grande</span><span·class="p"·data-group-id="0455503148-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="7196816676-13">{</span><span·class="nb">size</span><span·class="p">,</span><span·class="ss">grande</span><span·class="p"·data-group-id="7196816676-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="0455503148-14">{</span><span·class="ss">milk</span><span·class="p">,</span><span·class="ss">whole</span><span·class="p"·data-group-id="0455503148-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="7196816676-14">{</span><span·class="ss">milk</span><span·class="p">,</span><span·class="ss">whole</span><span·class="p"·data-group-id="7196816676-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="0455503148-15">{</span><span·class="ss">flavor</span><span·class="p">,</span><span·class="ss">vanilla</span><span·class="p"·data-group-id="0455503148-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="7196816676-15">{</span><span·class="ss">flavor</span><span·class="p">,</span><span·class="ss">vanilla</span><span·class="p"·data-group-id="7196816676-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="0455503148-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:·510ec0d01fe19500f1409c2c63b5b4ddee2fd37b95580c193c9bdf196adb176f·...·]-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="7196816676-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:·75ee2c2060979532a8d65569b072827ca106efdd7b37138f6365542e312bc656·...·]-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="0455503148-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:·eccf669902630325c195764cf04f05f251df8e8b10e4bab2497e7e77ddb627a1·...·]-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="7196816676-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:·4f851a83e4ceb8fd240a7f4a4cf1c08c31bff8c52fd8bc6baae320e71754373d·...·]-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="0455503148-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:·d30fda6fb8d3ce706b42f04d4d659498847a7a1abe4592dda16c49bff76eda79·...·]-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="7196816676-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:·652f5d2065967f73f9f6e266ba0becd090d4d02869115b187483e302ae8b9441·...·]-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="0455503148-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:·5e4b80729cdbc13c5b03d58707c0e23cbefd701a79dc4658ed394e5e35aad3c1·...·]-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="7196816676-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:·c2ac477217a413d6eb4a5533abca8303c6b8db605145259c7c1a1863c549c56f·...·]-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="0455503148-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:·2e72b10d0a347ca8abe48e7fd504c6cf4d3e909a9085a3c232f70fbb93570428·...·]-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="7196816676-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:·3b1d3371651170e955d26db45636a202fc3410c67c8b942289d16a8b6e09be48·...·]-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="0455503148-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:·f2270bf4a81e55194ae817576fbf6da4f9fed9844047b3935388f0f89d74121d·...·]-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="7196816676-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:·2a8dc469c1a1e980aff2f3de5e73fa194a8a9ff042c22169632bb9f2434ab9b6·...·]-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="0455503148-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:·acd67a8ad7e7e5463ccb7e0ee62b07922c7693a2850673b4d98c201779eb0116·...·]-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="7196816676-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:·1ac0faae2369476a2091c13c87f8e68ddadc3a8c8a75528136a0d5a86ecc52fb·...·]-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="0455503148-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:·4751b1b932d4d7b8e34c77a47f8d95c1612625ac196245d0d12bc0a9853f54a4·...·]-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="7196816676-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:·0d34c3d3ff940aa7a494c6d1c030597e9f39a9c089ada1a705ce276b5a298841·...·]-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="0455503148-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:·a209b0ae5265618da8c07dec7c9cda9b491ac8966187f06b678e18c1f3d26779·...·]-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="7196816676-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:·93531671b944b69ffa22770527c6babb0cfb8fa6421d468bd715ac493ce3b929·...·]-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="0455503148-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:·891be16d35f81bd9620772f5eee8c9567ecd9a94e4fc31bb8ba11f97040ec76d·...·]-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="7196816676-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:·2fcb781c84d1faffb7476beee57ae1af14d0b23bfe091aff71107a5bf933c2bc·...·]-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="0455503148-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:·e9fe0c4ad2123eece45736aff48fc9de31f5ce152dd00a2133c5056d11d9a84f·...·]-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="7196816676-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:·8327cdb28e40271792b6ba1bdec4735944305818255f95917ba78d2293a3b4cc·...·]-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="0455503148-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:·907852283f10b5e1db9c667ef0e4c7b222e81caaf8bd81a25c7ab811db72477b·...·]-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="7196816676-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:·f553819f8b539adb7bae57a689c44a6ff9e41ea38c65e83665834ccdb75081fe·...·]-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="0455503148-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:·7a52679764efe5fbf718556d23ed501cf9464fcc17d0dd1cf0b7353fe074f403·...·]-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="7196816676-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:·a13f42dce2d1002e5d5356a66866ec092b61c5dc85da5dbbcc224296e4cd69cf·...·]-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">
  
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:·45178·bytes,·number·of·entries:·131 Zip·file·size:·45180·bytes,·number·of·entries:·13
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Apr-18·14:02·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Apr-18·15:31·mimetype
3 ?rw-r--r--··6.1·unx······714·bx·defN·25-Apr-18·14:02·OEBPS/title.xhtml3 ?rw-r--r--··6.1·unx······714·bx·defN·25-Apr-18·15:31·OEBPS/title.xhtml
4 ?rw-r--r--··6.1·unx····32747·bx·defN·25-Apr-18·14:02·OEBPS/notes.xhtml4 ?rw-r--r--··6.1·unx····32747·bx·defN·25-Apr-18·15:31·OEBPS/notes.xhtml
5 ?rw-r--r--··6.1·unx·····1175·bx·defN·25-Apr-18·14:02·OEBPS/nav.xhtml5 ?rw-r--r--··6.1·unx·····1175·bx·defN·25-Apr-18·15:31·OEBPS/nav.xhtml
6 ?rw-r--r--··6.1·unx·····1136·bx·defN·25-Apr-18·14:02·OEBPS/eunit_surefire.xhtml6 ?rw-r--r--··6.1·unx·····1136·bx·defN·25-Apr-18·15:31·OEBPS/eunit_surefire.xhtml
7 ?rw-r--r--··6.1·unx·····7821·bx·defN·25-Apr-18·14:02·OEBPS/eunit.xhtml7 ?rw-r--r--··6.1·unx·····7821·bx·defN·25-Apr-18·15:31·OEBPS/eunit.xhtml
8 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Apr-18·14:02·OEBPS/dist/epub-erlang-ESPT6BQV.css8 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Apr-18·15:31·OEBPS/dist/epub-erlang-ESPT6BQV.css
9 ?rw-r--r--··6.1·unx······499·bx·defN·25-Apr-18·14:02·OEBPS/dist/epub-LSJCIYTM.js9 ?rw-r--r--··6.1·unx······499·bx·defN·25-Apr-18·15:31·OEBPS/dist/epub-LSJCIYTM.js
10 ?rw-r--r--··6.1·unx·····1623·bx·defN·25-Apr-18·14:02·OEBPS/content.opf10 ?rw-r--r--··6.1·unx·····1623·bx·defN·25-Apr-18·15:31·OEBPS/content.opf
11 ?rw-r--r--··6.1·unx····65980·bx·defN·25-Apr-18·14:02·OEBPS/chapter.xhtml11 ?rw-r--r--··6.1·unx····65980·bx·defN·25-Apr-18·15:31·OEBPS/chapter.xhtml
12 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Apr-18·14:02·OEBPS/assets/logo.png12 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Apr-18·15:31·OEBPS/assets/logo.png
13 ?rw-r--r--··6.1·unx······252·bx·defN·25-Apr-18·14:02·META-INF/container.xml13 ?rw-r--r--··6.1·unx······252·bx·defN·25-Apr-18·15:31·META-INF/container.xml
14 ?rw-r--r--··6.1·unx······162·bx·defN·25-Apr-18·14:02·META-INF/com.apple.ibooks.display-options.xml14 ?rw-r--r--··6.1·unx······162·bx·defN·25-Apr-18·15:31·META-INF/com.apple.ibooks.display-options.xml
15 13·files,·132528·bytes·uncompressed,·42920·bytes·compressed:··67.6%15 13·files,·132528·bytes·uncompressed,·42922·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,·Apr·18·2025·14:02:38,·uncompressed·size·20,·method=store1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Apr·18·2025·15:31:18,·uncompressed·size·20,·method=store
1.2 KB
OEBPS/content.opf
1.16 KB
OEBPS/content.opf
Max HTML report size reached
81.7 KB
./usr/share/doc/erlang-doc/html/lib/ftp-1.2.3/doc/html/ftp.epub
2.22 KB
zipinfo {}
    
Offset 1, 15 lines modifiedOffset 1, 15 lines modified
1 Zip·file·size:·33166·bytes,·number·of·entries:·131 Zip·file·size:·33165·bytes,·number·of·entries:·13
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Apr-18·14:03·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Apr-18·15:32·mimetype
3 ?rw-r--r--··6.1·unx······710·bx·defN·25-Apr-18·14:03·OEBPS/title.xhtml3 ?rw-r--r--··6.1·unx······710·bx·defN·25-Apr-18·15:32·OEBPS/title.xhtml
4 ?rw-r--r--··6.1·unx····16468·bx·defN·25-Apr-18·14:03·OEBPS/notes.xhtml4 ?rw-r--r--··6.1·unx····16468·bx·defN·25-Apr-18·15:32·OEBPS/notes.xhtml
5 ?rw-r--r--··6.1·unx·····1130·bx·defN·25-Apr-18·14:03·OEBPS/nav.xhtml5 ?rw-r--r--··6.1·unx·····1130·bx·defN·25-Apr-18·15:32·OEBPS/nav.xhtml
6 ?rw-r--r--··6.1·unx·····1148·bx·defN·25-Apr-18·14:03·OEBPS/introduction.xhtml6 ?rw-r--r--··6.1·unx·····1148·bx·defN·25-Apr-18·15:32·OEBPS/introduction.xhtml
7 ?rw-r--r--··6.1·unx·····7044·bx·defN·25-Apr-18·14:03·OEBPS/ftp_client.xhtml7 ?rw-r--r--··6.1·unx·····7044·bx·defN·25-Apr-18·15:32·OEBPS/ftp_client.xhtml
8 ?rw-r--r--··6.1·unx····75259·bx·defN·25-Apr-18·14:03·OEBPS/ftp.xhtml8 ?rw-r--r--··6.1·unx····75259·bx·defN·25-Apr-18·15:32·OEBPS/ftp.xhtml
9 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Apr-18·14:03·OEBPS/dist/epub-erlang-ESPT6BQV.css9 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Apr-18·15:32·OEBPS/dist/epub-erlang-ESPT6BQV.css
10 ?rw-r--r--··6.1·unx······499·bx·defN·25-Apr-18·14:03·OEBPS/dist/epub-LSJCIYTM.js10 ?rw-r--r--··6.1·unx······499·bx·defN·25-Apr-18·15:32·OEBPS/dist/epub-LSJCIYTM.js
11 ?rw-r--r--··6.1·unx·····1614·bx·defN·25-Apr-18·14:03·OEBPS/content.opf11 ?rw-r--r--··6.1·unx·····1614·bx·defN·25-Apr-18·15:32·OEBPS/content.opf
12 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Apr-18·14:03·OEBPS/assets/logo.png12 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Apr-18·15:32·OEBPS/assets/logo.png
13 ?rw-r--r--··6.1·unx······252·bx·defN·25-Apr-18·14:03·META-INF/container.xml13 ?rw-r--r--··6.1·unx······252·bx·defN·25-Apr-18·15:32·META-INF/container.xml
14 ?rw-r--r--··6.1·unx······162·bx·defN·25-Apr-18·14:03·META-INF/com.apple.ibooks.display-options.xml14 ?rw-r--r--··6.1·unx······162·bx·defN·25-Apr-18·15:32·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,·30909·bytes·compressed:··75.2%
66.0 KB
zipdetails --redact --scan --utc {}
Max HTML report size reached
370 B
filetype from file(1)
    
Offset 1, 1 lines modifiedOffset 1, 1 lines modified
1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Apr·18·2025·14:03: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,·Apr·18·2025·15:32:12,·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="6982549625-1">(</span><span·class="p"·data-group-id="6982549625-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="1289487183-1">(</span><span·class="p"·data-group-id="1289487183-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="6982549625-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="6982549625-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·497,·SHA:·0daff9801a4471c050e42ba5a80c1cd9223bed59dbb1a9eb95f4e423eb6027f8·...·]-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="1289487183-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="1289487183-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·497,·SHA:·ca49025949f5800d415e05a66b59049b5950aa7442ac6b8eab24857636b43192·...·]-3">)</span><span·class="p">.</span><span·class="w">
129 ······</span><span·class="p"·data-group-id="6982549625-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="6982549625-6">}</span><span·class="w">129 ······</span><span·class="p"·data-group-id="1289487183-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="1289487183-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="6982549625-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:·12,·SHA:·30a1e0ad57f9791660370b95e84c917827cd3af5762d7dfc2fd731f9d44be474·...·]-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="1289487183-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:·12,·SHA:·ece4597c5c55adb4cc6cf4729da3158f44e461accbee730e8f1dc00e108743d4·...·]-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="6982549625-8">(</span><span·class="n">Pid</span><span·class="p"·data-group-id="6982549625-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="1289487183-8">(</span><span·class="n">Pid</span><span·class="p"·data-group-id="1289487183-8">)</span><span·class="p">.</span><span·class="w">
133 ······</span><span·class="p"·data-group-id="6982549625-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="6982549625-9">}</span><span·class="w">133 ······</span><span·class="p"·data-group-id="1289487183-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="1289487183-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="6982549625-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="6982549625-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="1289487183-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="1289487183-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="6982549625-11">(</span><span·class="n">Pid</span><span·class="p"·data-group-id="6982549625-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="1289487183-11">(</span><span·class="n">Pid</span><span·class="p"·data-group-id="1289487183-11">)</span><span·class="p">.</span><span·class="w">
137 ······</span><span·class="p"·data-group-id="6982549625-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="6982549625-12">}</span><span·class="p">.</span><span·class="w">137 ······</span><span·class="p"·data-group-id="1289487183-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="1289487183-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="6982549625-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="6982549625-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="1289487183-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="1289487183-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="6982549625-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="6982549625-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="1289487183-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="1289487183-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="6982549625-15">(</span><span·class="n">Pid</span><span·class="p"·data-group-id="6982549625-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="1289487183-15">(</span><span·class="n">Pid</span><span·class="p"·data-group-id="1289487183-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="6982549625-16">(</span><span·class="p"·data-group-id="6982549625-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="1289487183-16">(</span><span·class="p"·data-group-id="1289487183-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>
  
637 B
./usr/share/doc/erlang-doc/html/lib/inets-9.3.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-11662227.js21 dist/search_data-F2AB287C.js
22 dist/sidebar_items-2623356F.js22 dist/sidebar_items-2623356F.js
23 http_client.html23 http_client.html
24 http_server.html24 http_server.html
25 http_uri.html25 http_uri.html
26 httpc.html26 httpc.html
27 httpd.html27 httpd.html
28 httpd_custom_api.html28 httpd_custom_api.html
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="4705961097-1">[</span><span·class="p"·data-group-id="4705961097-2">{</span><span·class="ss">inets</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4705961097-3">[</span><span·class="p"·data-group-id="4705961097-4">{</spa[·...·truncated·by·diffoscope;·len:·606,·SHA:·31952b30968e84051d0516ea720525569d7f99b5acf7ca2770d0a1b3c2cc8290·...·]-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="2439978434-1">[</span><span·class="p"·data-group-id="2439978434-2">{</span><span·class="ss">inets</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2439978434-3">[</span><span·class="p"·data-group-id="2439978434-4">{</spa[·...·truncated·by·diffoscope;·len:·606,·SHA:·575538e080bc5c4c8d3e6871726739f55d8f92ebeaeef561ca4e6228b809c133·...·]-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="7272261759-1">(</span><span·class="p"·data-group-id="7272261759-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="5020280774-1">(</span><span·class="p"·data-group-id="5020280774-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="0533041688-1">(</span><span·class="p"·data-group-id="0533041688-2">[</span><span·class="p"·data-group-id="0533041688-3">{</span><span·class="ss">proxy</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0533041688-4">{</spa[·...·truncated·by·diffoscope;·len:·228,·SHA:·32156d2766b4a5d46d2eb995d6a7dcbfeae850e61b8eee5cfffde66578036c16·...·]88-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="2017139988-1">(</span><span·class="p"·data-group-id="2017139988-2">[</span><span·class="p"·data-group-id="2017139988-3">{</span><span·class="ss">proxy</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2017139988-4">{</spa[·...·truncated·by·diffoscope;·len:·228,·SHA:·04ad45f6d1246c7d803b620d59d1000fb3fa9a1d6ca539cc1a874caac15a3392·...·]88-5">}</span><span·class="p">,</span><span·class="w">
151 </span><span·class="p"·data-group-id="0533041688-6">[</span><span·class="s">&quot;localhost&quot;</span><span·class="p"·data-group-id="0533041688-6">]</span><span·class="p"·data-group-id="0533041688-4">}</span><span·class="p"·data-group-id="0533041688-3">}</span><span·class="p"·data-group-id="0533041688-2">]</span><span·class="p"·data-group-id="0533041688-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="1455856679-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1455856679-2">{</span><span·class="p"·data-group-id="1455856679-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="1455856679-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="1455856679-2">}</span><span·class="p"·data-group-id="1455856679-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="1455856679-4">(</span><span·class="nb">get</span><span·class="p">,</span><span·class[·...·truncated·by·diffoscope;·len:·805,·SHA:·b3bc0d7dbb7a6ad519728503739ce7e64eb319dfb1a0aaea7a8c457ee386915b·...·]151 </span><span·class="p"·data-group-id="2017139988-6">[</span><span·class="s">&quot;localhost&quot;</span><span·class="p"·data-group-id="2017139988-6">]</span><span·class="p"·data-group-id="2017139988-4">}</span><span·class="p"·data-group-id="2017139988-3">}</span><span·class="p"[·...·truncated·by·diffoscope;·len:·131,·SHA:·e9aea6f7f9e80bd3360cdfac1f6196d7acf0871ffa1c6f02a9a4437c0c51ab9f·...·]
 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="0894109705-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0894109705-2">{</span><span·class="p"·data-group-id="0894109705-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="0894109705-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="0894109705-2">}</span><span·class="p"·data-group-id="0894109705-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="0894109705-4">(</span><span·class="nb">get</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0894109705-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="0894109705-6">[</span><span·class="p"·data-group-id="0894109705-6">]</span><span·class="p"·data-group-id="0894109705-5">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0894109705-7">[</span><span·class="p"·data-group-id="0894109705-7">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0894109705-8">[</span><span·class="p"·data-group-id="0894109705-8">]</span><span·class="p"·data-group-id="0894109705-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="0898359252-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0898359252-2">{</span><span·class="p"·data-group-id="0898359252-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="0898359252-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="0898359252-2">}</span><span·class="p"·data-group-id="0898359252-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">
154 follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">4&gt;·</span><span·class="p"·data-group-id="4171818505-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:·8e600e9d395998e4a583db9ec08ccfcde434c6b2919f3a95111212c281312da1·...·]-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="0898359252-4">(</span><span·class="s">&quot;http://www.erlang.[·...·truncated·by·diffoscope;·len:·992,·SHA:·367d21977ec6ec0a3ff16d31194181b8b95e202cff29c095b56e8f0a81fa2544·...·]-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="7195744290-4">(</span><span·class="nb">get</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7195744290-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="7195744290-6">[</span><span·class="p"·data-group-id="7195744290-6">]</span><span·class="p"·data-group-id="7195744290-5">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7195744290-7">[</span><span·class="p"·data-group-id="7195744290-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="7195744290-9">(</span><span·class="ss">true</span><span·class="p"·data-group-id="7195744290-9">)</span><span·class="p"·data-group-id="7195744290-8">}</span><span·class="p"·data-group-id="7195744290-7">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7195744290-10">[</span><span·class="p"·data-group-id="7195744290-10">]</span><span·class="p"·data-group-id="7195744290-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="1079140171-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="1079140171-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="1079140171-2">(</span><span·class="nb">get</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1079140171-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="1079140171-4">[</span><span·class="p"·data-group-id="1079140171-4">]</span><span·class="p"·data-group-id="1079140171-3">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1079140171-5">[</span><span·class="p"·data-group-id="1079140171-5">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1079140171-6">[</span><span·class="p"·data-group-id="1079140171-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="1079140171-7">}</span><span·class="p"·data-group-id="1079140171-6">]</span><span·class="p"·data-group-id="1079140171-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
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="4171818505-4">(</span><span·class="s">&quot;http://www.erlang.org&quot;</span><span·class="p"·data-group-id="4171818505-4">)</span><span·class="p">.</span></code></pre><p>The·following·is·a·https·request·and·with·verification·of·the·host:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">5&gt;·</span><span·class="p"·data-group-id="5445063139-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5445063139-2">{</span><span·class="p"·data-group-id="5445063139-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="5445063139-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="5445063139-2">}</span><span·class="p"·data-group-id="5445063139-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="5445063139-4">(</span><span·class="nb">get</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5445063139-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="5445063139-6">[</span><span·class="p"·data-group-id="5445063139-6">]</span><span·class="p"·data-group-id="5445063139-5">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5445063139-7">[</span><span·class="p"·data-group-id="5445063139-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="5445063139-9">(</span><span·class="ss">true</span><span·class="p"·data-group-id="5445063139-9">)</span><span·class="p"·data-group-id="5445063139-8">}</span><span·class="p"·data-group-id="5445063139-7">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5445063139-10">[</span><span·class="p"·data-group-id="5445063139-10">]</span><span·class="p"·data-group-id="5445063139-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="1283372870-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="1283372870-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="1283372870-2">(</span><span·class="nb">get</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1283372870-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="1283372870-4">[</span><span·class="p"·data-group-id="1283372870-4">]</span><span·class="p"·data-group-id="1283372870-3">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1283372870-5">[</span><span·class="p"·data-group-id="1283372870-5">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1283372870-6">[</span><span·class="p"·data-group-id="1283372870-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="1283372870-7">}</span><span·class="p"·data-group-id="1283372870-6">]</span><span·class="p"·data-group-id="1283372870-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="9928103560-1">{</span><span·class="ss">http</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9928103560-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:·700238510e86e46ed497167815c9a465495a4443227a04e3370db13f888cd463·...·]-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="2470430487-1">{</span><span·class="ss">http</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2470430487-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:·d6d35fa36266538de185e8e37043680abd514e2289566dbf6cb500de14557afe·...·]-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="9141513436-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9141513436-2">{</span><span·class="p"·data-group-id="9141513436-3">{</span><span·class="n">NewVersion</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">200</span><span·class="p">,</span><span·class="w">·</span><span·class="n">NewReasonPhrase</span><span·class="p"·data-group-id="9141513436-3">}</span><span·class="p">,</span><span·class="w">·</span><span·class="n">NewHeaders</span><span·class="p">,</span><span·class="w">·</span><span·class="n">NewBody</span><span·class="p"·data-group-id="9141513436-2">}</span><span·class="p"·data-group-id="9141513436-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="9141513436-4">(</span><span·class="nb">get</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9141513436-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="9141513436-6">[</span><span·class="p"·data-group-id="9141513436-7">{</span><span·class="s">&quot;connection&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;close&quot;</span><span·class="p"·data-group-id="9141513436-7">}</span><span·class="p"·data-group-id="9141513436-6">]</span><span·class="p"·data-group-id="9141513436-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="9141513436-8">[</span><span·class="p"·data-group-id="9141513436-8">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9141513436-9[·...·truncated·by·diffoscope;·len:·1167,·SHA:·90cf09837fa6233a6e0e0da232e3895be84c99eaca64b50c63f5886b6aee396d·...·]">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="3820630083-1">{</span><span·class="ss">ok</sp[·...·truncated·by·diffoscope;·len:·731,·SHA:·7ce6ce2b8c24be0874d9b373b389579c4facc63b63c70b83bf93c8105cb2d1ce·...·]">
 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="3820630083-4">(</span><span·class="nb">get</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3820630083-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="3820630083-6">[</span><span·class="p"·data-group-id="3820630083-7">{</span><span·class="s">&quot;connection&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;close&quot;</span><span·class="p"·data-group-id="3820630083-7">}</span><span·class="p"·data-group-id="3820630083-6">]</span><span·class="p"·data-group-id="3820630083-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="3820630083-8">[</span><span·class="p"·data-group-id="3820630083-8">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3820630083-9">[</span><span·class="p"·data-group-id="3820630083-9">]</span><span·class="p"·data-group-id="3820630083-4">)</span><span·class="p">.</span></code></pre><p>This·sends·an·HTTP·request·over·a·unix·domain·socket·(experimental):</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">9&gt;·</span><span·class="nc">httpc</span><span·class="p">:</span><span·class="nf">set_options</span><span·class="p"·data-group-id="4587387699-1">(</span><span·class="p"·data-group-id="4587387699-2">[</span><span·class="p"·data-group-id="4587387699-3">{</span><span·class="ss">ipfamily</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">local</span><span·class="p"·data-group-id="4587387699-3">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4587387699-4">{</span><span·class="ss">unix_socket</span><span·class="p">,</span><span·class="s">&quot;/tmp/unix_socket/consul_http.sock&quot;</span><span·class="p"·data-group-id="4587387699-4">}</span><span·class="p"·data-group-id="4587387699-2">]</span><span·class="p"·data-group-id="4587387699-1">)</span><span·class="p">.</span><span·class="gp·unselectable">
162 10&gt;·</span><span·class="p"·data-group-id="1805960932-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1805960932-6">{</span><span·class="p"·data-group-id="1805960932-7">{</span><span·class="n">NewVersion</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·446,·SHA:·99cce7deedf3ac0244755dc3fd52ddbca8bd33b0fc9eac2a4c16f372cff8e30b·...·]-5">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">162 10&gt;·</span><span·class="p"·data-group-id="4587387699-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4587387699-6">{</span><span·class="p"·data-group-id="4587387699-7">{</span><span·class="n">NewVersion</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·446,·SHA:·9c99164d85b089cf00f8ed1fc0860dadfa8eb73e630eb44435f188d165de3b40·...·]-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="1805960932-8">(</span><span·class="nb">put</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1805960932-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:·1237944432dbe9ed350378a5e26aa33ab49a002e36b66c5f67f7ffc1925047aa·...·]-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="4587387699-8">(</span><span·class="nb">put</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4587387699-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:·c64714122f5a27be8f9f1f6ba9632c6e4ba90905144b43c0dd837dd4746e4663·...·]-2">)</span><span·class="p">.</span><span·class="w">
164 </span><span·class="p"·data-group-id="3745195749-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:·4b143805ef1de98768f5865f436287aefa352497bc541ce468137597835cd68e·...·]-1">)</span><span·class="p">.</span><span·class="w">164 </span><span·class="p"·data-group-id="4663280031-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:·1f06f130a0a369e3058aa93a8d0e9c7759d81fdfc047e328b4fb0a17be735c76·...·]-1">)</span><span·class="p">.</span><span·class="w">
165 </span><span·class="p"·data-group-id="0252777974-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="0252777974-2">}</span></code></pre><p>Stop·the·HTTP·client·profile:</p><pre><code·class="m[·...·truncated·by·diffoscope;·len:·352,·SHA:·e52b3dd02b9629cebfa34690e0eafba662e2b9cba67daa31b370f8b6e5ba21a6·...·]-1">)</span><span·class="p">.</span><span·class="w">165 </span><span·class="p"·data-group-id="8685293092-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="8685293092-2">}</span></code></pre><p>Stop·the·HTTP·client·profile:</p><pre><code·class="m[·...·truncated·by·diffoscope;·len:·352,·SHA:·d66d12a0336096cb59078664b7e99d0d60fdf4003fe83b964e184487db2cfc52·...·]-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="7103540483-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="7103540483-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="0541135468-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="0541135468-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="7545223023-1">[</span><span·class="p"·data-group-id="7545223023-2">{</span><span·class="ss">inets</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7545223023-3">[</span><span·class="p"·data-group-id="7545223023-4">{</span><span·class="ss">services</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7545223023-5">[</span><span·class="p"·data-group-id="7545223023-6">{</span><span·class="ss">httpd</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7545223023-7">[</span><span·class="p"·data-group-id="7545223023-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="7545223023-8">}</span><span·class="p"·data-group-id="7545223023-7">]</span><span·class="p"·data-group-id="7545223023-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="1463547388-1">[</span><span·class="p"·data-group-id="1463547388-2">{</span><span·class="ss">inets</span><span·class="p">,</span><[·...·truncated·by·diffoscope;·len:·528,·SHA:·7ac77b4dfb70e40db6fb5fcca957aeb0469221e02ee20ee67c0affd92da4f4a6·...·]</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="1463547388-8">}</span><span·class="p"·data-group-id="1463547388-7">]</span><span·class="p"·data-group-id="1463547388-6">}</span><span·class="p">,</span><span·class="w">
146 ··········</span><span·class="p"·data-group-id="7545223023-9">{</span><span·class="ss">httpd</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7545223023-10">[</span><span·class="p"·data-group-id="7545223023-11">{</span><span·class="ss">proplist_file</span><span·class="p">,</span><span·class="w">146 ··········</span><span·class="p"·data-group-id="1463547388-9">{</span><span·class="ss">httpd</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1463547388-10">[</span><span·class="p"·data-group-id="1463547388-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="7545223023-11">}</span><span·class="p"·data-group-id="7545223023-10">]</span><span·class="p"·data-group-id="7545223023-9">}</span><span·class="p"·data-group-id="7545223023-5">]</span><span·class="p"·data-group-id="7545223023-4">}</span><span·class="p"·data-group-id="7545223023-3">]</span><span·class="p"·data-group-id="7545223023-2">}</span><span·class="p"·data-group-id="7545223023-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="[·...·truncated·by·diffoscope;·len:·485,·SHA:·7d85225e2946d15b20e6c836c65774cb2c646b8a6f8f000320745c76f568e9e0·...·]147 ···········</span><span·class="s">&quot;/var/tmp/server_root/conf/8080_props.conf&quot;</span><span·class="p"·data-group-id="1463547388-11">}</span><span·class="p"·data-group-id="1463547388-10">]</span><span·class="p"·data-group-id="1463547388-9">}</span><[·...·truncated·by·diffoscope;·len:·377,·SHA:·8f9eaa4109cff212aec25d16cdd11c399023b7b258d1eb03cdb32f7636de069c·...·]
 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="7610551495-1">(</span><span·class="p"·data-group-id="7610551495-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="7610551495-2">{</span><span·class="ss">httpd</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">httpd</span><span·class="p"·data-group-id="7610551495-3">(</span><span·class="p"·data-group-id="7610551495-3">)</span><span·class="p"·data-group-id="7610551495-2">}</span><span·class="w">
149 </span><span·class="nf">httpd</span><span·class="p"·data-group-id="9460355853-4">(</span><span·class="p"·data-group-id="9460355853-4">)</span><span·class="w">·········</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="9460355853-5">[</span><span·class="nf">httpd_config</span><span·cl[·...·truncated·by·diffoscope;·len:·139,·SHA:·74eb5a1ea87e0902e6d8c6927e1fb0acd479c89ffab26fc387d1e47238a092c9·...·]-5">]</span><span·class="w">149 </span><span·class="nf">httpd</span><span·class="p"·data-group-id="7610551495-4">(</span><span·class="p"·data-group-id="7610551495-4">)</span><span·class="w">·········</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="7610551495-5">[</span><span·class="nf">httpd_config</span><span·cl[·...·truncated·by·diffoscope;·len:·139,·SHA:·e990d41934267902890e00f3c0077ceabe6d4a88b121f8578cc60dab5f656d57·...·]-5">]</span><span·class="w">
150 </span><span·class="nf">httpd_config</span><span·class="p"·data-group-id="9460355853-7">(</span><span·class="p"·data-group-id="9460355853-7">)</span><span·class="w">··</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="9460355853-8">{</span><span·class="ss">proplist_file</span><span·class="p[·...·truncated·by·diffoscope;·len:·209,·SHA:·32c56827575e5cc2c733a1519119a0cdab9fcb89d4c42be3d431d44b8afc3f27·...·]-8">}</span><span·class="w">150 </span><span·class="nf">httpd_config</span><span·class="p"·data-group-id="7610551495-7">(</span><span·class="p"·data-group-id="7610551495-7">)</span><span·class="w">··</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="7610551495-8">{</span><span·class="ss">proplist_file</span><span·class="p[·...·truncated·by·diffoscope;·len:·209,·SHA:·b490820e0583eab7a544948e27cddb0a96b0bfc604f804972862ada54e34bcfe·...·]-8">}</span><span·class="w">
151 ···················</span><span·class="p"·data-group-id="9460355853-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="9460355853-11">(</span><span·class="p"·data-group-id="9460355853-11">)</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·3f2ed7fb8dbd41a76aa91bd1db88c827d08418b98aacf6e03b699817b90fbc64·...·]-10">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">151 ···················</span><span·class="p"·data-group-id="7610551495-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="7610551495-11">(</span><span·class="p"·data-group-id="7610551495-11">)</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·71781406c8158305f184c8ebee81728bfe4f3c522075f0b6d6c175dde9475ebf·...·]-10">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
152 ···················</span><span·class="p"·data-group-id="9460355853-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="9460355853-13">(</span><span·class="p"·data-group-id="9460355853-13">)</span><span·class="p"·data-group-id="9460355853-12">}</span><span·class="w"> 
153 </span><span·class="nf">debug</span><span·class="p"·data-group-id="9460355853-14">(</span><span·class="p"·data-group-id="9460355853-14">)</span><span·class="w">·········</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">disable</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="9460355853-15">[</span><span·class="nf">debug_options</span><span·class="p"·data-group-id="9460355853-16">(</span><span·class="p"·data-group-id="9460355853-16">)</span><span·class="p"·data-group-id="9460355853-15">]</span><span·class="w"> 
154 </span><span·class="nf">debug_options</span><span·class="p"·data-group-id="9460355853-17">(</span><span·class="p"·data-group-id="9460355853-17">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·345,·SHA:·28b0299bb5805e42d733ba74741cd3510cd612ff4471fa081237451d1a0c1c1e·...·]</span><span·class="w">152 ···················</span><span·class="p"·data-group-id="7610551495-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="7610551495-13">(</span><span[·...·truncated·by·diffoscope;·len:·96,·SHA:·5a218de83519fadce9755218909b0de9d26c54a535010b47aec1ca8b3c2bfd70·...·]</span><span·class="w">
 153 </span><span·class="nf">debug</span><span·class="p"·data-group-id="7610551495-14">(</span><span·class="p"·data-group-id="7610551495-14">)</span><span·class="w">·········</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">disable</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="7610551495-15">[</span><span·class="nf">debug_options</span><span·class="p"·data-group-id="7610551495-16">(</span><span·class="p"·data-group-id="7610551495-16">)</span><span·class="p"·data-group-id="7610551495-15">]</span><span·class="w">
 154 </span><span·class="nf">debug_options</span><span·class="p"·data-group-id="7610551495-17">(</span><span·class="p"·data-group-id="7610551495-17">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="7610551495-18">{</span><span·class="ss">all_functions</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">modules</span><span·class="p"·data-group-id="7610551495-19">(</span><span·class="p"·data-group-id="7610551495-19">)</span><span·class="p"·data-group-id="7610551495-18">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
155 ···················</span><span·class="p"·data-group-id="9460355853-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="9460355853-21">(</span><span·class="p"·data-group-id="9460355853-21">)</span><spa[·...·truncated·by·diffoscope;·len:·37,·SHA:·b46bedd7747c18c68d6ca9303018dbddc9b7302beccfebd9890e83f726154f4c·...·]-20">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">155 ···················</span><span·class="p"·data-group-id="7610551495-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="7610551495-21">(</span><span·class="p"·data-group-id="7610551495-21">)</span><spa[·...·truncated·by·diffoscope;·len:·37,·SHA:·4e1a9af91f48aa494ec55d3babe56f9a9067f8de0e07bd1860ddd3c379b25de2·...·]-20">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
156 ···················</span><span·class="p"·data-group-id="9460355853-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="9460355853-23">(</span><span·class="p"·data-group-id="9460355853-23">)</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·4c17989ac202ce2012cb9d5d46368014b120876a05d58410ea77ba256ef3644a·...·]-22">}</span><span·class="w">156 ···················</span><span·class="p"·data-group-id="7610551495-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="7610551495-23">(</span><span·class="p"·data-group-id="7610551495-23">)</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·e11aae1976388fd857b954bb5de9f14c8b10d291a13e2e88b4ab3ed963b16adc·...·]-22">}</span><span·class="w">
157 </span><span·class="nf">modules</span><span·class="p"·data-group-id="9460355853-24">(</span><span·class="p"·data-group-id="9460355853-24">)</span><span·class="w">·······</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="9460355853-25">[</span><span·class="nf">atom</span><span·class="p"[·...·truncated·by·diffoscope;·len:·134,·SHA:·44123f8c1dbc39c7af2cfadff8db6d384c8dfd082780157ed4ecc0d6846dc0c6·...·]-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="7610551495-24">(</span><span·class="p"·data-group-id="7610551495-24">)</span><span·class="w">·······</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="7610551495-25">[</span><span·class="nf">atom</span><span·class="p"[·...·truncated·by·diffoscope;·len:·134,·SHA:·f5a2be0aa4e37853d5c764da51b417f814c9d8f0e69b0519ffdb25e50333c72f·...·]-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="2602918249-1">(</span><span·class="p"·data-group-id="2602918249-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="7697697406-1">(</span><span·class="p"·data-group-id="7697697406-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="2316634158-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="2316634158-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·703,·SHA:·d0895eb61d56096b4463bece60b2eda3c6069fb63ef41fd59e8b0cbbb3ac283d·...·]-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="9738336530-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="9738336530-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·703,·SHA:·ace94a6c2ddacbdc091000c3e9867b915463d1ea49f041c02927f7253b75a062·...·]-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="2316634158-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="2316634158-6">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·302,·SHA:·0a197457354307c0348f1f19b47757965bf098a32e0b95266b043c952048021f·...·]-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="9738336530-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="9738336530-6">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·302,·SHA:·6f3bab5388e8845e4b6f44fcffb7e123abab285988eed642637622eb7f1db3e2·...·]-2">)</span><span·class="p">.</span><span·class="w">
171 </span><span·class="p"·data-group-id="2316634158-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="2316634158-8">}</span></code></pre><p>Call·<code·cla[·...·truncated·by·diffoscope;·len:·320,·SHA:·9105c4135f8bada1e94fb2ffd885f4a7105d4eb196a0897208705865bfc2d310·...·]-1">)</span><span·class="p">.</span><span·class="w">171 </span><span·class="p"·data-group-id="9738336530-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="9738336530-8">}</span></code></pre><p>Call·<code·cla[·...·truncated·by·diffoscope;·len:·320,·SHA:·86bae1d1c9a859382af3b87d3fc34065ddc7171591cba79874abefa1f30d0c8e·...·]-1">)</span><span·class="p">.</span><span·class="w">
172 </span><span·class="p"·data-group-id="4756994468-2">[</span><span·class="p"·data-group-id="4756994468-3">{</span><span·class="ss">mime_types</span><span·class="p">,</span><span·class="p"·data-group-id="4756994468-4">[</span><span·class="p"·data-group-id="4756994468-5">{</span><span·class="s">&[·...·truncated·by·diffoscope;·len:·473,·SHA:·ad3206b7f990f5f45e878d2e8c5a93966c81f93111279308135574baa8fbecf4·...·]-3">}</span><span·class="p">,</span><span·class="w">172 </span><span·class="p"·data-group-id="1328580316-2">[</span><span·class="p"·data-group-id="1328580316-3">{</span><span·class="ss">mime_types</span><span·class="p">,</span><span·class="p"·data-group-id="1328580316-4">[</span><span·class="p"·data-group-id="1328580316-5">{</span><span·class="s">&[·...·truncated·by·diffoscope;·len:·473,·SHA:·7a350092924e05ad9aecd3ee6c7a9b3afa72c53ed87d09082670cc05583a4fcf·...·]-3">}</span><span·class="p">,</span><span·class="w">
173 ·</span><span·class="p"·data-group-id="4756994468-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="4756994468-7">}</span><span·class="p">,</span><span·class="w">173 ·</span><span·class="p"·data-group-id="1328580316-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="1328580316-7">}</span><span·class="p">,</span><span·class="w">
174 ·</span><span·class="p"·data-group-id="4756994468-8">{</span><span·class="ss">bind_address</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4756994468-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:·1d739381cde4160d0654bf5787dbdf14ca24ab0d52a0c668c54fb942a4bae7e0·...·]-8">}</span><span·class="p">,</span><span·class="w">174 ·</span><span·class="p"·data-group-id="1328580316-8">{</span><span·class="ss">bind_address</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1328580316-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:·42a40cd9d903476e07547dcbdd77f79982f896d987bd19c0040eb37a9668285c·...·]-8">}</span><span·class="p">,</span><span·class="w">
175 ·</span><span·class="p"·data-group-id="4756994468-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="4756994468-10">}</span><span·class="p">,</span><span·class="w">175 ·</span><span·class="p"·data-group-id="1328580316-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="1328580316-10">}</span><span·class="p">,</span><span·class="w">
176 ·</span><span·class="p"·data-group-id="4756994468-11">{</span><span·class="ss">port</span><span·class="p">,</span><span·class="mi">59408</span><span·class="p"·data-group-id="4756994468-11">}</span><span·class="p">,</span><span·class="w">176 ·</span><span·class="p"·data-group-id="1328580316-11">{</span><span·class="ss">port</span><span·class="p">,</span><span·class="mi">59408</span><span·class="p"·data-group-id="1328580316-11">}</span><span·class="p">,</span><span·class="w">
177 ·</span><span·class="p"·data-group-id="4756994468-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="4756994468-12">}</span><span·class="p">,</span><span·class="w">177 ·</span><span·class="p"·data-group-id="1328580316-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="1328580316-12">}</span><span·class="p">,</span><span·class="w">
178 ·</span><span·class="p"·data-group-id="4756994468-13">{</span><span·class="ss">ipfamily</span><span·class="p">,</span><span·class="ss">inet</span><span·class="p"·data-group-id="4756994468-13">}</span><span·class="p"·data-group-id="4756994468-2">]</span></code></pre><p>Reload·the·configuration·w[·...·truncated·by·diffoscope;·len:·519,·SHA:·7ab9bb59a0ad2d1986c9f27bf6d7d7e286b6fb7fa3e8770f25b5b79113f5d4bd·...·]-3">}</span><span·class="p">,</span><span·class="w">178 ·</span><span·class="p"·data-group-id="1328580316-13">{</span><span·class="ss">ipfamily</span><span·class="p">,</span><span·class="ss">inet</span><span·class="p"·data-group-id="1328580316-13">}</span><span·class="p"·data-group-id="1328580316-2">]</span></code></pre><p>Reload·the·configuration·w[·...·truncated·by·diffoscope;·len:·519,·SHA:·98f919b20f4406691a5e2a3a1becb87c9a65093394f57c215b40b30c029bd003·...·]-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="6644203059-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="6644203059-4">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·184,·SHA:·b3e979e3c03150c97777fb748f2bda8739b08a8b7c0d28f3950121bd3e9ec896·...·]-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="9917627826-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="9917627826-4">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·184,·SHA:·3f43fe0c59347750b3e02ad5e714a17f2c64a6b92bbdef4ccdeb24e3d654df97·...·]-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="6644203059-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="6644203059-6">}</span><span·class="p"·data-group-id="6644203059-2">]</span>[·...·truncated·by·diffoscope;·len:·127,·SHA:·c9f9cfa1734294b8f82fcaa0e738d4400a84b933376483144b1eff80a835c2f6·...·]-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="9917627826-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="9917627826-6">}</span><span·class="p"·data-group-id="9917627826-2">]</span>[·...·truncated·by·diffoscope;·len:·127,·SHA:·c4f98c90392f8498101016083ef10d6e61edff68cb8a010c5338cabcdd442be2·...·]-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="1824541365-1">(</span><span·class="n">Pid</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1824541365-2">[</span><span·class="ss">server_root</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">document_root</span><span·class="p"·data-group-id="1824541365-2">]</span><span·class="p"·data-group-id="1824541365-1">)</span><span·class="p">.</span><span·class="w"> 
183 </span><span·class="p"·data-group-id="1824541365-3">[</span><span·class="p"·data-group-id="1824541365-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="18245[·...·truncated·by·diffoscope;·len:·1948,·SHA:·c6d86968957d3f631044578d4bae64c377a7b0331af74c95e7e779dd9592fe4a·...·]>182 server·during·the·reload·get·a·service·temporary·unavailable·answer.</p></section><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">5&gt;·</span><span·class="nc">httpd</span><span·class="p">:</span><span·class="nf">info</span><s[·...·truncated·by·diffoscope;·len:·443,·SHA:·28d1db1d846fba7459c4d802a84061b0a7bc797dc817cb8fce73cc354f695699·...·]>
 183 </span><span·class="p"·data-group-id="6339856447-3">[</span><span·class="p"·data-group-id="6339856447-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="6339856447-4">}</span><span·class="p">,</span><span·class="p"·data-group-id="6339856447-5">{</span><span·class="ss">document_root</span><span·class="p">,</span><span·class="s">&quot;/tmp/www_test/htdocs&quot;</span><span·class="p"·data-group-id="6339856447-5">}</span><span·class="p"·data-group-id="6339856447-3">]</span></code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">6&gt;·</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">inets</span><span·class="p">:</span><span·class="nf">stop</span><span·class="p"·data-group-id="1967260302-1">(</span><span·class="ss">httpd</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pid</span><span·class="p"·data-group-id="1967260302-1">)</span><span·class="p">.</span></code></pre><p>Alternative:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">6&gt;·</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">inets</span><span·class="p">:</span><span·class="nf">stop</span><span·class="p"·data-group-id="5400328461-1">(</span><span·class="ss">httpd</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5400328461-2">{</span><span·class="p"·data-group-id="5400328461-3">{</span><span·class="mi">127</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="5400328461-3">}</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">59408</span><span·class="p"·data-group-id="5400328461-2">}</span><span·class="p"·data-group-id="5400328461-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="5942115365-1">(</span><span·class="ss">mnesia_test</span><span·class="p"·data-group-id="5942115365-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="5942115365-2">(</span><span·class="p"·data-group-id="5942115365-3">[</span><span·class="ss">start</span><span·class="p">/</span><span·class="mi">0</span><span·class[·...·truncated·by·diffoscope;·len:·191,·SHA:·bcb07d963ec4d2720864b2883548c52263b1deed398ac13ee165ebcbbbeb5dee·...·]">)</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="6759135742-1">(</span><span·class="ss">mnesia_test</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·27,·SHA:·bde5a05a4d8933414699147ad79cbff2f4c69339cad2c4705206a25714a22646·...·]">)</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="6759135742-2">(</span><span·class="p"·data-group-id="6759135742-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="6759135742-3">]</span><span·class="p"·data-group-id="6759135742-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="5942115365-4">(</span><span·class="s">&quot;mod_auth.hrl&quot;</span><span·class="p"·data-group-id="5942115365-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="6759135742-4">(</span><span·class="s">&quot;mod_auth.hrl&quot;</span><span·class="p"·data-group-id="6759135742-4">)</span><span·class="p">.</span><span·class="w">
  
311 </span><span·class="nf">first_start</span><span·class="p"·data-group-id="5942115365-5">(</span><span·class="p"·data-group-id="5942115365-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="6759135742-5">(</span><span·class="p"·data-group-id="6759135742-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="5942115365-6">(</span><span·class="p"·data-group-id="5942115365-7">[</span><span·class="nf">node</span><span·class="p"·data-group-id="5942115365-8">(</span><span·class="p"·data-group-id="5942115365-8">)</span><span·class="p"·data-group-id="5942115365-7">]<[·...·truncated·by·diffoscope;·len:·47,·SHA:·adf228fa6a5536fc78957e0367fc0179e39fd7d66fce3cc9b7dcdb38261c6a32·...·]-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="6759135742-6">(</span><span·class="p"·data-group-id="6759135742-7">[</span><span·class="nf">node</span><span·class="p"·data-group-id="6759135742-8">(</span><span·class="p"·data-group-id="6759135742-8">)</span><span·class="p"·data-group-id="6759135742-7">]<[·...·truncated·by·diffoscope;·len:·47,·SHA:·9d504fcf580086712ee73bc5df6220e80c180534aca78ad958d4f0173d5ad6e7·...·]-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="5942115365-9">(</span><span·class="p"·data-group-id="5942115365-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="6759135742-9">(</span><span·class="p"·data-group-id="6759135742-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="5942115365-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="6759135742-10">(</span><span·class="ss">httpd_user</span><span·class="p">,</span><span·class="w">
315 ························</span><span·class="p"·data-group-id="5942115365-11">[</span><span·class="p"·data-group-id="5942115365-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="5942115365-12">}</span><span·class="p">,</span><span·class="w">315 ························</span><span·class="p"·data-group-id="6759135742-11">[</span><span·class="p"·data-group-id="6759135742-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="6759135742-12">}</span><span·class="p">,</span><span·class="w">
316 ·························</span><span·class="p"·data-group-id="5942115365-13">{</span><span·class="ss">disc_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5942115365-14">[</span><span·class="nf">node</span><span·class="p"·data-group-id="5942115365-15">(</span><span·class="p[·...·truncated·by·diffoscope;·len:·135,·SHA:·525db7e9600db617a2475434d99f8a939adfb19c27364fcd4532558bbb4818f6·...·]-13">}</span><span·class="p">,</span><span·class="w">316 ·························</span><span·class="p"·data-group-id="6759135742-13">{</span><span·class="ss">disc_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6759135742-14">[</span><span·class="nf">node</span><span·class="p"·data-group-id="6759135742-15">(</span><span·class="p[·...·truncated·by·diffoscope;·len:·135,·SHA:·9fc943f2d626919230d7f2b5300a8fb903e794136d823610b128b90a24d37833·...·]-13">}</span><span·class="p">,</span><span·class="w">
317 ·························</span><span·class="p"·data-group-id="5942115365-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="5942115365-17">(</span><span·class="ss">fields</span><span·class="p">,</span><span·class="w">317 ·························</span><span·class="p"·data-group-id="6759135742-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="6759135742-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="5942115365-17">)</span><span·class="p"·data-group-id="5942115365-16">}</span><span·class="p"·data-group-id="5942115365-11">]</span><span·class="p"·data-group-id="5942115365-10">)</span><span·class="p">,</span><span·class="w">318 ··················································</span><span·class="ss">httpd_user</span><span·class="p"·data-group-id="6759135742-17">)</span><span·class="p"·data-group-id="6759135742-16">}</span><span·class="p"·data-group-id="6759135742-11">]</span><span·class="p"·data-group-id="6759135742-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="5942115365-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="6759135742-18">(</span><span·class="ss">httpd_group</span><span·class="p">,</span><span·class="w">
320 ························</span><span·class="p"·data-group-id="5942115365-19">[</span><span·class="p"·data-group-id="5942115365-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="5942115365-20">}</span><span·class="p">,</span><span·class="w">320 ························</span><span·class="p"·data-group-id="6759135742-19">[</span><span·class="p"·data-group-id="6759135742-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="6759135742-20">}</span><span·class="p">,</span><span·class="w">
321 ·························</span><span·class="p"·data-group-id="5942115365-21">{</span><span·class="ss">disc_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5942115365-22">[</span><span·class="nf">node</span><span·class="p"·data-group-id="5942115365-23">(</span><span·class="p[·...·truncated·by·diffoscope;·len:·135,·SHA:·cd3070ec6a00e6e2346016cefb780c1fd46abad6f4dde85e81486dc8e5da28da·...·]-21">}</span><span·class="p">,</span><span·class="w">321 ·························</span><span·class="p"·data-group-id="6759135742-21">{</span><span·class="ss">disc_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6759135742-22">[</span><span·class="nf">node</span><span·class="p"·data-group-id="6759135742-23">(</span><span·class="p[·...·truncated·by·diffoscope;·len:·135,·SHA:·5b41438791746dc501e840b9255a225dfe3e7d0323f9fdd36481422d622a8faa·...·]-21">}</span><span·class="p">,</span><span·class="w">
322 ·························</span><span·class="p"·data-group-id="5942115365-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="5942115365-25">(</span><span·class="ss">fields</span><span·class="p">,</span><span·class="w">322 ·························</span><span·class="p"·data-group-id="6759135742-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="6759135742-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="5942115365-25">)</span><span·class="p"·data-group-id="5942115365-24">}</span><span·class="p"·data-group-id="5942115365-19">]</span><span·class="p"·data-group-id="5942115365-18">)</span><span·class="p">,</span><span·class="w">323 ··················································</span><span·class="ss">httpd_group</span><span·class="p"·data-group-id="6759135742-25">)</span><span·class="p"·data-group-id="6759135742-24">}</span><span·class="p"·data-group-id="6759135742-19">]</span><span·class="p"·data-group-id="6759135742-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="5942115365-26">(</span><span·class="p"·data-group-id="5942115365-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="5942115365-27">]</span><span·cl[·...·truncated·by·diffoscope;·len:·110,·SHA:·4199c17217ffa14b0765d85d110e342cd09146826660941f64f4069b5f97878f·...·]-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="6759135742-26">(</span><span·class="p"·data-group-id="6759135742-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="6759135742-27">]</span><span·cl[·...·truncated·by·diffoscope;·len:·110,·SHA:·a616da901f73579ff8deebbecd83a4405c5a2d119c62eba92d53cc8fa6b0834e·...·]-26">)</span><span·class="p">.</span><span·class="w">
  
325 </span><span·class="nf">start</span><span·class="p"·data-group-id="5942115365-28">(</span><span·class="p"·data-group-id="5942115365-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="6759135742-28">(</span><span·class="p"·data-group-id="6759135742-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="5942115365-29">(</span><span·class="p"·data-group-id="5942115365-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="6759135742-29">(</span><span·class="p"·data-group-id="6759135742-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="5942115365-30">(</span><span·class="p"·data-group-id="5942115365-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="5942115365-31">]</span><span·cl[·...·truncated·by·diffoscope;·len:·110,·SHA:·4199c17217ffa14b0765d85d110e342cd09146826660941f64f4069b5f97878f·...·]-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="6759135742-30">(</span><span·class="p"·data-group-id="6759135742-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="6759135742-31">]</span><span·cl[·...·truncated·by·diffoscope;·len:·110,·SHA:·a616da901f73579ff8deebbecd83a4405c5a2d119c62eba92d53cc8fa6b0834e·...·]-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.5/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.5/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.5/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.5/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.6/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.6/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.6/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.6/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.6/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="0117052200-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="0117052200-1">}</span><span·class="w">1044 <a·href="../../../../erts-15.2.6/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="2566556571-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="2566556571-1">}</span><span·class="w">
1045 ·</span><span·class="p"·data-group-id="0117052200-2">{</span><span·class="n">RequestId</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0117052200-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:·cf9f083ebedc64d0ee1545ada62d5c04508c7bf4bbc9d38024a82b982ead8897·...·]-2">}</span><span·class="w">1045 ·</span><span·class="p"·data-group-id="2566556571-2">{</span><span·class="n">RequestId</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2566556571-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:·c64621181b50f2e1e1ae6fb8997e9ff91956b7d17d5523f5646453d9ac6d2ba2·...·]-2">}</span><span·class="w">
1046 ·</span><span·class="p"·data-group-id="0117052200-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="0117052200-4">}</span><span·class="w">1046 ·</span><span·class="p"·data-group-id="2566556571-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="2566556571-4">}</span><span·class="w">
1047 ·</span><span·class="p"·data-group-id="0117052200-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="011705220[·...·truncated·by·diffoscope;·len:·1,·SHA:·5feceb66ffc86f38d952786c6d696c79c2dbc239dd4e91b46729d73a27fb57e9·...·]-5">}</span><span·class="w">1047 ·</span><span·class="p"·data-group-id="2566556571-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="256655657[·...·truncated·by·diffoscope;·len:·1,·SHA:·6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b·...·]-5">}</span><span·class="w">
1048 ·</span><span·class="p"·data-group-id="0117052200-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:·f20d86284c14d509519c429be3d86679758feed564b7c5ca7af5f8e7a72a5e93·...·]-6">}</span><span·class="w">1048 ·</span><span·class="p"·data-group-id="2566556571-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:·f1fb32a8fe28c4e212e02b2307c2b3af0372f3e652a835feecc348dddfc0ae79·...·]-6">}</span><span·class="w">
1049 ·</span><span·class="p"·data-group-id="0117052200-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="0117052200-7">}</span><span·class="w">1049 ·</span><span·class="p"·data-group-id="2566556571-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="2566556571-7">}</span><span·class="w">
1050 ·</span><span·class="p"·data-group-id="0117052200-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="0117052200-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.6/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="2566556571-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="2566556571-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.6/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="5557351529-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="9377454863-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="5557351529-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="5557351529-3">[</span><span·class="ss">otp</span><span·class="p">,</span><span·class="ss">inets</sp[·...·truncated·by·diffoscope;·len:·330,·SHA:·d150801cbd3069f35cd77a60cad4f6c49e9201c6f110f57fde8d783ab00bfbd6·...·]-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="9377454863-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="9377454863-3">[</span><span·class="ss">otp</span><span·class="p">,</span><span·class="ss">inets</sp[·...·truncated·by·diffoscope;·len:·330,·SHA:·7604932b9740376f04c6d6806cfb86a907f168ee867c9da666ce8da8162d2574·...·]-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="2816722740-1">[</span><span·class="p"·data-group-id="2816722740-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="4508014485-1">[</span><span·class="p"·data-group-id="4508014485-2">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">
257 ·</span><span·class="p"·data-group-id="2816722740-3">[</span><span·class="p"·data-group-id="2816722740-4">{</span><span·class="ss">logger</span><span·class="p">,</span><span·class="w">257 ·</span><span·class="p"·data-group-id="4508014485-3">[</span><span·class="p"·data-group-id="4508014485-4">{</span><span·class="ss">logger</span><span·class="p">,</span><span·class="w">
258 ··</span><span·class="p"·data-group-id="2816722740-5">[</span><span·class="p"·data-group-id="2816722740-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="4508014485-5">[</span><span·class="p"·data-group-id="4508014485-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="2816722740-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="2816722740-8">#{</span><span·class="w">·</span><span·class="ss">file</span><span·class="w">·</sp[·...·truncated·by·diffoscope;·len:·173,·SHA:·6cc61fdb30d4f863a127e8b798fd0f54fa4befb17362513829ef8055da5cabf8·...·]-8">}</span><span·class="p">,</span><span·class="w">259 ····</span><span·class="p"·data-group-id="4508014485-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="4508014485-8">#{</span><span·class="w">·</span><span·class="ss">file</span><span·class="w">·</sp[·...·truncated·by·diffoscope;·len:·173,·SHA:·5d04f340ea6bcd29c89be5903726e50b2f120230f6d33d096422ef4b8fd472ac·...·]-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="2816722740-9">[</span><span·class="p"·data-group-id="2816722740-10">{</span><span·class="ss">inets_httpd</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2816722740-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="4508014485-9">[</span><span·class="p"·data-group-id="4508014485-10">{</span><span·class="ss">inets_httpd</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4508014485-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="2816722740-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="4508014485-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="2816722740-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:·23a3704805add6d3ad9b4c4f31bfac94d4037b3d337cffa82b3a3c26352bc4e5·...·]-13">]</span><span·class="w">262 ··································</span><span·class="p"·data-group-id="4508014485-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:·6fac0dcc3b060505db12ef634c87dcbce7f232f3bd932c289d5f7c4f6b48fb18·...·]-13">]</span><span·class="w">
263 ·································</span><span·class="p"·data-group-id="2816722740-12">}</span><span·class="p"·data-group-id="2816722740-11">}</span><span·class="p"·data-group-id="2816722740-10">}</span><span·class="p"·data-group-id="2816722740-9">]</span><span·class="p">,</span><span·class="w">263 ·································</span><span·class="p"·data-group-id="4508014485-12">}</span><span·class="p"·data-group-id="4508014485-11">}</span><span·class="p"·data-group-id="4508014485-10">}</span><span·class="p"·data-group-id="4508014485-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="2816722740-7">}</span><span·class="p"·data-group-id="2816722740-6">}</span><span·class="p"·data-group-id="2816722740-5">]</span><span·class="p"·data-group-id="2816722740-4">}</span><span·class="p"·data-group-id="2816722740-3">]</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·371,·SHA:·f00ae0b284b52988bf1bb532b214357e44f539a38bbc9c7f246e7de9d465468b·...·]-1">(</span><span·class="ss">default</span><span·class="p">,</span><span·class="w">264 ······</span><span·class="ss">filter_default</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">stop</span><span·class="w">·</span><span·class="p"·data-group-id="4508014485-7">}</span><span·class="p"·data-group-id="4508014485-6">}</span><span·class="p"·data-group-id="4508014485-5">]</span><span·class="p"·data-group-id="4508014485-4">}</span><span·class="p"·data-group-id="4508014485-3">]</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·371,·SHA:·70e3a685a7589c4329aec89200172ce932fdc9a1890e927d3aa5bfcb64a519c7·...·]-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="0055157760-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="3226639791-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="0055157760-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="3226639791-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="0055157760-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:·730f5177b6768114934647e6e1fc9fcea2b80d976b9f018a13fed9738f6c8b83·...·]-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="3226639791-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:·e877b20c44bc66f23bab03f7f1ed5d82ae683d85b94634474ec6d5e24af0db5a·...·]-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="4652847913-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:·205eab712268fa970c5c10ef4d59a450cfe7fd06ea60dfcced42989f254d1e6f·...·]-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="8680357236-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:·b2e609ecea799d206808cc0be74c4d5cdc4163b25c37963ff436b5da6ddb08a3·...·]-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="2372647010-1">{</span><span·class="ss">alias</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2372647010-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:·d57e09701ff79f8eb8d773592470a98946cb4d4f79191d678de0cae5ebdb76e8·...·]-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="7075420241-1">{</span><span·class="ss">alias</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7075420241-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:·7e0d9f388e9aa1cefc55dffd84a6ee17fd97630c56d43d775688459d521339c0·...·]-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.2/doc/html/re.html#replace/3"><code·class="inline">re:replace/3</code></a>·to·produce·a·path·in·the·local290 URLs·are·rewritten·by·<a·href="../../../../lib/stdlib-6.2.2/doc/html/re.html#replace/3"><code·class="inline">re:replace/3</code></a>·to·produce·a·path·in·the·local
291 file-system,·for·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="4160259532-1">{</span><span·class="ss">re_write</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4160259532-2">{</span><span·class="s">&quot;^/[~]([^/]+)(.*)$&quot;</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·147,·SHA:·125bb4a9e96852b5d9dbdcdedcf475845d8c83c59b0dbaff40c741222a340163·...·]-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="1634469246-1">{</span><span·class="ss">re_write</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1634469246-2">{</span><span·class="s">&quot;^/[~]([^/]+)(.*)$&quot;</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·147,·SHA:·91c0f1655638414e87c7c19b1beb0b0c6675ef3be2529c0d01379e727db87cf7·...·]-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="8566479230-1">{</span><span·class="ss">directory_index</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8566479230-2">[</span><span·class="s">&quot;index.html&quot;</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·140,·SHA:·2b3e034df42be2776ce0787262a1728e7577e5f99b698096e1ba67b3afd383fd·...·]-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="3555333922-1">{</span><span·class="ss">directory_index</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3555333922-2">[</span><span·class="s">&quot;index.html&quot;</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·140,·SHA:·ad124f5a0d4cb934fa84c97d1ce8763f845d387f1bdac1743484804ad3278299·...·]-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="3256489740-1">{</span><span·class="ss">script</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3256489740-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:·126185168caafae30dbb4a9c13e2c71fc8a1a421b2984e1d3fc973dac567cbd3·...·]-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="1181373424-1">{</span><span·class="ss">script</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1181373424-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:·c740adb6e3af67f9dc2b50f00f52e698e3c1c526dd25d33effbe5113314135fb·...·]-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="1861898309-1">{</span><span·class="ss">erl_script_alias</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1861898309-2">{</span><span·class="s">&quot;/cgi-bin/example&quot;</span><span·class="p">,</span><span·class="w">·<[·...·truncated·by·diffoscope;·len:·243,·SHA:·636d5df3c4191c768a8e65e9b5b1c0aab6ad2157d018493a68b0b129085d328b·...·]-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="4969353656-1">{</span><span·class="ss">erl_script_alias</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4969353656-2">{</span><span·class="s">&quot;/cgi-bin/example&quot;</span><span·class="p">,</span><span·class="w">·<[·...·truncated·by·diffoscope;·len:·243,·SHA:·ab05c323d6a17bdc065a085c9a11a7a43c8ed6e0a1067a765f0d96935b0b90fb·...·]-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="2765088669-1">{</span><span·class="ss">directory</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2765088669-2">{</span><span·class="nf">path</span><span·class="p"·data-group-id="2765088669-3">(</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·1510,·SHA:·79967c69f8dbc50b7e8454874c929fbc0b04f7e3dce7e0cf9d03f6868b444318·...·]-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="9715490013-1">{</span><span·class="ss">directory</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9715490013-2">{</span><span·class="nf">path</span><span·class="p"·data-group-id="9715490013-3">(</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·1510,·SHA:·ba48f1cfa22a6c44b4d9cfb0d1949f658c0e243ec8b0fad2145047e56a429007·...·]-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="0985108284-1">{</span><span·class="ss">security_directory</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0985108284-2">{</span><span·class="nf">path</span><span·class="p"·data-group-id="0985108284-3">(</span><span·clas[·...·truncated·by·diffoscope;·len:·717,·SHA:·e12dfdbfa9784f86cd242f92917c1ba0b44004504ed1b46ecbc286fb6ae12a73·...·]-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="2862568780-1">{</span><span·class="ss">security_directory</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2862568780-2">{</span><span·class="nf">path</span><span·class="p"·data-group-id="2862568780-3">(</span><span·clas[·...·truncated·by·diffoscope;·len:·717,·SHA:·55cffe77ed558392223e92c3e4b9c7aaef0b8e74cee222e6694ad0f352c567dc·...·]-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="8049257179-1">{</span><span·class="p"·data-group-id="8049257179-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="4361287579-1">{</span><span·class="p"·data-group-id="4361287579-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="8049257179-2">(</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8049257179-3">{</span><span·class="w">435 </span><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="4361287579-2">(</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4361287579-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="8049257179-4">[</span><span·class="p"·data-group-id="8049257179-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="4361287579-4">[</span><span·class="p"·data-group-id="4361287579-4">]</span><span·class="p">,</span><span·class="w">
437 ····</span><span·class="ss">socket_type</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">ip_comm</span><span·class="p">,</span><span·class="w">437 ····</span><span·class="ss">socket_type</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">ip_comm</span><span·class="p">,</span><span·class="w">
438 ····</span><span·class="ss">socket</span><span·class="p">,</span><span·class="w">438 ····</span><span·class="ss">socket</span><span·class="p">,</span><span·class="w">
Max diff block lines reached; 3829/49485 bytes (7.74%) of diff not shown.
290 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:·152773·bytes,·number·of·entries:·251 Zip·file·size:·152778·bytes,·number·of·entries:·25
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Apr-18·13:58·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Apr-18·15:21·mimetype
3 ?rw-r--r--··6.1·unx······714·bx·defN·25-Apr-18·13:58·OEBPS/title.xhtml3 ?rw-r--r--··6.1·unx······714·bx·defN·25-Apr-18·15:21·OEBPS/title.xhtml
4 ?rw-r--r--··6.1·unx···149866·bx·defN·25-Apr-18·13:58·OEBPS/notes.xhtml4 ?rw-r--r--··6.1·unx···149866·bx·defN·25-Apr-18·15:21·OEBPS/notes.xhtml
5 ?rw-r--r--··6.1·unx·····2125·bx·defN·25-Apr-18·13:58·OEBPS/nav.xhtml5 ?rw-r--r--··6.1·unx·····2125·bx·defN·25-Apr-18·15:21·OEBPS/nav.xhtml
6 ?rw-r--r--··6.1·unx····31039·bx·defN·25-Apr-18·13:58·OEBPS/mod_security.xhtml6 ?rw-r--r--··6.1·unx····31039·bx·defN·25-Apr-18·15:21·OEBPS/mod_security.xhtml
7 ?rw-r--r--··6.1·unx····13707·bx·defN·25-Apr-18·13:58·OEBPS/mod_esi.xhtml7 ?rw-r--r--··6.1·unx····13707·bx·defN·25-Apr-18·15:21·OEBPS/mod_esi.xhtml
8 ?rw-r--r--··6.1·unx····76409·bx·defN·25-Apr-18·13:58·OEBPS/mod_auth.xhtml8 ?rw-r--r--··6.1·unx····76409·bx·defN·25-Apr-18·15:21·OEBPS/mod_auth.xhtml
9 ?rw-r--r--··6.1·unx····15432·bx·defN·25-Apr-18·13:58·OEBPS/mod_alias.xhtml9 ?rw-r--r--··6.1·unx····15432·bx·defN·25-Apr-18·15:21·OEBPS/mod_alias.xhtml
10 ?rw-r--r--··6.1·unx·····1431·bx·defN·25-Apr-18·13:58·OEBPS/introduction.xhtml10 ?rw-r--r--··6.1·unx·····1431·bx·defN·25-Apr-18·15:21·OEBPS/introduction.xhtml
11 ?rw-r--r--··6.1·unx·····2619·bx·defN·25-Apr-18·13:58·OEBPS/inets_services.xhtml11 ?rw-r--r--··6.1·unx·····2619·bx·defN·25-Apr-18·15:21·OEBPS/inets_services.xhtml
12 ?rw-r--r--··6.1·unx····19741·bx·defN·25-Apr-18·13:58·OEBPS/inets.xhtml12 ?rw-r--r--··6.1·unx····19741·bx·defN·25-Apr-18·15:21·OEBPS/inets.xhtml
13 ?rw-r--r--··6.1·unx····39157·bx·defN·25-Apr-18·13:58·OEBPS/httpd_util.xhtml13 ?rw-r--r--··6.1·unx····39157·bx·defN·25-Apr-18·15:21·OEBPS/httpd_util.xhtml
14 ?rw-r--r--··6.1·unx·····7600·bx·defN·25-Apr-18·13:58·OEBPS/httpd_socket.xhtml14 ?rw-r--r--··6.1·unx·····7600·bx·defN·25-Apr-18·15:21·OEBPS/httpd_socket.xhtml
15 ?rw-r--r--··6.1·unx·····6327·bx·defN·25-Apr-18·13:58·OEBPS/httpd_custom_api.xhtml15 ?rw-r--r--··6.1·unx·····6327·bx·defN·25-Apr-18·15:21·OEBPS/httpd_custom_api.xhtml
16 ?rw-r--r--··6.1·unx···110849·bx·defN·25-Apr-18·13:58·OEBPS/httpd.xhtml16 ?rw-r--r--··6.1·unx···110849·bx·defN·25-Apr-18·15:21·OEBPS/httpd.xhtml
17 ?rw-r--r--··6.1·unx····85351·bx·defN·25-Apr-18·13:58·OEBPS/httpc.xhtml17 ?rw-r--r--··6.1·unx····85351·bx·defN·25-Apr-18·15:21·OEBPS/httpc.xhtml
18 ?rw-r--r--··6.1·unx·····5591·bx·defN·25-Apr-18·13:58·OEBPS/http_uri.xhtml18 ?rw-r--r--··6.1·unx·····5591·bx·defN·25-Apr-18·15:21·OEBPS/http_uri.xhtml
19 ?rw-r--r--··6.1·unx····50557·bx·defN·25-Apr-18·13:58·OEBPS/http_server.xhtml19 ?rw-r--r--··6.1·unx····50557·bx·defN·25-Apr-18·15:21·OEBPS/http_server.xhtml
20 ?rw-r--r--··6.1·unx····21764·bx·defN·25-Apr-18·13:58·OEBPS/http_client.xhtml20 ?rw-r--r--··6.1·unx····21764·bx·defN·25-Apr-18·15:21·OEBPS/http_client.xhtml
21 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Apr-18·13:58·OEBPS/dist/epub-erlang-ESPT6BQV.css21 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Apr-18·15:21·OEBPS/dist/epub-erlang-ESPT6BQV.css
22 ?rw-r--r--··6.1·unx······499·bx·defN·25-Apr-18·13:58·OEBPS/dist/epub-LSJCIYTM.js22 ?rw-r--r--··6.1·unx······499·bx·defN·25-Apr-18·15:21·OEBPS/dist/epub-LSJCIYTM.js
23 ?rw-r--r--··6.1·unx·····3408·bx·defN·25-Apr-18·13:58·OEBPS/content.opf23 ?rw-r--r--··6.1·unx·····3408·bx·defN·25-Apr-18·15:21·OEBPS/content.opf
24 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Apr-18·13:58·OEBPS/assets/logo.png24 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Apr-18·15:21·OEBPS/assets/logo.png
25 ?rw-r--r--··6.1·unx······252·bx·defN·25-Apr-18·13:58·META-INF/container.xml25 ?rw-r--r--··6.1·unx······252·bx·defN·25-Apr-18·15:21·META-INF/container.xml
26 ?rw-r--r--··6.1·unx······162·bx·defN·25-Apr-18·13:58·META-INF/com.apple.ibooks.display-options.xml26 ?rw-r--r--··6.1·unx······162·bx·defN·25-Apr-18·15:21·META-INF/com.apple.ibooks.display-options.xml
27 25·files,·665019·bytes·uncompressed,·148453·bytes·compressed:··77.7%27 25·files,·665019·bytes·uncompressed,·148458·bytes·compressed:··77.7%
133 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,·Apr·18·2025·13:58: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,·Apr·18·2025·15:21:34,·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="6240880420-1">[</span><span·class="p"·data-group-id="6240880420-2">{</span><span·class="ss">inets</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6240880420-3">[</span><span·class="p"·data-group-id="6240880420-4">{</span[·...·truncated·by·diffoscope;·len:·328,·SHA:·2d22448000977a84fd06fe02390a9b153c3b527b24e118c51fb47d5d47989f1a·...·]-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="6386713318-1">[</span><span·class="p"·data-group-id="6386713318-2">{</span><span·class="ss">inets</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6386713318-3">[</span><span·class="p"·data-group-id="6386713318-4">{</span[·...·truncated·by·diffoscope;·len:·328,·SHA:·4cf6cb72a7ff413a7e7ae26414ac66b1af2ff985d144cc3b508415b4b543a57a·...·]-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="8556005850-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="8556005850-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="3981047719-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="3981047719-1">}</samp><samp·class="w">
929 ·</samp><samp·class="p"·data-group-id="8556005850-2">{</samp><samp·class="n">RequestId</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="8556005850-3">{</samp><samp·class="ss">error</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Reason</[·...·truncated·by·diffoscope;·len:·99,·SHA:·6bc9bb63eebc729624b1f09a0fe1e285d1e4b55549c5acf23ec59887491868fd·...·]-2">}</samp><samp·class="w">929 ·</samp><samp·class="p"·data-group-id="3981047719-2">{</samp><samp·class="n">RequestId</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="3981047719-3">{</samp><samp·class="ss">error</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Reason</[·...·truncated·by·diffoscope;·len:·99,·SHA:·63b67bba709981db7b8835a388b41507cfe966acdd0877d0f239f76ef8562efb·...·]-2">}</samp><samp·class="w">
930 ·</samp><samp·class="p"·data-group-id="8556005850-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="8556005850-4">}</samp><samp·class="w">930 ·</samp><samp·class="p"·data-group-id="3981047719-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="3981047719-4">}</samp><samp·class="w">
931 ·</samp><samp·class="p"·data-group-id="8556005850-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="855600585[·...·truncated·by·diffoscope;·len:·1,·SHA:·5feceb66ffc86f38d952786c6d696c79c2dbc239dd4e91b46729d73a27fb57e9·...·]-5">}</samp><samp·class="w">931 ·</samp><samp·class="p"·data-group-id="3981047719-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="398104771[·...·truncated·by·diffoscope;·len:·1,·SHA:·19581e27de7ced00ff1ce50b2047e7a567c76b1cbaebabe5ef03f7c3017bb5b7·...·]-5">}</samp><samp·class="w">
932 ·</samp><samp·class="p"·data-group-id="8556005850-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:·82,·SHA:·3b0d755670a64d77e7f7dd2becb6aadd78e7a97e1576a21f0588c0e0ab5da4e0·...·]-6">}</samp><samp·class="w">932 ·</samp><samp·class="p"·data-group-id="3981047719-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:·82,·SHA:·ebaa559d252d4f5b26730b86e58f250af374584f31937ea513bd911518a2a4f4·...·]-6">}</samp><samp·class="w">
933 ·</samp><samp·class="p"·data-group-id="8556005850-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="8556005850-7">}</samp><samp·class="w">933 ·</samp><samp·class="p"·data-group-id="3981047719-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="3981047719-7">}</samp><samp·class="w">
934 ·</samp><samp·class="p"·data-group-id="8556005850-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="8556005850-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="3981047719-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="3981047719-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="7078273148-1">[</span><span·class="p"·data-group-id="7078273148-2">{</span><span·class="ss">inets</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7078273148-3">[</span><span·class="p"·data-group-id="7078273148-4">{</spa[·...·truncated·by·diffoscope;·len:·329,·SHA:·d693bd5a6c02ab90aa3107e629b9170e6ec76bb856f7691c626c68c090066139·...·]-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="3652719167-1">[</span><span·class="p"·data-group-id="3652719167-2">{</span><span·class="ss">inets</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3652719167-3">[</span><span·class="p"·data-group-id="3652719167-4">{</spa[·...·truncated·by·diffoscope;·len:·329,·SHA:·0d27a705b973b7923a7599ff386082f26ec22590aa730cf16b38200309c37a25·...·]-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">
628 B
./usr/share/doc/erlang-doc/html/lib/inets-9.3.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-11662227.js"></script>124 <script·src="dist/search_data-F2AB287C.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>
637 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/.build.gz
493 B
.build
    
Offset 111, 13 lines modifiedOffset 111, 13 lines modified
111 dist/lato-latin-300-normal-YUMVEFOL.woff2111 dist/lato-latin-300-normal-YUMVEFOL.woff2
112 dist/lato-latin-400-normal-W7754I4D.woff2112 dist/lato-latin-400-normal-W7754I4D.woff2
113 dist/lato-latin-700-normal-2XVSBPG4.woff2113 dist/lato-latin-700-normal-2XVSBPG4.woff2
114 dist/lato-latin-ext-300-normal-VPGGJKJL.woff2114 dist/lato-latin-ext-300-normal-VPGGJKJL.woff2
115 dist/lato-latin-ext-400-normal-N27NCBWW.woff2115 dist/lato-latin-ext-400-normal-N27NCBWW.woff2
116 dist/lato-latin-ext-700-normal-Q2L5DVMW.woff2116 dist/lato-latin-ext-700-normal-Q2L5DVMW.woff2
117 dist/remixicon-NKANDIL5.woff2117 dist/remixicon-NKANDIL5.woff2
118 dist/search_data-D2E3D7BA.js118 dist/search_data-A53AF012.js
119 dist/sidebar_items-C4FB09FB.js119 dist/sidebar_items-C4FB09FB.js
120 index.html120 index.html
121 jinterface_users_guide.html121 jinterface_users_guide.html
122 notes.html122 notes.html
123 search.html123 search.html
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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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·Fri·Apr·18·13:59:34·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Fri·Apr·18·15:24:08·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-04-18">8 <meta·name="dc.created"·content="2025-04-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">
640 B
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/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-D2E3D7BA.js"></script>114 <script·src="dist/search_data-A53AF012.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>
26.2 KB
./usr/share/doc/erlang-doc/html/lib/kernel-10.2.6/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="3565027124-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="0185611877-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="3565027124-2">[</span><span·class="p"·data-group-id="3565027124-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="3565027124-3">}</span><span·class="p">,</span><span·class="w">148 ··</span><span·class="p"·data-group-id="0185611877-2">[</span><span·class="p"·data-group-id="0185611877-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="0185611877-3">}</span><span·class="p">,</span><span·class="w">
149 ···</span><span·class="p"·data-group-id="3565027124-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="3565027124-4">}</span><span·class="p">,</span><span·class="w">149 ···</span><span·class="p"·data-group-id="0185611877-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="0185611877-4">}</span><span·class="p">,</span><span·class="w">
150 ···</span><span·class="p"·data-group-id="3565027124-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="3565027124-5">}</span><span·class="p">,</span><span·class="w">150 ···</span><span·class="p"·data-group-id="0185611877-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="0185611877-5">}</span><span·class="p">,</span><span·class="w">
151 ···</span><span·class="p"·data-group-id="3565027124-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="3565027124-6">}</span><span·class="p">,</span><span·class="w">151 ···</span><span·class="p"·data-group-id="0185611877-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="0185611877-6">}</span><span·class="p">,</span><span·class="w">
152 ···</span><span·class="p"·data-group-id="3565027124-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="3565027124-7">}</span><span·class="p">,</span><span·class="w">152 ···</span><span·class="p"·data-group-id="0185611877-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="0185611877-7">}</span><span·class="p">,</span><span·class="w">
153 ···</span><span·class="p"·data-group-id="3565027124-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="3565027124-8">}</span><span·class="p">,</span><span·class="w">153 ···</span><span·class="p"·data-group-id="0185611877-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="0185611877-8">}</span><span·class="p">,</span><span·class="w">
154 ···</span><span·class="p"·data-group-id="3565027124-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="3565027124-9">}</span><span·class="p">,</span><span·class="w">154 ···</span><span·class="p"·data-group-id="0185611877-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="0185611877-9">}</span><span·class="p">,</span><span·class="w">
155 ···</span><span·class="p"·data-group-id="3565027124-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="3565027124-10">}</span><span·class="p">,</span><span·class="w">155 ···</span><span·class="p"·data-group-id="0185611877-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="0185611877-10">}</span><span·class="p">,</span><span·class="w">
156 ···</span><span·class="p"·data-group-id="3565027124-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="3565027124-11">}</span><span·class="p">,</span><span·class="w">156 ···</span><span·class="p"·data-group-id="0185611877-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="0185611877-11">}</span><span·class="p">,</span><span·class="w">
157 ···</span><span·class="p"·data-group-id="3565027124-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="3565027124-12">}</span><span·class="p">,</span><span·class="w">157 ···</span><span·class="p"·data-group-id="0185611877-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="0185611877-12">}</span><span·class="p">,</span><span·class="w">
158 ···</span><span·class="p"·data-group-id="3565027124-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="3565027124-13">}</span><span·class="p">,</span><span·class="w">158 ···</span><span·class="p"·data-group-id="0185611877-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="0185611877-13">}</span><span·class="p">,</span><span·class="w">
159 ···</span><span·class="p"·data-group-id="3565027124-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="3565027124-14">}</span><span·class="p">,</span><span·class="w">159 ···</span><span·class="p"·data-group-id="0185611877-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="0185611877-14">}</span><span·class="p">,</span><span·class="w">
160 ···</span><span·class="p"·data-group-id="3565027124-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="3565027124-15">}</span><span·class="p">,</span><span·class="w">160 ···</span><span·class="p"·data-group-id="0185611877-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="0185611877-15">}</span><span·class="p">,</span><span·class="w">
161 ···</span><span·class="p"·data-group-id="3565027124-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="3565027124-16">}</span><span·class="p"·data-group-id="3565027124-2">]</span><span[·...·truncated·by·diffoscope;·len:·36,·SHA:·8d39a4185773dcd459bec08dcf75c46f67e481edafeaa59ea726a6e1d4148823·...·]-1">}</span><span·class="p">.</span><span·class="w">161 ···</span><span·class="p"·data-group-id="0185611877-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="0185611877-16">}</span><span·class="p"·data-group-id="0185611877-2">]</span><span[·...·truncated·by·diffoscope;·len:·36,·SHA:·1b99f3f3a8f1ec2ca52d9badaa7c3ff64901cfff244424f649aa2e7599981be1·...·]-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="3565027124-17">(</span><span·class="p"·data-group-id="3565027124-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="0185611877-17">(</span><span·class="p"·data-group-id="0185611877-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="3565027124-18">(</span><span·class="p"·data-group-id="3565027124-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="0185611877-18">(</span><span·class="p"·data-group-id="0185611877-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="3565027124-19">(</span><span·class="p"·data-group-id="3565027124-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="0185611877-19">(</span><span·class="p"·data-group-id="0185611877-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="3565027124-20">(</span><span·class="p"·data-group-id="3565027124-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="0185611877-20">(</span><span·class="p"·data-group-id="0185611877-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="3565027124-21">[</span><span·class="n">Module</span><span·class="p"·data-group-id="3565027124-21">]</span><span·class="w">·············</span><span·class="p"·data-group-id="3565027124-22">[</span><span·class="p"·data-group-id="3565027124-22">]</span><span·class="w">168 </span><span·class="n">Modules</span><span·class="w">······</span><span·class="p"·data-group-id="0185611877-21">[</span><span·class="n">Module</span><span·class="p"·data-group-id="0185611877-21">]</span><span·class="w">·············</span><span·class="p"·data-group-id="0185611877-22">[</span><span·class="p"·data-group-id="0185611877-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="3565027124-23">(</span><span·class="p"·data-group-id="3565027124-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="0185611877-23">(</span><span·class="p"·data-group-id="0185611877-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="3565027124-24">(</span><span·class="p"·data-group-id="3565027124-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="0185611877-24">(</span><span·class="p"·data-group-id="0185611877-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="3565027124-25">[</span><span·class="n">Name</span><span·class="p"·data-group-id="3565027124-25">]</span><span·class="w">···············</span><span·class="p"·data-group-id="3565027124-26">[</span><span·class="p"·data-group-id="3565027124-26">]</span><span·class="w">171 </span><span·class="n">Names</span><span·class="w">········</span><span·class="p"·data-group-id="0185611877-25">[</span><span·class="n">Name</span><span·class="p"·data-group-id="0185611877-25">]</span><span·class="w">···············</span><span·class="p"·data-group-id="0185611877-26">[</span><span·class="p"·data-group-id="0185611877-26">]</span><span·class="w">
172 </span><span·class="n">Apps</span><span·class="w">·········</span><span·class="p"·data-group-id="3565027124-27">[</span><span·class="n">App</span><span·class="p"·data-group-id="3565027124-27">]</span><span·class="w">················</span><span·class="p"·data-group-id="3565027124-28">[</span><span·class="p"·data-group-id="3565027124-28">]</span><span·class="w">172 </span><span·class="n">Apps</span><span·class="w">·········</span><span·class="p"·data-group-id="0185611877-27">[</span><span·class="n">App</span><span·class="p"·data-group-id="0185611877-27">]</span><span·class="w">················</span><span·class="p"·data-group-id="0185611877-28">[</span><span·class="p"·data-group-id="0185611877-28">]</span><span·class="w">
173 </span><span·class="n">Env</span><span·class="w">··········</span><span·class="p"·data-group-id="3565027124-29">[</span><span·class="p"·data-group-id="3565027124-30">{</span><span·class="n">Par</span><span·class="p">,</span><span·class="n">Val</span><span·class="p"·data-group-id="3565027124-30">}</span><span·class="p"·data-group-id="3565027124-29">]</[·...·truncated·by·diffoscope;·len:·133,·SHA:·13fa2adc0acb5c971da9c045f628b0f7070e24400f0e4d1ccc2bacd58c2987d0·...·]-31">]</span><span·class="w">173 </span><span·class="n">Env</span><span·class="w">··········</span><span·class="p"·data-group-id="0185611877-29">[</span><span·class="p"·data-group-id="0185611877-30">{</span><span·class="n">Par</span><span·class="p">,</span><span·class="n">Val</span><span·class="p"·data-group-id="0185611877-30">}</span><span·class="p"·data-group-id="0185611877-29">]</[·...·truncated·by·diffoscope;·len:·133,·SHA:·736e7d3e3402394b72057ca066e6b31a71b7908c23472bb350a9b44de1b6d4c7·...·]-31">]</span><span·class="w">
174 </span><span·class="n">Start</span><span·class="w">········</span><span·class="p"·data-group-id="3565027124-32">{</span><span·class="n">Module</span><span·class="p">,</span><span·class="n">StartArgs</span><span·class="p"·data-group-id="3565027124-32">}</span><span·class="w">···</span><span·class="p"·data-group-id="3565027124-33">[</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·231d5a63c55cb246a33df64453d30473ea39c7c478ec874652a396cc71370736·...·]-33">]</span><span·class="w">174 </span><span·class="n">Start</span><span·class="w">········</span><span·class="p"·data-group-id="0185611877-32">{</span><span·class="n">Module</span><span·class="p">,</span><span·class="n">StartArgs</span><span·class="p"·data-group-id="0185611877-32">}</span><span·class="w">···</span><span·class="p"·data-group-id="0185611877-33">[</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·78fc14380a21e9a165aeb51f820d429a5caec8d4015c5867e1e65e60dec28679·...·]-33">]</span><span·class="w">
175 </span><span·class="n">Phases</span><span·class="w">·······</span><span·class="p"·data-group-id="3565027124-34">[</span><span·class="p"·data-group-id="3565027124-35">{</span><span·class="n">Phase</span><span·class="p">,</span><span·class="n">PhaseArgs</span><span·class="p"·data-group-id="3565027124-35">}</span><span·class="p"·data-group-id="3565027124-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="0185611877-34">[</span><span·class="p"·data-group-id="0185611877-35">{</span><span·class="n">Phase</span><span·class="p">,</span><span·class="n">PhaseArgs</span><span·class="p"·data-group-id="0185611877-35">}</span><span·class="p"·data-group-id="0185611877-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="3565027124-36">[</span><span·class="n">ApplicationVersion</span><span·class="p"·data-group-id="3565027124-36">]</span><span·class="w">·</span><span·class="p"·data-group-id="3565027124-37">[</span><span·class="p"·data-group-id="3565027124-37">]</span><span·class="w">176 </span><span·class="n">RTDeps</span><span·class="w">·······</span><span·class="p"·data-group-id="0185611877-36">[</span><span·class="n">ApplicationVersion</span><span·class="p"·data-group-id="0185611877-36">]</span><span·class="w">·</span><span·class="p"·data-group-id="0185611877-37">[</span><span·class="p"·data-group-id="0185611877-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="3565027124-38">(</span><span·class="p"·data-group-id="3565027124-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="0185611877-38">(</span><span·class="p"·data-group-id="0185611877-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="3565027124-39">(</span><span·class="p"·data-group-id="3565027124-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="0185611877-39">(</span><span·class="p"·data-group-id="0185611877-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="3565027124-40">(</span><span·class="p"·data-group-id="3565027124-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="0185611877-40">(</span><span·class="p"·data-group-id="0185611877-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="1800352650-1">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1800352650-2">{</span><span·class="ss">application_starter</span><span·class="p">,</span><span·class="p"·data-group-id="18003526[·...·truncated·by·diffoscope;·len:·246,·SHA:·e1907cb5be1aa73f97a9477a75fb15f82ccc13132df7620ab9e8448f3f2278ec·...·]-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="2434105944-1">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2434105944-2">{</span><span·class="ss">application_starter</span><span·class="p">,</span><span·class="p"·data-group-id="24341059[·...·truncated·by·diffoscope;·len:·246,·SHA:·4e9bcd7ea31555faec342ff105a10849b0c06a1ae70cf6e8c4f18a1804d0bbbc·...·]-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.6/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="0616056306-1">[</span><span·class="ss">cp1@cave</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0616056306-2">{</span><span·class="ss">cp2@cave</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">cp3@[·...·truncated·by·diffoscope;·len:·104,·SHA:·3dbb62bf47b8ddf60850c286fd1993f05944f11a09e83e7aa9b0c1bf6cf5f7de·...·]6-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="4058211086-1">[</span><span·class="ss">cp1@cave</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4058211086-2">{</span><span·class="ss">cp2@cave</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">cp3@[·...·truncated·by·diffoscope;·len:·104,·SHA:·9ff5c99661fad4b9c1d3953e0f82ac435f76a6f0cadac52ed2d0614153aea9b5·...·]6-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.6/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.6/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.6/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.2/doc/html/escript.html">enclosed·in·<code·class="inline">escript</code></a>·files·whose·file·extension·is·arbitrary.</p><p>Erlang·archive·files·can·contain·entire·Erlang·applications·or·parts·of190 also·be·<a·href="../../../../lib/stdlib-6.2.2/doc/html/escript.html">enclosed·in·<code·class="inline">escript</code></a>·files·whose·file·extension·is·arbitrary.</p><p>Erlang·archive·files·can·contain·entire·Erlang·applications·or·parts·of
191 applications.·The·structure·in·an·archive·file·is·the·same·as·the·directory191 applications.·The·structure·in·an·archive·file·is·the·same·as·the·directory
192 structure·for·an·application.·If·you,·for·example,·create·an·archive·of192 structure·for·an·application.·If·you,·for·example,·create·an·archive·of
193 <code·class="inline">mnesia-4.4.7</code>,·the·archive·file·must·be·named·<code·class="inline">mnesia-4.4.7.ez</code>·and·it·must193 <code·class="inline">mnesia-4.4.7</code>,·the·archive·file·must·be·named·<code·class="inline">mnesia-4.4.7.ez</code>·and·it·must
194 contain·a·top·directory·named·<code·class="inline">mnesia-4.4.7</code>.·If·the·version·part·of·the·name·is194 contain·a·top·directory·named·<code·class="inline">mnesia-4.4.7</code>.·If·the·version·part·of·the·name·is
195 omitted,·it·must·also·be·omitted·in·the·archive.·That·is,·a·<code·class="inline">mnesia.ez</code>·archive195 omitted,·it·must·also·be·omitted·in·the·archive.·That·is,·a·<code·class="inline">mnesia.ez</code>·archive
196 must·contain·a·<code·class="inline">mnesia</code>·top·directory.</p><p>An·archive·file·for·an·application·can,·for·example,·be·created·like·this:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">zip</span><span·class="p">:</span><span·class="nf">create</span><span·class="p"·data-group-id="5910903515-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="0524930595-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="5910903515-2">[</span><span·class="s">&quot;mnesia-4.4.7&quot;</span><span·class="p"·data-group-id="5910903515-2">]</span><span·class="p">,</span><span·class="w">197 »       </span><span·class="p"·data-group-id="0524930595-2">[</span><span·class="s">&quot;mnesia-4.4.7&quot;</span><span·class="p"·data-group-id="0524930595-2">]</span><span·class="p">,</span><span·class="w">
198 »       </span><span·class="p"·data-group-id="5910903515-3">[</span><span·class="p"·data-group-id="5910903515-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:·123,·SHA:·eb4d54e77c4cfe0f522154e58a418403e2db9953b146c038998839174b99b875·...·]5-4">}</span><span·class="p">,</span><span·class="w">198 »       </span><span·class="p"·data-group-id="0524930595-3">[</span><span·class="p"·data-group-id="0524930595-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:·123,·SHA:·42964f9145d66eca14340688a7a07f95f8e7d27bf2e417dada01667fdfe948e4·...·]5-4">}</span><span·class="p">,</span><span·class="w">
199 »       ·</span><span·class="p"·data-group-id="5910903515-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="5910903515-6">}</span><span·class="p">,</span><span·class="w">199 »       ·</span><span·class="p"·data-group-id="0524930595-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="0524930595-6">}</span><span·class="p">,</span><span·class="w">
200 »       ·</span><span·class="p"·data-group-id="5910903515-7">{</span><span·class="ss">uncompress</span><span·class="p">,</span><span·class="p"·data-group-id="5910903515-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:·179,·SHA:·075e90b1346c715ee2d2c01e6847ee9fb16595a1ecccc20044f101574d08b78d·...·]5-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="0524930595-7">{</span><span·class="ss">uncompress</span><span·class="p">,</span><span·class="p"·data-group-id="0524930595-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:·179,·SHA:·8843b0af14988ffb083943df217f78da4fb3302ad933f020083e4088037607c8·...·]5-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="6193681566-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Prepared</span><span·class="p"·data-group-id="6193681566-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:·68c19f791f7d830a828d02d3772b7b8e3bf553dd8f0697fdef9c24e655827b3c·...·]-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="3405534405-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Prepared</span><span·class="p"·data-group-id="3405534405-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:·1b41f21cc96b910a96f1247868892d92159c7541b7b862138f241c9cf84fe040·...·]-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="6193681566-3">(</span><span·class="n">Prepared</span><span·class="p"·data-group-id="6193681566-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="3405534405-3">(</span><span·class="n">Prepared</span><span·class="p"·data-group-id="3405534405-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="5249086714-1">{</span><span·class="p">_</span><span·class="n">Module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Binary</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Filename</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·314,·SHA:·30f298343c0356ba7b4d888d1bb0aa5a097661b8ad6cb18593386b043eb46cd2·...·]-2">)</span><span·class="p">,</span><span·class="w">2349 </span><span·class="p"·data-group-id="9140266732-1">{</span><span·class="p">_</span><span·class="n">Module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Binary</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Filename</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·314,·SHA:·f5e0fd75fe97b4015b91573a083a9d6bfef015e6a2e1efdeb65be274d3052090·...·]-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="5249086714-3">(</span><span·class="n">Node</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">code</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">load_binary</span><span·class="p">,</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·332,·SHA:·f6f404ab178d3b5441cabc1e2a04db38733f851544c618717c6932c549921d60·...·]-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="9140266732-3">(</span><span·class="n">Node</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">code</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">load_binary</span><span·class="p">,</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·332,·SHA:·a626e6a3640c61b6e44bcec14fff4fcb421ff6e51d332b9f13b0f6f556e6bb90·...·]-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="9941291933-1">(</span><span·class="p"·data-group-id="9941291933-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="9868920161-1">(</span><span·class="p"·data-group-id="9868920161-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="9567357568-1">(</span><span·class="ss">mnesia</span><span·class="p"·data-group-id="9567357568-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="4130787019-1">(</span><span·class="ss">mnesia</span><span·class="p"·data-group-id="4130787019-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.2/doc/html/filename.html#join/2"><code·class="inline">filename:join/2</code></a>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">join</span><span·class="p"·data-group-id="2647951495-1">(</span><span·class="nc">code</span><span·class="p">:</span><span·class="nf">lib_dir</span><span·class="p"·data-group-id="2647951495-2">(</span><span·class="ss">megaco</span><span·class="p"·data-group-id="2647951495-2">)</span><span·class="p"[·...·truncated·by·diffoscope;·len:·113,·SHA:·93af1cd677f4a55172b29505dc2abd0d94de92dcf3ab74f245bd718b02de4af9·...·]-1">)</span><span·class="p">.</span><span·class="w">2540 and·<a·href="../../../../lib/stdlib-6.2.2/doc/html/filename.html#join/2"><code·class="inline">filename:join/2</code></a>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">filename</span><span·class="p">:</span><span·class="nf">join</span><span·class="p"·data-group-id="4380764863-1">(</span><span·class="nc">code</span><span·class="p">:</span><span·class="nf">lib_dir</span><span·class="p"·data-group-id="4380764863-2">(</span><span·class="ss">megaco</span><span·class="p"·data-group-id="4380764863-2">)</span><span·class="p"[·...·truncated·by·diffoscope;·len:·113,·SHA:·4b58a82898ebbc37527c56b59d274347474cf6c5bf98b015bdccf6950d0ceea2·...·]-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="3715295487-1">(</span><span·class="p"·data-group-id="3715295487-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="8278431873-1">(</span><span·class="p"·data-group-id="8278431873-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.6/doc/html/config.html
    
Offset 148, 17 lines modifiedOffset 148, 17 lines modified
148 (see·<a·href="../../../../erts-15.2.6/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.6/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="5527288129-1">[</span><span·class="p"·data-group-id="5527288129-2">{</span><span·class="n">Application1</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5527288129-3">[</span><span·class="p"·data-group-id="5527288129-4">[·...·truncated·by·diffoscope;·len:·379,·SHA:·37a203c1407de7c57de1dcf5903592b51f74e3af33a2981bec4cbca6bfe9bf44·...·]-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="1185610434-1">[</span><span·class="p"·data-group-id="1185610434-2">{</span><span·class="n">Application1</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1185610434-3">[</span><span·class="p"·data-group-id="1185610434-4">[·...·truncated·by·diffoscope;·len:·379,·SHA:·95367fe2dc83fd86345033113d7e91144b1a499617862a3f962b81a993b56ea9·...·]-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="5527288129-5">{</span><span·class="n">ApplicationN</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5527288129-6">[</span><span·class="p"·data-group-id="5527288129-7">{</span><span·class="n">ParN1</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·379,·SHA:·f1e3372a6c959c6db7f6a2f8ddea69a32df37a0431c72c585e4d9180bee56b8b·...·]-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="1185610434-5">{</span><span·class="n">ApplicationN</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1185610434-6">[</span><span·class="p"·data-group-id="1185610434-7">{</span><span·class="n">ParN1</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·379,·SHA:·1abea0f17af2b0a73f5ef51ef4f5757a54eabc322b9bd22ead8f696ea9666552·...·]-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.6/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.6/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.6/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="5790308345-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="3318704188-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="5790308345-2">(</span><span·class="p"·data-group-id="5790308345-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="3318704188-2">(</span><span·class="p"·data-group-id="3318704188-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="5790308345-3">(</span><span·class="p"·data-group-id="5790308345-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="3318704188-3">(</span><span·class="p"·data-group-id="3318704188-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="5790308345-4">(</span><span·class="p"·data-group-id="5790308345-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="3318704188-4">(</span><span·class="p"·data-group-id="3318704188-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="5790308345-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="5790308345-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="3318704188-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="3318704188-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="5790308345-6">(</span><span·class="p"·data-group-id="5790308345-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="3318704188-6">(</span><span·class="p"·data-group-id="3318704188-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="5790308345-7">[</span><span·class="p"·data-group-id="5790308345-8">{</span><span·class="p"·data-group-id="5790308345-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:·a67943b7e7772991196911125067c7ea18802a8927deff9a2290b6ee15dc2661·...·]-9">}</span><span·class="p">,</span><span·class="w">164 ···</span><span·class="p"·data-group-id="3318704188-7">[</span><span·class="p"·data-group-id="3318704188-8">{</span><span·class="p"·data-group-id="3318704188-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:·c25ae6a03694610fecda1178e17af5892fc76e8cf1ce1f36267b13ff9444ff28·...·]-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="5790308345-10">(</span><span·class="p"·data-group-id="5790308345-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="3318704188-10">(</span><span·class="p"·data-group-id="3318704188-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="5790308345-11">[</span><span·class="nf">binary</span><span·class="p"·data-group-id="5790308345-12">(</span><span·class="p"·data-group-id="5790308345-12">)</span><span·class="p"·data-group-id="5790308345-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="3318704188-11">[</span><span·class="nf">binary</span><span·class="p"·data-group-id="3318704188-12">(</span><span·class="p"·data-group-id="3318704188-12">)</span><span·class="p"·data-group-id="3318704188-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="5790308345-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="5790308345-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="3318704188-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="3318704188-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="5790308345-14">(</span><span·class="p"·data-group-id="5790308345-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="3318704188-14">(</span><span·class="p"·data-group-id="3318704188-14">)</span><span·class="w">
169 ····</span><span·class="p"·data-group-id="5790308345-8">}</span><span·class="p"·data-group-id="5790308345-7">]</span><span·class="p"·data-group-id="5790308345-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:·b9716e2de5fab86286fadac6622be93c653f36fe52921d9f590ce450c7409192·...·]-15">)</span><span·class="p">,</span><span·class="w">169 ····</span><span·class="p"·data-group-id="3318704188-8">}</span><span·class="p"·data-group-id="3318704188-7">]</span><span·class="p"·data-group-id="3318704188-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:·b7ec16fde2f383fcb042873a51dd3dac1c71646ce09994ca9f13213df58c56ef·...·]-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="5790308345-16">(</span><span·class="p"·data-group-id="5790308345-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="5790308345-17">(</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·61b2cff422cbe529dde784d4e8e0dde485b38d4459d18cdc75e6674a5109fb5f·...·]-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="3318704188-16">(</span><span·class="p"·data-group-id="3318704188-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="3318704188-17">(</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·41eacd7fe6ddf438ecbe3e2a6a3a039cd209e4dacfc81aec2383eb59bac3169e·...·]-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.2/doc/html/erl_anno.html"><code·class="inline">erl_anno</code></a>)</p></li><li><p><strong><code·class="inline">BeamLanguage</code></strong>·-·an·atom·representing·the·language,·for·example:·<code·class="inline">erlang</code>,171 <a·href="../../../../lib/stdlib-6.2.2/doc/html/erl_anno.html"><code·class="inline">erl_anno</code></a>)</p></li><li><p><strong><code·class="inline">BeamLanguage</code></strong>·-·an·atom·representing·the·language,·for·example:·<code·class="inline">erlang</code>,
172 <code·class="inline">elixir</code>,·<code·class="inline">lfe</code>,·<code·class="inline">alpaca</code>,·and·so·on</p></li><li><p><strong><code·class="inline">Format</code></strong>·-·the·mime·type·of·the·documentation,·such·as·<code·class="inline">&lt;&lt;&quot;text/markdown&quot;&gt;&gt;</code>172 <code·class="inline">elixir</code>,·<code·class="inline">lfe</code>,·<code·class="inline">alpaca</code>,·and·so·on</p></li><li><p><strong><code·class="inline">Format</code></strong>·-·the·mime·type·of·the·documentation,·such·as·<code·class="inline">&lt;&lt;&quot;text/markdown&quot;&gt;&gt;</code>
173 or·<code·class="inline">&lt;&lt;&quot;application/erlang+html&quot;&gt;&gt;</code>.·For·details·of·the·format·used·by·Erlang173 or·<code·class="inline">&lt;&lt;&quot;application/erlang+html&quot;&gt;&gt;</code>.·For·details·of·the·format·used·by·Erlang
174 see·the·<a·href="../../../../lib/edoc-1.3.2/doc/html/doc_storage.html"><code·class="inline">EEP-48·Chapter</code></a>·in·EDoc's·User's174 see·the·<a·href="../../../../lib/edoc-1.3.2/doc/html/doc_storage.html"><code·class="inline">EEP-48·Chapter</code></a>·in·EDoc's·User's
175 Guide.</p></li><li><p><strong><code·class="inline">ModuleDoc</code></strong>·-·a·map·with·the·documentation·language·as·key,·such·as175 Guide.</p></li><li><p><strong><code·class="inline">ModuleDoc</code></strong>·-·a·map·with·the·documentation·language·as·key,·such·as
176 <code·class="inline">&lt;&lt;&quot;en&quot;&gt;&gt;</code>·or·<code·class="inline">&lt;&lt;&quot;pt_BR&quot;&gt;&gt;</code>,·and·the·documentation·as·a·binary·value.·It·can176 <code·class="inline">&lt;&lt;&quot;en&quot;&gt;&gt;</code>·or·<code·class="inline">&lt;&lt;&quot;pt_BR&quot;&gt;&gt;</code>,·and·the·documentation·as·a·binary·value.·It·can
177 be·atom·<code·class="inline">none</code>·if·no·documentation·exists·or·the·atom·<code·class="inline">hidden</code>·if177 be·atom·<code·class="inline">none</code>·if·no·documentation·exists·or·the·atom·<code·class="inline">hidden</code>·if
2.63 KB
./usr/share/doc/erlang-doc/html/lib/kernel-10.2.6/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="5909941035-1">(</span><span·class="ss">localhost</span><span·class="p"·data-group-id="5909941035-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="1934940488-1">(</span><span·class="ss">localhost</span><span·class="p"·data-group-id="1934940488-1">)</span><span·class="p">.</span><span·class="w">
357 </span><span·class="p"·data-group-id="5909941035-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="5909941035-3">[</span><span·class="p"·data-group-id="5909941035-4">{</span><span·class="s">&quot;arne&quot;</span><span·class="p">,</span><span·class="mi[·...·truncated·by·diffoscope;·len:·161,·SHA:·1a31e581b91fb7fe3eb8140a059b23c640885e8042b47d6e97ba18d3c0d414c7·...·]-2">}</span></code></pre>357 </span><span·class="p"·data-group-id="1934940488-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="1934940488-3">[</span><span·class="p"·data-group-id="1934940488-4">{</span><span·class="s">&quot;arne&quot;</span><span·class="p">,</span><span·class="mi[·...·truncated·by·diffoscope;·len:·161,·SHA:·d8d908538b349207f0fb33e235c0a1d807ea6f283d0e5d89e5e02a0a54393cba·...·]-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.6/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="7811251123-1">(</span><span·class="n">Nodes</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Function</span><span·class="p">,</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·66,·SHA:·4ea100991d5d2d5826de69b09237389b18cc9669af4320334319cebba6bddd15·...·]-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="3116857015-1">(</span><span·class="n">Nodes</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Function</span><span·class="p">,</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·66,·SHA:·1bb0319364793136c8b4a784fa0f4454224e348dc97c2fa07ca0e0fcdf6c4d58·...·]-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="7811251123-2">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="7811251123-3">(</span><span·class="n">Node</span><span·class="p"·data-group-id="7811251123-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="3116857015-2">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="3116857015-3">(</span><span·class="n">Node</span><span·class="p"·data-group-id="3116857015-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="7811251123-4">(</span><span·class="n">Node</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Function</span><span·class="p">,</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·65,·SHA:·25d7da83330224fb0e3015bb0b221d21ed11bd7524d58761ac8020c314f10b51·...·]-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="3116857015-4">(</span><span·class="n">Node</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Module</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Function</span><span·class="p">,</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·65,·SHA:·d70e35dd56869c894ff1be601a6682bcb627b557d0fbb0b8e22f415201e56386·...·]-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="7811251123-2">)</span><span·class="p">,</span><span·class="w">1194 ·····················</span><span·class="n">Nodes</span><span·class="p"·data-group-id="3116857015-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="7811251123-5">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="7811251123-6">(</span><span·class="n">ReqId</span><span·class="p"·data-group-id="7811251123-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="3116857015-5">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="3116857015-6">(</span><span·class="n">ReqId</span><span·class="p"·data-group-id="3116857015-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="7811251123-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="7811251123-8">(</span><span·class="n"[·...·truncated·by·diffoscope;·len:·187,·SHA:·51f9b7095f842afb2ff98f604df3b5e7a9604f2d3ff6f40a38d6a9264a3004d1·...·]-7">}</span><span·class="w">1197 ················</span><span·class="p"·data-group-id="3116857015-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="3116857015-8">(</span><span·class="n"[·...·truncated·by·diffoscope;·len:·187,·SHA:·f55f42c2ccfab6909844f73cd5861bf03f7a29bdc42c62b4e5613235081cc10d·...·]-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="7811251123-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="7811251123-9">}</span><span·class="w">1200 ··················</span><span·class="p"·data-group-id="3116857015-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="3116857015-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="7811251123-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="3116857015-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="9400323244-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:·ed63db46ca059588c9f41619de5e8af75888ddca9da0e92abd6a92d1fa024605·...·]-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="1776205019-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:·1941b0466d83b9f059645ece607cadf7d1e5bb76a5bb8afd143b3a9ae29695cb·...·]-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="9400323244-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:·b9f30a59b2e49d9b9bbafd52bce4c268fcac718b5b870d6fed80b02e9252d7d8·...·]-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="1776205019-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:·c38c6e65b0a8085c43e36e2ecfb5ef468390c2d8a9f7681445ab2f276804afd9·...·]-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="9400323244-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="9400323244-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="1776205019-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="1776205019-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="0024628419-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:·96719b59d87e35433351fa1b9ef9a06d863c2b5cfa85074306ee68d2703ed7a5·...·]-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="1923668728-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:·4687a93092c8cd3b79460e10a8b30d57e2fa33d8d2f6955d06d794f1a2954022·...·]-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="0024628419-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:·ab483fce1f35e9c3ef5ecfb4ec20f95e47abb97ea7f349a0f5b3442ba9008732·...·]-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="1923668728-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:·326c8ec548c6fdb78102a5f262e0c6df26522aced228f1f9a158f16a7f9201c1·...·]-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="0024628419-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="0024628419-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="1923668728-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="1923668728-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.6/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="5917975167-1">(</span><span·class="n">Name</span><span·class="p"·data-group-id="5917975167-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="9724058380-1">(</span><span·class="n">Name</span><span·class="p"·data-group-id="9724058380-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
184 ····</span><span·class="p"·data-group-id="5917975167-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="5917975167-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·612,·SHA:·eefdff6b9edb533da78a864a76732ea672225599b1ef6c524e6bf9ae5d0fe752·...·]-3">)</span><span·class="p">,</span><span·class="w">184 ····</span><span·class="p"·data-group-id="9724058380-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="9724058380-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·612,·SHA:·ddbab2c6c39639059ce92e908805b0cfa2bf0f0d206c56ce54c9d60629241705·...·]-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="5917975167-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="5917[·...·truncated·by·diffoscope;·len:·6,·SHA:·31d377cffda415f90867aab3776f5f1c67c73c55e52a3544ebabc1ef69520997·...·]-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="9724058380-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="9724[·...·truncated·by·diffoscope;·len:·6,·SHA:·27844a0203b40a221afb9a6d477e164b97e0e3fa20c321d5057c71489eef99c4·...·]-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="5917975167-6">(</span><span·class="n">Fd</span><span·class="p"·data-group-id="5917975167-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="9724058380-6">(</span><span·class="n">Fd</span><span·class="p"·data-group-id="9724058380-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="5917975167-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="5917975167-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="9724058380-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="9724058380-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="5917975167-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="5917975167-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="9724058380-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="9724058380-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="5917975167-9">(</span><span·class="n">Fd</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5917975167-10">&lt;&lt;</span><span·class="mi">0</span><span·class="p"·data-group-id="5917975167-10">&gt;&gt;</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·d50927fa436cf1feade7e5ddd662cac28e9ab68790c46a7706f1c5fca4c54c9c·...·]-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="9724058380-9">(</span><span·class="n">Fd</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9724058380-10">&lt;&lt;</span><span·class="mi">0</span><span·class="p"·data-group-id="9724058380-10">&gt;&gt;</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·d52237f626a123670caea477ffe6078fc8a571b0199a26697a5606a9115b6993·...·]-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="5917975167-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="59179751[·...·truncated·by·diffoscope;·len:·2,·SHA:·49d180ecf56132819571bf39d9b7b342522a2ac6d23c1418d3338251bfe469c8·...·]-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="9724058380-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="97240583[·...·truncated·by·diffoscope;·len:·2,·SHA:·48449a14a4ff7d79bb7a1b6f3d488eba397c36ef25634c111b49baf362511afc·...·]-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="0548794840-1">(</span><span·class="n">Name</span><span·class="p"·data-group-id="0548794840-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="7562984243-1">(</span><span·class="n">Name</span><span·class="p"·data-group-id="7562984243-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
194 ····</span><span·class="p"·data-group-id="0548794840-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="0548794840-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·612,·SHA:·fe0d5593c97980ea75e123a3d200006e43f11c77432422cddd9eb723fde52ea8·...·]-3">)</span><span·class="p">,</span><span·class="w">194 ····</span><span·class="p"·data-group-id="7562984243-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="7562984243-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·612,·SHA:·b81d0844e85f9b5b8b159f2fa27dfa739f5ecbe896b884f7450910f88c15a000·...·]-3">)</span><span·class="p">,</span><span·class="w">
195 ····</span><span·class="nf">create_file_1</span><span·class="p"·data-group-id="0548794840-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="0548[·...·truncated·by·diffoscope;·len:·6,·SHA:·b3ba3863e6ab9116e2f1082d2bc594d129952d27c2d6865879bd5f93fd53c255·...·]-5">)</span><span·class="p">,</span><span·class="w">195 ····</span><span·class="nf">create_file_1</span><span·class="p"·data-group-id="7562984243-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="7562[·...·truncated·by·diffoscope;·len:·6,·SHA:·737f0c495caa13ea1b13b1df2ab659661914cf8e71048b2af467c373b8ecf131·...·]-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="0548794840-6">(</span><span·class="n">Fd</span><span·class="p"·data-group-id="0548794840-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="7562984243-6">(</span><span·class="n">Fd</span><span·class="p"·data-group-id="7562984243-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="0548794840-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="0548794840-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="7562984243-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="7562984243-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="0548794840-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="0548794840-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="7562984243-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="7562984243-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="0548794840-9">(</span><span·class="n">Fd</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0548794840-10">&lt;&lt;</span><span·class="mi">0</span><span·class="p">:</span><span·class="p"·data-group-id="0548794840-11">(</sp[·...·truncated·by·diffoscope;·len:·287,·SHA:·72a3bc55fc1851c3a4294d728b00ab9caa541dd4ae029205d1865de0043e9594·...·]-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="7562984243-9">(</span><span·class="n">Fd</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7562984243-10">&lt;&lt;</span><span·class="mi">0</span><span·class="p">:</span><span·class="p"·data-group-id="7562984243-11">(</sp[·...·truncated·by·diffoscope;·len:·287,·SHA:·e556ac5c2d58ae5f2e2cd00dbef5ba3dc30fa3eaf6cf6498f02fef05345834c5·...·]-9">)</span><span·class="p">,</span><span·class="w">
202 ····</span><span·class="nf">create_file_1</span><span·class="p"·data-group-id="0548794840-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="054879[·...·truncated·by·diffoscope;·len:·4,·SHA:·39e7124770a6d0d781315854a17181461b5d89bcf1f3b730b7fe1b75c356f6d5·...·]-12">)</span><span·class="p">;</span><span·class="w">202 ····</span><span·class="nf">create_file_1</span><span·class="p"·data-group-id="7562984243-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="756298[·...·truncated·by·diffoscope;·len:·4,·SHA:·4bf983753a3d8b68554e38787e662d05f499a9032edff2c300e17ac9d7b566b1·...·]-12">)</span><span·class="p">;</span><span·class="w">
203 </span><span·class="nf">create_file_1</span><span·class="p"·data-group-id="0548794840-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="0548794840-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="7562984243-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="7562984243-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="0548794840-14">(</span><span·class="n">Fd</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0548794840-15">&lt;&lt;</span><span·class="mi">0</span><span·class="p">:</span><span·class="p"·data-group-id="0548794840-16">(</s[·...·truncated·by·diffoscope;·len:·285,·SHA:·befe7ea07684726ee836130896decfae2eaf6d8ff844dc4bc4b05aeaf7cc6734·...·]-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="7562984243-14">(</span><span·class="n">Fd</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7562984243-15">&lt;&lt;</span><span·class="mi">0</span><span·class="p">:</span><span·class="p"·data-group-id="7562984243-16">(</s[·...·truncated·by·diffoscope;·len:·285,·SHA:·e30715c468c6ebccb6c625e9d97652d073e3752c967f4ae408948027313355f4·...·]-14">)</span><span·class="p">,</span><span·class="w">
205 ····</span><span·class="nf">create_file_1</span><span·class="p"·data-group-id="0548794840-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="05487948[·...·truncated·by·diffoscope;·len:·2,·SHA:·d59eced1ded07f84c145592f65bdf854358e009c5cd705f5215bf18697fed103·...·]-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="7562984243-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="75629842[·...·truncated·by·diffoscope;·len:·2,·SHA:·44cb730c420480a0477b505ae68af508fb90f96cf0ec54c6ad16949dd427f13a·...·]-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.2/doc/html/io.html"><code·class="inline">io</code></a>,·the·process211 operating·system·kernel.</p><section·role="note"·class="admonition·warning"><h4·class="admonition-title·warning">Warning</h4><p>If·an·error·occurs·when·accessing·an·open·file·with·module·<a·href="../../../../lib/stdlib-6.2.2/doc/html/io.html"><code·class="inline">io</code></a>,·the·process
212 handling·the·file·exits.·The·dead·file·process·can·hang·if·a·process·tries·to212 handling·the·file·exits.·The·dead·file·process·can·hang·if·a·process·tries·to
Offset 1956, 16 lines modifiedOffset 1956, 16 lines modified
1956 ······</div>1956 ······</div>
  
1957 <p>Reads·Erlang·terms,·separated·by·<code·class="inline">.</code>,·from·<code·class="inline">Filename</code>.·Returns·one·of·the1957 <p>Reads·Erlang·terms,·separated·by·<code·class="inline">.</code>,·from·<code·class="inline">Filename</code>.·Returns·one·of·the
1958 following:</p><ul><li><p><strong><code·class="inline">{ok,·Terms}</code></strong>·-·The·file·was·successfully·read.</p></li><li><p><strong><code·class="inline">{error,·atom()}</code></strong>·-·An·error·occurred·when·opening·the·file·or·reading·it.1958 following:</p><ul><li><p><strong><code·class="inline">{ok,·Terms}</code></strong>·-·The·file·was·successfully·read.</p></li><li><p><strong><code·class="inline">{error,·atom()}</code></strong>·-·An·error·occurred·when·opening·the·file·or·reading·it.
1959 For·a·list·of·typical·error·codes,·see·<a·href="#open/2"><code·class="inline">open/2</code></a>.</p></li><li><p><strong><code·class="inline">{error,·{Line,·Mod,·Term}}</code></strong>·-·An·error·occurred·when·interpreting·the1959 For·a·list·of·typical·error·codes,·see·<a·href="#open/2"><code·class="inline">open/2</code></a>.</p></li><li><p><strong><code·class="inline">{error,·{Line,·Mod,·Term}}</code></strong>·-·An·error·occurred·when·interpreting·the
1960 Erlang·terms·in·the·file.·To·convert·the·three-element·tuple·to·an·English1960 Erlang·terms·in·the·file.·To·convert·the·three-element·tuple·to·an·English
1961 description·of·the·error,·use·<a·href="#format_error/1"><code·class="inline">format_error/1</code></a>.</p></li></ul><p><em>Example:</em></p><pre><code·class="text">f.txt:··{person,·&quot;kalle&quot;,·25}.1961 description·of·the·error,·use·<a·href="#format_error/1"><code·class="inline">format_error/1</code></a>.</p></li></ul><p><em>Example:</em></p><pre><code·class="text">f.txt:··{person,·&quot;kalle&quot;,·25}.
1962 ········{person,·&quot;pelle&quot;,·30}.</code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">file</span><span·class="p">:</span><span·class="nf">consult</span><span·class="p"·data-group-id="2841034550-1">(</span><span·class="s">&quot;f.txt&quot;</span><span·class="p"·data-group-id="2841034550-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="6687340360-1">(</span><span·class="s">&quot;f.txt&quot;</span><span·class="p"·data-group-id="6687340360-1">)</span><span·class="p">.</span><span·class="w">
1963 </span><span·class="p"·data-group-id="2841034550-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2841034550-3">[</span><span·class="p"·data-group-id="2841034550-4">{</span><span·class="ss">person</span><span·class="p">,</span><span·class="s">&quot;ka[·...·truncated·by·diffoscope;·len:·486,·SHA:·ee13b129926b3f9a73e0829fb5b7b7c25fdaa987804143c037865fbfad33a789·...·]0-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="6687340360-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="6687340360-3">[</span><span·class="p"·data-group-id="6687340360-4">{</span><span·class="ss">person</span><span·class="p">,</span><span·class="s">&quot;ka[·...·truncated·by·diffoscope;·len:·486,·SHA:·5cf1cfec8774a9754b8a7b2a9322455290efe2757cb2546df537fd42c79451e6·...·]0-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.2/doc/html/epp.html#encoding"><code·class="inline">epp</code></a>.</p>1964 <a·href="../../../../lib/stdlib-6.2.2/doc/html/epp.html#encoding"><code·class="inline">epp</code></a>.</p>
1965 ··</section>1965 ··</section>
1966 </section>1966 </section>
1967 <section·class="detail"·id="copy/2">1967 <section·class="detail"·id="copy/2">
  
1968 ··<div·class="detail-header">1968 ··<div·class="detail-header">
1969 ····<a·href="#copy/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">1969 ····<a·href="#copy/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
Offset 3246, 15 lines modifiedOffset 3246, 15 lines modified
3246 ····························FileInfo·::·<a·href="#t:file_info/0">file_info</a>(),3246 ····························FileInfo·::·<a·href="#t:file_info/0">file_info</a>(),
3247 ····························Reason·::·<a·href="#t:posix/0">posix</a>()·|·badarg.</pre>3247 ····························Reason·::·<a·href="#t:posix/0">posix</a>()·|·badarg.</pre>
  
3248 ······</div>3248 ······</div>
  
3249 <p>Retrieves·information·about·a·file.·Returns·<code·class="inline">{ok,·FileInfo}</code>·if·successful,3249 <p>Retrieves·information·about·a·file.·Returns·<code·class="inline">{ok,·FileInfo}</code>·if·successful,
3250 otherwise·<code·class="inline">{error,·Reason}</code>.</p><p><code·class="inline">FileInfo</code>·is·a·record·<code·class="inline">file_info</code>,·defined·in·the·Kernel·include·file·<code·class="inline">file.hrl</code>.3250 otherwise·<code·class="inline">{error,·Reason}</code>.</p><p><code·class="inline">FileInfo</code>·is·a·record·<code·class="inline">file_info</code>,·defined·in·the·Kernel·include·file·<code·class="inline">file.hrl</code>.
3251 Include·the·following·directive·in·the·module·from·which·the·function·is·called:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="8097167597-1">(</span><span·class="s">&quot;kernel/include/file.hrl&quot;</span><span·class="p"·data-group-id="8097167597-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="1500638607-1">(</span><span·class="s">&quot;kernel/include/file.hrl&quot;</span><span·class="p"·data-group-id="1500638607-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.6/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.6/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="3378048165-1">(</span><span·class="s">&quot;kernel/include/file.hrl&quot;</span><span·class="p"·data-group-id="3378048165-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="0135217303-1">(</span><span·class="s">&quot;kernel/include/file.hrl&quot;</span><span·class="p"·data-group-id="0135217303-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.6/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.6/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.6/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.6/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.6/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.6/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.6/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="4676913440-1">(</span><span·class="s">&quot;kernel/include/inet_sctp.hrl&quot;</span><span·class="p"·data-group-id="4676913440-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="2773940991-1">(</span><span·class="s">&quot;kernel/include/inet_sctp.hrl&quot;</span><span·class="p"·data-group-id="2773940991-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="4080599287-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="1301441287-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="4080599287-2">(</span><span·class="p"·data-group-id="4080599287-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="1301441287-2">(</span><span·class="p"·data-group-id="1301441287-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="4080599287-3">(</span><span·class="p"·data-group-id="4080599287-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="1301441287-3">(</span><span·class="p"·data-group-id="1301441287-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="4080599287-4">(</span><span·class="p"·data-group-id="4080599287-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="1301441287-4">(</span><span·class="p"·data-group-id="1301441287-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="4080599287-5">(</span><span·class="p"·data-group-id="4080599287-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="1301441287-5">(</span><span·class="p"·data-group-id="1301441287-5">)</span><span·class="w">
192 </span><span·class="p"·data-group-id="4080599287-1">}</span></code></pre><p>Determines·retransmission·time-out·parameters,·in·milliseconds,·for·the192 </span><span·class="p"·data-group-id="1301441287-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="9538880701-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="8289234911-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="9538880701-2">(</span><span·class="p"·data-group-id="9538880701-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="8289234911-2">(</span><span·class="p"·data-group-id="8289234911-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="9538880701-3">(</span><span·class="p"·data-group-id="9538880701-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="8289234911-3">(</span><span·class="p"·data-group-id="8289234911-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="9538880701-4">(</span><span·class="p"·data-group-id="9538880701-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="8289234911-4">(</span><span·class="p"·data-group-id="8289234911-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="9538880701-5">(</span><span·class="p"·data-group-id="9538880701-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="8289234911-5">(</span><span·class="p"·data-group-id="8289234911-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="9538880701-6">(</span><span·class="p"·data-group-id="9538880701-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="8289234911-6">(</span><span·class="p"·data-group-id="8289234911-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="9538880701-7">(</span><span·class="p"·data-group-id="9538880701-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="8289234911-7">(</span><span·class="p"·data-group-id="8289234911-7">)</span><span·class="w">
203 </span><span·class="p"·data-group-id="9538880701-1">}</span></code></pre><p>Determines·association·parameters·for·the·association(s)·specified·by203 </span><span·class="p"·data-group-id="8289234911-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="5805165067-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="5121185641-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="5805165067-2">(</span><span·class="p"·data-group-id="5805165067-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="5121185641-2">(</span><span·class="p"·data-group-id="5121185641-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="5805165067-3">(</span><span·class="p"·data-group-id="5805165067-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="5121185641-3">(</span><span·class="p"·data-group-id="5121185641-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="5805165067-4">(</span><span·class="p"·data-group-id="5805165067-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="5121185641-4">(</span><span·class="p"·data-group-id="5121185641-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="5805165067-5">(</span><span·class="p"·data-group-id="5805165067-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="5121185641-5">(</span><span·class="p"·data-group-id="5121185641-5">)</span><span·class="w">
211 </span><span·class="p"·data-group-id="5805165067-1">}</span></code></pre><p>Determines·the·default·parameters·that·this·socket·tries·to·negotiate211 </span><span·class="p"·data-group-id="5121185641-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="0687750797-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="3349548130-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="0687750797-2">(</span><span·class="p"·data-group-id="0687750797-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="3349548130-2">(</span><span·class="p"·data-group-id="3349548130-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="0687750797-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="0687750797-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="3349548130-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="3349548130-3">}</span><span·class="w">
231 </span><span·class="p"·data-group-id="0687750797-1">}</span><span·class="w">231 </span><span·class="p"·data-group-id="3349548130-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="0687750797-4">(</span><span·class="p"·data-group-id="0687750797-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="3349548130-4">(</span><span·class="p"·data-group-id="3349548130-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="0687750797-5">(</span><span·class="p"·data-group-id="0687750797-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="3349548130-5">(</span><span·class="p"·data-group-id="3349548130-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="7018582419-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="5704357457-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="7018582419-2">(</span><span·class="p"·data-group-id="7018582419-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="5704357457-2">(</span><span·class="p"·data-group-id="5704357457-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="7018582419-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="7018582419-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="5704357457-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="5704357457-3">}</span><span·class="w">
238 </span><span·class="p"·data-group-id="7018582419-1">}</span><span·class="w">238 </span><span·class="p"·data-group-id="5704357457-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="7018582419-4">(</span><span·class="p"·data-group-id="7018582419-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="5704357457-4">(</span><span·class="p"·data-group-id="5704357457-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="7018582419-5">(</span><span·class="p"·data-group-id="7018582419-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="5704357457-5">(</span><span·class="p"·data-group-id="5704357457-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="7625128850-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="2384622935-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="7625128850-2">(</span><span·class="p"·data-group-id="7625128850-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="2384622935-2">(</span><span·class="p"·data-group-id="2384622935-2">)</span><span·class="w">
243 </span><span·class="p"·data-group-id="7625128850-1">}</span></code></pre><p>When·set,·requests·that·the·local·endpoint·uses·the·value·specified·by243 </span><span·class="p"·data-group-id="2384622935-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="3424006693-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="4350796934-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="3424006693-2">(</span><span·class="p"·data-group-id="3424006693-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="4350796934-2">(</span><span·class="p"·data-group-id="4350796934-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="3424006693-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="3424006693-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="4350796934-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="4350796934-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="3424006693-4">(</span><span·class="p"·data-group-id="3424006693-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="4350796934-4">(</span><span·class="p"·data-group-id="4350796934-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="3424006693-5">(</span><span·class="p"·data-group-id="3424006693-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="4350796934-5">(</span><span·class="p"·data-group-id="4350796934-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="3424006693-6">(</span><span·class="p"·data-group-id="3424006693-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="4350796934-6">(</span><span·class="p"·data-group-id="4350796934-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="3424006693-7">(</span><span·class="p"·data-group-id="3424006693-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="4350796934-7">(</span><span·class="p"·data-group-id="4350796934-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="3424006693-8">(</span><span·class="p"·data-group-id="3424006693-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="4350796934-8">(</span><span·class="p"·data-group-id="4350796934-8">)</span><span·class="w">
255 </span><span·class="p"·data-group-id="3424006693-1">}</span><span·class="w">255 </span><span·class="p"·data-group-id="4350796934-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="3424006693-9">(</span><span·class="p"·data-group-id="3424006693-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="4350796934-9">(</span><span·class="p"·data-group-id="4350796934-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="3424006693-10">(</span><span·class="p"·data-group-id="3424006693-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="4350796934-10">(</span><span·class="p"·data-group-id="4350796934-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="1056598312-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="1642933714-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="1056598312-2">(</span><span·class="p"·data-group-id="1056598312-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="1642933714-2">(</span><span·class="p"·data-group-id="1642933714-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="1056598312-3">(</span><span·class="p"·data-group-id="1056598312-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="1642933714-3">(</span><span·class="p"·data-group-id="1642933714-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="1056598312-4">(</span><span·class="p"·data-group-id="1056598312-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="1642933714-4">(</span><span·class="p"·data-group-id="1642933714-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="1056598312-5">(</span><span·class="p"·data-group-id="1056598312-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="1642933714-5">(</span><span·class="p"·data-group-id="1642933714-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="1056598312-6">(</span><span·class="p"·data-group-id="1056598312-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="1642933714-6">(</span><span·class="p"·data-group-id="1642933714-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="1056598312-7">(</span><span·class="p"·data-group-id="1056598312-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="1642933714-7">(</span><span·class="p"·data-group-id="1642933714-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="1056598312-8">(</span><span·class="p"·data-group-id="1056598312-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="1642933714-8">(</span><span·class="p"·data-group-id="1642933714-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="1056598312-9">(</span><span·class="p"·data-group-id="1056598312-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="1642933714-9">(</span><span·class="p"·data-group-id="1642933714-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="1056598312-10">(</span><span·class="p"·data-group-id="1056598312-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="1642933714-10">(</span><span·class="p"·data-group-id="1642933714-10">)</span><span·class="w">
273 </span><span·class="p"·data-group-id="1056598312-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="1642933714-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="9938766135-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="5078161747-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="9938766135-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="5078161747-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.6/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="5013757371-1">(</span><span·class="p"·data-group-id="5013757371-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="2449200183-1">(</span><span·class="p"·data-group-id="2449200183-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="5013757371-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="5013757371-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·119,·SHA:·5c87dce6f0b472d58cf03fa7a0802965351ae8ddda3c39da25c64e15bf086c95·...·]-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="2449200183-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="2449200183-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·119,·SHA:·75bc2b2a0b3d10ed96debbeada462697c02852191e5f62419b2dfe001e8926a7·...·]-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="5013757371-4">[</span><span·class="ss">binary</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5013757371-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:·02b70fb54a8dc67d96d2f109cdd33e9ffbed09b309111d62500e1db68bd7b499·...·]-3">)</span><span·class="p">,</span><span·class="w">133 ·································</span><span·class="p"·data-group-id="2449200183-4">[</span><span·class="ss">binary</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2449200183-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:·a1043f96dae836005f2e5ae0486564bcf48e6385fe32fd4e6dafca61387d84a1·...·]-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="5013757371-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="5013757371-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="2449200183-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="2449200183-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="5013757371-7">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="5013757371-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="2449200183-7">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="2449200183-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="6167776670-1">(</span><span·class="p"·data-group-id="6167776670-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="2226493795-1">(</span><span·class="p"·data-group-id="2226493795-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
137 ····</span><span·class="p"·data-group-id="6167776670-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="6167776670-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·535,·SHA:·f211ed1dea3d5d55e8f4f6c987f31cbecf25e3616ea56778d5ac4829ab38a16b·...·]-5">}</span><span·class="p">,</span><span·class="w">137 ····</span><span·class="p"·data-group-id="2226493795-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="2226493795-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·535,·SHA:·ee4e390b7dfe6468e3550459b35f68519f721b1bbf820d14a95ec0296263d6c3·...·]-5">}</span><span·class="p">,</span><span·class="w">
138 ········································</span><span·class="p"·data-group-id="6167776670-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="6167776670-6">}</span><span·class="p"·data-group-id="6167776670-4">]</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·e82666153555810dd537109c67553e0386f4b5ad2441c99898a60573ce3d778b·...·]-3">)</span><span·class="p">,</span><span·class="w">138 ········································</span><span·class="p"·data-group-id="2226493795-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="2226493795-6">}</span><span·class="p"·data-group-id="2226493795-4">]</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·403a1944b5db6861dc623d2338456c8d2384ba02b8a7c5b6bcedd80fd574d562·...·]-3">)</span><span·class="p">,</span><span·class="w">
139 ····</span><span·class="p"·data-group-id="6167776670-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="6167776670-7">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·199,·SHA:·4b04e7a6ae08dd5584e67bb2a3b9ffac9f899935c33f5ceb05792c21eb694283·...·]-8">)</span><span·class="p">,</span><span·class="w">139 ····</span><span·class="p"·data-group-id="2226493795-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="2226493795-7">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·199,·SHA:·37e2afe762c1c5d2c7fb589a5576fe092d10ace4748a77ba4cc587990bdbe523·...·]-8">)</span><span·class="p">,</span><span·class="w">
140 ····</span><span·class="p"·data-group-id="6167776670-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="6167776670-9">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·300,·SHA:·613abf3c435b737118a38431e1ed3b883859c7f791fcd21501e1b1bfdf1dcc2e·...·]-10">)</span><span·class="p">,</span><span·class="w">140 ····</span><span·class="p"·data-group-id="2226493795-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="2226493795-9">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·300,·SHA:·a3cfcfb27dd10a81375a94cfd5fc98a49e71719f253ebc88a4f5f83a6981af3d·...·]-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="6167776670-12">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="6167776670-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="2226493795-12">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="2226493795-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="6167776670-13">(</span><span·class="n">LSock</span><span·class="p"·data-group-id="6167776670-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="2226493795-13">(</span><span·class="n">LSock</span><span·class="p"·data-group-id="2226493795-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="6167776670-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="6167776670-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="2226493795-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="2226493795-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="6167776670-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="6167776670-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="2226493795-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="2226493795-15">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
146 ········</span><span·class="p"·data-group-id="6167776670-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="6167776670-16">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">146 ········</span><span·class="p"·data-group-id="2226493795-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="2226493795-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="6167776670-17">(</span><span·class="n">Sock</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6167776670-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:·4d8c65a541e12ab610feec6a5548e4ab0b724a58764291e9d395dff9740e4473·...·]-17">)</span><span·class="p">;</span><span·class="w">147 ············</span><span·class="nf">do_recv</span><span·class="p"·data-group-id="2226493795-17">(</span><span·class="n">Sock</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2226493795-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:·540f365e957cbfdd9fe54ef676024bc1d6d393b9221676155aced2833dc02eaa·...·]-17">)</span><span·class="p">;</span><span·class="w">
148 ········</span><span·class="p"·data-group-id="6167776670-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="6167776670-19">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w"> 
149 ············</span><span·class="p"·data-group-id="6167776670-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="6167776670-21">(</span><span·class="n">Bs</span>[·...·truncated·by·diffoscope;·len:·101,·SHA:·e8cdbf30bc455fbc674669474e2ada73bd264e0c2daccc624e77d27fcfdc52aa·...·]</span><span·class="w">148 ········</span><span·class="p"·data-group-id="2226493795-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="2226493795-19">}</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·11,·SHA:·729ec6a90153422f6d3e5f23f801dfde120453a477458b8201046ba74dbb1028·...·]</span><span·class="w">
 149 ············</span><span·class="p"·data-group-id="2226493795-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="2226493795-21">(</span><span·class="n">Bs</span><span·class="p"·data-group-id="2226493795-21">)</span><span·class="p"·data-group-id="2226493795-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="4461551585-1">(</span><span·class="n">Num</span><span·class="p">,</span><span·class="n">LPort</span><span·class="p"·data-group-id="4461551585-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="1165439917-1">(</span><span·class="n">Num</span><span·class="p">,</span><span·class="n">LPort</span><span·class="p"·data-group-id="1165439917-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="4461551585-2">(</span><span·class="n">LPort</span><span·class="p">,</span><span·class="p"·data-group-id="4461551585-3">[</span><span·class="p"·data-group-id="4461551585-4">{</span><span·class="ss">active</span><span·class="p">,</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·387,·SHA:·66d33cf2783a1278af0d87d358e908a97a0bb4669eca13de1e1f3b6d50c7ee5e·...·]-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="1165439917-2">(</span><span·class="n">LPort</span><span·class="p">,</span><span·class="p"·data-group-id="1165439917-3">[</span><span·class="p"·data-group-id="1165439917-4">{</span><span·class="ss">active</span><span·class="p">,</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·387,·SHA:·0e12901a928f61f77d7f2ba36d47d5aa20f3f5924377fcf04ecb7336fd3d8c7f·...·]-2">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
194 ········</span><span·class="p"·data-group-id="4461551585-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="4461551585-6">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">194 ········</span><span·class="p"·data-group-id="1165439917-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="1165439917-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="4461551585-7">(</span><span·class="n">Num</span><span·class="p">,</span><span·class="n">ListenSock</span><span·class="p"·data-group-id="4461551585-7">)</span><span·class="p">,</span><span·class="w">195 ············</span><span·class="nf">start_servers</span><span·class="p"·data-group-id="1165439917-7">(</span><span·class="n">Num</span><span·class="p">,</span><span·class="n">ListenSock</span><span·class="p"·data-group-id="1165439917-7">)</span><span·class="p">,</span><span·class="w">
196 ············</span><span·class="p"·data-group-id="4461551585-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="4461551585-8">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·199,·SHA:·61c06b7d21ba576e4fe6e25f351ca178c9d5aac1bd3ebba8d5b4dfbc4ebe501f·...·]-9">)</span><span·class="p">,</span><span·class="w">196 ············</span><span·class="p"·data-group-id="1165439917-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="1165439917-8">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·199,·SHA:·af6451eb5baedea912e88e6e787cfbe641cddd44a06d845ed5269b453c3e9df6·...·]-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="4461551585-10">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="n">Reason</span><span·class="p"·data-group-id="4461551585-10">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">198 ········</span><span·class="p"·data-group-id="1165439917-10">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="n">Reason</span><span·class="p"·data-group-id="1165439917-10">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
199 ············</span><span·class="p"·data-group-id="4461551585-11">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="n">Reason</span><span·class="p"·data-group-id="4461551585-11">}</span><span·class="w">199 ············</span><span·class="p"·data-group-id="1165439917-11">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="n">Reason</span><span·class="p"·data-group-id="1165439917-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="4461551585-12">(</span><span·class="mi">0</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id="4461551585-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="1165439917-12">(</span><span·class="mi">0</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id="1165439917-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="4461551585-13">(</span><span·class="n">Num</span><span·class="p">,</span><span·class="n">LS</span><span·class="p"·data-group-id="4461551585-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="1165439917-13">(</span><span·class="n">Num</span><span·class="p">,</span><span·class="n">LS</span><span·class="p"·data-group-id="1165439917-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="4461551585-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="4461551585-15">[</span><span·class="n">LS</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·72,·SHA:·fb857ca316011a5163db24dd572b685ed4444cca7cbda445b1d05f6fe2574f4e·...·]-14">)</span><span·class="p">,</span><span·class="w">204 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="1165439917-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="1165439917-15">[</span><span·class="n">LS</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·72,·SHA:·88f001e019644303d3025fca33b87c1675afac0f8cc2d5363d2b25c9c33361d8·...·]-14">)</span><span·class="p">,</span><span·class="w">
205 ····</span><span·class="nf">start_servers</span><span·class="p"·data-group-id="4461551585-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="4461551585-16">)</span><span·class="p">.</span><span·class="w">205 ····</span><span·class="nf">start_servers</span><span·class="p"·data-group-id="1165439917-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="1165439917-16">)</span><span·class="p">.</span><span·class="w">
  
206 </span><span·class="nf">server</span><span·class="p"·data-group-id="4461551585-17">(</span><span·class="n">LS</span><span·class="p"·data-group-id="4461551585-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="1165439917-17">(</span><span·class="n">LS</span><span·class="p"·data-group-id="1165439917-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="4461551585-18">(</span><span·class="n">LS</span><span·class="p"·data-group-id="4461551585-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="1165439917-18">(</span><span·class="n">LS</span><span·class="p"·data-group-id="1165439917-18">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
208 ········</span><span·class="p"·data-group-id="4461551585-19">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">S</span><span·class="p"·data-group-id="4461551585-19">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">208 ········</span><span·class="p"·data-group-id="1165439917-19">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">S</span><span·class="p"·data-group-id="1165439917-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="4461551585-20">(</span><span·class="n">S</span><span·class="p"·data-group-id="4461551585-20">)</span><span·class="p">,</span><span·class="w">209 ············</span><span·class="nf">loop</span><span·class="p"·data-group-id="1165439917-20">(</span><span·class="n">S</span><span·class="p"·data-group-id="1165439917-20">)</span><span·class="p">,</span><span·class="w">
210 ············</span><span·class="nf">server</span><span·class="p"·data-group-id="4461551585-21">(</span><span·class="n">LS</span><span·class="p"·data-group-id="4461551585-21">)</span><span·class="p">;</span><span·class="w">210 ············</span><span·class="nf">server</span><span·class="p"·data-group-id="1165439917-21">(</span><span·class="n">LS</span><span·class="p"·data-group-id="1165439917-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="4461551585-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="4461551585-23">[</[·...·truncated·by·diffoscope;·len:·128,·SHA:·490f4a74256f50f41af11d67ca7eecd8be9409e0ae306805208805dcc2e59337·...·]-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="1165439917-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="1165439917-23">[</[·...·truncated·by·diffoscope;·len:·128,·SHA:·6752c1a6942ce58ab90b87ccd803f94e584e42b08e3a8c7839ba37e3a11b9b7d·...·]-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="4461551585-24">(</span><span·class="n">S</span><span·class="p"·data-group-id="4461551585-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="1165439917-24">(</span><span·class="n">S</span><span·class="p"·data-group-id="1165439917-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="4461551585-25">(</span><span·class="n">S</span><span·class="p">,</span><span·class="p"·data-group-id="4461551585-26">[</span><span·class="p"·data-group-id="4461551585-27">{</span><span·class="ss">active</span><span·class="p">,</span><span·class="ss">once</[·...·truncated·by·diffoscope;·len:·154,·SHA:·b04d5ec6b082944bc0ac72b520f6674a3ccfaee10ca4dec2e91a7e84a3d41108·...·]-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="1165439917-25">(</span><span·class="n">S</span><span·class="p">,</span><span·class="p"·data-group-id="1165439917-26">[</span><span·class="p"·data-group-id="1165439917-27">{</span><span·class="ss">active</span><span·class="p">,</span><span·class="ss">once</[·...·truncated·by·diffoscope;·len:·154,·SHA:·2068172f3f35a8e8db8904317e5712a983666c484d907a424752e4004b47f50b·...·]-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="4461551585-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="4461551585-28">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">218 ········</span><span·class="p"·data-group-id="1165439917-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="1165439917-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="4461551585-29">(</span><span·class="n">Data</span><span·class="p"·data-group-id="4461551585-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="1165439917-29">(</span><span·class="n">Data</span><span·class="p"·data-group-id="1165439917-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="4461551585-30">(</span><span·class="n">S</span><span·class="p">,</span><span·class="n">Answer</span><span·class="p"·data-group-id="4461551585-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="1165439917-30">(</span><span·class="n">S</span><span·class="p">,</span><span·class="n">Answer</span><span·class="p"·data-group-id="1165439917-30">)</span><span·class="p">,</span><span·class="w">
221 ············</span><span·class="nf">loop</span><span·class="p"·data-group-id="4461551585-31">(</span><span·class="n">S</span><span·class="p"·data-group-id="4461551585-31">)</span><span·class="p">;</span><span·class="w">221 ············</span><span·class="nf">loop</span><span·class="p"·data-group-id="1165439917-31">(</span><span·class="n">S</span><span·class="p"·data-group-id="1165439917-31">)</span><span·class="p">;</span><span·class="w">
222 ········</span><span·class="p"·data-group-id="4461551585-32">{</span><span·class="ss">tcp_closed</span><span·class="p">,</span><span·class="n">S</span><span·class="p"·data-group-id="4461551585-32">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">222 ········</span><span·class="p"·data-group-id="1165439917-32">{</span><span·class="ss">tcp_closed</span><span·class="p">,</span><span·class="n">S</span><span·class="p"·data-group-id="1165439917-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="4461551585-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:·b905d7091704b862df6ad7cf31ff0a42d3fa32ab34c1eb82ca554d2eac687a3c·...·]-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="1165439917-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:·66c4bdae2abf5dbc6a10f63e1af21d27a29398f72b07579334d426944fac9bde·...·]-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="3855365786-1">(</span><span·class="n">PortNo</span><span·class="p">,</span><span·class="n">Message</span><span·class="p"·data-group-id="3855365786-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="0040095078-1">(</span><span·class="n">PortNo</span><span·class="p">,</span><span·class="n">Message</span><span·class="p"·data-group-id="0040095078-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
226 ····</span><span·class="p"·data-group-id="3855365786-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Sock</span><span·class="p"·data-group-id="3855365786-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:·a342e3b6cfcbb0e0fde805f14d267c043578538a89cbb89b59ef382c7bbab00d·...·]-5">}</span><span·class="p">,</span><span·class="w">226 ····</span><span·class="p"·data-group-id="0040095078-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Sock</span><span·class="p"·data-group-id="0040095078-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:·e81e17111d40f02572af1f403a54e6aab2ef30177cebfd3381cca16c4b32091b·...·]-5">}</span><span·class="p">,</span><span·class="w">
227 ····················································</span><span·class="p"·data-group-id="3855365786-6">{</span><span·class="ss">packet</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="3855365786-6">}</span><span·class="p"·data-group-id="3855365786-4">]</span><span·class="p"·data-group-id="3855365786-3">)</span><span·class="p">,</span><span·class="w">227 ····················································</span><span·class="p"·data-group-id="0040095078-6">{</span><span·class="ss">packet</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="0040095078-6">}</span><span·class="p"·data-group-id="0040095078-4">]</span><span·class="p"·data-group-id="0040095078-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="3855365786-7">(</span><span·class="n">Sock</span><span·class="p">,</span><span·class="n">Message</span><span·class="p"·data-group-id="3855365786-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="0040095078-7">(</span><span·class="n">Sock</span><span·class="p">,</span><span·class="n">Message</span><span·class="p"·data-group-id="0040095078-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="3855365786-8">(</span><span·class="n">Sock</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="3855365786-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="0040095078-8">(</span><span·class="n">Sock</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="0040095078-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="3855365786-9">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="3855365786-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="0040095078-9">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="0040095078-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="6615177076-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Sock</span><span·class="p"·data-group-id="6615177076-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:·d77e4ac0289a02669f35ef66682a8b637a94e51add8e49f9ff95ab36dbeeed5d·...·]-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="8952960407-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Sock</span><span·class="p"·data-group-id="8952960407-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:·1c7edf7d6634d22f37c3225e459cc6712637b19fe81d98bfdbb390672ad2f951·...·]-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="6615177076-3">[</span><span·class="p"·data-group-id="6615177076-4">{</span><span·class="ss">active</span><span·class="p">,</span><span·class="ss">false</span><span·class="p"·data-group-id="6615177076-4">}</span><span·class="p">,</span><span·class="w">241 ····························</span><span·class="p"·data-group-id="8952960407-3">[</span><span·class="p"·data-group-id="8952960407-4">{</span><span·class="ss">active</span><span·class="p">,</span><span·class="ss">false</span><span·class="p"·data-group-id="8952960407-4">}</span><span·class="p">,</span><span·class="w">
242 ·····························</span><span·class="p"·data-group-id="6615177076-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="6615177076-5">}</span><span·class="p">,</span><span·class="w">242 ·····························</span><span·class="p"·data-group-id="8952960407-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="8952960407-5">}</span><span·class="p">,</span><span·class="w">
243 ·····························</span><span·class="p"·data-group-id="6615177076-6">{</span><span·class="ss">packet</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="6615177076-6">}</span><span·class="p"·data-group-id="6615177076-3">]</span><span·class="p"·data-group-id="6615177076-2">)</span><span·class="p">,</span><span·class="w">243 ·····························</span><span·class="p"·data-group-id="8952960407-6">{</span><span·class="ss">packet</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="8952960407-6">}</span><span·class="p"·data-group-id="8952960407-3">]</span><span·class="p"·data-group-id="8952960407-2">)</span><span·class="p">,</span><span·class="w">
244 ················</span><span·class="nf">loop</span><span·class="p"·data-group-id="6615177076-7">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="6615177076-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="8952960407-7">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="8952960407-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="7427025705-1">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="7427025705-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="7361759794-1">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="7361759794-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="7427025705-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="7427025705-2">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">247 ········</span><span·class="p"·data-group-id="7361759794-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="7361759794-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="7427025705-3">(</span><span·class="n">Sock</span><span·class="p">,</span><span·class="p"·data-group-id="7427025705-4">[</span><span·class="n">Binary</span><span·class="p"·data-group-id="7427025705-4">]</span><span·class="p"·data-group-id="7427025705-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="7361759794-3">(</span><span·class="n">Sock</span><span·class="p">,</span><span·class="p"·data-group-id="7361759794-4">[</span><span·class="n">Binary</span><span·class="p"·data-group-id="7361759794-4">]</span><span·class="p"·data-group-id="7361759794-3">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
249 ················</span><span·class="p"·data-group-id="7427025705-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="7427025705-5">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">249 ················</span><span·class="p"·data-group-id="7361759794-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="7361759794-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="7427025705-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="7361759794-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="7427025705-7">[</span><span·class="p"·data-group-id="7427025705-7">]</span><span·class="p"·data-group-id="7427025705-6">)</span><span·class="p">,</span><span·class="w">251 ······························</span><span·class="p"·data-group-id="7361759794-7">[</span><span·class="p"·data-group-id="7361759794-7">]</span><span·class="p"·data-group-id="7361759794-6">)</span><span·class="p">,</span><span·class="w">
252 ····················</span><span·class="nf">handle_send_timeout</span><span·class="p"·data-group-id="7427025705-8">(</span><span·class="p"·data-group-id="7427025705-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="7361759794-8">(</span><span·class="p"·data-group-id="7361759794-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="7427025705-9">{</span><span·class="nf">self</span><span·class="p"·data-group-id="7427025705-10">(</span><span·class="p"·data-group-id="7427025705-10">)</span><span·class="p">,</span><span·class="p"·data-group-id="7427025705-11">{</span><span·class="ss">erro[·...·truncated·by·diffoscope;·len:·190,·SHA:·8d3b96f1a5b645919d86172eb8ee18f5661992171c516cf6e2a37f75fb0a1822·...·]-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="7361759794-9">{</span><span·class="nf">self</span><span·class="p"·data-group-id="7361759794-10">(</span><span·class="p"·data-group-id="7361759794-10">)</span><span·class="p">,</span><span·class="p"·data-group-id="7361759794-11">{</span><span·class="ss">erro[·...·truncated·by·diffoscope;·len:·190,·SHA:·ed7f232fd7f2e6d99ad16840ace92b0264e4ac2f93c98c593458d4e02a73fd82·...·]-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="7427025705-12">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="7427025705-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="7361759794-12">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="7361759794-12">)</span><span·class="p">;</span><span·class="w">
258 ················</span><span·class="p"·data-group-id="7427025705-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="7427025705-13">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">258 ················</span><span·class="p"·data-group-id="7361759794-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="7361759794-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="7427025705-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="7361759794-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="7427025705-15">[</span><span·class="n">OtherSendError</span><span·class="p"·data-group-id="7427025705-15">]</span><span·class="p"·data-group-id="7427025705-14">)</span><span·class="p">,</span><span·class="w">260 ······························</span><span·class="p"·data-group-id="7361759794-15">[</span><span·class="n">OtherSendError</span><span·class="p"·data-group-id="7361759794-15">]</span><span·class="p"·data-group-id="7361759794-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="7427025705-16">{</span><span·class="nf">self</span><span·class="p"·data-group-id="7427025705-17">(</span><span·class="p"·data-group-id="7427025705-17">)</span><span·class="p">,</span><span·class="p"·data-group-id="7427025705-18">{</span><span·class="ss">err[·...·truncated·by·diffoscope;·len:·197,·SHA:·e85b9730b5f8e13d245f1b316f36d1ab968faa16e99744a5749671748155f3d5·...·]-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="7361759794-16">{</span><span·class="nf">self</span><span·class="p"·data-group-id="7361759794-17">(</span><span·class="p"·data-group-id="7361759794-17">)</span><span·class="p">,</span><span·class="p"·data-group-id="7361759794-18">{</span><span·class="ss">err[·...·truncated·by·diffoscope;·len:·197,·SHA:·cf6f78dcc5b7b15089ff340d26572dd12450c494c35d45b8cef6689151798ce1·...·]-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="7427025705-19">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="7427025705-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="7361759794-19">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="7361759794-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="7427025705-20">{</span><span·class="nf">self</span><span·class="p"·data-group-id="7427025705-21">(</span><span·class="p"·data-group-id="7427025705-21">)</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">data_sent</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·24,·SHA:·ffda05b516b5dadd7444f12b8dff6926af11d8ec542c0835ff20d47f45fbb234·...·]-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="7361759794-20">{</span><span·class="nf">self</span><span·class="p"·data-group-id="7361759794-21">(</span><span·class="p"·data-group-id="7361759794-21">)</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">data_sent</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·24,·SHA:·2eb56d2837deb8cffd6974abede94b374231aca7b11e7fce16478d01b26b79e9·...·]-20">}</span><span·class="p">,</span><span·class="w">
265 ····················</span><span·class="nf">loop</span><span·class="p"·data-group-id="7427025705-22">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="7427025705-22">)</span><span·class="w">265 ····················</span><span·class="nf">loop</span><span·class="p"·data-group-id="7361759794-22">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="7361759794-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>
  
Max diff block lines reached; 0/60885 bytes (0.00%) of diff not shown.
7.42 KB
./usr/share/doc/erlang-doc/html/lib/kernel-10.2.6/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="7999957193-1">{</span><span·class="ss">udp</span><span·class="p">,</span><span·class="err"> </span><span·class="n">Socket</span><span·class="p">,</span><span·class="err"> </span><span·class="n">PeerIP</span><span·class="p">,</span><span·class="err"> </span[·...·truncated·by·diffoscope;·len:·152,·SHA:·dabb9d02385339693719daad850e244d681a3221c676d173fbbcaf2199ef8083·...·]-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="3314213650-1">{</span><span·class="ss">udp</span><span·class="p">,</span><span·class="err"> </span><span·class="n">Socket</span><span·class="p">,</span><span·class="err"> </span><span·class="n">PeerIP</span><span·class="p">,</span><span·class="err"> </span[·...·truncated·by·diffoscope;·len:·152,·SHA:·cdbedfee92ff5c96e10372c66c850a775b8afe33085d6c104565a1aeaa2aa7d5·...·]-1">}</span><span·class="w">·</span><span·class="c1">%·Without·ancillary·data</span><span·class="w">
932 </span><span·class="p"·data-group-id="7999957193-2">{</span><span·class="ss">udp</span><span·class="p">,</span><span·class="err"> </span><span·class="n">Socket</span><span·class="p">,</span><span·class="err"> </span><span·class="n">PeerIP</span><span·class="p">,</span><span·class="err"> </span[·...·truncated·by·diffoscope;·len:·232,·SHA:·4440178d7d3c31cc9d67ded7434cef1d1f07fe8245ff48eeb09a46344ba16776·...·]-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="3314213650-2">{</span><span·class="ss">udp</span><span·class="p">,</span><span·class="err"> </span><span·class="n">Socket</span><span·class="p">,</span><span·class="err"> </span><span·class="n">PeerIP</span><span·class="p">,</span><span·class="err"> </span[·...·truncated·by·diffoscope;·len:·232,·SHA:·bcf87c0236277dc5e7ff8f12b03f8d43c68adfc90a2b6fc5dd119df04e72d684·...·]-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.6/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.6/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.6/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.6/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="5392549308-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="5392549308-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="3905668090-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="3905668090-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="2313878269-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="2313878269-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="8519831279-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="8519831279-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.6/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="4578490511-1">{</span><span·class="ss">global_groups</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4578490511-2">[</span><span·class="n">GroupTuple</span><span·class="w">·</span><span·class="p">:</span><span·class="p"[·...·truncated·by·diffoscope;·len:·268,·SHA:·607114f67df3d47f69ab2d124af051c963244e1c05e018b86cdf3e92e12b36fa·...·]-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="9683888320-1">{</span><span·class="ss">global_groups</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9683888320-2">[</span><span·class="n">GroupTuple</span><span·class="w">·</span><span·class="p">:</span><span·class="p"[·...·truncated·by·diffoscope;·len:·268,·SHA:·fae40452c93f8b3c306fce49d406318e8981d74a897ee61d823b8e6c8abf5385·...·]-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.6/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="9187134074-1">(</span><span·class="p"·data-group-id="9187134074-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="1565007539-1">(</span><span·class="p"·data-group-id="1565007539-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="9187134074-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:·e9efff0f72602d86821da7b8b9df91d89a44793402348ba77fb323b78c8363e4·...·]-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="1565007539-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:·574a2730697c359b8f35424536f711a806052903cc304096bb4ac819f5c0e943·...·]-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="9187134074-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:·792,·SHA:·ae0a31dea1946f57a5884618018a705d36fb394840b9da6d5bcc7d9be63188dd·...·]-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="1565007539-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:·792,·SHA:·a8a5a1f374a627d4e15e658ba0507977205f573d2f76a2a1de39887e265207ff·...·]-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="9187134074-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:·798,·SHA:·4d8885329d65fae6fd8b5eab2c8d093832a8276290b4aee09254f5b77673fa72·...·]-6">}</span><span·class="w">159 ················</span><span·class="p"·data-group-id="1565007539-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:·798,·SHA:·4e1f1a0640522f4f3cc4174603f54ec013d72c7fa8ebbfa7f04ed58807e196c7·...·]-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="9187134074-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:·218,·SHA:·389a22fe1851617a398744c68d67e2cdc6f2267fb954c83accc53ffe03369fc6·...·]-9">}</span><span·class="w">161 ················</span><span·class="p"·data-group-id="1565007539-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:·218,·SHA:·06a7b51d5f62ebf047a57ffa6cf87a32b5406548d42f7649c1c70bf18c25126f·...·]-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="9187134074-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:·2d07b7f93c6aac3bf98e5e89bffa6bd8a3299c6149ae9c63e57768a69e67e44b·...·]-1">)</span><span·class="p">.</span><span·class="w">163 ················</span><span·class="p"·data-group-id="1565007539-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:·5c39e9b9d16e3cfca1dae1e67bc20e391e5826da0d698d7355c0e003a181c1da·...·]-1">)</span><span·class="p">.</span><span·class="w">
164 </span><span·class="p"·data-group-id="5275078824-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="5275078824-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:·bd0c89c3a5db987149a1995fa85e5cef5d0e4d80631ac8cbaab5519930f34b10·...·]-2">}</span><span·class="gp·unselectable">164 </span><span·class="p"·data-group-id="2609836923-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2609836923-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:·65e77d269cfd3944f8ff0ef00d7d26a9c2352db98df20d9fe1ed73169f97ff67·...·]-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="5275078824-4">(</span><span·class="s">&quot;::FFFF:192.168.42.2&quot;</span><span·class="p"·data-group-id="5275078824-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="2609836923-4">(</span><span·class="s">&quot;::FFFF:192.168.42.2&quot;</span><span·class="p"·data-group-id="2609836923-4">)</span><span·class="p">.</span><span·class="w">
166 </span><span·class="p"·data-group-id="5275078824-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="5275078824-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:·7985e594994db464224253678e65b9d8ad54ed8334c878f8f043c5b185e266a0·...·]-5">}</span></code></pre><h2·id="module-posix-error-codes"·class="section-heading">166 </span><span·class="p"·data-group-id="2609836923-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2609836923-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:·0a6331988cb83ae350638b19130cd3eedb4f00b38560d52e1d74151ecff805aa·...·]-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.6/doc/html/erlang.html#t:non_neg_integer/0">non_neg_integer</a>(),954 ···················h_length·::·<a·href="../../../../erts-15.2.6/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="9633384923-1">(</span><span·class="s">&quot;kernel/include/inet.hrl&quot;</span><span·class="p"·data-group-id="9633384923-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="3881280235-1">(</span><span·class="s">&quot;kernel/include/inet.hrl&quot;</span><span·class="p"·data-group-id="3881280235-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="8748570172-1">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="8748570172-1">)</span><span·class="w">·</span><span·class="p">-&gt;</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="5150706227-1">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="5150706227-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
2058 ····</span><span·class="p"·data-group-id="8748570172-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="8748570172-3">[</span><span·class="p"·data-group-id="8748570172-4">{</span><span·class="ss">raw</span><span·class="p">,</span><span·class="p">_</span><sp[·...·truncated·by·diffoscope;·len:·943,·SHA:·1662ff6700e2b25ac13f7b7881862cbbf9442faffbaab2929fb99e5ba7537d25·...·]-5">)</span><span·class="p">,</span><span·class="w">2058 ····</span><span·class="p"·data-group-id="5150706227-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="5150706227-3">[</span><span·class="p"·data-group-id="5150706227-4">{</span><span·class="ss">raw</span><span·class="p">,</span><span·class="p">_</span><sp[·...·truncated·by·diffoscope;·len:·943,·SHA:·b43c3c53a15a760fd5f36563441d5a975ad4833766af515fe80bb0f4acf0b67f·...·]-5">)</span><span·class="p">,</span><span·class="w">
2059 ····</span><span·class="p"·data-group-id="8748570172-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:·6c301d398213b900a130640623ef45862acf0444506eda202754f8518f6f7760·...·]-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="5150706227-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:·e6a624d41ec57a35c30459b6dce3470631d815af13ef081151fc7169c7de2380·...·]-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.6/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.6/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="7558157703-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:·d6d77761944088f0d7a7a9cfd31153401f0914ee530e9c8f618b042048030b6e·...·]-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="1109794490-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:·ede5648bf04b165bd3ef8e1ff2242678a899c27cdced379aef6105c9ff917a3b·...·]-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.6/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.6/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.6/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="9703950454-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="9703950454-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="0508671730-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="0508671730-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="9703950454-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="9703950454-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="0508671730-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="0508671730-2">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
184 ········</span><span·class="p"·data-group-id="9703950454-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Msg</span><span·class="p"·data-group-id="9703950454-3">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">184 ········</span><span·class="p"·data-group-id="0508671730-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Msg</span><span·class="p"·data-group-id="0508671730-3">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
185 ············</span><span·class="p"·data-group-id="9703950454-4">[</span><span·class="nc">inet_dns</span><span·class="p">:</span><span·class="nf">rr</span><span·class="p"·data-group-id="9703950454-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:·11189d1335f592d1a66e685c8bbe623ed230c8a3bfb9019a8fd4bafd2a47ee7d·...·]-5">)</span><span·class="w">185 ············</span><span·class="p"·data-group-id="0508671730-4">[</span><span·class="nc">inet_dns</span><span·class="p">:</span><span·class="nf">rr</span><span·class="p"·data-group-id="0508671730-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:·e09a45b05b8f50eafdb3019633e0429bb625dae356db99d7fd3bab5ae93d497e·...·]-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="9703950454-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="9703950454-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="0508671730-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="0508671730-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="9703950454-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="9703950454-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="0508671730-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="0508671730-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="9703950454-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="9703950454-8">)</span><span·class="w">·</span><span·class="o">=:=</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·64,·SHA:·213da87297f7fd7b0b1e7d64615b61d6c93399538dd45478254011cc8812eff2·...·]-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="0508671730-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="0508671730-8">)</span><span·class="w">·</span><span·class="o">=:=</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·64,·SHA:·9bbc1e6e3fef657dcd8429cccc9521b612cfd76466830386aa2cb00c9cd34717·...·]-4">]</span><span·class="p">;</span><span·class="w">
189 ········</span><span·class="p"·data-group-id="9703950454-9">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id="9703950454-9">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">189 ········</span><span·class="p"·data-group-id="0508671730-9">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id="0508671730-9">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
190 ············</span><span·class="p"·data-group-id="9703950454-10">[</span><span·class="p"·data-group-id="9703950454-10">]</span><span·class="w">190 ············</span><span·class="p"·data-group-id="0508671730-10">[</span><span·class="p"·data-group-id="0508671730-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.6/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.6/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="9060155554-1">(</span><span·class="p"·data-group-id="9060155554-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="5936561290-1">(</span><span·class="p"·data-group-id="5936561290-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="9060155554-2">(</span><span·class="n">DnsMsg</span><span·class="p"·data-group-id="9060155554-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="5936561290-2">(</span><span·class="n">DnsMsg</span><span·class="p"·data-group-id="5936561290-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
591 ········</span><span·class="p"·data-group-id="9060155554-3">[</span><span·class="w">·</span><span·class="p"·data-group-id="9060155554-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="9060155554-5">[·...·truncated·by·diffoscope;·len:·102,·SHA:·7e6635893f1b366c3150a152aaad70bac9307743add5626894c86daf3b698c11·...·]-4">}</span><span·class="w">591 ········</span><span·class="p"·data-group-id="5936561290-3">[</span><span·class="w">·</span><span·class="p"·data-group-id="5936561290-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="5936561290-5">[·...·truncated·by·diffoscope;·len:·102,·SHA:·b0e00a03994e4b9c1cd97b42e66dd6816efb475be73fc7b28f9f66f20882500a·...·]-4">}</span><span·class="w">
592 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="9060155554-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="9060155554-7">(</span><span·class="p"·data-group-id="9060155554-7">)</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·24,·SHA:·09bd298806145a34d81f454704507f8d5ab9738f1794b2320e07220e9a983a38·...·]-6">}</span><span·class="w">592 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="5936561290-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="5936561290-7">(</span><span·class="p"·data-group-id="5936561290-7">)</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·24,·SHA:·7b53a921fc57b0a4e97b23edc39a17a5df9aba8d0309baf467bd060bd95ecb15·...·]-6">}</span><span·class="w">
593 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="9060155554-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="9060155554-9">(</span><span·class="p"·data-group-id="9060155554-9">)</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·d8f173ee7788c2a6800ce28e9a9ab2b5c22c2ca7670f0352a1c270313e91a546·...·]-8">}</span><span·class="w">593 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="5936561290-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="5936561290-9">(</span><span·class="p"·data-group-id="5936561290-9">)</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·9a78ca99e4b0a55988d2dbc960e7ed29ae2c36e776ca07091a9212c8fccd1640·...·]-8">}</span><span·class="w">
594 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="9060155554-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="9060155554-11">(</span><span·class="p"·data-group-id="9060155554-11">)</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·24,·SHA:·09bd298806145a34d81f454704507f8d5ab9738f1794b2320e07220e9a983a38·...·]-10">}</span><span·class="w">594 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="5936561290-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="5936561290-11">(</span><span·class="p"·data-group-id="5936561290-11">)</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·24,·SHA:·7b53a921fc57b0a4e97b23edc39a17a5df9aba8d0309baf467bd060bd95ecb15·...·]-10">}</span><span·class="w">
595 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="9060155554-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="9060155554-13">(</span><span·class="p"·data-group-id="9060155554-13">)</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·102,·SHA:·ab6b7c060166af0dd5480e50a697ede020fb9e87095b6f9277b082105842112c·...·]-3">]</span><span·class="w">595 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="5936561290-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="5936561290-13">(</span><span·class="p"·data-group-id="5936561290-13">)</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·102,·SHA:·9111db1887478cc4aab9eb5651598f9f46c7a0615dcb89cb13b8d8fe87b7c834·...·]-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="9060155554-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="9060155554-14">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·133,·SHA:·217b4cb829f69fc23e5be8f362ff90b255742a5e2cdacba2cc16bec31ee325cc·...·]-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="5936561290-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="5936561290-14">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·133,·SHA:·46cf19995faa43bdb597e4f87429afb7acf42a503a7125d553529e9b80bb9a30·...·]-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="9060155554-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="9060155554-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="5936561290-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="5936561290-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="9060155554-17">(</span><span·class="p"·data-group-id="9060155554-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="5936561290-17">(</span><span·class="p"·data-group-id="5936561290-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="9060155554-18">(</span><span·class="n">DnsHeader</span><span·class="p"·data-group-id="9060155554-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="5936561290-18">(</span><span·class="n">DnsHeader</span><span·class="p"·data-group-id="5936561290-18">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
600 ········</span><span·class="p"·data-group-id="9060155554-19">[</span><span·class="w">·</span><span·class="p"·data-group-id="9060155554-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="9060155554-21">(</s[·...·truncated·by·diffoscope;·len:·99,·SHA:·9840ca5ba36358159aad4e7fd1e851ad2a17566c5640cb11be90cd4b3bbc41fd·...·]-20">}</span><span·class="w">600 ········</span><span·class="p"·data-group-id="5936561290-19">[</span><span·class="w">·</span><span·class="p"·data-group-id="5936561290-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="5936561290-21">(</s[·...·truncated·by·diffoscope;·len:·99,·SHA:·9f9fdde614ed672ede080a6ed305591a5bd879dd5124e2fb0783a56093e0d640·...·]-20">}</span><span·class="w">
601 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="9060155554-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="9060155554-23">(</span><span·class="p"·data-group-id="9060155554-23">)</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·d8f173ee7788c2a6800ce28e9a9ab2b5c22c2ca7670f0352a1c270313e91a546·...·]-22">}</span><span·class="w">601 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="5936561290-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="5936561290-23">(</span><span·class="p"·data-group-id="5936561290-23">)</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·9a78ca99e4b0a55988d2dbc960e7ed29ae2c36e776ca07091a9212c8fccd1640·...·]-22">}</span><span·class="w">
602 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="9060155554-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:·c1edecafa2924f61911584ac871c2ea9c57201e398bd1131de220184afb6eaba·...·]-24">}</span><span·class="w">602 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="5936561290-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:·f9c3f9c18c44e69d3a9620936d5b8d26162055b99df80b468c50e9d573ff1bee·...·]-24">}</span><span·class="w">
603 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="9060155554-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="9060155554-27">(</span><span·class="p"·data-group-id="9060155554-27">)</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·d8f173ee7788c2a6800ce28e9a9ab2b5c22c2ca7670f0352a1c270313e91a546·...·]-26">}</span><span·class="w">603 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="5936561290-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="5936561290-27">(</span><span·class="p"·data-group-id="5936561290-27">)</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·9a78ca99e4b0a55988d2dbc960e7ed29ae2c36e776ca07091a9212c8fccd1640·...·]-26">}</span><span·class="w">
604 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="9060155554-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="9060155554-29">(</span><span·class="p"·data-group-id="9060155554-29">)</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·d8f173ee7788c2a6800ce28e9a9ab2b5c22c2ca7670f0352a1c270313e91a546·...·]-28">}</span><span·class="w">604 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="5936561290-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="5936561290-29">(</span><span·class="p"·data-group-id="5936561290-29">)</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·9a78ca99e4b0a55988d2dbc960e7ed29ae2c36e776ca07091a9212c8fccd1640·...·]-28">}</span><span·class="w">
605 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="9060155554-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="9060155554-31">(</span><span·class="p"·data-group-id="9060155554-31">)</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·d8f173ee7788c2a6800ce28e9a9ab2b5c22c2ca7670f0352a1c270313e91a546·...·]-30">}</span><span·class="w">605 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="5936561290-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="5936561290-31">(</span><span·class="p"·data-group-id="5936561290-31">)</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·9a78ca99e4b0a55988d2dbc960e7ed29ae2c36e776ca07091a9212c8fccd1640·...·]-30">}</span><span·class="w">
606 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="9060155554-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="9060155554-33">(</span><span·class="p"·data-group-id="9060155554-33">)</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·d8f173ee7788c2a6800ce28e9a9ab2b5c22c2ca7670f0352a1c270313e91a546·...·]-32">}</span><span·class="w">606 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="5936561290-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="5936561290-33">(</span><span·class="p"·data-group-id="5936561290-33">)</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·9a78ca99e4b0a55988d2dbc960e7ed29ae2c36e776ca07091a9212c8fccd1640·...·]-32">}</span><span·class="w">
607 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="9060155554-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="9060155554-35">(</span><span·class="p"·data-group-id="9060155554-35">)</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·d8f173ee7788c2a6800ce28e9a9ab2b5c22c2ca7670f0352a1c270313e91a546·...·]-34">}</span><span·class="w">607 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="5936561290-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="5936561290-35">(</span><span·class="p"·data-group-id="5936561290-35">)</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·9a78ca99e4b0a55988d2dbc960e7ed29ae2c36e776ca07091a9212c8fccd1640·...·]-34">}</span><span·class="w">
608 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="9060155554-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="9060155554-37">(</span><span·class="mi">0</span><span·class="p">.</span><span·class="p">.</spa[·...·truncated·by·diffoscope;·len:·201,·SHA:·09c6c3bc3f7fc036d1751fa8e7785a920a06e0cced909220f273a606bc31c65b·...·]-19">]</span><span·class="w">608 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="5936561290-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="5936561290-37">(</span><span·class="mi">0</span><span·class="p">.</span><span·class="p">.</spa[·...·truncated·by·diffoscope;·len:·201,·SHA:·d8ba9978cbd76009aa26470fd4be5b1451608683aac2d42b55615d42b244aa8a·...·]-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="9060155554-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="9060155554-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="5936561290-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="5936561290-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="9060155554-39">(</span><span·class="p"·data-group-id="9060155554-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:·93d4cb2e9ef269500b954e0431441ca40e2571091569021e5a0767c1e8e5bc8e·...·]-40">)</span><span·class="w">610 </span><span·class="nf">query_type</span><span·class="p"·data-group-id="5936561290-39">(</span><span·class="p"·data-group-id="5936561290-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:·4d811cc04ccc878ec7ad38eb0c1fd43fd5ffef5b4640beca1e967dda75507db7·...·]-40">)</span><span·class="w">
  
611 </span><span·class="nf">dns_query</span><span·class="p"·data-group-id="9060155554-41">(</span><span·class="p"·data-group-id="9060155554-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="5936561290-41">(</span><span·class="p"·data-group-id="5936561290-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="9060155554-42">(</span><span·class="n">DnsQuery</span><span·class="p"·data-group-id="9060155554-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="5936561290-42">(</span><span·class="n">DnsQuery</span><span·class="p"·data-group-id="5936561290-42">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
613 ········</span><span·class="p"·data-group-id="9060155554-43">[</span><span·class="w">·</span><span·class="p"·data-group-id="9060155554-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="9060155554-45"[·...·truncated·by·diffoscope;·len:·104,·SHA:·31404ca7800c004e74c84fbb0234ffb8cd31dfe5f4a39b45621cebd18f35a731·...·]-44">}</span><span·class="w">613 ········</span><span·class="p"·data-group-id="5936561290-43">[</span><span·class="w">·</span><span·class="p"·data-group-id="5936561290-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="5936561290-45"[·...·truncated·by·diffoscope;·len:·104,·SHA:·45bf5181134f9a3ee91bbd5526afc85d86b11cfa7e36a49e82a6bf318e418e64·...·]-44">}</span><span·class="w">
614 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="9060155554-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="9060155554-47">(</span><span·class="p"·data-group-id="9060155554-47">)</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·0705d08a47de7feff627fc410240618a1d55629d2d90994368592372b60c8776·...·]-46">}</span><span·class="w">614 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="5936561290-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="5936561290-47">(</span><span·class="p"·data-group-id="5936561290-47">)</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·5e6f64770f060dd41dca0f2c2ccd42124fdaf6de2b4bb7b1de98eb8316cc419e·...·]-46">}</span><span·class="w">
615 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="9060155554-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="9060155554-49">(</span><span·class="p"·data-group-id="9060155554-49">)</span><span·class="p"[·...·truncated·by·diffoscope;·len:·104,·SHA:·8fb26af3e42ef017f7ec9a7cd812564773dcae01ae66e94d27744a7019ae6656·...·]-43">]</span><span·class="w">615 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="5936561290-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="5936561290-49">(</span><span·class="p"·data-group-id="5936561290-49">)</span><span·class="p"[·...·truncated·by·diffoscope;·len:·104,·SHA:·9381cf3cb6c3d41c41dd0d2fc27e12d64010730355cb28c554b2f9d42269b719·...·]-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="9060155554-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="9060155554-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="5936561290-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="5936561290-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="9060155554-51">(</span><span·class="p"·data-group-id="9060155554-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="5936561290-51">(</span><span·class="p"·data-group-id="5936561290-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="9060155554-52">(</span><span·class="n">DnsRr</span><span·class="p"·data-group-id="9060155554-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="5936561290-52">(</span><span·class="n">DnsRr</span><span·class="p"·data-group-id="5936561290-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="9060155554-53">[</span><span·class="w">·</span><span·class="p"·data-group-id="9060155554-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="9060155554-55"[·...·truncated·by·diffoscope;·len:·104,·SHA:·a1e65b9ec2e568746d9abe7b6e3cd665f6dccdebd5821381c0972886da82b32b·...·]-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="5936561290-53">[</span><span·class="w">·</span><span·class="p"·data-group-id="5936561290-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="5936561290-55"[·...·truncated·by·diffoscope;·len:·104,·SHA:·41545bb42d7e893b78845de4fda042ffbb55f515c0f15d7ae4049a01d105869a·...·]-54">}</span><span·class="w">
620 ··················</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="9060155554-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="9060155554-57">(</span><span·class="p"·data-group-id="9060155554-57">)</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·9d457e19bbd2c8dbcbc2ef77309f25c768e1a08b89141296d1ae23326d2fb860·...·]-56">}</span><span·class="w">620 ··················</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="5936561290-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="5936561290-57">(</span><span·class="p"·data-group-id="5936561290-57">)</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·75d0d75e0963ece14b99437a19beae5296754ebdc51b4f8b964bfe32e404b76f·...·]-56">}</span><span·class="w">
621 ··················</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="9060155554-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="9060155554-59">(</span><span·class="p"·data-group-id="9060155554-59">)</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·0705d08a47de7feff627fc410240618a1d55629d2d90994368592372b60c8776·...·]-58">}</span><span·class="w">621 ··················</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="5936561290-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="5936561290-59">(</span><span·class="p"·data-group-id="5936561290-59">)</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·5e6f64770f060dd41dca0f2c2ccd42124fdaf6de2b4bb7b1de98eb8316cc419e·...·]-58">}</span><span·class="w">
622 ··················</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="9060155554-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="9060155554-61">(</span><span·class="p"·data-group-id="9060155554-61">)</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·8cdeda962e4ec869bf1fe914fac3e96d8fdccbac7553c442df7e54d3f3c9650e·...·]-60">}</span><span·class="w">622 ··················</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="5936561290-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="5936561290-61">(</span><span·class="p"·data-group-id="5936561290-61">)</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·da6f81606583de69aac44600c78aae2d9e8163386fd54f57c036110186c8c095·...·]-60">}</span><span·class="w">
623 ··················</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="9060155554-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="9060155554-63">(</span><span·class="p"·data-group-id="9060155554-63">)</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·102,·SHA:·92e9b8576aff2f909eb289e3fe891abc64f4cce042efcddcea42cd1c66033044·...·]-53">]</span><span·class="w">623 ··················</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="5936561290-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="5936561290-63">(</span><span·class="p"·data-group-id="5936561290-63">)</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·102,·SHA:·7b32ab7b7f7699ea5e519fb0da61746872ca5d6f804cf8866f0141261ba9025e·...·]-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="9060155554-64">[</span><span·class="w">·</span><span·class="p"·data-group-id="9060155554-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="9060155554-66"[·...·truncated·by·diffoscope;·len:·104,·SHA:·8688dc150e7a44617e699c4e7a967c08bed9c77340266cfc1b4f969e0bdd4a55·...·]-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="5936561290-64">[</span><span·class="w">·</span><span·class="p"·data-group-id="5936561290-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="5936561290-66"[·...·truncated·by·diffoscope;·len:·104,·SHA:·ee49621133408c7b94c2c0836e68d28a009901929f0c5baa96206de9de636629·...·]-65">}</span><span·class="w">
625 ·····················</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="9060155554-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="9060155554-67">}</span><span·class="w">625 ·····················</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="5936561290-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="5936561290-67">}</span><span·class="w">
626 ·····················</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="9060155554-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="9060155554-69">(</span><span·class="p"·data-group-id="9060155554-69">)</span><span·[·...·truncated·by·diffoscope;·len:·35,·SHA:·1927dba023d83e350a2edb8d21e13b89cbb8123ab24786e1392d2f89ab2d0db4·...·]-68">}</span><span·class="w">626 ·····················</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="5936561290-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="5936561290-69">(</span><span·class="p"·data-group-id="5936561290-69">)</span><span·[·...·truncated·by·diffoscope;·len:·35,·SHA:·02e322fb52261a4a19aa6c53f9cd991e2742767e5175f17a5a62e10c269a2dc3·...·]-68">}</span><span·class="w">
627 ·····················</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="9060155554-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="9060155554-71">(</span><span·class="p"·data-group-id="9060155554-71">)</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·ddef525a84fc598b031e734728929ea88f82ed1c9f11670f269175aa67131188·...·]-70">}</span><span·class="w">627 ·····················</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="5936561290-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="5936561290-71">(</span><span·class="p"·data-group-id="5936561290-71">)</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·cb4f74bc3f228b74bdd6eeb607392648383f7606dd24941eba6e56ca62421775·...·]-70">}</span><span·class="w">
628 ·····················</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="9060155554-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="9060155554-73">(</span><span·class="p"·data-group-id="9060155554-73">)</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·0705d08a47de7feff627fc410240618a1d55629d2d90994368592372b60c8776·...·]-72">}</span><span·class="w">628 ·····················</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="5936561290-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="5936561290-73">(</span><span·class="p"·data-group-id="5936561290-73">)</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·5e6f64770f060dd41dca0f2c2ccd42124fdaf6de2b4bb7b1de98eb8316cc419e·...·]-72">}</span><span·class="w">
629 ·····················</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="9060155554-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="9060155554-75">(</span><span·class="p"·data-group-id="9060155554-75">)</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·f19b6c78bce8be5b2580ea86e5d852653ed8c13c32dd7d52d19cb73448595cab·...·]-74">}</span><span·class="w">629 ·····················</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="5936561290-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="5936561290-75">(</span><span·class="p"·data-group-id="5936561290-75">)</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·decfc7cffb053d71b550a7a7e799eec1d1c9bc22b6239c25f1ff5290fb0bbb2f·...·]-74">}</span><span·class="w">
630 ·····················</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="9060155554-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="9060155554-77">(</span><span·class="p"·data-group-id="9060155554-77">)</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·102,·SHA:·a7d36a408a82a708d236e2e82bad49c00aea6a6c5351a49cc172aa34462f5f32·...·]-64">]</span><span·class="w">630 ·····················</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="5936561290-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="5936561290-77">(</span><span·class="p"·data-group-id="5936561290-77">)</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·102,·SHA:·f624dfb9bcfb948d5615ba84bbc307470bfd126fe7bcbc9b5a9c28d695036081·...·]-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="9060155554-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="9060155554-78">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·472,·SHA:·1ae3eae40317a10d28c27f70e8eeeef331812f3fb38aebe0f188f617d82a5bf0·...·]-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="5936561290-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="5936561290-78">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·472,·SHA:·9c9dd2239730cb79ef0c1dc4c5c89b5c3362f1d6f10960fbf4b2622a521ce82e·...·]-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="0654610827-3">(</span><span·class="nf">dns_header</span><span·class="p"·data-group-id="0654610827-4">(</span><span·class="p"·data-group-id="0654610827-4">)</span><span·class="p"·data-group-id="0654610827-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="1571229906-3">(</span><span·class="nf">dns_header</span><span·class="p"·data-group-id="1571229906-4">(</span><span·class="p"·data-group-id="1571229906-4">)</span><span·class="p"·data-group-id="1571229906-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="0654610827-5">(</span><span·class="nf">dns_query</span><span·class="p"·data-group-id="0654610827-6">(</span><span·class="p"·data-group-id="0654610827-6">)</span><span·class="p"·data-group-id="0654610827-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="1571229906-5">(</span><span·class="nf">dns_query</span><span·class="p"·data-group-id="1571229906-6">(</span><span·class="p"·data-group-id="1571229906-6">)</span><span·class="p"·data-group-id="1571229906-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="0654610827-7">(</span><span·class="nf">dns_rr</span><span·class="p"·data-group-id="0654610827-8">(</span><span·class="p"·data-group-id="0654610827-8">)</span><span·class="p"·data-group-id="0654610827-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="1571229906-7">(</span><span·class="nf">dns_rr</span><span·class="p"·data-group-id="1571229906-8">(</span><span·class="p"·data-group-id="1571229906-8">)</span><span·class="p"·data-group-id="1571229906-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="0654610827-9">(</span><span·class="p">_</span><span·class="p"·data-group-id="0654610827-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="1571229906-9">(</span><span·class="p">_</span><span·class="p"·data-group-id="1571229906-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.38 MB
./usr/share/doc/erlang-doc/html/lib/kernel-10.2.6/doc/html/kernel.epub
8.16 KB
zipinfo {}
    
Offset 1, 55 lines modifiedOffset 1, 55 lines modified
1 Zip·file·size:·784673·bytes,·number·of·entries:·531 Zip·file·size:·784670·bytes,·number·of·entries:·53
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Apr-18·13:57·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Apr-18·15:18·mimetype
3 ?rw-r--r--··6.1·unx····16348·bx·defN·25-Apr-18·13:57·OEBPS/wrap_log_reader.xhtml3 ?rw-r--r--··6.1·unx····16348·bx·defN·25-Apr-18·15:18·OEBPS/wrap_log_reader.xhtml
4 ?rw-r--r--··6.1·unx···119045·bx·defN·25-Apr-18·13:57·OEBPS/trace.xhtml4 ?rw-r--r--··6.1·unx···119045·bx·defN·25-Apr-18·15:18·OEBPS/trace.xhtml
5 ?rw-r--r--··6.1·unx······718·bx·defN·25-Apr-18·13:57·OEBPS/title.xhtml5 ?rw-r--r--··6.1·unx······718·bx·defN·25-Apr-18·15:18·OEBPS/title.xhtml
6 ?rw-r--r--··6.1·unx···118680·bx·defN·25-Apr-18·13:57·OEBPS/socket_usage.xhtml6 ?rw-r--r--··6.1·unx···118680·bx·defN·25-Apr-18·15:18·OEBPS/socket_usage.xhtml
7 ?rw-r--r--··6.1·unx···390414·bx·defN·25-Apr-18·13:57·OEBPS/socket.xhtml7 ?rw-r--r--··6.1·unx···390414·bx·defN·25-Apr-18·15:18·OEBPS/socket.xhtml
8 ?rw-r--r--··6.1·unx····65084·bx·defN·25-Apr-18·13:57·OEBPS/seq_trace.xhtml8 ?rw-r--r--··6.1·unx····65084·bx·defN·25-Apr-18·15:18·OEBPS/seq_trace.xhtml
9 ?rw-r--r--··6.1·unx····65181·bx·defN·25-Apr-18·13:57·OEBPS/rpc.xhtml9 ?rw-r--r--··6.1·unx····65181·bx·defN·25-Apr-18·15:18·OEBPS/rpc.xhtml
10 ?rw-r--r--··6.1·unx····34976·bx·defN·25-Apr-18·13:57·OEBPS/pg.xhtml10 ?rw-r--r--··6.1·unx····34976·bx·defN·25-Apr-18·15:18·OEBPS/pg.xhtml
11 ?rw-r--r--··6.1·unx····55177·bx·defN·25-Apr-18·13:57·OEBPS/os.xhtml11 ?rw-r--r--··6.1·unx····55177·bx·defN·25-Apr-18·15:18·OEBPS/os.xhtml
12 ?rw-r--r--··6.1·unx···408501·bx·defN·25-Apr-18·13:57·OEBPS/notes.xhtml12 ?rw-r--r--··6.1·unx···408501·bx·defN·25-Apr-18·15:18·OEBPS/notes.xhtml
13 ?rw-r--r--··6.1·unx····59183·bx·defN·25-Apr-18·13:57·OEBPS/net_kernel.xhtml13 ?rw-r--r--··6.1·unx····59183·bx·defN·25-Apr-18·15:18·OEBPS/net_kernel.xhtml
14 ?rw-r--r--··6.1·unx····20333·bx·defN·25-Apr-18·13:57·OEBPS/net_adm.xhtml14 ?rw-r--r--··6.1·unx····20333·bx·defN·25-Apr-18·15:18·OEBPS/net_adm.xhtml
15 ?rw-r--r--··6.1·unx····46156·bx·defN·25-Apr-18·13:57·OEBPS/net.xhtml15 ?rw-r--r--··6.1·unx····46156·bx·defN·25-Apr-18·15:18·OEBPS/net.xhtml
16 ?rw-r--r--··6.1·unx·····3820·bx·defN·25-Apr-18·13:57·OEBPS/nav.xhtml16 ?rw-r--r--··6.1·unx·····3820·bx·defN·25-Apr-18·15:18·OEBPS/nav.xhtml
17 ?rw-r--r--··6.1·unx····13441·bx·defN·25-Apr-18·13:57·OEBPS/logger_std_h.xhtml17 ?rw-r--r--··6.1·unx····13441·bx·defN·25-Apr-18·15:18·OEBPS/logger_std_h.xhtml
18 ?rw-r--r--··6.1·unx····19736·bx·defN·25-Apr-18·13:57·OEBPS/logger_handler.xhtml18 ?rw-r--r--··6.1·unx····19736·bx·defN·25-Apr-18·15:18·OEBPS/logger_handler.xhtml
19 ?rw-r--r--··6.1·unx····27987·bx·defN·25-Apr-18·13:57·OEBPS/logger_formatter.xhtml19 ?rw-r--r--··6.1·unx····27987·bx·defN·25-Apr-18·15:18·OEBPS/logger_formatter.xhtml
20 ?rw-r--r--··6.1·unx····19809·bx·defN·25-Apr-18·13:57·OEBPS/logger_filters.xhtml20 ?rw-r--r--··6.1·unx····19809·bx·defN·25-Apr-18·15:18·OEBPS/logger_filters.xhtml
21 ?rw-r--r--··6.1·unx·····9882·bx·defN·25-Apr-18·13:57·OEBPS/logger_disk_log_h.xhtml21 ?rw-r--r--··6.1·unx·····9882·bx·defN·25-Apr-18·15:18·OEBPS/logger_disk_log_h.xhtml
22 ?rw-r--r--··6.1·unx····64470·bx·defN·25-Apr-18·13:57·OEBPS/logger_cookbook.xhtml22 ?rw-r--r--··6.1·unx····64470·bx·defN·25-Apr-18·15:18·OEBPS/logger_cookbook.xhtml
23 ?rw-r--r--··6.1·unx···102807·bx·defN·25-Apr-18·13:57·OEBPS/logger_chapter.xhtml23 ?rw-r--r--··6.1·unx···102807·bx·defN·25-Apr-18·15:18·OEBPS/logger_chapter.xhtml
24 ?rw-r--r--··6.1·unx···181761·bx·defN·25-Apr-18·13:57·OEBPS/logger.xhtml24 ?rw-r--r--··6.1·unx···181761·bx·defN·25-Apr-18·15:18·OEBPS/logger.xhtml
25 ?rw-r--r--··6.1·unx····36693·bx·defN·25-Apr-18·13:57·OEBPS/kernel_app.xhtml25 ?rw-r--r--··6.1·unx····36693·bx·defN·25-Apr-18·15:18·OEBPS/kernel_app.xhtml
26 ?rw-r--r--··6.1·unx·····1676·bx·defN·25-Apr-18·13:57·OEBPS/introduction_chapter.xhtml26 ?rw-r--r--··6.1·unx·····1676·bx·defN·25-Apr-18·15:18·OEBPS/introduction_chapter.xhtml
27 ?rw-r--r--··6.1·unx····80809·bx·defN·25-Apr-18·13:57·OEBPS/inet_res.xhtml27 ?rw-r--r--··6.1·unx····80809·bx·defN·25-Apr-18·15:18·OEBPS/inet_res.xhtml
28 ?rw-r--r--··6.1·unx···178170·bx·defN·25-Apr-18·13:57·OEBPS/inet.xhtml28 ?rw-r--r--··6.1·unx···178170·bx·defN·25-Apr-18·15:18·OEBPS/inet.xhtml
29 ?rw-r--r--··6.1·unx····19076·bx·defN·25-Apr-18·13:57·OEBPS/heart.xhtml29 ?rw-r--r--··6.1·unx····19076·bx·defN·25-Apr-18·15:18·OEBPS/heart.xhtml
30 ?rw-r--r--··6.1·unx····31324·bx·defN·25-Apr-18·13:57·OEBPS/global_group.xhtml30 ?rw-r--r--··6.1·unx····31324·bx·defN·25-Apr-18·15:18·OEBPS/global_group.xhtml
31 ?rw-r--r--··6.1·unx····51294·bx·defN·25-Apr-18·13:57·OEBPS/global.xhtml31 ?rw-r--r--··6.1·unx····51294·bx·defN·25-Apr-18·15:18·OEBPS/global.xhtml
32 ?rw-r--r--··6.1·unx····54264·bx·defN·25-Apr-18·13:57·OEBPS/gen_udp.xhtml32 ?rw-r--r--··6.1·unx····54264·bx·defN·25-Apr-18·15:18·OEBPS/gen_udp.xhtml
33 ?rw-r--r--··6.1·unx····90671·bx·defN·25-Apr-18·13:57·OEBPS/gen_tcp.xhtml33 ?rw-r--r--··6.1·unx····90671·bx·defN·25-Apr-18·15:18·OEBPS/gen_tcp.xhtml
34 ?rw-r--r--··6.1·unx···196481·bx·defN·25-Apr-18·13:57·OEBPS/gen_sctp.xhtml34 ?rw-r--r--··6.1·unx···196481·bx·defN·25-Apr-18·15:18·OEBPS/gen_sctp.xhtml
35 ?rw-r--r--··6.1·unx···221922·bx·defN·25-Apr-18·13:57·OEBPS/file.xhtml35 ?rw-r--r--··6.1·unx···221922·bx·defN·25-Apr-18·15:18·OEBPS/file.xhtml
36 ?rw-r--r--··6.1·unx····51547·bx·defN·25-Apr-18·13:57·OEBPS/error_logger.xhtml36 ?rw-r--r--··6.1·unx····51547·bx·defN·25-Apr-18·15:18·OEBPS/error_logger.xhtml
37 ?rw-r--r--··6.1·unx·····9371·bx·defN·25-Apr-18·13:57·OEBPS/error_handler.xhtml37 ?rw-r--r--··6.1·unx·····9371·bx·defN·25-Apr-18·15:18·OEBPS/error_handler.xhtml
38 ?rw-r--r--··6.1·unx···105244·bx·defN·25-Apr-18·13:57·OEBPS/erpc.xhtml38 ?rw-r--r--··6.1·unx···105244·bx·defN·25-Apr-18·15:18·OEBPS/erpc.xhtml
39 ?rw-r--r--··6.1·unx····19311·bx·defN·25-Apr-18·13:57·OEBPS/erl_epmd.xhtml39 ?rw-r--r--··6.1·unx····19311·bx·defN·25-Apr-18·15:18·OEBPS/erl_epmd.xhtml
40 ?rw-r--r--··6.1·unx····79832·bx·defN·25-Apr-18·13:57·OEBPS/erl_ddll.xhtml40 ?rw-r--r--··6.1·unx····79832·bx·defN·25-Apr-18·15:18·OEBPS/erl_ddll.xhtml
41 ?rw-r--r--··6.1·unx····10114·bx·defN·25-Apr-18·13:57·OEBPS/erl_boot_server.xhtml41 ?rw-r--r--··6.1·unx····10114·bx·defN·25-Apr-18·15:18·OEBPS/erl_boot_server.xhtml
42 ?rw-r--r--··6.1·unx····14988·bx·defN·25-Apr-18·13:57·OEBPS/eep48_chapter.xhtml42 ?rw-r--r--··6.1·unx····14988·bx·defN·25-Apr-18·15:18·OEBPS/eep48_chapter.xhtml
43 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Apr-18·13:57·OEBPS/dist/epub-erlang-ESPT6BQV.css43 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Apr-18·15:18·OEBPS/dist/epub-erlang-ESPT6BQV.css
44 ?rw-r--r--··6.1·unx······499·bx·defN·25-Apr-18·13:57·OEBPS/dist/epub-LSJCIYTM.js44 ?rw-r--r--··6.1·unx······499·bx·defN·25-Apr-18·15:18·OEBPS/dist/epub-LSJCIYTM.js
45 ?rw-r--r--··6.1·unx···129923·bx·defN·25-Apr-18·13:57·OEBPS/disk_log.xhtml45 ?rw-r--r--··6.1·unx···129923·bx·defN·25-Apr-18·15:18·OEBPS/disk_log.xhtml
46 ?rw-r--r--··6.1·unx·····7455·bx·defN·25-Apr-18·13:57·OEBPS/content.opf46 ?rw-r--r--··6.1·unx·····7455·bx·defN·25-Apr-18·15:18·OEBPS/content.opf
47 ?rw-r--r--··6.1·unx····10083·bx·defN·25-Apr-18·13:57·OEBPS/config.xhtml47 ?rw-r--r--··6.1·unx····10083·bx·defN·25-Apr-18·15:18·OEBPS/config.xhtml
48 ?rw-r--r--··6.1·unx···152547·bx·defN·25-Apr-18·13:57·OEBPS/code.xhtml48 ?rw-r--r--··6.1·unx···152547·bx·defN·25-Apr-18·15:18·OEBPS/code.xhtml
49 ?rw-r--r--··6.1·unx····11265·bx·defN·25-Apr-18·13:57·OEBPS/auth.xhtml49 ?rw-r--r--··6.1·unx····11265·bx·defN·25-Apr-18·15:18·OEBPS/auth.xhtml
50 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Apr-18·13:57·OEBPS/assets/logo.png50 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Apr-18·15:18·OEBPS/assets/logo.png
51 ?rw-r--r--··6.1·unx····97843·bx·defN·25-Apr-18·13:57·OEBPS/application.xhtml51 ?rw-r--r--··6.1·unx····97843·bx·defN·25-Apr-18·15:18·OEBPS/application.xhtml
52 ?rw-r--r--··6.1·unx····20113·bx·defN·25-Apr-18·13:57·OEBPS/app.xhtml52 ?rw-r--r--··6.1·unx····20113·bx·defN·25-Apr-18·15:18·OEBPS/app.xhtml
53 ?rw-r--r--··6.1·unx······252·bx·defN·25-Apr-18·13:57·META-INF/container.xml53 ?rw-r--r--··6.1·unx······252·bx·defN·25-Apr-18·15:18·META-INF/container.xml
54 ?rw-r--r--··6.1·unx······162·bx·defN·25-Apr-18·13:57·META-INF/com.apple.ibooks.display-options.xml54 ?rw-r--r--··6.1·unx······162·bx·defN·25-Apr-18·15:18·META-INF/com.apple.ibooks.display-options.xml
55 53·files,·3546857·bytes·uncompressed,·775623·bytes·compressed:··78.2%55 53·files,·3546857·bytes·uncompressed,·775620·bytes·compressed:··78.2%
308 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,·Apr·18·2025·13:57:50,·uncompressed·size·20,·method=store1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Apr·18·2025·15:18:52,·uncompressed·size·20,·method=store
40.8 KB
OEBPS/trace.xhtml
Max HTML report size reached
179 KB
OEBPS/socket_usage.xhtml
Max HTML report size reached
41.3 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="9701846999-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="9701846999-1">}</samp><samp·[·...·truncated·by·diffoscope;·len:·277,·SHA:·4545fe28edc5f17582c6b40a2bdf78743e1e534cec3db3c82cc3b1f7a0cf8fc5·...·]-2">)</samp><samp·class="p">,</samp><samp·class="w">929 </samp><samp·class="p"·data-group-id="5307610783-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="5307610783-1">}</samp><samp·[·...·truncated·by·diffoscope;·len:·277,·SHA:·c13a7d42bc86ff95ba201f638cd1001d96ea8f736ef736d9b83e82c8d54fa7f3·...·]-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="9701846999-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="9701846999-3">}</samp><samp·class="w">·</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·clas[·...·truncated·by·diffoscope;·len:·608,·SHA:·b4c1ce1cf16dddddc06968818a1859bbab5d1534a3ae2168f0558c4beb634f78·...·]-4">)</samp><samp·class="p">,</samp><samp·class="w">931 </samp><samp·class="p"·data-group-id="5307610783-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="5307610783-3">}</samp><samp·class="w">·</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·clas[·...·truncated·by·diffoscope;·len:·608,·SHA:·ab8b115a18ed93f45d95fdfa6d63dfe8e9a171961cdb76d5a858702ec9199ee3·...·]-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="4653814752-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:·588e28ab9023d2415a888640def075a1c77badc7f6053680c382ae57e1a57f1e·...·]-1">}</samp></code></pre>719 subscriber:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="p"·data-group-id="5291223938-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:·9803e84255b38f2c088f0f11413657bbabf62832b5422b7113ae07daaf3f81e2·...·]-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.29 KB
OEBPS/notes.xhtml
    
Offset 23309, 77 lines modifiedOffset 23309, 77 lines modified
0005b0c0:·203c·2f73·7061·6e3e·3c73·7061·6e20·636c···</span><span·cl0005b0c0:·203c·2f73·7061·6e3e·3c73·7061·6e20·636c···</span><span·cl
0005b0d0:·6173·733d·226e·6322·3e65·726c·616e·673c··ass="nc">erlang<0005b0d0:·6173·733d·226e·6322·3e65·726c·616e·673c··ass="nc">erlang<
0005b0e0:·2f73·7061·6e3e·3c73·7061·6e20·636c·6173··/span><span·clas0005b0e0:·2f73·7061·6e3e·3c73·7061·6e20·636c·6173··/span><span·clas
0005b0f0:·733d·2270·223e·3a3c·2f73·7061·6e3e·3c73··s="p">:</span><s0005b0f0:·733d·2270·223e·3a3c·2f73·7061·6e3e·3c73··s="p">:</span><s
0005b100:·7061·6e20·636c·6173·733d·226e·6622·3e6d··pan·class="nf">m0005b100:·7061·6e20·636c·6173·733d·226e·6622·3e6d··pan·class="nf">m
0005b110:·6f6e·6974·6f72·3c2f·7370·616e·3e3c·7370··onitor</span><sp0005b110:·6f6e·6974·6f72·3c2f·7370·616e·3e3c·7370··onitor</span><sp
0005b120:·616e·2063·6c61·7373·3d22·7022·2064·6174··an·class="p"·dat0005b120:·616e·2063·6c61·7373·3d22·7022·2064·6174··an·class="p"·dat
0005b130:·612d·6772·6f75·702d·6964·3d22·3235·3038··a-group-id="25080005b130:·612d·6772·6f75·702d·6964·3d22·3637·3839··a-group-id="6789
0005b140:·3832·3437·3930·2d31·223e·283c·2f73·7061··824790-1">(</spa0005b140:·3135·3233·3638·2d31·223e·283c·2f73·7061··152368-1">(</spa
0005b150:·6e3e·3c73·7061·6e20·636c·6173·733d·2273··n><span·class="s0005b150:·6e3e·3c73·7061·6e20·636c·6173·733d·2273··n><span·class="s
0005b160:·7322·3e70·726f·6365·7373·3c2f·7370·616e··s">process</span0005b160:·7322·3e70·726f·6365·7373·3c2f·7370·616e··s">process</span
0005b170:·3e3c·7370·616e·2063·6c61·7373·3d22·7022··><span·class="p"0005b170:·3e3c·7370·616e·2063·6c61·7373·3d22·7022··><span·class="p"
0005b180:·3e2c·3c2f·7370·616e·3e3c·7370·616e·2063··>,</span><span·c0005b180:·3e2c·3c2f·7370·616e·3e3c·7370·616e·2063··>,</span><span·c
0005b190:·6c61·7373·3d22·7722·3e20·3c2f·7370·616e··lass="w">·</span0005b190:·6c61·7373·3d22·7722·3e20·3c2f·7370·616e··lass="w">·</span
0005b1a0:·3e3c·7370·616e·2063·6c61·7373·3d22·6e22··><span·class="n"0005b1a0:·3e3c·7370·616e·2063·6c61·7373·3d22·6e22··><span·class="n"
0005b1b0:·3e50·6964·3c2f·7370·616e·3e3c·7370·616e··>Pid</span><span0005b1b0:·3e50·6964·3c2f·7370·616e·3e3c·7370·616e··>Pid</span><span
0005b1c0:·2063·6c61·7373·3d22·7022·2064·6174·612d···class="p"·data-0005b1c0:·2063·6c61·7373·3d22·7022·2064·6174·612d···class="p"·data-
0005b1d0:·6772·6f75·702d·6964·3d22·3235·3038·3832··group-id="2508820005b1d0:·6772·6f75·702d·6964·3d22·3637·3839·3135··group-id="678915
0005b1e0:·3437·3930·2d31·223e·293c·2f73·7061·6e3e··4790-1">)</span>0005b1e0:·3233·3638·2d31·223e·293c·2f73·7061·6e3e··2368-1">)</span>
0005b1f0:·3c73·7061·6e20·636c·6173·733d·2270·223e··<span·class="p">0005b1f0:·3c73·7061·6e20·636c·6173·733d·2270·223e··<span·class="p">
0005b200:·2c3c·2f73·7061·6e3e·3c73·7061·6e20·636c··,</span><span·cl0005b200:·2c3c·2f73·7061·6e3e·3c73·7061·6e20·636c··,</span><span·cl
0005b210:·6173·733d·2277·223e·0a20·2020·2020·2020··ass="w">.·······0005b210:·6173·733d·2277·223e·0a20·2020·2020·2020··ass="w">.·······
0005b220:·2020·2020·203c·2f73·7061·6e3e·3c73·7061·······</span><spa0005b220:·2020·2020·203c·2f73·7061·6e3e·3c73·7061·······</span><spa
0005b230:·6e20·636c·6173·733d·2263·3122·3e25·2520··n·class="c1">%%·0005b230:·6e20·636c·6173·733d·2263·3122·3e25·2520··n·class="c1">%%·
0005b240:·2e2e·2e3c·2f73·7061·6e3e·3c73·7061·6e20··...</span><span·0005b240:·2e2e·2e3c·2f73·7061·6e3e·3c73·7061·6e20··...</span><span·
0005b250:·636c·6173·733d·2277·223e·0a20·2020·2020··class="w">.·····0005b250:·636c·6173·733d·2277·223e·0a20·2020·2020··class="w">.·····
0005b260:·2020·2020·2020·203c·2f73·7061·6e3e·3c73·········</span><s0005b260:·2020·2020·2020·203c·2f73·7061·6e3e·3c73·········</span><s
0005b270:·7061·6e20·636c·6173·733d·226e·6622·3e65··pan·class="nf">e0005b270:·7061·6e20·636c·6173·733d·226e·6622·3e65··pan·class="nf">e
0005b280:·7869·743c·2f73·7061·6e3e·3c73·7061·6e20··xit</span><span·0005b280:·7869·743c·2f73·7061·6e3e·3c73·7061·6e20··xit</span><span·
0005b290:·636c·6173·733d·2270·2220·6461·7461·2d67··class="p"·data-g0005b290:·636c·6173·733d·2270·2220·6461·7461·2d67··class="p"·data-g
0005b2a0:·726f·7570·2d69·643d·2232·3530·3838·3234··roup-id="25088240005b2a0:·726f·7570·2d69·643d·2236·3738·3931·3532··roup-id="6789152
0005b2b0:·3739·302d·3222·3e28·3c2f·7370·616e·3e3c··790-2">(</span><0005b2b0:·3336·382d·3222·3e28·3c2f·7370·616e·3e3c··368-2">(</span><
0005b2c0:·7370·616e·2063·6c61·7373·3d22·6e22·3e50··span·class="n">P0005b2c0:·7370·616e·2063·6c61·7373·3d22·6e22·3e50··span·class="n">P
0005b2d0:·6964·3c2f·7370·616e·3e3c·7370·616e·2063··id</span><span·c0005b2d0:·6964·3c2f·7370·616e·3e3c·7370·616e·2063··id</span><span·c
0005b2e0:·6c61·7373·3d22·7022·3e2c·3c2f·7370·616e··lass="p">,</span0005b2e0:·6c61·7373·3d22·7022·3e2c·3c2f·7370·616e··lass="p">,</span
0005b2f0:·3e3c·7370·616e·2063·6c61·7373·3d22·7722··><span·class="w"0005b2f0:·3e3c·7370·616e·2063·6c61·7373·3d22·7722··><span·class="w"
0005b300:·3e20·3c2f·7370·616e·3e3c·7370·616e·2063··>·</span><span·c0005b300:·3e20·3c2f·7370·616e·3e3c·7370·616e·2063··>·</span><span·c
0005b310:·6c61·7373·3d22·7373·223e·6261·6e67·3c2f··lass="ss">bang</0005b310:·6c61·7373·3d22·7373·223e·6261·6e67·3c2f··lass="ss">bang</
0005b320:·7370·616e·3e3c·7370·616e·2063·6c61·7373··span><span·class0005b320:·7370·616e·3e3c·7370·616e·2063·6c61·7373··span><span·class
0005b330:·3d22·7022·2064·6174·612d·6772·6f75·702d··="p"·data-group-0005b330:·3d22·7022·2064·6174·612d·6772·6f75·702d··="p"·data-group-
0005b340:·6964·3d22·3235·3038·3832·3437·3930·2d32··id="2508824790-20005b340:·6964·3d22·3637·3839·3135·3233·3638·2d32··id="6789152368-2
0005b350:·223e·293c·2f73·7061·6e3e·3c73·7061·6e20··">)</span><span·0005b350:·223e·293c·2f73·7061·6e3e·3c73·7061·6e20··">)</span><span·
0005b360:·636c·6173·733d·2270·223e·2c3c·2f73·7061··class="p">,</spa0005b360:·636c·6173·733d·2270·223e·2c3c·2f73·7061··class="p">,</spa
0005b370:·6e3e·3c73·7061·6e20·636c·6173·733d·2277··n><span·class="w0005b370:·6e3e·3c73·7061·6e20·636c·6173·733d·2277··n><span·class="w
0005b380:·223e·0a20·2020·2020·2020·2020·2020·203c··">.············<0005b380:·223e·0a20·2020·2020·2020·2020·2020·203c··">.············<
0005b390:·2f73·7061·6e3e·3c73·7061·6e20·636c·6173··/span><span·clas0005b390:·2f73·7061·6e3e·3c73·7061·6e20·636c·6173··/span><span·clas
0005b3a0:·733d·226e·6322·3e65·726c·616e·673c·2f73··s="nc">erlang</s0005b3a0:·733d·226e·6322·3e65·726c·616e·673c·2f73··s="nc">erlang</s
0005b3b0:·7061·6e3e·3c73·7061·6e20·636c·6173·733d··pan><span·class=0005b3b0:·7061·6e3e·3c73·7061·6e20·636c·6173·733d··pan><span·class=
0005b3c0:·2270·223e·3a3c·2f73·7061·6e3e·3c73·7061··"p">:</span><spa0005b3c0:·2270·223e·3a3c·2f73·7061·6e3e·3c73·7061··"p">:</span><spa
0005b3d0:·6e20·636c·6173·733d·226e·6622·3e64·656d··n·class="nf">dem0005b3d0:·6e20·636c·6173·733d·226e·6622·3e64·656d··n·class="nf">dem
0005b3e0:·6f6e·6974·6f72·3c2f·7370·616e·3e3c·7370··onitor</span><sp0005b3e0:·6f6e·6974·6f72·3c2f·7370·616e·3e3c·7370··onitor</span><sp
0005b3f0:·616e·2063·6c61·7373·3d22·7022·2064·6174··an·class="p"·dat0005b3f0:·616e·2063·6c61·7373·3d22·7022·2064·6174··an·class="p"·dat
0005b400:·612d·6772·6f75·702d·6964·3d22·3235·3038··a-group-id="25080005b400:·612d·6772·6f75·702d·6964·3d22·3637·3839··a-group-id="6789
0005b410:·3832·3437·3930·2d33·223e·283c·2f73·7061··824790-3">(</spa0005b410:·3135·3233·3638·2d33·223e·283c·2f73·7061··152368-3">(</spa
0005b420:·6e3e·3c73·7061·6e20·636c·6173·733d·226e··n><span·class="n0005b420:·6e3e·3c73·7061·6e20·636c·6173·733d·226e··n><span·class="n
0005b430:·223e·4d6f·6e3c·2f73·7061·6e3e·3c73·7061··">Mon</span><spa0005b430:·223e·4d6f·6e3c·2f73·7061·6e3e·3c73·7061··">Mon</span><spa
0005b440:·6e20·636c·6173·733d·2270·2220·6461·7461··n·class="p"·data0005b440:·6e20·636c·6173·733d·2270·2220·6461·7461··n·class="p"·data
0005b450:·2d67·726f·7570·2d69·643d·2232·3530·3838··-group-id="250880005b450:·2d67·726f·7570·2d69·643d·2236·3738·3931··-group-id="67891
0005b460:·3234·3739·302d·3322·3e29·3c2f·7370·616e··24790-3">)</span0005b460:·3532·3336·382d·3322·3e29·3c2f·7370·616e··52368-3">)</span
0005b470:·3e3c·7370·616e·2063·6c61·7373·3d22·7022··><span·class="p"0005b470:·3e3c·7370·616e·2063·6c61·7373·3d22·7022··><span·class="p"
0005b480:·3e2c·3c2f·7370·616e·3e3c·7370·616e·2063··>,</span><span·c0005b480:·3e2c·3c2f·7370·616e·3e3c·7370·616e·2063··>,</span><span·c
0005b490:·6c61·7373·3d22·7722·3e0a·2020·2020·2020··lass="w">.······0005b490:·6c61·7373·3d22·7722·3e0a·2020·2020·2020··lass="w">.······
0005b4a0:·2020·2020·2020·3c2f·7370·616e·3e3c·7370········</span><sp0005b4a0:·2020·2020·2020·3c2f·7370·616e·3e3c·7370········</span><sp
0005b4b0:·616e·2063·6c61·7373·3d22·6b22·3e72·6563··an·class="k">rec0005b4b0:·616e·2063·6c61·7373·3d22·6b22·3e72·6563··an·class="k">rec
0005b4c0:·6569·7665·3c2f·7370·616e·3e3c·7370·616e··eive</span><span0005b4c0:·6569·7665·3c2f·7370·616e·3e3c·7370·616e··eive</span><span
0005b4d0:·2063·6c61·7373·3d22·7722·3e0a·2020·2020···class="w">.····0005b4d0:·2063·6c61·7373·3d22·7722·3e0a·2020·2020···class="w">.····
0005b4e0:·2020·2020·2020·2020·2020·2020·3c2f·7370··············</sp0005b4e0:·2020·2020·2020·2020·2020·2020·3c2f·7370··············</sp
0005b4f0:·616e·3e3c·7370·616e·2063·6c61·7373·3d22··an><span·class="0005b4f0:·616e·3e3c·7370·616e·2063·6c61·7373·3d22··an><span·class="
0005b500:·7022·2064·6174·612d·6772·6f75·702d·6964··p"·data-group-id0005b500:·7022·2064·6174·612d·6772·6f75·702d·6964··p"·data-group-id
0005b510:·3d22·3235·3038·3832·3437·3930·2d34·223e··="2508824790-4">0005b510:·3d22·3637·3839·3135·3233·3638·2d34·223e··="6789152368-4">
0005b520:·7b3c·2f73·7061·6e3e·3c73·7061·6e20·636c··{</span><span·cl0005b520:·7b3c·2f73·7061·6e3e·3c73·7061·6e20·636c··{</span><span·cl
0005b530:·6173·733d·2273·7322·3e26·2333·393b·444f··ass="ss">&#39;DO0005b530:·6173·733d·2273·7322·3e26·2333·393b·444f··ass="ss">&#39;DO
0005b540:·574e·2623·3339·3b3c·2f73·7061·6e3e·3c73··WN&#39;</span><s0005b540:·574e·2623·3339·3b3c·2f73·7061·6e3e·3c73··WN&#39;</span><s
0005b550:·7061·6e20·636c·6173·733d·2270·223e·2c3c··pan·class="p">,<0005b550:·7061·6e20·636c·6173·733d·2270·223e·2c3c··pan·class="p">,<
0005b560:·2f73·7061·6e3e·3c73·7061·6e20·636c·6173··/span><span·clas0005b560:·2f73·7061·6e3e·3c73·7061·6e20·636c·6173··/span><span·clas
0005b570:·733d·2277·223e·203c·2f73·7061·6e3e·3c73··s="w">·</span><s0005b570:·733d·2277·223e·203c·2f73·7061·6e3e·3c73··s="w">·</span><s
0005b580:·7061·6e20·636c·6173·733d·226e·223e·4d6f··pan·class="n">Mo0005b580:·7061·6e20·636c·6173·733d·226e·223e·4d6f··pan·class="n">Mo
Offset 23395, 16 lines modifiedOffset 23395, 16 lines modified
0005b620:·7373·3d22·6e22·3e50·6964·3c2f·7370·616e··ss="n">Pid</span0005b620:·7373·3d22·6e22·3e50·6964·3c2f·7370·616e··ss="n">Pid</span
0005b630:·3e3c·7370·616e·2063·6c61·7373·3d22·7022··><span·class="p"0005b630:·3e3c·7370·616e·2063·6c61·7373·3d22·7022··><span·class="p"
0005b640:·3e2c·3c2f·7370·616e·3e3c·7370·616e·2063··>,</span><span·c0005b640:·3e2c·3c2f·7370·616e·3e3c·7370·616e·2063··>,</span><span·c
0005b650:·6c61·7373·3d22·7722·3e20·3c2f·7370·616e··lass="w">·</span0005b650:·6c61·7373·3d22·7722·3e20·3c2f·7370·616e··lass="w">·</span
0005b660:·3e3c·7370·616e·2063·6c61·7373·3d22·7022··><span·class="p"0005b660:·3e3c·7370·616e·2063·6c61·7373·3d22·7022··><span·class="p"
0005b670:·3e5f·3c2f·7370·616e·3e3c·7370·616e·2063··>_</span><span·c0005b670:·3e5f·3c2f·7370·616e·3e3c·7370·616e·2063··>_</span><span·c
0005b680:·6c61·7373·3d22·7022·2064·6174·612d·6772··lass="p"·data-gr0005b680:·6c61·7373·3d22·7022·2064·6174·612d·6772··lass="p"·data-gr
0005b690:·6f75·702d·6964·3d22·3235·3038·3832·3437··oup-id="250882470005b690:·6f75·702d·6964·3d22·3637·3839·3135·3233··oup-id="67891523
0005b6a0:·3930·2d34·223e·7d3c·2f73·7061·6e3e·3c73··90-4">}</span><s0005b6a0:·3638·2d34·223e·7d3c·2f73·7061·6e3e·3c73··68-4">}</span><s
0005b6b0:·7061·6e20·636c·6173·733d·2277·223e·203c··pan·class="w">·<0005b6b0:·7061·6e20·636c·6173·733d·2277·223e·203c··pan·class="w">·<
0005b6c0:·2f73·7061·6e3e·3c73·7061·6e20·636c·6173··/span><span·clas0005b6c0:·2f73·7061·6e3e·3c73·7061·6e20·636c·6173··/span><span·clas
0005b6d0:·733d·2270·223e·2d26·6774·3b3c·2f73·7061··s="p">-&gt;</spa0005b6d0:·733d·2270·223e·2d26·6774·3b3c·2f73·7061··s="p">-&gt;</spa
0005b6e0:·6e3e·3c73·7061·6e20·636c·6173·733d·2277··n><span·class="w0005b6e0:·6e3e·3c73·7061·6e20·636c·6173·733d·2277··n><span·class="w
0005b6f0:·223e·203c·2f73·7061·6e3e·3c73·7061·6e20··">·</span><span·0005b6f0:·223e·203c·2f73·7061·6e3e·3c73·7061·6e20··">·</span><span·
0005b700:·636c·6173·733d·2273·7322·3e6f·6b3c·2f73··class="ss">ok</s0005b700:·636c·6173·733d·2273·7322·3e6f·6b3c·2f73··class="ss">ok</s
0005b710:·7061·6e3e·3c73·7061·6e20·636c·6173·733d··pan><span·class=0005b710:·7061·6e3e·3c73·7061·6e20·636c·6173·733d··pan><span·class=
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="7726019835-1">(</samp><samp·class="p"·data-group-id="7726019835-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="0335246630-1">(</samp><samp·class="p"·data-group-id="0335246630-1">)</samp><samp·class="p">.</samp><samp·class="w">
360 </samp><samp·class="p"·data-group-id="7726019835-2">{</samp><samp·class="ss">ok</samp><samp·class="p">,</samp><samp·class="p"·data-group-id="7726019835-3">[</samp><samp·class="p"·data-group-id="7726019835-4">{</samp><samp·class="s">&quot;arne&quot;</samp><samp·class="p">,</samp><samp·class="mi[·...·truncated·by·diffoscope;·len:·161,·SHA:·4ca5f25f370e5558cf31ff877083df1fd390d7dca433bcdb19772b697c2db8b8·...·]-2">}</samp></code></pre>360 </samp><samp·class="p"·data-group-id="0335246630-2">{</samp><samp·class="ss">ok</samp><samp·class="p">,</samp><samp·class="p"·data-group-id="0335246630-3">[</samp><samp·class="p"·data-group-id="0335246630-4">{</samp><samp·class="s">&quot;arne&quot;</samp><samp·class="p">,</samp><samp·class="mi[·...·truncated·by·diffoscope;·len:·161,·SHA:·b3d6058c386a5cb8abcce11360b0b996b41eca74c9d11fde4cf965aa43185557·...·]-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="3637133154-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="5667828142-1">(</samp><samp·class="w">
442 ····</samp><samp·class="nf">fun</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="3637133154-2">(</samp><samp·class="p"·data-group-id="3637133154-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="3637133154-4">#{</samp>[·...·truncated·by·diffoscope;·len:·172,·SHA:·801fa82328ab5e418e4543adf936ebc7872d3608f95788f1d5c10cb8996055ca·...·]-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="5667828142-2">(</samp><samp·class="p"·data-group-id="5667828142-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="5667828142-4">#{</samp>[·...·truncated·by·diffoscope;·len:·172,·SHA:·eb908b5a33766ea401b55e60192e57aedd09a9545685be139e34a2ccb90ac685·...·]-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="3637133154-3">}</samp><samp·class="p"·data-group-id="3637133154-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="5667828142-3">}</samp><samp·class="p"·data-group-id="5667828142-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="3637133154-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="3637133154-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="5667828142-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="5667828142-5">)</samp><samp·class="p">;</samp><samp·class="w">
445 ········</samp><samp·class="p"·data-group-id="3637133154-6">(</samp><samp·class="p">_</samp><samp·class="p"·data-group-id="3637133154-6">)</samp><samp·class="w">·</samp><samp·class="p">-&gt;</samp><samp·class="w">445 ········</samp><samp·class="p"·data-group-id="5667828142-6">(</samp><samp·class="p">_</samp><samp·class="p"·data-group-id="5667828142-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="3637133154-1">)</samp><samp·class="p">.</samp></code></pre>447 ····</samp><samp·class="k">end</samp><samp·class="p"·data-group-id="5667828142-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="0489180172-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="9685479699-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="0489180172-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="0489180172-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="9685479699-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="9685479699-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="0489180172-3">}</samp><samp·class="p"·data-group-id="0489180172-2">}</samp><samp·class="p"·data-group-id="0489180172-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="9685479699-3">}</samp><samp·class="p"·data-group-id="9685479699-2">}</samp><samp·class="p"·data-group-id="9685479699-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="9646754626-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="7421133582-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="9646754626-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="9646754626-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="7421133582-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="7421133582-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="9646754626-3">}</samp><samp·class="p"·data-group-id="9646754626-2">}</samp><samp·class="p"·data-group-id="9646754626-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="7421133582-3">}</samp><samp·class="p"·data-group-id="7421133582-2">}</samp><samp·class="p"·data-group-id="7421133582-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="2022526730-1">{</samp><samp·class="ss">global_groups</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="2022526730-2">[</samp><samp·class="n">GroupTuple</samp><samp·class="w">·</samp><samp·class="p">:</samp><samp·class="p"[·...·truncated·by·diffoscope;·len:·268,·SHA:·e00f3430395d9391d8550e0802f1accf86536c1fa8f3c8fb9b71b21dce8bb4a2·...·]-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="4705374962-1">{</samp><samp·class="ss">global_groups</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="4705374962-2">[</samp><samp·class="n">GroupTuple</samp><samp·class="w">·</samp><samp·class="p">:</samp><samp·class="p"[·...·truncated·by·diffoscope;·len:·268,·SHA:·098c796a096b50830b5d2059cfc937172e827398091a1e8034c44c22187bb855·...·]-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="4214332041-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:·861eabfc9a3b5e223f6e186a91fbf62866f3863f01982ddee576425511604590·...·]-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="5511778305-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:·f521121d628b4a0b9a4b114f060b8b8b8c1b19728d2c12c4db9e9448ab418df8·...·]-1">}</samp><samp·class="w">·</samp><samp·class="c1">%·Without·ancillary·data</samp><samp·class="w">
811 </samp><samp·class="p"·data-group-id="4214332041-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:·497f3f92d79540efa8cf7cd6b9c3359546615f5cf43de847cf7f1588cbe73e76·...·]-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="5511778305-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:·3a728824f2b9cb9d85617ef4eff32f1ddb3c53128704dfe39df6e3392413cf20·...·]-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="4177513367-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="4177513367-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="2805604510-1">{</samp><samp·class="ss">udp_error</samp><samp·class="p">,</samp><samp·class="err"> </samp><samp·class="n">Socket</s[·...·truncated·by·diffoscope;·len:·355,·SHA:·50a2bf5346af45620c52b81cb8ad3b994f3d8eb7b3fe58152da1f7fd97db5c39·...·]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="8195422285-1">{</samp><samp·class="ss">udp_passive</samp><samp·class="p">,</samp><samp·class="err"> </samp><sam[·...·truncated·by·diffoscope;·len:·165,·SHA:·885e997c54ccf29a800b77dbe54e105c0c2c4120685c3830c8bc7ff2e6e472b0·...·]
 820 message·is·sent·to·the·controlling·process:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="p"·data-group-id="0937986674-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="0937986674-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="2221073769-1">(</samp><samp·class="ss">localhost</samp><samp·class="p"·data-group-id="2221073769-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="5299449578-1">(</samp><samp·class="ss">localhost</samp><samp·class="p"·data-group-id="5299449578-1">)</samp><samp·class="p">.</samp><samp·class="w">
241 </samp><samp·class="p"·data-group-id="2221073769-2">{</samp><samp·class="ss">ok</samp><samp·class="p">,</samp><samp·class="p"·data-group-id="2221073769-3">[</samp><samp·class="p"·data-group-id="2221073769-4">{</samp><samp·class="s">&quot;arne&quot;</samp><samp·class="p">,</samp><samp·class="mi[·...·truncated·by·diffoscope;·len:·161,·SHA:·dc37c34d0c16eeb9f11c644026ed0059e735024afcd98b430693838771357c63·...·]-2">}</samp></code></pre>241 </samp><samp·class="p"·data-group-id="5299449578-2">{</samp><samp·class="ss">ok</samp><samp·class="p">,</samp><samp·class="p"·data-group-id="5299449578-3">[</samp><samp·class="p"·data-group-id="5299449578-4">{</samp><samp·class="s">&quot;arne&quot;</samp><samp·class="p">,</samp><samp·class="mi[·...·truncated·by·diffoscope;·len:·161,·SHA:·daf8339a13fbd9f9d10b7a5b2852dcdaf150c590576d01b4de738e0deed5864e·...·]-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="7734549972-1">[</span><span·class="p"·data-group-id="7734549972-2">{</span><span·class="n">Application1</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7734549972-3">[</span><span·class="p"·data-group-id="7734549972-4">[·...·truncated·by·diffoscope;·len:·379,·SHA:·f4c87ce1f0c22071a4652fa41e6fbf722d983b962ed1e92ba30084ab88965cdc·...·]-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="3137930120-1">[</span><span·class="p"·data-group-id="3137930120-2">{</span><span·class="n">Application1</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3137930120-3">[</span><span·class="p"·data-group-id="3137930120-4">[·...·truncated·by·diffoscope;·len:·379,·SHA:·b25592acde865bc9a8196a60d7bfd02fb8adac553d3e5501d1b58ba4ef286df5·...·]-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="7734549972-5">{</span><span·class="n">ApplicationN</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7734549972-6">[</span><span·class="p"·data-group-id="7734549972-7">{</span><span·class="n">ParN1</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·379,·SHA:·550eba7c25e69a6df1833ece8641a5c84876d0d1c405b327e2881e55210d7d37·...·]-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="3137930120-5">{</span><span·class="n">ApplicationN</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3137930120-6">[</span><span·class="p"·data-group-id="3137930120-7">{</span><span·class="n">ParN1</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·379,·SHA:·b7a1f3361bc663cd0f9ba58ab63c4439fd60e262077ac6a54ba2bcbbdc16f8c0·...·]-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="2179744193-1">[</samp><samp·class="ss">cp1@cave</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="2179744193-2">{</samp><samp·class="ss">cp2@cave</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="ss">cp3@c[·...·truncated·by·diffoscope;·len:·104,·SHA:·77697339ee8c0856294c27554ab41c3e812a6ff4ddfee56496e26194039efd1f·...·]-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="2684254307-1">[</samp><samp·class="ss">cp1@cave</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="2684254307-2">{</samp><samp·class="ss">cp2@cave</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="ss">cp3@c[·...·truncated·by·diffoscope;·len:·104,·SHA:·6f29583023b4a436062d6483a87823c3a8c69a51208b8e6468f9049c2e73b377·...·]-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.6/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="9581261148-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="9581261148-2">[</span><span·class="n">Reason</s[·...·truncated·by·diffoscope;·len:·98,·SHA:·e3aea4710b3c425bd6ab3fba2849ff10bcf6de20ef667752e1b4c8bc49daf1d2·...·]-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="2493133723-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="2493133723-2">[</span><span·class="n">Reason</s[·...·truncated·by·diffoscope;·len:·98,·SHA:·a3ef278e1a8530263ff2238b375e9d83d2c754c69815a269d68fa38dc758ecf6·...·]-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="9581261148-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="9581261148-4">[</span><span·class="n">Reason</s[·...·truncated·by·diffoscope;·len:·98,·SHA:·ee999c4062794987b0a481d3aac94527e61ea7003fa4cd2567c9f7e135f19a22·...·]-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="2493133723-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="2493133723-4">[</span><span·class="n">Reason</s[·...·truncated·by·diffoscope;·len:·98,·SHA:·648c4d16b5e8a63a650af3b6c44cf8845a13632c37af19f6db92867790e425d3·...·]-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="2311733135-1">[</span><span·class="p"·data-group-id="2311733135-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="2115006719-1">[</span><span·class="p"·data-group-id="2115006719-2">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">
139 ··</span><span·class="p"·data-group-id="2311733135-3">[</span><span·class="p"·data-group-id="2311733135-4">{</span><span·class="ss">logger</span><span·class="p">,</span><span·class="w">139 ··</span><span·class="p"·data-group-id="2115006719-3">[</span><span·class="p"·data-group-id="2115006719-4">{</span><span·class="ss">logger</span><span·class="p">,</span><span·class="w">
140 ····</span><span·class="p"·data-group-id="2311733135-5">[</span><span·class="p"·data-group-id="2311733135-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="2115006719-5">[</span><span·class="p"·data-group-id="2115006719-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="2311733135-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="2311733135-8">#{</span><span·class="ss">file</span><span·class="w">·</span><span·class="p">=&gt;<[·...·truncated·by·diffoscope;·len:·493,·SHA:·93c86efb409394ba2bd8035746680a0c98ac5a66817eaec4225c1c253298b11d·...·]-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="2115006719-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="2115006719-8">#{</span><span·class="ss">file</span><span·class="w">·</span><span·class="p">=&gt;<[·...·truncated·by·diffoscope;·len:·493,·SHA:·0d5c8afc32fe627276518b0a83206c801586a5641391067914862140bc86f9da·...·]-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="4631429601-1">(</span><span·class="s">&quot;kernel/include/logger.hrl&quot;</span><span·class="p"·data-group-id="4631429601-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="7948467305-1">(</span><span·class="s">&quot;kernel/include/logger.hrl&quot;</span><span·class="p"·data-group-id="7948467305-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.6/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.6/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="0822666175-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="0822666175-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="8654809919-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="8654809919-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="0822666175-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="0822666175-3">#{</span><span·cla[·...·truncated·by·diffoscope;·len:·265,·SHA:·7f7dbe71294ab7dedbe7600b8472441efbd8af939d30a2983f54b3ed9a968888·...·]-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="8654809919-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="8654809919-3">#{</span><span·cla[·...·truncated·by·diffoscope;·len:·265,·SHA:·b3e5da27c408519314f92905474ae6dbbfb6eed299950e3e58e91688a688c426·...·]-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="0822666175-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="0822666175-5">[</span><span·class="n">Cause</sp[·...·truncated·by·diffoscope;·len:·97,·SHA:·818e55cc71e27b5ed9595de97dd104d9f2226385a00e13476332c95ca50184c5·...·]-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="8654809919-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="8654809919-5">[</span><span·class="n">Cause</sp[·...·truncated·by·diffoscope;·len:·97,·SHA:·b1abaefcb6a13e7d051446811b5e9f54d4d07c449b385734c0ed7feec8c61cd8·...·]-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="0822666175-6">(</span><span·class="ss">warning</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0822666175-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:·76c886483c480b94f83abc9660a351c9e9ba2ae7bae567be42ac0c8048abc375·...·]-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="8654809919-6">(</span><span·class="ss">warning</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8654809919-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:·da4cb5a847ccc28916e62eec6ac4454ed2553036bc50c6a73f2596baafce0677·...·]-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="1639806338-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="1639806338-2">(</span><span·class="p"·data-group-id="1639806338-3">[</span><span·class="p"·data-group-id="1639806338-3">]</span><span·class="p"·data-group-id="1639806338-2">)</[·...·truncated·by·diffoscope;·len:·900,·SHA:·96f5cf0ff8ef3a13a78f907cdac16c46bbce7257739a5e4a697bbbfad52a1ffa·...·]-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="2367198519-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="2367198519-2">(</span><span·class="p"·data-group-id="2367198519-3">[</span><span·class="p"·data-group-id="2367198519-3">]</span><span·class="p"·data-group-id="2367198519-2">)</[·...·truncated·by·diffoscope;·len:·900,·SHA:·61ba78d6bb754bab17144fde4f659992253309d36e142366173f4e5563d415b0·...·]-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="1639806338-8">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="1639806338-9">(</span><span·class="n">What</span><span·class="p"·data-group-id="1639806338-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·727,·SHA:·bb86b684e6f9690b6a5a29827ae1f4aa38373641620ea00f2deeebbe34d9f210·...·]-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="2367198519-8">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="2367198519-9">(</span><span·class="n">What</span><span·class="p"·data-group-id="2367198519-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·727,·SHA:·29193247b722c345fd8d4ae98204a32c31f55d62f7e08ef013fe851742cbbcbf·...·]-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="1639806338-12">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="1639806338-13">(</span><span·class="p"·data-group-id="1639806338-14">[</span><span·class="p"·data-group-id="1639806338-14">]</span><span·class="p"·data-group-id="1639806338-13[·...·truncated·by·diffoscope;·len:·859,·SHA:·d83f44c87017363a51f7006db2296cb7ad9f414e918efc20c9b36d954875388f·...·]-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="2367198519-12">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="2367198519-13">(</span><span·class="p"·data-group-id="2367198519-14">[</span><span·class="p"·data-group-id="2367198519-14">]</span><span·class="p"·data-group-id="2367198519-13[·...·truncated·by·diffoscope;·len:·859,·SHA:·b713eda70328e7a788315fdc9a569497da00e416931bae9ed8847081e30643f5·...·]-18">]</span><span·class="p">,</span><span·class="w">
2359 ···············</span><span·class="p"·data-group-id="1639806338-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="1639806338-19">}</spa[·...·truncated·by·diffoscope;·len:·43,·SHA:·3c490eefe639e21ad235bb65a0e24229e0ba904f3f126e2aec00641bb9d34f9a·...·]-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="2367198519-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="2367198519-19">}</spa[·...·truncated·by·diffoscope;·len:·43,·SHA:·030174167dc753f6c0869bbe55476e65f8392b3d0b5243abe7bf4045b160a20b·...·]-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="5569543934-1">(</span><span·class="ss">application</span><span·class="p"·data-group-id="5569543934-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="4823192244-1">(</span><span·class="ss">application</span><span·class="p"·data-group-id="4823192244-1">)</span><span·class="p">.</span><span·class="w">
2664 </span><span·class="nf">start</span><span·class="p"·data-group-id="5569543934-2">(</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5569543934-3">[</span><span·class="p"·data-group-id="5569543934-3">]</span><span·class="p"·data-group-id="5569543934-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="4823192244-2">(</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4823192244-3">[</span><span·class="p"·data-group-id="4823192244-3">]</span><span·class="p"·data-group-id="4823192244-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="5569543934-4">(</span><span·class="p"·data-group-id="5569543934-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="5569543934-5">}</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·251,·SHA:·f4bb4a86d9cde81a56d867cab63ad3eb792b20701f7c987a661dbc597eca921c·...·]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="4823192244-4">(</span><span·class="p"·data-group-id="4823192244-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="4823192244-5">}</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·251,·SHA:·b56e5d658eb5651dab5eb8bfbe0a934654aa9a19b579652ae89c9071c4eb4967·...·]4-4">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
2666 ········</span><span·class="p"·data-group-id="5569543934-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="5569543934-7">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">2666 ········</span><span·class="p"·data-group-id="4823192244-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="4823192244-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="5569543934-8">(</span><span·class="ss">my_app</span><span·class="p"·data-group-id="5569543934-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="4823192244-8">(</span><span·class="ss">my_app</span><span·class="p"·data-group-id="4823192244-8">)</span><span·class="p">,</span><span·class="w">
2668 ············</span><span·class="p"·data-group-id="5569543934-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="5569543934-10">[</span><span·class="p"·data-group-id="5[·...·truncated·by·diffoscope;·len:·62,·SHA:·a248ccf5326a41a94ac7c09e196205174a5ca74ad02143d821cc5221792f17b7·...·]4-9">}</span><span·class="p">;</span><span·class="w">2668 ············</span><span·class="p"·data-group-id="4823192244-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="4823192244-10">[</span><span·class="p"·data-group-id="4[·...·truncated·by·diffoscope;·len:·62,·SHA:·30e39facd3d486991b96dc1f7db62a283d30f668b85ab31a7aeccf4dd6b62c7b·...·]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="9984093849-1">[</span><span·class="p"·data-group-id="9984093849-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="3260849020-1">[</span><span·class="p"·data-group-id="3260849020-2">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">
2676 ··</span><span·class="p"·data-group-id="9984093849-3">[</span><span·class="p"·data-group-id="9984093849-4">{</span><span·class="ss">logger</span><span·class="p">,</span><span·class="w">2676 ··</span><span·class="p"·data-group-id="3260849020-3">[</span><span·class="p"·data-group-id="3260849020-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="9984093849-5">[</span><span·class="p"·data-group-id="9984093849-6">{</span><span·class="ss">handler</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">default</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">undefi[·...·truncated·by·diffoscope;·len:·263,·SHA:·58c464f825ae72e8b6fad9bbfd41d13886b6cfbf0e9683c8d0f5ef8d1436b67f·...·]-2">}</span><span·class="p">,</span><span·class="w">2678 ····</span><span·class="p"·data-group-id="3260849020-5">[</span><span·class="p"·data-group-id="3260849020-6">{</span><span·class="ss">handler</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">default</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">undefi[·...·truncated·by·diffoscope;·len:·263,·SHA:·8f4563378ab85a35f3393175bb6bff3d82ae325194ba94d463cf530dab8b7a52·...·]-2">}</span><span·class="p">,</span><span·class="w">
2679 ·</span><span·class="p"·data-group-id="9984093849-7">{</span><span·class="ss">my_app</span><span·class="p">,</span><span·class="w">2679 ·</span><span·class="p"·data-group-id="3260849020-7">{</span><span·class="ss">my_app</span><span·class="p">,</span><span·class="w">
2680 ··</span><span·class="p"·data-group-id="9984093849-8">[</span><span·class="p"·data-group-id="9984093849-9">{</span><span·class="ss">logger</span><span·class="p">,</span><span·class="w">2680 ··</span><span·class="p"·data-group-id="3260849020-8">[</span><span·class="p"·data-group-id="3260849020-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="9984093849-10">[</span><span·class="p"·data-group-id="9984093849-11">{</span><span·class="ss">handler</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">default</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">my_h[·...·truncated·by·diffoscope;·len:·478,·SHA:·04c92c98b3f6994298cd8a678eaef944b6c980eb75344b3f4b049533f53e3be4·...·]-1">]</span><span·class="p">.</span></code></pre>2682 ····</span><span·class="p"·data-group-id="3260849020-10">[</span><span·class="p"·data-group-id="3260849020-11">{</span><span·class="ss">handler</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">default</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">my_h[·...·truncated·by·diffoscope;·len:·478,·SHA:·c15bece4341a5d4e411ff3a92e040a459e254bbe585e2b72e8a2ea49ac6637fc·...·]-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.6/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.6/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="5523367753-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="3880034823-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="5523367753-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="5523367753-2">}</span><span·class="p"·data-group-id="5523367753-1">)</span><span·class="p">.</span></code></pre>3581 »       ······</span><span·class="p"·data-group-id="3880034823-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="3880034823-2">}</span><span·class="p"·data-group-id="3880034823-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.6/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="6744814407-1">(</span><span·class="s">&quot;kernel/include/logger.hrl&quot;</span><span·class="p"·data-group-id="6744814407-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="4981879823-1">(</span><span·class="s">&quot;kernel/include/logger.hrl&quot;</span><span·class="p"·data-group-id="4981879823-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="5819887596-1">(</span><span·class="s">&quot;The·file·does·not·exist:·~ts&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="5819887596-2">[</span><span·class="n">Filename</span><span·class="p"·data-group-id="5819887596-2">]</span><span·clas[·...·truncated·by·diffoscope;·len:·367,·SHA:·d3a59eae6c5dc629069fed1b8c40d44cc02b0dca9eac8f2ce4594e985c84635d·...·]-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="6834056700-1">(</span><span·class="s">&quot;The·file·does·not·exist:·~ts&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="6834056700-2">[</span><span·class="n">Filename</span><span·class="p"·data-group-id="6834056700-2">]</span><span·clas[·...·truncated·by·diffoscope;·len:·367,·SHA:·9218721a33298491648bc69335db3be6c6c8200faf9b971c24d80c1249d28464·...·]-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="4916112150-1">(</span><span·class="p"·data-group-id="4916112150-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:·463,·SHA:·eece3b4fe5095d57f16cc1b4c50b68e34b2d9924276ef11cc4608ce93ea4c4fc·...·]0-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="1319847470-1">(</span><span·class="p"·data-group-id="1319847470-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:·463,·SHA:·e5a5ba8463298671f1a2c156ae711dd7d19f8a4e0ea4f20d92da51e51f829ef9·...·]0-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="6502269525-1">(</span><span·class="p"·data-group-id="6502269525-2">(</span><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">report</span><span·class="p"·data-group-id="6502269525-3">(</span><span·class="p"·data-group-id="6502269525-3"[·...·truncated·by·diffoscope;·len:·735,·SHA:·9465b9ed025da6776c5eec03f126472ac384dd593fcda49d0b3b83f483f16e9f·...·]-1">)</span></code></pre><p>If·it·takes·two·arguments,·the·first·is·the·report,·and·the·second·is·a·map224 arguments:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">fun</span><span·class="p"·data-group-id="4927193514-1">(</span><span·class="p"·data-group-id="4927193514-2">(</span><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">report</span><span·class="p"·data-group-id="4927193514-3">(</span><span·class="p"·data-group-id="4927193514-3"[·...·truncated·by·diffoscope;·len:·735,·SHA:·c73d2427a5951b443648389d605bab4b181347ed027c1aff15b908bde1a26bab·...·]-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="6723351344-1">(</span><span·class="p"·data-group-id="6723351344-2">(</span><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">report</span><span·class="p"·data-group-id="6723351344-3">(</span><span·class="p"·data-group-id="6723351344-3"[·...·truncated·by·diffoscope;·len:·596,·SHA:·a6004c909027464aaa1a4253c220acb8a14d19e1b9ad99d6e738f3b2154a1f8b·...·]-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·the225 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="1269342770-1">(</span><span·class="p"·data-group-id="1269342770-2">(</span><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">report</span><span·class="p"·data-group-id="1269342770-3">(</span><span·class="p"·data-group-id="1269342770-3"[·...·truncated·by·diffoscope;·len:·596,·SHA:·4dd9dfaf015dfbd19b470e78e273766d5cc69d4a187ba1e1604bc3817d89c189·...·]-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="1050431788-1">(</span><span·class="p"·data-group-id="1050431788-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:·8eb5253c410fbf5b8263235973add508d635991bdf777c7fba9751185b444cb7·...·]-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="1948073266-1">(</span><span·class="p"·data-group-id="1948073266-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:·3968a2f13754ae54b02cf31b0f621e5e6a936008aa56f797e46d58d3873cd627·...·]-2">}</span><span·class="p">,</span><span·class="w">
231 ·············</span><span·class="p"·data-group-id="1050431788-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="1050431788-4">(</span><span·class="n">R</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·596,·SHA:·c7cbc94fc9cd7f889acb0770c570c7bd1ab59d1b2545384bb016226bb49ec4c7·...·]-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="1948073266-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="1948073266-4">(</span><span·class="n">R</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·596,·SHA:·1f6949159a01f980adb7bbccb8d6b478861dd27fec8f76149e2787cfc66ccfa8·...·]-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="1000168526-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="1000168526-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="5307546732-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="5307546732-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="1352614998-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="1352614998-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="1093951342-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="1093951342-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="8875181064-1">(</span><span·class="n">FilterId</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8875181064-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:·7a9e80b3b111d9d14d0dc3db4525dc8ccc8aed88eff02854e58b35536ec5c3e7·...·]-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="7859446285-1">(</span><span·class="n">FilterId</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7859446285-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:·a5b856a5fa0554c39f5c49d7860696f83db6dab8901ee9c752c2f7410b2480bb·...·]-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="5387959281-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="5387959281-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="6060995446-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="6060995446-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.2/doc/html/io.html#t:standard_io/0"><code·class="inline">standard_io</code></a>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="7626685654-1">[</span><span·class="p"·data-group-id="7626685654-2">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">449 <a·href="../../../../lib/stdlib-6.2.2/doc/html/io.html#t:standard_io/0"><code·class="inline">standard_io</code></a>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="7768663837-1">[</span><span·class="p"·data-group-id="7768663837-2">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">
450 ··</span><span·class="p"·data-group-id="7626685654-3">[</span><span·class="p"·data-group-id="7626685654-4">{</span><span·class="ss">logger</span><span·class="p">,</span><span·class="w">450 ··</span><span·class="p"·data-group-id="7768663837-3">[</span><span·class="p"·data-group-id="7768663837-4">{</span><span·class="ss">logger</span><span·class="p">,</span><span·class="w">
451 ····</span><span·class="p"·data-group-id="7626685654-5">[</span><span·class="p"·data-group-id="7626685654-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="7768663837-5">[</span><span·class="p"·data-group-id="7768663837-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="7626685654-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="7626685654-8">#{</span><span·class="ss">file</span><span·class="w">·</span><span·class="p">=&gt;<[·...·truncated·by·diffoscope;·len:·226,·SHA:·41ed277a0583335644f5488b00bcd4242612d66f56e5354eaccf0ef1e3eb80da·...·]-6">}</span><span·class="w">··</span><span·class="c1">%·Config}</span><span·class="w">452 ······</span><span·class="p"·data-group-id="7768663837-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="7768663837-8">#{</span><span·class="ss">file</span><span·class="w">·</span><span·class="p">=&gt;<[·...·truncated·by·diffoscope;·len:·226,·SHA:·1484ba0e8f1cb062d07078882c0481d2e7720d9112f1a5a38559cf29dcb92941·...·]-6">}</span><span·class="w">··</span><span·class="c1">%·Config}</span><span·class="w">
453 ····</span><span·class="p"·data-group-id="7626685654-5">]</span><span·class="p"·data-group-id="7626685654-4">}</span><span·class="p"·data-group-id="7626685654-3">]</span><span·class="p"·data-group-id="7626685654-2">}</span><span·class="p"·data-group-id="7626685654-1">]</span><span·class="p">.</span[·...·truncated·by·diffoscope;·len:·231,·SHA:·82eb35e9cbc384f7f9788cd141560dd6ec20d40106369610b10601df5c42c58d·...·]-2">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">453 ····</span><span·class="p"·data-group-id="7768663837-5">]</span><span·class="p"·data-group-id="7768663837-4">}</span><span·class="p"·data-group-id="7768663837-3">]</span><span·class="p"·data-group-id="7768663837-2">}</span><span·class="p"·data-group-id="7768663837-1">]</span><span·class="p">.</span[·...·truncated·by·diffoscope;·len:·231,·SHA:·6733d06eb55246e31727b654651a0a3779e18e2d37ca66ad83e07e32b69cd922·...·]-2">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">
 454 ··</span><span·class="p"·data-group-id="5989268531-3">[</span><span·class="p"·data-group-id="5989268531-4">{</span><span·class="ss">logger</span><span·class="p">,</span><span·class="w">
 455 ····</span><span·class="p"·data-group-id="5989268531-5">[</span><span·class="p"·data-group-id="5989268531-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="5989268531-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="5989268531-8">{</span><span·class="ss">logger_formatter</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5989268531-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="5989268531-9">}</span><span·class="p"·data-group-id="5989268531-8">}</span><span·class="p"·data-group-id="5989268531-7">}</span><span·class="p"·data-group-id="5989268531-6">}</span><span·class="w">
 457 ····</span><span·class="p"·data-group-id="5989268531-5">]</span><span·class="p"·data-group-id="5989268531-4">}</span><span·class="p"·data-group-id="5989268531-3">]</span><span·class="p"·data-group-id="5989268531-2">}</span><span·class="p"·data-group-id="5989268531-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="0703374987-1">[</span><span·class="p"·data-group-id="0703374987-2">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">
454 ··</span><span·class="p"·data-group-id="2370209084-3">[</span><span·class="p"·data-group-id="2370209084-4">{</span><span·class="ss">logger</span><span·class="p">,</span><span·class="w">459 ··</span><span·class="p"·data-group-id="0703374987-3">[</span><span·class="p"·data-group-id="0703374987-4">{</span><span·class="ss">logger</span><span·class="p">,</span><span·class="w">
455 ····</span><span·class="p"·data-group-id="2370209084-5">[</span><span·class="p"·data-group-id="2370209084-6">{</span><span·class="ss">handler</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">default</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">logger_std_h</span><span·class="p">,</span><span·class="w">460 ····</span><span·class="p"·data-group-id="0703374987-5">[</span><span·class="p"·data-group-id="0703374987-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="2370209084-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="2370209084-8">{</span><span·class="ss">logger_formatter</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2370209084-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="2370209084-9">}</span><span·class="p"·data-group-id="2370209084-8">}</span><span·class="p"·data-group-id="2370209084-7">}</span><span·class="p"·data-group-id="2370209084-6">}</span><span·class="w"> 
457 ····</span><span·class="p"·data-group-id="2370209084-5">]</span><span·class="p"·data-group-id="2370209084-4">}</span><span·class="p"·data-group-id="2370209084-3">]</span><span·class="p"·data-group-id="2370209084-2">}</span><span·class="p"·data-group-id="2370209084-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="2955101916-1">[</span><span·class="p"·data-group-id="2955101916-2">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w"> 
459 ··</span><span·class="p"·data-group-id="2955101916-3">[</span><span·class="p"·data-group-id="2955101916-4">{</span><span·class="ss">logger</span><span·class="p">,</span><span·class="w"> 
460 ····</span><span·class="p"·data-group-id="2955101916-5">[</span><span·class="p"·data-group-id="2955101916-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="2955101916-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="2955101916-8">{</span><span·class="ss">logger_formatter</span><span·class="p">,</span><span·class="w">461 ······</span><span·class="p"·data-group-id="0703374987-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="0703374987-8">{</span><span·class="ss">logger_formatter</span><span·class="p">,</span><span·class="w">
462 ························</span><span·class="p"·data-group-id="2955101916-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="2955101916-10">[</span><span·class="ss">time</span><span·class="p">,</span><span·class="s">&qu[·...·truncated·by·diffoscope;·len:·494,·SHA:·0eec27f85a16d59b5c68754907fa99d13761a3d344654c370ae03fa3b4a4503d·...·]-6">}</span><span·class="w">462 ························</span><span·class="p"·data-group-id="0703374987-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="0703374987-10">[</span><span·class="ss">time</span><span·class="p">,</span><span·class="s">&qu[·...·truncated·by·diffoscope;·len:·494,·SHA:·53af5b197373246ae481b2884ed4d9b718fb468fd47f685484a479594eaf93e2·...·]-6">}</span><span·class="w">
463 ····</span><span·class="p"·data-group-id="2955101916-5">]</span><span·class="p"·data-group-id="2955101916-4">}</span><span·class="p"·data-group-id="2955101916-3">]</span><span·class="p"·data-group-id="2955101916-2">}</span><span·class="p"·data-group-id="2955101916-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="0703374987-5">]</span><span·class="p"·data-group-id="0703374987-4">}</span><span·class="p"·data-group-id="0703374987-3">]</span><span·class="p"·data-group-id="0703374987-2">}</span><span·class="p"·data-group-id="0703374987-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="4309454959-1">[</span><span·class="p"·data-group-id="4309454959-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="9846601611-1">[</span><span·class="p"·data-group-id="9846601611-2">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">
466 ··</span><span·class="p"·data-group-id="4309454959-3">[</span><span·class="p"·data-group-id="4309454959-4">{</span><span·class="ss">logger</span><span·class="p">,</span><span·class="w">466 ··</span><span·class="p"·data-group-id="9846601611-3">[</span><span·class="p"·data-group-id="9846601611-4">{</span><span·class="ss">logger</span><span·class="p">,</span><span·class="w">
467 ····</span><span·class="p"·data-group-id="4309454959-5">[</span><span·class="p"·data-group-id="4309454959-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="9846601611-5">[</span><span·class="p"·data-group-id="9846601611-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="4309454959-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="9846601611-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="4309454959-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="4309454959-8">}</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·67,·SHA:·d17db966e9d75578b5f7d4e675d1a24d9acd7cbd5c6052c5245fadf39de9e59b·...·]-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="9846601611-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="9846601611-8">}</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·67,·SHA:·2cf7f393fde27b02efd86505439b7543c3c70976b496b1fb5ca6956448d158a7·...·]-6">}</span><span·class="p">,</span><span·class="w">
470 ·····</span><span·class="p"·data-group-id="4309454959-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="9846601611-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="4309454959-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="9846601611-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="4309454959-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="4309454959-11">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·69,·SHA:·040e9d518913a7710268e24758679af89c2c5d5ad79577491335b0d1eb959420·...·]-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="9846601611-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="9846601611-11">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·69,·SHA:·4943217518e1a5d91e6a0f9e6166e19489ce0afa865058f72734b98d3a9c0b44·...·]-9">}</span><span·class="w">
473 ····</span><span·class="p"·data-group-id="4309454959-5">]</span><span·class="p"·data-group-id="4309454959-4">}</span><span·class="p"·data-group-id="4309454959-3">]</span><span·class="p"·data-group-id="4309454959-2">}</span><span·class="p"·data-group-id="4309454959-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="9846601611-5">]</span><span·class="p"·data-group-id="9846601611-4">}</span><span·class="p"·data-group-id="9846601611-3">]</span><span·class="p"·data-group-id="9846601611-2">}</span><span·class="p"·data-group-id="9846601611-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="5683153119-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="9622542428-1">#{</span><span·class="ss">level</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">info</span><span·class="p">,</span><span·class="w">
515 ··</span><span·class="ss">filter_default</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">log</span><span·class="p">,</span><span·class="w">515 ··</span><span·class="ss">filter_default</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">log</span><span·class="p">,</span><span·class="w">
516 ··</span><span·class="ss">filters</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="5683153119-2">[</span><span·class="p"·data-group-id="5683153119-2">]</span><span·class="p"·data-group-id="5683153119-1">}</span><span·class="p">.</span></code></pre><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>This·handler·ignores·events·that·do·not·originate·from·the·<code·class="inline">error_logger</code>516 ··</span><span·class="ss">filters</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="9622542428-2">[</span><span·class="p"·data-group-id="9622542428-2">]</span><span·class="p"·data-group-id="9622542428-1">}</span><span·class="p">.</span></code></pre><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>This·handler·ignores·events·that·do·not·originate·from·the·<code·class="inline">error_logger</code>
517 API,·or·from·within·OTP.·This·means·that·if·your·code·uses·the·Logger·API517 API,·or·from·within·OTP.·This·means·that·if·your·code·uses·the·Logger·API
Max diff block lines reached; 56706/103491 bytes (54.79%) of diff not shown.
94.2 KB
./usr/share/doc/erlang-doc/html/lib/kernel-10.2.6/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="1082327037-1">(</span><span·class="ss">primary</span><span·class="p"·data-group-id="1082327037-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="5877552545-1">(</span><span·class="ss">primary</span><span·class="p"·data-group-id="5877552545-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="1082327037-2">(</span><span·class="ss">none</span><span·class="p"·data-group-id="1082327037-2">)</span></code></pre><p>It·is·also·possible·to·fetch·the·configuration·using152 ········</span><span·class="p"·data-group-id="5877552545-2">(</span><span·class="ss">none</span><span·class="p"·data-group-id="5877552545-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="3874475621-1">(</span><span·class="ss">handlers</span><span·class="p"·data-group-id="3874475621-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="1945916536-1">(</span><span·class="ss">handlers</span><span·class="p"·data-group-id="1945916536-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="3874475621-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="3874475621-3">[</span><span·class="ss">otp</span><span·class="p">,</span><span·class="ss">sasl</spa[·...·truncated·by·diffoscope;·len:·96,·SHA:·9ac40f0d6dd053171dcbe42e6202c04cc2c440da4ca10c7385932eac3f4a2060·...·]-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="1945916536-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="1945916536-3">[</span><span·class="ss">otp</span><span·class="p">,</span><span·class="ss">sasl</spa[·...·truncated·by·diffoscope;·len:·96,·SHA:·0c932d5770ab8dc3e809130950823c128c0a5004664038e07f72a7e708ea6cb7·...·]-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="3874475621-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="3874475621-5">[</span><span·class="p"·data-group-id="3874475621-5">]</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·dcd0b593801298d2919a1fdb73e1049c542fa2baace0cdd715e05f199bf8f148·...·]-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="1945916536-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="1945916536-5">[</span><span·class="p"·data-group-id="1945916536-5">]</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·b56106ef95703c2d16331b10e57d3ce6e8f8a1f7e0ab678ff1763670e555f61a·...·]-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="5435632530-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="5435632530-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="8179145860-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="8179145860-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="6176312449-1">[</span><span·class="p"·data-group-id="6176312449-2">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">236 </span><span·class="p"·data-group-id="4762747517-1">[</span><span·class="p"·data-group-id="4762747517-2">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">
237 ··</span><span·class="p"·data-group-id="6176312449-3">[</span><span·class="p"·data-group-id="6176312449-4">{</span><span·class="ss">logger</span><span·class="p">,</span><span·class="w">237 ··</span><span·class="p"·data-group-id="4762747517-3">[</span><span·class="p"·data-group-id="4762747517-4">{</span><span·class="ss">logger</span><span·class="p">,</span><span·class="w">
238 ····</span><span·class="p"·data-group-id="6176312449-5">[</span><span·class="p"·data-group-id="6176312449-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="4762747517-5">[</span><span·class="p"·data-group-id="4762747517-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="6176312449-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="6176312449-8">{</span><span·class="ss">logger_formatter</span><span·c[·...·truncated·by·diffoscope;·len:·584,·SHA:·6c9ced76a01eb5c5a8efb239473743a1df758eda1bbb60f45a339ade51dadd45·...·]-1">]</span><span·class="p">.</span><span·class="w">239 ······</span><span·class="p"·data-group-id="4762747517-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="4762747517-8">{</span><span·class="ss">logger_formatter</span><span·c[·...·truncated·by·diffoscope;·len:·584,·SHA:·500acb87573417c7e1d63bbb5d35627ac11c1684d5a8e62726b794354104c5b2·...·]-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="6176312449-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="6176312449-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="4762747517-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="4762747517-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="6176312449-11">(</span><span·class="s">&quot;Oh·noes,·an·error&quot;</span><span·class="p"·data-group-id="6176312449-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="4762747517-11">(</span><span·class="s">&quot;Oh·noes,·an·error&quot;</span><span·class="p"·data-group-id="4762747517-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="8753750394-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="8753750394-2">{</span><span·class="ss">logg[·...·truncated·by·diffoscope;·len:·268,·SHA:·a579271cf85e1e09dfae9bfe308432342b8679dc15fd68a697077c375a05ed71·...·]-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="3065600601-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="3065600601-2">{</span><span·class="ss">logg[·...·truncated·by·diffoscope;·len:·268,·SHA:·666706785e505a20754181f404fe20df2bc49a5203e1d7b695e001c1ece91de3·...·]-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="8753750394-4">(</span><span·class="s">&quot;Oh·noes,·another·error&quot;</span><span·class="p"·data-group-id="8753750394-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="3065600601-4">(</span><span·class="s">&quot;Oh·noes,·another·error&quot;</span><span·class="p"·data-group-id="3065600601-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="5219896094-1">[</span><span·class="p"·data-group-id="5219896094-2">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">254 </span><span·class="p"·data-group-id="1375824840-1">[</span><span·class="p"·data-group-id="1375824840-2">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">
255 ··</span><span·class="p"·data-group-id="5219896094-3">[</span><span·class="p"·data-group-id="5219896094-4">{</span><span·class="ss">logger</span><span·class="p">,</span><span·class="w">255 ··</span><span·class="p"·data-group-id="1375824840-3">[</span><span·class="p"·data-group-id="1375824840-4">{</span><span·class="ss">logger</span><span·class="p">,</span><span·class="w">
256 ····</span><span·class="p"·data-group-id="5219896094-5">[</span><span·class="p"·data-group-id="5219896094-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="1375824840-5">[</span><span·class="p"·data-group-id="1375824840-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="5219896094-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="5219896094-8">{</span><span·class="ss">logger_formatter</span><span·class="p">,</span><span·class="w">257 ······</span><span·class="p"·data-group-id="1375824840-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="1375824840-8">{</span><span·class="ss">logger_formatter</span><span·class="p">,</span><span·class="w">
258 ········</span><span·class="p"·data-group-id="5219896094-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="5219896094-10">[</span><span·class="ss">time</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·1058,·SHA:·a23cc8c550fc3cd9e7d6bb751892d89b20081beda7694537328ad4c3c2d530a0·...·]-1">]</span><span·class="p">.</span><span·class="w">258 ········</span><span·class="p"·data-group-id="1375824840-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="1375824840-10">[</span><span·class="ss">time</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·1058,·SHA:·ddf93f0e199a126a22de6402fc24873c82e2185d26dc367b7264d96313e3ddee·...·]-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="5219896094-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="5219896094-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="1375824840-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="1375824840-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="5219896094-12">(</span><span·class="s">&quot;Oh·noes,·more·errors&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="5219896094-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:·d854f8524ba7ec9f450f5a5b04c6cc5d94739536e25361b18e69bfef9ec059a1·...·]-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="1375824840-12">(</span><span·class="s">&quot;Oh·noes,·more·errors&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="1375824840-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:·c49fe88ef198e1935b8bb114bacd25c1014b4742b3ca523b76fa361bd82172d7·...·]-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="8589054580-1">[</span><span·class="p"·data-group-id="8589054580-2">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">278 </span><span·class="p"·data-group-id="2366340577-1">[</span><span·class="p"·data-group-id="2366340577-2">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">
279 ··</span><span·class="p"·data-group-id="8589054580-3">[</span><span·class="p"·data-group-id="8589054580-4">{</span><span·class="ss">logger</span><span·class="p">,</span><span·class="w">279 ··</span><span·class="p"·data-group-id="2366340577-3">[</span><span·class="p"·data-group-id="2366340577-4">{</span><span·class="ss">logger</span><span·class="p">,</span><span·class="w">
280 ····</span><span·class="p"·data-group-id="8589054580-5">[</span><span·class="p"·data-group-id="8589054580-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="2366340577-5">[</span><span·class="p"·data-group-id="2366340577-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="8589054580-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="8589054580-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="2366340577-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="2366340577-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="8589054580-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="2366340577-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="8589054580-9">{</span><span·class="ss">logger_formatter</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8589054580-10">#{</span><span·class="p"·data-group-id="8589054580-10">}</span><span·class="p"·data-group-id="858905[·...·truncated·by·diffoscope;·len:·375,·SHA:·66e7c9f3d6684530ac6a110482955bff90a7bd78d933a0d9e56ba72a4e1602cf·...·]-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="2366340577-9">{</span><span·class="ss">logger_formatter</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2366340577-10">#{</span><span·class="p"·data-group-id="2366340577-10">}</span><span·class="p"·data-group-id="236634[·...·truncated·by·diffoscope;·len:·375,·SHA:·751853688f10a1c1cbdd4294460ece5fa47ed532b4b4723c0807d6570134e0d2·...·]-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="8589054580-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="8589054580-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="2366340577-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="2366340577-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="8589054580-12">(</span><span·class="s">&quot;Oh·noes,·even·more·errors&quot;</span><span·class="p"·data-group-id="8589054580-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="2366340577-12">(</span><span·class="s">&quot;Oh·noes,·even·more·errors&quot;</span><span·class="p"·data-group-id="2366340577-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="8589054580-13">(</span><span·class="p"·data-group-id="8589054580-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="2366340577-13">(</span><span·class="p"·data-group-id="2366340577-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.6/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="9244643036-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="0519683620-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="9244643036-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="9244643036-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="0519683620-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="0519683620-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="9244643036-3">}</span><span·class="p"·data-group-id="9244643036-2">}</span><span·class="p"·data-group-id="9244643036-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="0519683620-3">}</span><span·class="p"·data-group-id="0519683620-2">}</span><span·class="p"·data-group-id="0519683620-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.6/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="1845604218-1">[</span><span·class="ss">otp</span><span·class="p"·data-group-id="1845604218-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="5578900363-1">[</span><span·class="ss">otp</span><span·class="p"·data-group-id="5578900363-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="1845604218-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="1845604218-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="5578900363-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="5578900363-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="6161077574-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="6161077574-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="4350501335-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="4350501335-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="6161077574-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:·b0b18c85c1680e54b368ff6fd08af91e5bf2fcb388b77a31fe44437dcc4ddc4d·...·]-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="4350501335-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:·e497b069f0e7f11334e4bd04e1e3e7dd7960f653145e949722623eb214c20c22·...·]-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="6161077574-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="6161077574-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="4350501335-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="4350501335-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="3406989114-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="3406989114-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="6093227604-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="6093227604-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="3406989114-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:·328,·SHA:·79b3df88507a6675df0f841a157ce869fa8000af19570dc51096dc0a62a13565·...·]4-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="6093227604-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:·328,·SHA:·43252c766feff1294aa14aed13a7e87cf38cd8afd372e8058da55f3ffcd1532b·...·]4-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="3406989114-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="3406989114-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="6093227604-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="6093227604-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.6/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="7323298802-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="6223553924-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="7323298802-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="7323298802-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="6223553924-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="6223553924-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="7323298802-3">}</span><span·class="p"·data-group-id="7323298802-2">}</span><span·class="p"·data-group-id="7323298802-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="6223553924-3">}</span><span·class="p"·data-group-id="6223553924-2">}</span><span·class="p"·data-group-id="6223553924-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.2/doc/html/io.html#t:standard_io/0"><code·class="inline">standard_io</code></a>,·change·the191 to·log·to·file·instead·of·<a·href="../../../../lib/stdlib-6.2.2/doc/html/io.html#t:standard_io/0"><code·class="inline">standard_io</code></a>,·change·the
192 Kernel·default·logger·configuration.·Example:</p><pre><code·class="text">erl·-kernel·logger·'[{handler,default,logger_std_h,192 Kernel·default·logger·configuration.·Example:</p><pre><code·class="text">erl·-kernel·logger·'[{handler,default,logger_std_h,
193 ······················#{config·=&gt;·#{file·=&gt;·&quot;./log.log&quot;}}}]'</code></pre><p>An·example·of·how·to·replace·the·standard·handler·with·a·disk_log·handler·at193 ······················#{config·=&gt;·#{file·=&gt;·&quot;./log.log&quot;}}}]'</code></pre><p>An·example·of·how·to·replace·the·standard·handler·with·a·disk_log·handler·at
194 startup·is·found·in·the·<a·href="logger_disk_log_h.html"><code·class="inline">logger_disk_log_h</code></a>·manual.</p><h2·id="module-see-also"·class="section-heading">194 startup·is·found·in·the·<a·href="logger_disk_log_h.html"><code·class="inline">logger_disk_log_h</code></a>·manual.</p><h2·id="module-see-also"·class="section-heading">
195 ··<a·href="#module-see-also"·class="hover-link">195 ··<a·href="#module-see-also"·class="hover-link">
196 ····<i·class="ri-link-m"·aria-hidden="true"></i>196 ····<i·class="ri-link-m"·aria-hidden="true"></i>
197 ··</a>197 ··</a>
4.91 KB
./usr/share/doc/erlang-doc/html/lib/kernel-10.2.6/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.6/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.6/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.6/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.6/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="8687523696-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="1800475812-1">(</span><span·class="w">
558 ····</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="8687523696-2">(</span><span·class="p"·data-group-id="8687523696-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="8687523696-4">#{</span>[·...·truncated·by·diffoscope;·len:·172,·SHA:·cf8e2a2368298aa595085090862e6aabf0daaecb1189cf01187b86570133d591·...·]-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="1800475812-2">(</span><span·class="p"·data-group-id="1800475812-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="1800475812-4">#{</span>[·...·truncated·by·diffoscope;·len:·172,·SHA:·24f59f56c2b34f6b9cec040750bf77ff5a9bc1eecc4051e4ad0cc9c1cc55eb84·...·]-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="8687523696-3">}</span><span·class="p"·data-group-id="8687523696-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="1800475812-3">}</span><span·class="p"·data-group-id="1800475812-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="8687523696-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="8687523696-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="1800475812-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="1800475812-5">)</span><span·class="p">;</span><span·class="w">
561 ········</span><span·class="p"·data-group-id="8687523696-6">(</span><span·class="p">_</span><span·class="p"·data-group-id="8687523696-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">561 ········</span><span·class="p"·data-group-id="1800475812-6">(</span><span·class="p">_</span><span·class="p"·data-group-id="1800475812-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="8687523696-1">)</span><span·class="p">.</span></code></pre>563 ····</span><span·class="k">end</span><span·class="p"·data-group-id="1800475812-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.6/doc/html/net_adm.html
    
Offset 475, 16 lines modifiedOffset 475, 16 lines modified
475 ···················Name·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:string/0">string</a>(),475 ···················Name·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:string/0">string</a>(),
476 ···················Port·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:non_neg_integer/0">non_neg_integer</a>(),476 ···················Port·::·<a·href="../../../../erts-15.2.6/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.6/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="1836704527-1">(</span><span·class="p"·data-group-id="1836704527-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.6/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="7072899581-1">(</span><span·class="p"·data-group-id="7072899581-1">)</span><span·class="p">.</span><span·class="w">
481 </span><span·class="p"·data-group-id="1836704527-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="1836704527-3">[</span><span·class="p"·data-group-id="1836704527-4">{</span><span·class="s">&quot;arne&quot;</span><span·class="p">,</span><span·class="mi[·...·truncated·by·diffoscope;·len:·161,·SHA:·1e637644be31a046fe75686c680e49650f1d3e44c3003bd4a9bc90a7d7ec6bc0·...·]-2">}</span></code></pre>481 </span><span·class="p"·data-group-id="7072899581-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="7072899581-3">[</span><span·class="p"·data-group-id="7072899581-4">{</span><span·class="s">&quot;arne&quot;</span><span·class="p">,</span><span·class="mi[·...·truncated·by·diffoscope;·len:·161,·SHA:·8e5f336182efd036798f1fc537baa352b41b985a257105d24517d5ee156630cf·...·]-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.6/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.6/doc/html/erlang.html#spawn/4"><code·class="inline">spawn/4</code></a>·and131 implement·parts·of·the·BIFs·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#spawn/4"><code·class="inline">spawn/4</code></a>·and
132 <a·href="../../../../erts-15.2.6/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.6/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="5370963561-1">(</span><span·class="ss">foobar</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5370963561-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:·54c0f8155fbb9e48e23146e8e368987611d97e37e29152d8b206cfc16325894f·...·]-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="4616287143-1">(</span><span·class="ss">foobar</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4616287143-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:·5c91eef0ab1948cdf4b29c9cbd84367c848e49e4154534ec3881f8a9a004fe73·...·]-1">)</span><span·class="p">.</span><span·class="w">
134 </span><span·class="p"·data-group-id="5370963561-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="5370963561-3">}</span><span·class="w">134 </span><span·class="p"·data-group-id="4616287143-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="4616287143-3">}</span><span·class="w">
135 </span><span·class="p"·data-group-id="5370963561-4">(</span><span·class="ss">foobar@gringotts</span><span·class="p"·data-group-id="5370963561-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="4616287143-4">(</span><span·class="ss">foobar@gringotts</span><span·class="p"·data-group-id="4616287143-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.6/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.6/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="4402789516-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="4402789516-1">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·197,·SHA:·ba8de1b1376fb5b946b6517b99b70ee895b75e9a02ad1497f5274a2832111a2f·...·]-2">}</span><span·class="w">653 follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="3556405253-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="3556405253-1">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·197,·SHA:·67eb92fb5314192c2d894713c68cbed136ed4f5af5f28f1706e3071b3eec164b·...·]-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="4402789516-3">(</span><span·class="p"·data-group-id="4402789516-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="3556405253-3">(</span><span·class="p"·data-group-id="3556405253-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.6/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.6/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="7364951549-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="7364951549-1">}</span><[·...·truncated·by·diffoscope;·len:·347,·SHA:·3fb833e0e4dff557fefa9a4572f73abef8319d51fdff623a707f97c8a04426c3·...·]-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="1924901853-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="1924901853-1">}</span><[·...·truncated·by·diffoscope;·len:·347,·SHA:·d447c0e50a1c737588cb11e33c065a58346f924ff22226a3afda223acf8bc357·...·]-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="7364951549-3">(</span><span·class="p"·data-group-id="7364951549-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="1924901853-3">(</span><span·class="p"·data-group-id="1924901853-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="7364951549-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="7364951549-4">}</span><span·class="w">·</span><span·class="p">|</span><spa[·...·truncated·by·diffoscope;·len:·320,·SHA:·2a2e9c599d9d1e3675081b50e2aa4afe692100561c2c4ef4c2b4bd3ccdf31cda·...·]-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="1924901853-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="1924901853-4">}</span><span·class="w">·</span><span·class="p">|</span><spa[·...·truncated·by·diffoscope;·len:·320,·SHA:·32d2beb7523e65e0463a5523e2eac42f778968dcdabab17c418622cadea89bb2·...·]-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.6/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.6/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="6733361825-1">(</span><span·class="ss">true</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6733361825-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:·149ba72d97c618d45984be79407aa55c103b14bf2f05ad1230303e195f379c27·...·]-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="7665276942-1">(</span><span·class="ss">true</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7665276942-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:·91310c592b9606ec24814769fa22b365bda41b8b3a3f810315c28ac3d0251d2a·...·]-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="6733361825-3">(</span><span·class="ss">a@localhost</span><span·class="p"·data-group-id="6733361825-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="6733361825[·...·truncated·by·diffoscope;·len:·53,·SHA:·e3662b86f9c25bf3637bb9143af9d12c963d9c3ba117476458cadf520406292c·...·]-4">)</span><span·class="p">.</span><span·class="w">695 </span><span·class="p"·data-group-id="7665276942-3">(</span><span·class="ss">a@localhost</span><span·class="p"·data-group-id="7665276942-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="7665276942[·...·truncated·by·diffoscope;·len:·53,·SHA:·11b1df9d25536ea113e0b054452e788634b4c8df1f09e636a747f92e79ac184e·...·]-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="6733361825-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="7665276942-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="6733361825-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:·f243035880975ea91366d5e28865e0ef5cc3b412c6371cc60fd819093ab43c31·...·]-5">}</span><span·class="w">697 ··················</span><span·class="p"·data-group-id="7665276942-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:·97049a213ee7fda343f91a1a0ef76c0aeb7b4b6d458bf1097ad3b9a88d8ee4f1·...·]-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="6733361825-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="7665276942-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="6733361825-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:·9a7b9a80d262d9dc8375433bf2d59f52141257b0b49a37c8262a8b4b45e70662·...·]-7">}</span><span·class="w">699 ··················</span><span·class="p"·data-group-id="7665276942-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:·14340c5fa3bc36dc6ce399436fa3e452fe3c9bc6874e49c1766ec53bdba32cdd·...·]-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="6733361825-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="7665276942-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="6733361825-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="7665276942-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="6733361825-10">}</span><span·class="p"·data-group-id="6733361825-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="7665276942-10">}</span><span·class="p"·data-group-id="7665276942-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="6733361825-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="7665276942-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="6733361825-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="7665276942-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="6733361825-12">}</span><span·class="p"·data-group-id="6733361825-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="7665276942-12">}</span><span·class="p"·data-group-id="7665276942-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="6733361825-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="7665276942-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="6733361825-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:·c10af8229938a4a7a849a2bc0561a838b6f01eb9b5dad8ece3caf0ee8ec3b78c·...·]-13">}</span><span·class="w">707 ··················</span><span·class="p"·data-group-id="7665276942-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:·8ff1dfe0cafd26b81ded0c39963438c6a1fee31fdaa3dc2583cb8e82be3b37e0·...·]-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="6733361825-15">(</span><span·class="ss">a@localhost</span><span·class="p"·data-group-id="6733361825-15">)</span><span·class="mi">3</span><span·class="o">&gt;</span></code></pre>709 </span><span·class="p"·data-group-id="7665276942-15">(</span><span·class="ss">a@localhost</span><span·class="p"·data-group-id="7665276942-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.6/doc/html/notes.html
    
Offset 4109, 20 lines modifiedOffset 4109, 20 lines modified
4109 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.6/doc/html/erlang.html#unlink/1"><code·class="inline">unlink/1</code></a>·and·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#demonitor/2"><code·class="inline">erlang:demonitor/2</code></a>·behaved4109 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.6/doc/html/erlang.html#unlink/1"><code·class="inline">unlink/1</code></a>·and·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#demonitor/2"><code·class="inline">erlang:demonitor/2</code></a>·behaved
4110 completely·asynchronous.·This·had·one·undesirable·effect,·though.·You·could4110 completely·asynchronous.·This·had·one·undesirable·effect,·though.·You·could
4111 never·know·when·you·were·guaranteed·<em>not</em>·to·be·affected·by·a·link·that·you4111 never·know·when·you·were·guaranteed·<em>not</em>·to·be·affected·by·a·link·that·you
4112 had·unlinked·or·a·monitor·that·you·had·demonitored.</p><p>The·new·behavior·of·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#unlink/1"><code·class="inline">unlink/1</code></a>·and·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#demonitor/2"><code·class="inline">erlang:demonitor/2</code></a>·can·be4112 had·unlinked·or·a·monitor·that·you·had·demonitored.</p><p>The·new·behavior·of·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#unlink/1"><code·class="inline">unlink/1</code></a>·and·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#demonitor/2"><code·class="inline">erlang:demonitor/2</code></a>·can·be
4113 viewed·as·two·operations·performed·atomically.·Asynchronously·send·an·unlink4113 viewed·as·two·operations·performed·atomically.·Asynchronously·send·an·unlink
4114 signal·or·a·demonitor·signal,·and·ignore·any·future·results·of·the·link·or4114 signal·or·a·demonitor·signal,·and·ignore·any·future·results·of·the·link·or
4115 monitor.</p><p><em>NOTE</em>:·This·change·can·cause·some·obscure·code·to·fail·which·previously·did4115 monitor.</p><p><em>NOTE</em>:·This·change·can·cause·some·obscure·code·to·fail·which·previously·did
4116 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="0456977401-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="0456977401-1">)</span><span·class="p">,</span><span·class="w">4116 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="7779475154-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="7779475154-1">)</span><span·class="p">,</span><span·class="w">
4117 ············</span><span·class="c1">%%·...</span><span·class="w">4117 ············</span><span·class="c1">%%·...</span><span·class="w">
4118 ············</span><span·class="nf">exit</span><span·class="p"·data-group-id="0456977401-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="0456977401-2">)</span><span·class="p">,</span><span·class="w">4118 ············</span><span·class="nf">exit</span><span·class="p"·data-group-id="7779475154-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="7779475154-2">)</span><span·class="p">,</span><span·class="w">
4119 ············</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">demonitor</span><span·class="p"·data-group-id="0456977401-3">(</span><span·class="n">Mon</span><span·class="p"·data-group-id="0456977401-3">)</span><span·class="p">,</span><span·class="w">4119 ············</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">demonitor</span><span·class="p"·data-group-id="7779475154-3">(</span><span·class="n">Mon</span><span·class="p"·data-group-id="7779475154-3">)</span><span·class="p">,</span><span·class="w">
4120 ············</span><span·class="k">receive</span><span·class="w">4120 ············</span><span·class="k">receive</span><span·class="w">
4121 ················</span><span·class="p"·data-group-id="0456977401-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:·fd887743128f9d108a7fa44fce241176d8f0f8a4ac4d92cd8c61cb61ff623bc6·...·]-4">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">ok</span><span·class="w">4121 ················</span><span·class="p"·data-group-id="7779475154-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:·6f67acc98f2c3eff74209fcfe6be7493113645cb4221515c963547abff901881·...·]-4">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">ok</span><span·class="w">
4122 ············</span><span·class="c1">%%·We·were·previously·guaranteed·to·get·a·down·message</span><span·class="w">4122 ············</span><span·class="c1">%%·We·were·previously·guaranteed·to·get·a·down·message</span><span·class="w">
4123 ············</span><span·class="c1">%%·(since·we·exited·the·process·ourself),·so·we·could</span><span·class="w">4123 ············</span><span·class="c1">%%·(since·we·exited·the·process·ourself),·so·we·could</span><span·class="w">
4124 ············</span><span·class="c1">%%·in·this·case·leave·out:</span><span·class="w">4124 ············</span><span·class="c1">%%·in·this·case·leave·out:</span><span·class="w">
4125 ············</span><span·class="c1">%%·after·0·-&gt;·ok</span><span·class="w">4125 ············</span><span·class="c1">%%·after·0·-&gt;·ok</span><span·class="w">
4126 ············</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·the4126 ············</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
4127 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,4127 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,
4128 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.6/doc/html/erlang.html#halt/1"><code·class="inline">erlang:halt/1</code></a>·does·not4128 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.6/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.6/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.6/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.6/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="6703418198-1">(</span><span·class="s">&quot;ls&quot;</span><span·class="p"·data-group-id="6703418198-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="5702474786-1">(</span><span·class="s">&quot;ls&quot;</span><span·class="p"·data-group-id="5702474786-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="6703418198-2">(</span><span·class="s">&quot;dir&quot;</span><span·class="p"·data-group-id="6703418198-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="5702474786-2">(</span><span·class="s">&quot;dir&quot;</span><span·class="p"·data-group-id="5702474786-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="7781357548-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="7781357548-2">#{</span><span·class="w">·</span><span·class="ss">max_size</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·192,·SHA:·31cb67a951d383b51e46896c115249f4c864c34569712809efd9fa7438427677·...·]-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="8894708855-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="8894708855-2">#{</span><span·class="w">·</span><span·class="ss">max_size</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·192,·SHA:·08498a6f0b164ef77c94e05777347e9e34c91c864ce2ade19a59c85ebf42ac5e·...·]-1">)</span><span·class="p">.</span><span·class="w">
651 </span><span·class="p"·data-group-id="7781357548-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:·2e71835385f7835eb232b6e7d8a191c0330ac17f7c44770775b50cf3a14a72f3·...·]-3">]</span></code></pre></li></ul>651 </span><span·class="p"·data-group-id="8894708855-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:·aa96b74ed5c5996659623d848737acd164c7256934ffcbc9ae7947537bbcea06·...·]-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="1895774577-1">(</span><span·class="mi">1000</span><span·class="p"·data-group-id="1895774577-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:·ad2b94ab7576eda48900def2d2c17ce6a27fd70bd978c279a43e39fb34763552·...·]-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="7771485588-1">(</span><span·class="mi">1000</span><span·class="p"·data-group-id="7771485588-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:·e531c2260bae3852317e16a9a1546d9a5a45431c2a53a5c6d71cd4d896ea3992·...·]-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.6/doc/html/time_correction.html#os-system-time">OS·system·time</a>1079 <p>Returns·the·current·<a·href="../../../../erts-15.2.6/doc/html/time_correction.html#os-system-time">OS·system·time</a>
1080 in·the·same·format·as·<a·href="../../../../erts-15.2.6/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.2/doc/html/calendar.html#now_to_universal_time/1"><code·class="inline">calendar:now_to_universal_time/1</code></a>1080 in·the·same·format·as·<a·href="../../../../erts-15.2.6/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.2/doc/html/calendar.html#now_to_universal_time/1"><code·class="inline">calendar:now_to_universal_time/1</code></a>
1081 or·<a·href="../../../../lib/stdlib-6.2.2/doc/html/calendar.html#now_to_local_time/1"><code·class="inline">calendar:now_to_local_time/1</code></a>·to·get·calendar·time.·Using·the·calendar·time,1081 or·<a·href="../../../../lib/stdlib-6.2.2/doc/html/calendar.html#now_to_local_time/1"><code·class="inline">calendar:now_to_local_time/1</code></a>·to·get·calendar·time.·Using·the·calendar·time,
1082 together·with·the·<code·class="inline">MicroSecs</code>·part·of·the·return·tuple·from·this·function,1082 together·with·the·<code·class="inline">MicroSecs</code>·part·of·the·return·tuple·from·this·function,
1083 allows·you·to·log·time·stamps·in·high·resolution·and·consistent·with·the·time·in1083 allows·you·to·log·time·stamps·in·high·resolution·and·consistent·with·the·time·in
1084 ·the·rest·of·the·OS.</p><p>Example·of·code·formatting·a·string·in·format·&quot;DD·Mon·YYYY·HH:MM:SS.mmmmmm&quot;,1084 ·the·rest·of·the·OS.</p><p>Example·of·code·formatting·a·string·in·format·&quot;DD·Mon·YYYY·HH:MM:SS.mmmmmm&quot;,
1085 where·DD·is·the·day·of·month,·Mon·is·the·textual·month·name,·YYYY·is·the·year,1085 where·DD·is·the·day·of·month,·Mon·is·the·textual·month·name,·YYYY·is·the·year,
1086 HH:MM:SS·is·the·time,·and·mmmmmm·is·the·microseconds·in·six·positions:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="4909272444-1">(</span><span·class="ss">print_time</span><span·class="p"·data-group-id="4909272444-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="9490683247-1">(</span><span·class="ss">print_time</span><span·class="p"·data-group-id="9490683247-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="4909272444-2">(</span><span·class="p"·data-group-id="4909272444-3">[</span><span·class="ss">format_utc_timestamp</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="4909272444-3">]</span><span·class="p"·data-group-id="4909[·...·truncated·by·diffoscope;·len:·6,·SHA:·a1688a5db1653296a114ae687f6b98c30835ada61cab14566c96ae4291e10dea·...·]-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="9490683247-2">(</span><span·class="p"·data-group-id="9490683247-3">[</span><span·class="ss">format_utc_timestamp</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="9490683247-3">]</span><span·class="p"·data-group-id="9490[·...·truncated·by·diffoscope;·len:·6,·SHA:·15c617d7d95464b74c8a8c7d5ce26bc3e2eb88215b8784fba2c282b982bb8309·...·]-2">)</span><span·class="p">.</span><span·class="w">
1088 </span><span·class="nf">format_utc_timestamp</span><span·class="p"·data-group-id="4909272444-4">(</span><span·class="p"·data-group-id="4909272444-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="9490683247-4">(</span><span·class="p"·data-group-id="9490683247-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="4909272444-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="4909272444-5">}</span><span·class="w">·</span><span·class="o">=</span><span·cla[·...·truncated·by·diffoscope;·len:·192,·SHA:·0a9ea5405db3f1a6f09e3a9c35728c77c89d8bb7730f33b7e4ea84a729fdf65c·...·]-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="9490683247-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="9490683247-5">}</span><span·class="w">·</span><span·class="o">=</span><span·cla[·...·truncated·by·diffoscope;·len:·192,·SHA:·9372f63379565d5119ce594a68b23e034c35959595dcdda205a6727ba4434814·...·]-6">)</span><span·class="p">,</span><span·class="w">
1090 ····</span><span·class="p"·data-group-id="4909272444-7">{</span><span·class="p"·data-group-id="4909272444-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="4909272444-8">}</span[·...·truncated·by·diffoscope;·len:·305,·SHA:·1e5f4b3aa663c2a364241a45bb74c710f5b4f5e3b6ae352a87bad0d64db9a6ce·...·]-7">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">1090 ····</span><span·class="p"·data-group-id="9490683247-7">{</span><span·class="p"·data-group-id="9490683247-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="9490683247-8">}</span[·...·truncated·by·diffoscope;·len:·305,·SHA:·88d187e66f66b0a2b0afb8d79c0ddd33e5f6cd06c49ad4544b26d042504a5102·...·]-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="4909272444-10">(</span><span·class="n">TS</span><span·class="p"·data-group-id="4909272444-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="9490683247-10">(</span><span·class="n">TS</span><span·class="p"·data-group-id="9490683247-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="4909272444-11">(</span><span·class="n">Month</span><span·class="p">,</span><span·class="p"·data-group-id="4909272444-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="9490683247-11">(</span><span·class="n">Month</span><span·class="p">,</span><span·class="p"·data-group-id="9490683247-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="4909272444-12">}</span><span·class="p"·data-group-id="4909272444-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="9490683247-12">}</span><span·class="p"·data-group-id="9490683247-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="4909272444-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="9490683247-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="4909272444-14">[</span><span·class="n">Day</span><span·class="p">,</span><span·class="n">Mstr</span><span·class="p">,</span><span·class="n">Year</span><span·class="p">,</span><span·class="n">Hour</span><span·class="p">,</span><span·class="n">Minute</span><[·...·truncated·by·diffoscope;·len:·1004,·SHA:·aaaf5698f285ce3abfc5d70d7179d823e56ad00b76525ba530aedc75cb0468d9·...·]-1">)</span><span·class="p">.</span><span·class="w">1095 ····</span><span·class="p"·data-group-id="9490683247-14">[</span><span·class="n">Day</span><span·class="p">,</span><span·class="n">Mstr</span><span·class="p">,</span><span·class="n">Year</span><span·class="p">,</span><span·class="n">Hour</span><span·class="p">,</span><span·class="n">Minute</span><[·...·truncated·by·diffoscope;·len:·1004,·SHA:·b894335f0aa29373e442a46c9458f5905bd2bb5aade4348a2b039d588097fbe0·...·]-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.6/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.6/doc/html/erlang.html#t:atom/0">atom</a>())·->·{<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:reference/0">reference</a>(),·#{<a·href="#t:group/0">group</a>()·=>·[<a·href="../../../../erts-15.2.6/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.6/doc/html/erlang.html#t:atom/0">atom</a>())·->·{<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:reference/0">reference</a>(),·#{<a·href="#t:group/0">group</a>()·=>·[<a·href="../../../../erts-15.2.6/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="8573985186-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:·b1352a2a95b203e769b0f8544e4c41124d4bf63fe624850124d34557764f65c1·...·]-1">}</span></code></pre>840 subscriber:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="6192476605-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:·85d088706e1ffc82a007e2d41129847129a65aff9d9625a4112a9659c8c1313d·...·]-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.6/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.6/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.6/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="2154870132-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="2154870132-1">}</span><span·[·...·truncated·by·diffoscope;·len:·277,·SHA:·b9899de9e9bb6434265ed5c46aed61798b8f569e855bb5929614055f784ffc39·...·]-2">)</span><span·class="p">,</span><span·class="w">1050 </span><span·class="p"·data-group-id="9083511951-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="9083511951-1">}</span><span·[·...·truncated·by·diffoscope;·len:·277,·SHA:·1f6aa646078d0d543523ce4bcfb2979cef6d1a6e2625f9bd0b0cfd1511fcb18f·...·]-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="2154870132-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="2154870132-3">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·608,·SHA:·a7b50cef65b5fa4b26367ffade3a28faf88d66ae180ec93691a4d608e93be335·...·]-4">)</span><span·class="p">,</span><span·class="w">1052 </span><span·class="p"·data-group-id="9083511951-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="9083511951-3">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·608,·SHA:·cf53b1acdb2caf6e20d63d637f170cee581d1399705491057432fbeaeab289ae·...·]-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.6/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="3304637703-1">(</span><span·class="p"·data-group-id="3304637703-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="1831363405-1">(</span><span·class="p"·data-group-id="1831363405-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="3304637703-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="3304637[·...·truncated·by·diffoscope;·len:·3,·SHA:·769e881d85fc5d27cb4cbc8382200d95b179cfdeb56e0b439da737069eaf8a5a·...·]-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="1831363405-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="1831363[·...·truncated·by·diffoscope;·len:·3,·SHA:·a73b320dc0d3a57c03f897eb28ca91e623c5ee635db59476ba3178c90b94019f·...·]-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="3304637703-3">(</span><span·class="p"·data-group-id="3304637703-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="1831363405-3">(</span><span·class="p"·data-group-id="1831363405-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="6691762717-1">(</span><span·class="ss">seqex</span><span·class="p"·data-group-id="6691762717-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="8534105133-1">(</span><span·class="ss">seqex</span><span·class="p"·data-group-id="8534105133-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="6691762717-2">(</span><span·class="ss">export_all</span><span·class="p"·data-group-id="6691762717-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="8534105133-2">(</span><span·class="ss">export_all</span><span·class="p"·data-group-id="8534105133-2">)</span><span·class="p">.</span><span·class="w">
  
292 </span><span·class="nf">loop</span><span·class="p"·data-group-id="6691762717-3">(</span><span·class="n">Port</span><span·class="p"·data-group-id="6691762717-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="8534105133-3">(</span><span·class="n">Port</span><span·class="p"·data-group-id="8534105133-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="6691762717-4">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="n">Message</span><span·class="p"·data-group-id="6691762717-4">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">294 ········</span><span·class="p"·data-group-id="8534105133-4">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="n">Message</span><span·class="p"·data-group-id="8534105133-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="6691762717-5">(</span><span·class="ss">label</span><span·class="p">,</span><span·class="mi">17</span><span·class="p"·data-group-id="6691762717-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="8534105133-5">(</span><span·class="ss">label</span><span·class="p">,</span><span·class="mi">17</span><span·class="p"·data-group-id="8534105133-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="6691762717-6">(</span><span·class="ss">&#39;receive&#39;</span><span·class="p">,</span><span·class="ss">true</span><span·class="p"·data-group-id="6691762717-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="8534105133-6">(</span><span·class="ss">&#39;receive&#39;</span><span·class="p">,</span><span·class="ss">true</span><span·class="p"·data-group-id="8534105133-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="6691762717-7">(</span><span·class="ss">print</span><span·class="p">,</span><span·class="ss">true</span><span·class="p"·data-group-id="6691762717-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="8534105133-7">(</span><span·class="ss">print</span><span·class="p">,</span><span·class="ss">true</span><span·class="p"·data-group-id="8534105133-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="6691762717-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="6691762717-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="8534105133-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="8534105133-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="6691762717-9">{</span><span·class="nf">self</span><span·class="p"·data-group-id="6691762717-10">(</span><span·class="p"·data-group-id="6691762717-10">)</span><span·class="p">,</span><span·class="ss">the_message</span><span·class="p"·data-group-id="66917627[·...·truncated·by·diffoscope;·len:·2,·SHA:·4523540f1504cd17100c4835e85b7eefd49911580f8efff0599a8f283be6b9e3·...·]-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="8534105133-9">{</span><span·class="nf">self</span><span·class="p"·data-group-id="8534105133-10">(</span><span·class="p"·data-group-id="8534105133-10">)</span><span·class="p">,</span><span·class="ss">the_message</span><span·class="p"·data-group-id="85341051[·...·truncated·by·diffoscope;·len:·2,·SHA:·c6f3ac57944a531490cd39902d0f777715fd005efac9a30622d5f5205e7f6894·...·]-9">}</span><span·class="p">;</span><span·class="w">
300 ········</span><span·class="p"·data-group-id="6691762717-11">{</span><span·class="ss">ack</span><span·class="p">,</span><span·class="n">Ack</span><span·class="p"·data-group-id="6691762717-11">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">300 ········</span><span·class="p"·data-group-id="8534105133-11">{</span><span·class="ss">ack</span><span·class="p">,</span><span·class="n">Ack</span><span·class="p"·data-group-id="8534105133-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="6691762717-12">(</span><span·class="n">Port</span><span·class="p"·data-group-id="6691762717-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:·38d6e017b404fd742c43551f7202c124b3741ef4ad73d4beebb7ca1081814680·...·]-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="8534105133-12">(</span><span·class="n">Port</span><span·class="p"·data-group-id="8534105133-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:·c779feb8a60a29d8688ab93ff91e20784507dca25a1d4b09a7f27aba7c27caa0·...·]-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="7804197437-2">{</span><span·class="n">PortController</span><span·class="p">,</span><span·class="n">Message</span><span·class="p"·data-group-id="7804197437-2">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">305 ········</span><span·class="p"·data-group-id="3287587689-2">{</span><span·class="n">PortController</span><span·class="p">,</span><span·class="n">Message</span><span·class="p"·data-group-id="3287587689-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="7804197437-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="7804197437-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="3287587689-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="3287587689-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="7804197437-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="7804197437-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="3287587689-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="3287587689-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="7804197437-5">{</span><span·class="ss">ack</span><span·class="p">,</span><span·class="n">Ack</span><span·class="p"·data-group-id="7804197437-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="3287587689-5">{</span><span·class="ss">ack</span><span·class="p">,</span><span·class="n">Ack</span><span·class="p"·data-group-id="3287587689-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="7804197437-6">(</span><span·class="p"·data-group-id="7804197437-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:·1253438eba2d78fd7ddacef276f597dabaf5f646ac90c16dd9ffc23b489e8c85·...·]-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="3287587689-6">(</span><span·class="p"·data-group-id="3287587689-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:·c02ebc0ddeb492f06a0eaf70918077f368dfbfa17ca0f4aeb72a703eced6cf1f·...·]-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="3707676973-2">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="3707676973-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="4600032815-2">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="4600032815-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="3707676973-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="3707676973-3">}</span><span·class="w">313 </span><span·class="p"·data-group-id="4600032815-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="4600032815-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="3707676973-4">{</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="3707676973-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="4600032815-4">{</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="4600032815-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="3707676973-5">{</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">4</span><span·class="p"·data-group-id="3707676973-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="4600032815-5">{</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">4</span><span·class="p"·data-group-id="4600032815-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="3707676973-6">{</span><span·class="ss">ack</span><span·class="p">,</span><span·class="p"·data-group-id="3707676973-7">{</span><span·class="ss">received</span><span·class="p">,</span><span·class="ss">the_message</span><span·class="p"·data-group-id="37076769[·...·truncated·by·diffoscope;·len:·55,·SHA:·58cb99f1f0c1de55cc789c05576af21cf8b752734753997b716791ceea11d0fd·...·]-6">}</span></code></pre><p>The·implementation·of·a·system·tracer·process·that·produces·this·printout·can317 </span><span·class="p"·data-group-id="4600032815-6">{</span><span·class="ss">ack</span><span·class="p">,</span><span·class="p"·data-group-id="4600032815-7">{</span><span·class="ss">received</span><span·class="p">,</span><span·class="ss">the_message</span><span·class="p"·data-group-id="46000328[·...·truncated·by·diffoscope;·len:·55,·SHA:·d3c9887d8092d926c88a564b50433e2d468281c7f7836390b80d523fc7203574·...·]-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="1747712159-1">(</span><span·class="p"·data-group-id="1747712159-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="1350245030-1">(</span><span·class="p"·data-group-id="1350245030-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="1747712159-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="1747712159-2">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">320 ········</span><span·class="p"·data-group-id="1350245030-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="1350245030-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="1747712159-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="1747712159-3">)</span><span·class="p">;</span><span·class="w">321 ···········</span><span·class="nf">print_trace</span><span·class="p"·data-group-id="1350245030-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="1350245030-3">)</span><span·class="p">;</span><span·class="w">
322 ········</span><span·class="p"·data-group-id="1747712159-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="1747712159-4">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">322 ········</span><span·class="p"·data-group-id="1350245030-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="1350245030-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="1747712159-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="1747712159-5">)</span><span·class="p">;</span><span·class="w">323 ···········</span><span·class="nf">print_trace</span><span·class="p"·data-group-id="1350245030-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="1350245030-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="1747712159-6">(</span><span·class="p"·data-group-id="1747712159-6">)</span><span·class="p">.</span><span·class="w">326 ····</span><span·class="nf">tracer</span><span·class="p"·data-group-id="1350245030-6">(</span><span·class="p"·data-group-id="1350245030-6">)</span><span·class="p">.</span><span·class="w">
  
327 </span><span·class="nf">print_trace</span><span·class="p"·data-group-id="1747712159-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="1747712159-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="1350245030-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="1350245030-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="1747712159-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="1747712159-9">[</span><span·class="n">Label</span><span·class="p"·data-group-id="1747712159-9">[·...·truncated·by·diffoscope;·len:·49,·SHA:·8141e2af57e640bc647417b8f521d6528e6be7c559bb9988d95004bdc42701ba·...·]-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="1350245030-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="1350245030-9">[</span><span·class="n">Label</span><span·class="p"·data-group-id="1350245030-9">[·...·truncated·by·diffoscope;·len:·49,·SHA:·832a4b963d649fb07216ec58375f7082d3d3b673874b229b509fa383d9d40004·...·]-8">)</span><span·class="p">,</span><span·class="w">
329 ····</span><span·class="nf">print_trace</span><span·class="p"·data-group-id="1747712159-10">(</span><span·class="n">TraceInfo</span><span·class="p"·data-group-id="1747712159-10">)</span><span·class="p">;</span><span·class="w">329 ····</span><span·class="nf">print_trace</span><span·class="p"·data-group-id="1350245030-10">(</span><span·class="n">TraceInfo</span><span·class="p"·data-group-id="1350245030-10">)</span><span·class="p">;</span><span·class="w">
330 </span><span·class="nf">print_trace</span><span·class="p"·data-group-id="1747712159-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="1747712159-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="1350245030-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="1350245030-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="1747712159-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="1747712159-13">[</span><span·class="n">Label[·...·truncated·by·diffoscope;·len:·151,·SHA:·1a4470eb7c6492d5e7d291101d40508a43f110e4bbeab899e169af3be3dab82e·...·]-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="1350245030-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="1350245030-13">[</span><span·class="n">Label[·...·truncated·by·diffoscope;·len:·151,·SHA:·1a09a10990eba3a00af2d485ef60420023f770f1cdf4ba7d98c364e782213385·...·]-12">)</span><span·class="p">,</span><span·class="w">
332 ····</span><span·class="nf">print_trace</span><span·class="p"·data-group-id="1747712159-14">(</span><span·class="n">TraceInfo</span><span·class="p"·data-group-id="1747712159-14">)</span><span·class="p">.</span><span·class="w">332 ····</span><span·class="nf">print_trace</span><span·class="p"·data-group-id="1350245030-14">(</span><span·class="n">TraceInfo</span><span·class="p"·data-group-id="1350245030-14">)</span><span·class="p">.</span><span·class="w">
  
333 </span><span·class="nf">print_trace</span><span·class="p"·data-group-id="1747712159-15">(</span><span·class="p"·data-group-id="1747712159-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">_</span[·...·truncated·by·diffoscope;·len:·147,·SHA:·7fa0dbd58554965774a2dc525b484fe8d65599221dfe52278589977447948022·...·]-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="1350245030-15">(</span><span·class="p"·data-group-id="1350245030-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">_</span[·...·truncated·by·diffoscope;·len:·147,·SHA:·8a2030e13afd1008aa49cc7e589b7494897c010c5f2581d425833d9c5ea0948f·...·]-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="1747712159-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">&q[·...·truncated·by·diffoscope;·len:·339,·SHA:·53249b1a67502b36e47304e649d360050bc3584d1ccc36631e909d591ea79e73·...·]-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="1350245030-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">&q[·...·truncated·by·diffoscope;·len:·339,·SHA:·5666d3c94cbd6edb0bf06d09bd7f361e2d8e7966efb407fb00601744d7b14e74·...·]-17">)</span><span·class="p">;</span><span·class="w">
335 </span><span·class="nf">print_trace</span><span·class="p"·data-group-id="1747712159-19">(</span><span·class="p"·data-group-id="1747712159-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·class[·...·truncated·by·diffoscope;·len:·163,·SHA:·78e88fbe36871cc7252806085ec439cae19acb542b239f64ec01249533200edf·...·]-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="1350245030-19">(</span><span·class="p"·data-group-id="1350245030-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·class[·...·truncated·by·diffoscope;·len:·163,·SHA:·0b074deb61454f247697f9b56d0ab8b69f423fe96010293d3b6c7668a8f596c0·...·]-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="1747712159-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="1350245030-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="1747712159-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="1747712159-22">]</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·7f1e0747a3301a06c318a8b5282626763ea2cbfea4e17acb61bd3e9d57c477cc·...·]-21">)</span><span·class="p">;</span><span·class="w">337 ··············</span><span·class="p"·data-group-id="1350245030-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="1350245030-22">]</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·4864a80cf3993e79a52016cf2ff9130a4403df4441e7444f4ee6bdbcd91afda7·...·]-21">)</span><span·class="p">;</span><span·class="w">
338 </span><span·class="nf">print_trace</span><span·class="p"·data-group-id="1747712159-23">(</span><span·class="p"·data-group-id="1747712159-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</span[·...·truncated·by·diffoscope;·len:·150,·SHA:·77c5ce288979fe95cfbd22e093db03791d1128ac6db608584de61f723917835c·...·]-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="1350245030-23">(</span><span·class="p"·data-group-id="1350245030-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</span[·...·truncated·by·diffoscope;·len:·150,·SHA:·6e695d8a6b9a8e1c4a877887f0be30d5f03889c4d2ffb47213df3e0a8fc93426·...·]-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="1747712159-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="1350245030-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="1747712159-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="1747712159-26">]</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·7f1e0747a3301a06c318a8b5282626763ea2cbfea4e17acb61bd3e9d57c477cc·...·]-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="1350245030-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="1350245030-26">]</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·4864a80cf3993e79a52016cf2ff9130a4403df4441e7444f4ee6bdbcd91afda7·...·]-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="0504250572-1">(</span><span·class="p"·data-group-id="0504250572-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="2526909482-1">(</span><span·class="p"·data-group-id="2526909482-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="0504250572-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="0504250572-3">[</span><span·class="p"·data-group-id="0504250572-3">]</sp[·...·truncated·by·diffoscope;·len:·43,·SHA:·c258949be113583500108acc373780f1bc241d0a3d72acac4e47432e7669aa44·...·]2-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="2526909482-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="2526909482-3">[</span><span·class="p"·data-group-id="2526909482-3">]</sp[·...·truncated·by·diffoscope;·len:·43,·SHA:·1242acc788c0c8ecb1513b62e869af9229741536447aeb453a9aca3083101cdc·...·]2-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="0504250572-4">(</span><span·class="n">Pid</span><span·class="p"·data-group-id="0504250572-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="2526909482-4">(</span><span·class="n">Pid</span><span·class="p"·data-group-id="2526909482-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="4479795399-1">(</span><span·class="p"·data-group-id="4479795399-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="8636390920-1">(</span><span·class="p"·data-group-id="8636390920-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="4479795399-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="4479795399-3">[</span><spa[·...·truncated·by·diffoscope;·len:·118,·SHA:·da010bc6baa2ca2147ce3d20d5fc1a8e7be17c95c00fbd62430b7186360d3725·...·]-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="8636390920-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="8636390920-3">[</span><spa[·...·truncated·by·diffoscope;·len:·118,·SHA:·b77566101b1431cf21118175e12291406f1cb14de0243c54ae5c9f6895737665·...·]-2">)</span><span·class="p">,</span><span·class="w">
346 ····</span><span·class="nf">register</span><span·class="p"·data-group-id="4479795399-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="4479795399-5">(</span><span·class="o">?</span><span·class="n">MODULE</span><span·class="p">[·...·truncated·by·diffoscope;·len:·308,·SHA:·837681fbf97326029b137d58b228e9ed2fc80e8441e2619af7ce237bf99de486·...·]-4">)</span><span·class="p">,</span><span·class="w">346 ····</span><span·class="nf">register</span><span·class="p"·data-group-id="8636390920-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="8636390920-5">(</span><span·class="o">?</span><span·class="n">MODULE</span><span·class="p">[·...·truncated·by·diffoscope;·len:·308,·SHA:·9934d8a6139c007c6e5dc8734265bcb37684bb7a3cffc9b5d577809392be8d80·...·]-4">)</span><span·class="p">,</span><span·class="w">
347 ····</span><span·class="nf">start</span><span·class="p"·data-group-id="4479795399-7">(</span><span·class="p"·data-group-id="4479795399-7">)</span><span·class="p">,</span><span·class="w">347 ····</span><span·class="nf">start</span><span·class="p"·data-group-id="8636390920-7">(</span><span·class="p"·data-group-id="8636390920-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="4479795399-8">{</span><span·class="ss">port</span><span·class="p">,</span><span·class="ss">message</span><span·class="p"·data-group-id="4479795399-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="8636390920-8">{</span><span·class="ss">port</span><span·class="p">,</span><span·class="ss">message</span><span·class="p"·data-group-id="8636390920-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="4216356580-1">(</span><span·class="p"·data-group-id="4216356580-2">[</span><span·class="p"·data-group-id="4216356580-2">]</span><span·class="p"·data-group-id="4216356580-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="9495334604-1">(</span><span·class="p"·data-group-id="9495334604-2">[</span><span·class="p"·data-group-id="9495334604-2">]</span><span·class="p"·data-group-id="9495334604-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="4216356580-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="4216356580-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="9495334604-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="9495334604-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="4216356580-4">(</span><span·class="n">OldToken</span><span·class="p"·data-group-id="4216356580-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="9495334604-4">(</span><span·class="n">OldToken</span><span·class="p"·data-group-id="9495334604-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">
41.4 KB
./usr/share/doc/erlang-doc/html/lib/kernel-10.2.6/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.6/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.6/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.6/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.6/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="2813524389-1">{</span><span·class="ss">select</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2813524389-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:·2742842024cb8e1e338dc78affd31c2c9228effae582dd1a37df28c9a4c768dc·...·]-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="9268749876-1">{</span><span·class="ss">select</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9268749876-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:·b72748fc2c6ef5c7635cbc038ca04ccb0d449d26939b399275e0e17b35fd22f3·...·]-3">)</span><span·class="p">,</span><span·class="w">
176 ····</span><span·class="p"·data-group-id="2813524389-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="2813524389-4">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·280,·SHA:·b4a9bbbdd17174eeee11a64d3988108b928fb171ccd57515bdf5958f5dcf7f92·...·]-5">)</span><span·class="p">,</span><span·class="w">176 ····</span><span·class="p"·data-group-id="9268749876-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="9268749876-4">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·280,·SHA:·363157c0c6ef55b9bda9ecfbd679ae8d02694b400d5cd2e5ffb008061a3cfee6·...·]-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="9055918566-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="9055918566-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="1416870869-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="1416870869-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
210 ···</span><span·class="p"·data-group-id="9055918566-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="9055918566-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·349,·SHA:·567a75919818f54d7903162e5762f329d3986b87d2beee75513b97f174ee8e4a·...·]-3">)</span><span·class="p">,</span><span·class="w">210 ···</span><span·class="p"·data-group-id="1416870869-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="1416870869-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·349,·SHA:·31de2a51f67824be5fa39a92a6eec93bdde825c2c4f61192ed345cbe4b8a0b72·...·]-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="9055918566-4">(</span><span·class="n">Sock</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9055918566-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="1416870869-4">(</span><span·class="n">Sock</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1416870869-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="9055918566-5">}</span><span·class="p"·data-group-id="9055918566-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="1416870869-5">}</span><span·class="p"·data-group-id="1416870869-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="9055918566-6">&lt;&lt;</span><span·class="s">&quot;hello&quot;</span><span·class="p"·data-group-id="9055918566-6">&gt;&gt;</span><span·class="p">,</span><span·class="w">214 ···</span><span·class="n">Msg</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="1416870869-6">&lt;&lt;</span><span·class="s">&quot;hello&quot;</span><span·class="p"·data-group-id="1416870869-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="9055918566-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="9055918566-7">)</span><span·class="p">,</span><span·class="w">215 ···</span><span·class="ss">ok</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">socket</span><span·class="p">:</span><span·class="nf">send</span><span·class="p"·data-group-id="1416870869-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="1416870869-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="9055918566-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="9055918566-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="1416870869-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="1416870869-8">)</span><span·class="p">,</span><span·class="w">
217 ···</span><span·class="p"·data-group-id="9055918566-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="9055918566-9">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·195,·SHA:·ffd2b88ad06cde70231a54f6a86403255f8dbc6635605f3d7450b02268e445e7·...·]-10">)</span><span·class="p">,</span><span·class="w">217 ···</span><span·class="p"·data-group-id="1416870869-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="1416870869-9">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·195,·SHA:·1084db9f937ab87b31340ca4032603467d31159d00dacb0ed2cd2982abfe9402·...·]-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="9055918566-11">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="9055918566-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="1416870869-11">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="1416870869-11">)</span><span·class="p">.</span><span·class="w">
  
219 </span><span·class="nf">server</span><span·class="p"·data-group-id="9055918566-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="9055918566-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="1416870869-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="1416870869-12">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
220 ···</span><span·class="p"·data-group-id="9055918566-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="9055918566-13">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·353,·SHA:·c3e20beb2fb91c3511ce6c47ae6d47fac01c9e711872878f99b30527a40b34e7·...·]-14">)</span><span·class="p">,</span><span·class="w">220 ···</span><span·class="p"·data-group-id="1416870869-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="1416870869-13">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·353,·SHA:·6eb8d52e065d4e2b8fb5418685e5e4ae7485822c910057ab818bddbe6b65f3e4·...·]-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="9055918566-15">(</span><span·class="n">LSock</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9055918566-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="1416870869-15">(</span><span·class="n">LSock</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1416870869-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="9055918566-16">}</span><span·class="p"·data-group-id="9055918566-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="1416870869-16">}</span><span·class="p"·data-group-id="1416870869-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="9055918566-17">(</span><span·class="n">LSock</span><span·class="p"·data-group-id="9055918566-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="1416870869-17">(</span><span·class="n">LSock</span><span·class="p"·data-group-id="1416870869-17">)</span><span·class="p">,</span><span·class="w">
225 ···</span><span·class="p"·data-group-id="9055918566-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="9055918566-18">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·201,·SHA:·3a24940dcd3fee36b4e249c165020a2215fd6392e5f365422c98ea6793ba3525·...·]-19">)</span><span·class="p">,</span><span·class="w">225 ···</span><span·class="p"·data-group-id="1416870869-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="1416870869-18">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·201,·SHA:·6d95ef2ff8beb6672eec330ebf1f9affa67e292ca1836b8d11e247aed56d6d6e·...·]-19">)</span><span·class="p">,</span><span·class="w">
226 ···</span><span·class="p"·data-group-id="9055918566-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="9055918566-20">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·197,·SHA:·73db0890bdcba6764214790222a13480f3673e2632177341b946efa9c35725a3·...·]-21">)</span><span·class="p">,</span><span·class="w">226 ···</span><span·class="p"·data-group-id="1416870869-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="1416870869-20">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·197,·SHA:·5b4bc4eb1fba000cf748ce79dbadf1ac6dac8c554f2c090e765ae903b79bb8e8·...·]-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="9055918566-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="9055918566-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="1416870869-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="1416870869-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="9055918566-23">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="9055918566-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="1416870869-23">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="1416870869-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="9055918566-24">(</span><span·class="n">LSock</span><span·class="p"·data-group-id="9055918566-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="1416870869-24">(</span><span·class="n">LSock</span><span·class="p"·data-group-id="1416870869-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.6/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.6/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.6/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.6/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.6/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.6/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.6/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.6/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.6/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.6/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="2274501550-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="2274501550-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="0062734735-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="0062734735-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.6/doc/html/erlang.html#t:term/0">term</a>())·->·<a·href="../../../../erts-15.2.6/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.6/doc/html/erlang.html#t:term/0">term</a>())·->·<a·href="../../../../erts-15.2.6/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="9311258631-1">(</span><span·class="ss">local</span><span·class="p"·data-group-id="9311258631-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="5407937331-1">(</span><span·class="ss">local</span><span·class="p"·data-group-id="5407937331-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.6/doc/html/erlang.html#t:term/0">term</a>(),·Key2·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:term/0">term</a>())·->·<a·href="../../../../erts-15.2.6/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.6/doc/html/erlang.html#t:term/0">term</a>(),·Key2·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:term/0">term</a>())·->·<a·href="../../../../erts-15.2.6/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="9135086052-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="9135086052-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="9980997070-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="9980997070-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.6/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.6/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="3314201488-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:·fa43ce9a1f4b7680a32bda10be2ce3510072869192ff7f1b930345bc27d236f9·...·]-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="5324920225-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:·84f28e24f16294beab3829b9ce21fdf465e85579ecbe48dbed320f9a29513e6d·...·]-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">
Offset 5354, 33 lines modifiedOffset 5354, 33 lines modified
5354 if·no·data·has·arrived·after·<code·class="inline">Timeout</code>·milliseconds,5354 if·no·data·has·arrived·after·<code·class="inline">Timeout</code>·milliseconds,
5355 or·<code·class="inline">{error, {timeout, Data}}</code>·if·some·but·not·enough·data5355 or·<code·class="inline">{error, {timeout, Data}}</code>·if·some·but·not·enough·data
5356 has·been·received·on·a·socket·of·<a·href="#t:type/0">type·<code·class="inline">stream</code></a>.5356 has·been·received·on·a·socket·of·<a·href="#t:type/0">type·<code·class="inline">stream</code></a>.
5357 It·<em>can</em>·also·return·directly·with·<code·class="inline">{ok, Data}</code>·(<a·href="#t:type/0">type·<code·class="inline">dgram</code></a>).5357 It·<em>can</em>·also·return·directly·with·<code·class="inline">{ok, Data}</code>·(<a·href="#t:type/0">type·<code·class="inline">dgram</code></a>).
5358 On·Unix,·if·will·return·<code·class="inline">{error,·timeout}</code>·either·if·no·data5358 On·Unix,·if·will·return·<code·class="inline">{error,·timeout}</code>·either·if·no·data
5359 has·arrived·or·if·not·enough·data·(Length·&gt;·0)·has·arrived.5359 has·arrived·or·if·not·enough·data·(Length·&gt;·0)·has·arrived.
5360 It·is·then·up·to·the·caller·to·make·another·all·to·see·if·5360 It·is·then·up·to·the·caller·to·make·another·all·to·see·if·
5361 some·data·has·arrived·(and·was·stored·internally):</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">····</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">socket</span><span·class="p">:</span><span·class="nf">recv</span><span·class="p"·data-group-id="0372839709-1">(</span><span·class="n">Socket</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">10</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">5000</span><span·class="p"·data-group-id="0372839709-1">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">5361 some·data·has·arrived·(and·was·stored·internally):</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">····</span><span·class="k">case</span><span·class="w">·</span><span·class="nc">socket</span><span·class="p">:</span><span·class="nf">recv</span><span·class="p"·data-group-id="7994943303-1">(</span><span·class="n">Socket</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">10</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">5000</span><span·class="p"·data-group-id="7994943303-1">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
5362 ········</span><span·class="p"·data-group-id="0372839709-2">{</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="0372839709-2">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="c1">%·10·bytes·of·data</span><span·class="w">5362 ········</span><span·class="p"·data-group-id="7994943303-2">{</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="7994943303-2">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="c1">%·10·bytes·of·data</span><span·class="w">
Max diff block lines reached; 6576/42225 bytes (15.57%) of diff not shown.
179 KB
./usr/share/doc/erlang-doc/html/lib/kernel-10.2.6/doc/html/socket_usage.html
    
Offset 182, 347 lines modifiedOffset 182, 347 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),·handling·both·'select'·and·'completion'·(Unix·and·Windows).</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="9484240769-1">(</span><span·class="ss">example</span><span·class="p"·data-group-id="9484240769-1">)</span><span·class="p">.</span><span·class="w">189 (and·client),·handling·both·'select'·and·'completion'·(Unix·and·Windows).</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="7037517942-1">(</span><span·class="ss">example</span><span·class="p"·data-group-id="7037517942-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="9484240769-2">(</span><span·class="p"·data-group-id="9484240769-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:·019d00497746ab996174bd99ca76fcce0eb8d5b0cea300a0de85d7010472c850·...·]-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="7037517942-2">(</span><span·class="p"·data-group-id="7037517942-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:·4f10585425cd6271aa68fb02c6d8c33ba2573aca7604b5fa09def881491b14f6·...·]-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="9484240769-4">(</span><span·class="p"·data-group-id="9484240769-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:·58e60044d8805be60bde488a30cdcf2df61fb6ceb238d625d5c5b1ea10783bcf·...·]-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="7037517942-4">(</span><span·class="p"·data-group-id="7037517942-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:·a86c336399dbbaf034f3e190e76fdeaa3f655efd6777ec4b60d188f083ee079e·...·]-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="9484240769-6">(</span><span·class="p"·data-group-id="9484240769-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="9484240769-7">}</[·...·truncated·by·diffoscope;·len:·229,·SHA:·a6d2e8d88cf61f04b6c962136b98cb19818f56b81e58fbced42a3ebec8873f8f·...·]-6">)</span><span·class="w">195 </span><span·class="nf">client</span><span·class="p"·data-group-id="7037517942-6">(</span><span·class="p"·data-group-id="7037517942-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="7037517942-7">}</[·...·truncated·by·diffoscope;·len:·229,·SHA:·008ef165257e2854b29a6ecc3023a4780bf410c41024fca399cd7fc8f39a4a66·...·]-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="9484240769-8">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="9484240769-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="9484240769-9"[·...·truncated·by·diffoscope;·len:·76,·SHA:·5864d88449b1770bbf07e0517c271686d807c6d70cb7ec19eaf42f82e4e7d0d8·...·]-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="7037517942-8">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="7037517942-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="7037517942-9"[·...·truncated·by·diffoscope;·len:·76,·SHA:·07ba4c26b57053c3d22c1e93136936b4a5e8f2a810fdfee0ad3c4940a805d8d1·...·]-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
197 ····</span><span·class="p"·data-group-id="9484240769-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="9484240769-10">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·357,·SHA:·10cb02c30e29c0c646272ddd0123338fbd5a967fc8f124bd697ba67d6fa63795·...·]-11">)</span><span·class="p">,</span><span·class="w">197 ····</span><span·class="p"·data-group-id="7037517942-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="7037517942-10">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·357,·SHA:·746e7a9e149cbd8b95e4ed4457633742b9c1b66fd20d7ce8c9f0d98eadc91db9·...·]-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="9484240769-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="9484240769-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="7037517942-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="7037517942-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="9484240769-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="9484240769-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="7037517942-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="7037517942-13">)</span><span·class="p">,</span><span·class="w">
200 ····</span><span·class="nf">client_exchange</span><span·class="p"·data-group-id="9484240769-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="9484240769-14">)</span><span·class="p">;</span><span·class="w">200 ····</span><span·class="nf">client_exchange</span><span·class="p"·data-group-id="7037517942-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="7037517942-14">)</span><span·class="p">;</span><span·class="w">
  
201 </span><span·class="nf">client</span><span·class="p"·data-group-id="9484240769-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="9484240769-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="9484240769-16">(</span><span·class="n">ServerPort</span><span·class="p"·data-group-id="9484240769-16">)</span><span·class="w">·</sp[·...·truncated·by·diffoscope;·len:·344,·SHA:·11d59ee5777eea9fa8ef1c3d701bf0f814ecae547aae2715b072883611940fb9·...·]</span><span·class="w">201 </span><span·class="nf">client</span><span·class="p"·data-group-id="7037517942-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="7037517942-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="7037517942-16">(</span><span·class="n">ServerPort</span><span·class="p"·data-group-id="7037517942-16">)</span><span·class="w">·</span><span·class="nf">andalso</span><span·class="w">·</span><span·class="p"·data-group-id="7037517942-17">(</span><span·class="n">ServerPort</span><span·class="w">·</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="mi">0</span><span·class="p"·data-group-id="7037517942-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="9484240769-18">(</span><span·class="n">Family</span><span·class="p"·data-group-id="9484240769-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="7037517942-18">(</span><span·class="n">Family</span><span·class="p"·data-group-id="7037517942-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="9484240769-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="7037517942-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="9484240769-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="7037517942-19">}</span><span·class="p">,</span><span·class="w">
208 ····</span><span·class="nf">client</span><span·class="p"·data-group-id="9484240769-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="9484240769-20">)</span><span·class="p">.</span><span·class="w">208 ····</span><span·class="nf">client</span><span·class="p"·data-group-id="7037517942-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="7037517942-20">)</span><span·class="p">.</span><span·class="w">
  
209 </span><span·class="nf">client</span><span·class="p"·data-group-id="9484240769-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="9484240769-21">)</span><span·class="w">209 </span><span·class="nf">client</span><span·class="p"·data-group-id="7037517942-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="7037517942-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="9484240769-22">(</span><span·class="n">ServerPort</span><span·class="p"·data-group-id="9484240769-22">)</span><span·class="w">·</span><span·class="nf">andalso</span><span·class="w">·</span><span·class="p"·data-group-id="9484240769-23">(</span><span·class="[·...·truncated·by·diffoscope;·len:·161,·SHA:·b2d9b52be6afa2627fd7895d36a80ee338d7c51863d1899000ff8c6f4da9a526·...·]-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="7037517942-22">(</span><span·class="n">ServerPort</span><span·class="p"·data-group-id="7037517942-22">)</span><span·class="w">·</span><span·class="nf">andalso</span><span·class="w">·</span><span·class="p"·data-group-id="7037517942-23">(</span><span·class="[·...·truncated·by·diffoscope;·len:·161,·SHA:·e2db233b3f5e655c58fe6277daeeecf47e32b9548350418675fa7df7e02ea284·...·]-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="9484240769-24">(</span><span·class="n">ServerAddr</span><span·class="p"·data-group-id="9484240769-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="7037517942-24">(</span><span·class="n">ServerAddr</span><span·class="p"·data-group-id="7037517942-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="9484240769-25">(</span><span·class="n">ServerAddr</span><span·class="p"·data-group-id="9484240769-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="7037517942-25">(</span><span·class="n">ServerAddr</span><span·class="p"·data-group-id="7037517942-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="9484240769-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="7037517942-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="9484240769-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="7037517942-26">}</span><span·class="p">,</span><span·class="w">
216 ····</span><span·class="nf">client</span><span·class="p"·data-group-id="9484240769-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="9484240769-27">)</span><span·class="p">.</span><span·class="w">216 ····</span><span·class="nf">client</span><span·class="p"·data-group-id="7037517942-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="7037517942-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="9484240769-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="9484240769-28">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·149,·SHA:·82b9893c7152b34b01662ef6e99cf5fa405945d0a2cd69c88779a3e566cad6d4·...·]-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="7037517942-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="7037517942-28">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·149,·SHA:·d2d9a4471d488989230e364883c8ad98e805775da4028ff0f901c3d364347c9a·...·]-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="9484240769-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="9484240769-31">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="948424076[·...·truncated·by·diffoscope;·len:·55,·SHA:·8b6e04d7ece41858e120f53a80fc4bf3041c3908a87de89a5cf9787ab781ce95·...·]-30">)</span><span·class="p">;</span><span·class="w">219 ····</span><span·class="nf">client_exchange</span><span·class="p"·data-group-id="7037517942-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="7037517942-31">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="703751794[·...·truncated·by·diffoscope;·len:·55,·SHA:·b73d2a707203abc046530f9ce392a2d4138284de141094a7b91b6951accbc621·...·]-30">)</span><span·class="p">;</span><span·class="w">
220 </span><span·class="nf">client_exchange</span><span·class="p"·data-group-id="9484240769-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="9484240769-32">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·151,·SHA:·e87472f75b17bff157e7dbd17a1d9fe5af14a5ca3263589595f16ca48131caf7·...·]-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="7037517942-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="7037517942-32">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·151,·SHA:·11f2e848bc27d06980e03234d652cb40fe50d515c218be6424a9f0d78fff9942·...·]-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="9484240769-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="9484240769-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="7037517942-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="7037517942-34">)</span><span·class="p">,</span><span·class="w">
222 ····</span><span·class="p"·data-group-id="9484240769-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="9484240769-35">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·492,·SHA:·1faefa659ac0ffaa2e32ba28359fcc42d43f65e05095b7d417b2de2c3dbbbfa9·...·]-36">)</span><span·class="p">,</span><span·class="w">222 ····</span><span·class="p"·data-group-id="7037517942-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="7037517942-35">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·492,·SHA:·6637ff41d957e3be7ec014bd5ae83da188613fafeadcc761a18fbd191c51fc3c·...·]-36">)</span><span·class="p">,</span><span·class="w">
223 ····</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="9484240769-38">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="9484240769-38">)</span><span·class="p">,</span><span·class="w">223 ····</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="7037517942-38">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="7037517942-38">)</span><span·class="p">,</span><span·class="w">
224 ····</span><span·class="ss">ok</span><span·class="p">.</span><span·class="w">224 ····</span><span·class="ss">ok</span><span·class="p">.</span><span·class="w">
  
  
225 </span><span·class="c1">%%·======================================================================</span><span·class="w">225 </span><span·class="c1">%%·======================================================================</span><span·class="w">
  
226 </span><span·class="c1">%%·===·Server·===</span><span·class="w">226 </span><span·class="c1">%%·===·Server·===</span><span·class="w">
  
227 </span><span·class="nf">server</span><span·class="p"·data-group-id="9484240769-39">(</span><span·class="p"·data-group-id="9484240769-39">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">227 </span><span·class="nf">server</span><span·class="p"·data-group-id="7037517942-39">(</span><span·class="p"·data-group-id="7037517942-39">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
228 ····</span><span·class="c1">%%·Make·system·choose·port·(and·address)</span><span·class="w">228 ····</span><span·class="c1">%%·Make·system·choose·port·(and·address)</span><span·class="w">
229 ····</span><span·class="nf">server</span><span·class="p"·data-group-id="9484240769-40">(</span><span·class="mi">0</span><span·class="p"·data-group-id="9484240769-40">)</span><span·class="p">.</span><span·class="w">229 ····</span><span·class="nf">server</span><span·class="p"·data-group-id="7037517942-40">(</span><span·class="mi">0</span><span·class="p"·data-group-id="7037517942-40">)</span><span·class="p">.</span><span·class="w">
  
230 </span><span·class="c1">%%·This·function·return·the·port·and·address·that·it·actually·uses,</span><span·class="w">230 </span><span·class="c1">%%·This·function·return·the·port·and·address·that·it·actually·uses,</span><span·class="w">
231 </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="c1">%%·in·case·server/0·or·server/1·(with·a·port·number)·was·used·to·start·it.</span><span·class="w">
  
232 </span><span·class="nf">server</span><span·class="p"·data-group-id="9484240769-41">(</span><span·class="p"·data-group-id="9484240769-42">#{</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:·d2ad9ef570267ec18b5b55061bacde42cc3e4d19d51418591502cdbadad5e12b·...·]-41">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">232 </span><span·class="nf">server</span><span·class="p"·data-group-id="7037517942-41">(</span><span·class="p"·data-group-id="7037517942-42">#{</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:·17a265077c97473608ca6dd549788d4cc23e9bd5cd27309f936e1ab54815dda4·...·]-41">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
233 ····</span><span·class="p"·data-group-id="9484240769-43">{</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="9484240769-43">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·353,·SHA:·b45f62ae912a6ff3fe17a42ed41e6385599056d7d158703cb9631c71f5a895e5·...·]-44">)</span><span·class="p">,</span><span·class="w">233 ····</span><span·class="p"·data-group-id="7037517942-43">{</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="7037517942-43">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·353,·SHA:·9fe48abc6cc868b525b2052f4aa22eca66f21f78d0b459774582c4d373b10fd4·...·]-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">bind</span><span·class="p"·data-group-id="9484240769-45">(</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="9484240769-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">bind</span><span·class="p"·data-group-id="7037517942-45">(</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="7037517942-45">)</span><span·class="p">,</span><span·class="w">
235 ····</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="9484240769-46">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="9484240769-46">)</span><span·class="p">,</span><span·class="w">235 ····</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="7037517942-46">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="7037517942-46">)</span><span·class="p">,</span><span·class="w">
236 ····</span><span·class="p"·data-group-id="9484240769-47">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9484240769-48">#{</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:·f0eb7189f06fe85d76a09e1743158b26e98680f852cc75205e180cc831f84bd9·...·]-49">)</span><span·class="p">,</span><span·class="w">236 ····</span><span·class="p"·data-group-id="7037517942-47">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7037517942-48">#{</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:·2bfd7973f0a23e8a787151c1bcbb150d9b7d70c929022a39c12b09c081430cc3·...·]-49">)</span><span·class="p">,</span><span·class="w">
237 ····</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="9484240769-50">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="9484240769-50">)</span><span·class="p">,</span><span·class="w"> 
238 ····</span><span·class="p"·data-group-id="9484240769-51">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9484240769-52">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class=[·...·truncated·by·diffoscope;·len:·219,·SHA:·3ab6a45cdafee3608d06c44f27e95243e8d1031103d4ee540d636e46aebced82·...·]</span><span·class="w">237 ····</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="7037517942-50">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="7037517942-50">)[·...·truncated·by·diffoscope;·len:·24,·SHA:·fb649ce4501752a181a95639f50a14dc0dcddcf7a62949109a2ee6f0ba38f75c·...·]</span><span·class="w">
 238 ····</span><span·class="p"·data-group-id="7037517942-51">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7037517942-52">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Addr</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acceptor</span><span·class="p"·data-group-id="7037517942-52">}</span><span·class="p"·data-group-id="7037517942-51">}</span><span·class="p">;</span><span·class="w">
  
239 </span><span·class="nf">server</span><span·class="p"·data-group-id="9484240769-53">(</span><span·class="n">Port</span><span·class="p"·data-group-id="9484240769-53">)</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="9484240769-5[·...·truncated·by·diffoscope;·len:·79,·SHA:·fe4ed2f41dd95b267963ba6a596dbc12ed0978405d2128f4dcbe9839db6f4528·...·]-54">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">239 </span><span·class="nf">server</span><span·class="p"·data-group-id="7037517942-53">(</span><span·class="n">Port</span><span·class="p"·data-group-id="7037517942-53">)</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="7037517942-5[·...·truncated·by·diffoscope;·len:·79,·SHA:·c18dec636a21d7f0b3b533beb474ae966d2ba0dddc11cae952b71eea19957a83·...·]-54">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
240 ····</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">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">
241 ····</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="9484240769-55">(</span><span·class="n">Family</span><span·class="p"·data-group-id="9484240769-55">)</span><span·class="p">,</span><span·class="w">·</span><span·class="c1">%·Pick·an·address</span><span·class="w">241 ····</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="7037517942-55">(</span><span·class="n">Family</span><span·class="p"·data-group-id="7037517942-55">)</span><span·class="p">,</span><span·class="w">·</span><span·class="c1">%·Pick·an·address</span><span·class="w">
242 ····</span><span·class="n">SockAddr</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9484240769-56">#{</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="n">SockAddr</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="7037517942-56">#{</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">
243 »       »       ·</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">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">
244 »       »       ·</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="9484240769-56">}</span><span·class="p">,</span><span·class="w">244 »       »       ·</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="7037517942-56">}</span><span·class="p">,</span><span·class="w">
245 ····</span><span·class="nf">server</span><span·class="p"·data-group-id="9484240769-57">(</span><span·class="n">SockAddr</span><span·class="p"·data-group-id="9484240769-57">)</span><span·class="p">.</span><span·class="w">245 ····</span><span·class="nf">server</span><span·class="p"·data-group-id="7037517942-57">(</span><span·class="n">SockAddr</span><span·class="p"·data-group-id="7037517942-57">)</span><span·class="p">.</span><span·class="w">
  
246 </span><span·class="nf">server</span><span·class="p"·data-group-id="9484240769-58">(</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="9484240769-58">)</span><span·class="w"> 
247 ··</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">is_integer</span><span·class="p"·data-group-id="9484240769-59">(</span><span·class="n">Port</span><span·class="p"·data-group-id="9484240769-59">)</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·336,·SHA:·7bde36aadcf24666300459eadc30b14a03a8ecc39beebb5fa461d725db7c01c7·...·]</span><span·class="w">246 </span><span·class="nf">server</span><span·class="p"·data-group-id="7037517942-58">(</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="7037517942-58">)</span><span·class="w">
 247 ··</span><span·class="k">when</span><span·class="w">·</span><span·class="nf">is_integer</span><span·class="p"·data-group-id="7037517942-59">(</span><span·class="n">Port</span><span·class="p"·data-group-id="7037517942-59">)</span><span·class="w">·</span><span·class="nf">andalso</span><span·class="w">·</span><span·class="p"·data-group-id="7037517942-60">(</span><span·class="n">Port</span><span·class="w">·</span><span·class="o">&gt;=</span><span·class="w">·</span><span·class="mi">0</span><span·class="p"·data-group-id="7037517942-60">)</span><span·class="w">·</span><span·class="ow">andalso</span><span·class="w">
248 ·······</span><span·class="nf">is_tuple</span><span·class="p"·data-group-id="9484240769-61">(</span><span·class="n">Addr</span><span·class="p"·data-group-id="9484240769-61">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">248 ·······</span><span·class="nf">is_tuple</span><span·class="p"·data-group-id="7037517942-61">(</span><span·class="n">Addr</span><span·class="p"·data-group-id="7037517942-61">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
249 ····</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="9484240769-62">(</span><span·class="n">Addr</span><span·class="p"·data-group-id="9484240769-62">)</span><span·class="p">,</span><span·class="w">249 ····</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="7037517942-62">(</span><span·class="n">Addr</span><span·class="p"·data-group-id="7037517942-62">)</span><span·class="p">,</span><span·class="w">
250 ····</span><span·class="n">SockAddr</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9484240769-63">#{</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="n">SockAddr</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="7037517942-63">#{</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">
251 »       »       ·</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">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">
252 »       »       ·</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="9484240769-63">}</span><span·class="p">,</span><span·class="w">252 »       »       ·</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="7037517942-63">}</span><span·class="p">,</span><span·class="w">
253 ····</span><span·class="nf">server</span><span·class="p"·data-group-id="9484240769-64">(</span><span·class="n">SockAddr</span><span·class="p"·data-group-id="9484240769-64">)</span><span·class="p">.</span><span·class="w">253 ····</span><span·class="nf">server</span><span·class="p"·data-group-id="7037517942-64">(</span><span·class="n">SockAddr</span><span·class="p"·data-group-id="7037517942-64">)</span><span·class="p">.</span><span·class="w">
  
  
254 </span><span·class="c1">%%·---·Echo·Server·-·Acceptor·---</span><span·class="w">254 </span><span·class="c1">%%·---·Echo·Server·-·Acceptor·---</span><span·class="w">
  
255 </span><span·class="nf">start_acceptor</span><span·class="p"·data-group-id="9484240769-65">(</span><span·class="n">LSock</span><span·class="p"·data-group-id="9484240769-65">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">255 </span><span·class="nf">start_acceptor</span><span·class="p"·data-group-id="7037517942-65">(</span><span·class="n">LSock</span><span·class="p"·data-group-id="7037517942-65">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
256 ····</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="9484240769-66">(</span><span·class="p"·data-group-id="9484240769-66">)</span><span·class="p">,</span><span·class="w">256 ····</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="7037517942-66">(</span><span·class="p"·data-group-id="7037517942-66">)</span><span·class="p">,</span><span·class="w">
257 ····</span><span·class="p"·data-group-id="9484240769-67">{</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="9484240769-67">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·635,·SHA:·cc21ffc1066fc7f152eb16f3c27bad65e05f37ee01dc143b7ca1748704ebbee6·...·]-68">)</span><span·class="p">,</span><span·class="w">257 ····</span><span·class="p"·data-group-id="7037517942-67">{</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="7037517942-67">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·635,·SHA:·6ae6cc8b8adfab09cb533a312cf0d076cac9227f89eb42cbd4a02c3b768c0120·...·]-68">)</span><span·class="p">,</span><span·class="w">
258 ····</span><span·class="k">receive</span><span·class="w">258 ····</span><span·class="k">receive</span><span·class="w">
259 »       </span><span·class="p"·data-group-id="9484240769-71">{</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:·b2f625654b105ed8f1b1f564c6f59bea1fdd14a259b4c2c6101c660702cef156·...·]-71">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">259 »       </span><span·class="p"·data-group-id="7037517942-71">{</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:·6034040386e38751e7eb0a27d0992209f5bf196d253d51a4b66c47ebcea56919·...·]-71">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
260 »       ····</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">error</span><span·class="p"·data-group-id="9484240769-72">(</span><span·class="p"·data-group-id="9484240769-73">{</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="9484240769-73">}</span><s[·...·truncated·by·diffoscope;·len:·39,·SHA:·51223710d62ace2a9d9c25a5c8d908774bc4135cee337e3ed368e217d340afda·...·]-72">)</span><span·class="p">;</span><span·class="w">260 »       ····</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">error</span><span·class="p"·data-group-id="7037517942-72">(</span><span·class="p"·data-group-id="7037517942-73">{</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="7037517942-73">}</span><s[·...·truncated·by·diffoscope;·len:·39,·SHA:·a3e7ab156c538e919b5d8f9f5f58e339d1fb5002c886a879f1e95c54282f1b98·...·]-72">)</span><span·class="p">;</span><span·class="w">
261 »       </span><span·class="p"·data-group-id="9484240769-74">{</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="9484240769-74">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">261 »       </span><span·class="p"·data-group-id="7037517942-74">{</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="7037517942-74">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
262 »       ····</span><span·class="c1">%%·Transfer·ownership</span><span·class="w">262 »       ····</span><span·class="c1">%%·Transfer·ownership</span><span·class="w">
263 »       ····</span><span·class="nc">socket</span><span·class="p">:</span><span·class="nf">setopt</span><span·class="p"·data-group-id="9484240769-75">(</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:·dd9162f59007cdf7706dbe0bc18b9faf9830b89fa8f2f8144ca5d5800b2e0b14·...·]-75">)</span><span·class="p">,</span><span·class="w">263 »       ····</span><span·class="nc">socket</span><span·class="p">:</span><span·class="nf">setopt</span><span·class="p"·data-group-id="7037517942-75">(</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:·58b210797a05d6fef8a57b4a9380bff490e80f46e822f5b715cf8672804b88f9·...·]-75">)</span><span·class="p">,</span><span·class="w">
264 »       ····</span><span·class="n">Pid</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="9484240769-76">{</span><span·class="nf">self</span><span·class="p"·data-group-id="9484240769-77">(</span><span·class="p"·data-group-id="9484240769-77">)</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">continue</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·24,·SHA:·fa1de4a8412f440b04f798a9709b93077db64105cb0ad3598c4796d3a3de36b2·...·]-76">}</span><span·class="p">,</span><span·class="w">264 »       ····</span><span·class="n">Pid</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="7037517942-76">{</span><span·class="nf">self</span><span·class="p"·data-group-id="7037517942-77">(</span><span·class="p"·data-group-id="7037517942-77">)</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">continue</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·24,·SHA:·09844cd559fe6a6b812647e6a01bfef080394fdf78d5a9f82f997aa6a65d8b25·...·]-76">}</span><span·class="p">,</span><span·class="w">
265 »       ····</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">demonitor</span><span·class="p"·data-group-id="9484240769-78">(</span><span·class="n">MRef</span><span·class="p"·data-group-id="9484240769-78">)</span><span·class="p">,</span><span·class="w">265 »       ····</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">demonitor</span><span·class="p"·data-group-id="7037517942-78">(</span><span·class="n">MRef</span><span·class="p"·data-group-id="7037517942-78">)</span><span·class="p">,</span><span·class="w">
266 »       ····</span><span·class="n">Pid</span><span·class="w">266 »       ····</span><span·class="n">Pid</span><span·class="w">
267 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">267 ····</span><span·class="k">end</span><span·class="p">.</span><span·class="w">
268 ····268 ····
269 </span><span·class="nf">acceptor_init</span><span·class="p"·data-group-id="9484240769-79">(</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="9484240769-79">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">269 </span><span·class="nf">acceptor_init</span><span·class="p"·data-group-id="7037517942-79">(</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="7037517942-79">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
270 ····</span><span·class="n">Parent</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="9484240769-80">{</span><span·class="nf">self</span><span·class="p"·data-group-id="9484240769-81">(</span><span·class="p"·data-group-id="9484240769-81">)</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">started</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·1e2e6aa34850d660079b8287f5376739af99def72d256893cba58b707f172a08·...·]-80">}</span><span·class="p">,</span><span·class="w">270 ····</span><span·class="n">Parent</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><span·class="p"·data-group-id="7037517942-80">{</span><span·class="nf">self</span><span·class="p"·data-group-id="7037517942-81">(</span><span·class="p"·data-group-id="7037517942-81">)</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">started</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·6a07c506d4f6bb2121d98bdfec6660d40f312a7989e1183babbb88f674d1bcc8·...·]-80">}</span><span·class="p">,</span><span·class="w">
271 ····</span><span·class="k">receive</span><span·class="w">271 ····</span><span·class="k">receive</span><span·class="w">
272 »       </span><span·class="p"·data-group-id="9484240769-82">{</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="9484240769-82">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">272 »       </span><span·class="p"·data-group-id="7037517942-82">{</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="7037517942-82">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
273 »       ····</span><span·class="ss">ok</span><span·class="w">273 »       ····</span><span·class="ss">ok</span><span·class="w">
274 ····</span><span·class="k">end</span><span·class="p">,</span><span·class="w">274 ····</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
275 ····</span><span·class="nf">acceptor_loop</span><span·class="p"·data-group-id="9484240769-83">(</span><span·class="n">LSock</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">undefined</span><span·class="p"·data-group-id="9484240769-83">)</span><span·class="p">.</span><span·class="w">275 ····</span><span·class="nf">acceptor_loop</span><span·class="p"·data-group-id="7037517942-83">(</span><span·class="n">LSock</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">undefined</span><span·class="p"·data-group-id="7037517942-83">)</span><span·class="p">.</span><span·class="w">
  
276 </span><span·class="nf">acceptor_loop</span><span·class="p"·data-group-id="9484240769-84">(</span><span·class="n">LSock</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">undefined</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Info</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·a6df79f6aa4a7dae7959dffce41be37d88d104b787b4b3d71e1bb6ffe0853818·...·]-84">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">276 </span><span·class="nf">acceptor_loop</span><span·class="p"·data-group-id="7037517942-84">(</span><span·class="n">LSock</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">undefined</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Info</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·bc21eb06e8a404c5b1b9ff35b09c89101cee5503b560059248271d07b7b0a37b·...·]-84">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
277 ····</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="9484240769-85">(</span><span·class="n">LSock</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">nowait</span><span·class="p"·data-group-id="9484240769-85">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w"> 
278 »       </span><span·class="p"·data-group-id="9484240769-86">{</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="9484240769-86">}</span><span·class="w">·</span><span·class="p[·...·truncated·by·diffoscope;·len:·7,·SHA:·6fd4d2201c371aae4443734e74c2b4a24aa6413a678b98d4ac7d098ba49321d5·...·]</span><span·class="w">277 ····</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="7037517942-85">(</span><span·class="n">LSock</span><span·class="p">,</span><spa[·...·truncated·by·diffoscope;·len:·146,·SHA:·59513a2c26da7bdad6abcb4ecf3d85f3ced7a6497b84647258e0ca39f3f7be04·...·]</span><span·class="w">
 278 »       </span><span·class="p"·data-group-id="7037517942-86">{</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="7037517942-86">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
279 »       ····</span><span·class="nf">start_handler</span><span·class="p"·data-group-id="9484240769-87">(</span><span·class="n">ASock</span><span·class="p"·data-group-id="9484240769-87">)</span><span·class="p">,</span><span·class="w">279 »       ····</span><span·class="nf">start_handler</span><span·class="p"·data-group-id="7037517942-87">(</span><span·class="n">ASock</span><span·class="p"·data-group-id="7037517942-87">)</span><span·class="p">,</span><span·class="w">
280 »       ····</span><span·class="nf">acceptor_loop</span><span·class="p"·data-group-id="9484240769-88">(</span><span·class="n">LSock</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Info</span><span·class="p"·data-group-id="9484240769-88">)</span><span·class="p">;</span><span·class="w">280 »       ····</span><span·class="nf">acceptor_loop</span><span·class="p"·data-group-id="7037517942-88">(</span><span·class="n">LSock</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Info</span><span·class="p"·data-group-id="7037517942-88">)</span><span·class="p">;</span><span·class="w">
281 »       </span><span·class="p"·data-group-id="9484240769-89">{</span><span·class="ss">select</span><span·class="p">,</span><span·class="w">·</span><span·class="n">SelectInfo</span><span·class="p"·data-group-id="9484240769-89">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">281 »       </span><span·class="p"·data-group-id="7037517942-89">{</span><span·class="ss">select</span><span·class="p">,</span><span·class="w">·</span><span·class="n">SelectInfo</span><span·class="p"·data-group-id="7037517942-89">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
282 »       ····</span><span·class="nf">acceptor_loop</span><span·class="p"·data-group-id="9484240769-90">(</span><span·class="n">LSock</span><span·class="p">,</span><span·class="w">·</span><span·class="n">SelectInfo</span><span·class="p"·data-group-id="9484240769-90">)</span><span·class="p">;</span><span·class="w"> 
283 »       </span><span·class="p"·data-group-id="9484240769-91">{</span><span·class="ss">completion</span><span·class="p">,</span><span·class="w">·</span><span·class="n">CompletionInfo</span><span·class="p"·data-group-id="9484240769-91">}</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·22,·SHA:·bdf742f0a974fdb57892c2a7609c7ff7afaae341ed1e5457b788dbe11521e064·...·];</span><span·class="w">282 »       ····</span><span·class="nf">acceptor_loop</span><span·class="p"·data-group-id="7037517942-90">(</span><span·class="n">LSock</span><span·class="p">,</span><span·class="w">·</span><span·class="n">SelectInfo</span><span·class="p"·data-group-id="7037517942-90"[·...·truncated·by·diffoscope;·len:·25,·SHA:·ce337654dbd5da77cc4609ef4a81b43eb0400dcd9276b05fd5da103127cb7c87·...·];</span><span·class="w">
 283 »       </span><span·class="p"·data-group-id="7037517942-91">{</span><span·class="ss">completion</span><span·class="p">,</span><span·class="w">·</span><span·class="n">CompletionInfo</span><span·class="p"·data-group-id="7037517942-91">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
284 »       ····</span><span·class="nf">acceptor_loop</span><span·class="p"·data-group-id="9484240769-92">(</span><span·class="n">LSock</span><span·class="p">,</span><span·class="w">·</span><span·class="n">CompletionInfo</span><span·class="p"·data-group-id="9484240769-92">)</span><span·class="p">;</span><span·class="w">284 »       ····</span><span·class="nf">acceptor_loop</span><span·class="p"·data-group-id="7037517942-92">(</span><span·class="n">LSock</span><span·class="p">,</span><span·class="w">·</span><span·class="n">CompletionInfo</span><span·class="p"·data-group-id="7037517942-92">)</span><span·class="p">;</span><span·class="w">
Max diff block lines reached; 119599/182862 bytes (65.40%) of diff not shown.
40.9 KB
./usr/share/doc/erlang-doc/html/lib/kernel-10.2.6/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="6369259832-1">(</span><span·class="k">fun</span><span·class="w">·</span><span·class="n">F</span><span·class="p"·data-group-id="6369259832-2">(</span><span·class="p"·data-group-id="6369259832-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><s[·...·truncated·by·diffoscope;·len:·945,·SHA:·8c890b693396eadde51090b596e61a99bfd3ea627576de9c6015c3400d6b9f4f·...·]-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="2147269988-1">(</span><span·class="k">fun</span><span·class="w">·</span><span·class="n">F</span><span·class="p"·data-group-id="2147269988-2">(</span><span·class="p"·data-group-id="2147269988-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><s[·...·truncated·by·diffoscope;·len:·945,·SHA:·f38113e2a3be58f991fe9af8bdc9ec9b28573da0d10995b33f515a0b36b3e669·...·]-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="6369259832-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="6369259832-7">[</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·72,·SHA:·4bb61c2995072acc1d5874d47c37d4417662d9dd27308bb10eb83aa800f2926d·...·]-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="2147269988-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="2147269988-7">[</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·72,·SHA:·7a87a6affa010f0f49a1a3c5f84cdec93d62c6728d0a88289a655708a80c427d·...·]-6">)</span><span·class="p">.</span><span·class="w">
153 </span><span·class="p"·data-group-id="6369259832-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:·638bb413637f83f0a1890f8e6f608f56b3c4da8bf5dbddd83f5d5631795867be·...·]-8">}</span><span·class="w">153 </span><span·class="p"·data-group-id="2147269988-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:·dbaa8a81d40e6c29508d1ae626dde604243715ad352617dd3978e01675b33d7f·...·]-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="6369259832-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="6369259832-11">(</span><span·class="p"·data-group-id="6369259832-11">)</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·282,·SHA:·407d2289409c68eae04f8899c96935a08b03cea1043f5d7ed040124b94c3df34·...·]-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="2147269988-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="2147269988-11">(</span><span·class="p"·data-group-id="2147269988-11">)</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·282,·SHA:·d7c0769c200320687a9fddbc9ac0b4d0c695a468ed119b66a56c3aeb135ec3b8·...·]-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="6369259832-13">(</span><span·class="n">Session</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6369259832-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:·406f94e222e6b73448f3ce782c769da12a8c462a00a1493e0dd199188c60897a·...·]-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="2147269988-13">(</span><span·class="n">Session</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2147269988-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:·48b956a51e6d7dd5882c3ef14d11bfaa48a6162ae4d040622f143a236afddcab·...·]-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="6369259832-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="6369259832-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="2147269988-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="2147269988-17">)</span><span·class="p">.</span><span·class="w">
162 </span><span·class="p"·data-group-id="6369259832-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:·c7af5cac29e63d8ff24215d9641732492f7905e3b0a38c50b081befc78761101·...·]-18">}</span><span·class="w">·</span><span·class="c1">%·The·trace·message</span><span·class="w">162 </span><span·class="p"·data-group-id="2147269988-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:·f02f35ae6f462573b1532dcfde0304eeef74d171ea701e02e97e4d30c0833c24·...·]-18">}</span><span·class="w">·</span><span·class="c1">%·The·trace·message</span><span·class="w">
163 </span><span·class="p"·data-group-id="6369259832-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:·8c96fdbf0e021389aaf7cc214d759973922d9545efa072ec8854986330da5a28·...·]-21">]</span><span·class="w">·</span><span·class="c1">%·The·return·value</span><span·class="w">163 </span><span·class="p"·data-group-id="2147269988-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:·155385e63a346b14e5b489052ca5cbf40cce1603ea47cc79c1c9163fe34eb0f0·...·]-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="6369259832-22">(</span><span·class="n">Session</span><span·class="p"·data-group-id="6369259832-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="2147269988-22">(</span><span·class="n">Session</span><span·class="p"·data-group-id="2147269988-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 1288, 17 lines modifiedOffset 1288, 17 lines modified
1288 <code·class="inline">undefined</code>·if·the·sender·is·not·known·(which·can·be·the·case·for·remote1288 <code·class="inline">undefined</code>·if·the·sender·is·not·known·(which·can·be·the·case·for·remote
1289 senders).·<code·class="inline">Msg</code>·is·the·message·term.·The·pid·of·the·receiving·process·can·be1289 senders).·<code·class="inline">Msg</code>·is·the·message·term.·The·pid·of·the·receiving·process·can·be
1290 accessed·with·the·guard·function·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#self/0"><code·class="inline">self/0</code></a>.·An·empty·list·is·the·same·as1290 accessed·with·the·guard·function·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#self/0"><code·class="inline">self/0</code></a>.·An·empty·list·is·the·same·as
1291 <code·class="inline">true</code>.·For·more·information,·see·section1291 <code·class="inline">true</code>.·For·more·information,·see·section
1292 <a·href="../../../../erts-15.2.6/doc/html/match_spec.html">Match·Specifications·in·Erlang</a>·in·the·User's·Guide1292 <a·href="../../../../erts-15.2.6/doc/html/match_spec.html">Match·Specifications·in·Erlang</a>·in·the·User's·Guide
1293 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>·traced1293 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
1294 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·match1294 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
1295 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="2735966815-1">(</span><span·class="n">Session</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2735966815-2">[</span><span·class="p"·data-group-id="2735966815-3">{</span><span·class="p"·data-group-id="2735966815-4">[</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="n">Pid</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;_&#39;</span><span·class="p"·data-group-id="2735966815-4">]</span><span·class="p">,</span><span·class="p"·data-group-id="2735966815-5">[</span><span·class="p"·data-group-id="2735966815-5">]</span><span·class="p">,</span><span·class="p"·data-group-id="2735966815-6">[</span><span·class="p"·data-group-id="2735966815-6">]</span><span·class="p"·data-group-id="2735966815-3">}</span><span·class="p"·data-group-id="2735966815-2">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2735966815-7">[</span><span·class="p"·data-group-id="2735966815-7">]</span><span·class="p"·data-group-id="2735966815-1">)</span><span·class="p">.</span><span·class="w"> 
1296 </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="3161405588-1">(</span><span·class="n">Session</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3161405588-2">[</span><span·class="p"·data-group-id="3161405588-3">{</span><span·class="p"·data-group-id="3161405588-4">[</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3161405588-5">{</span><span·class="ss">reply</span><span·class="p">,</span><span·class="ss">&#39;_&#39;</span><span·class="p"·data-group-id="3161405588-5">}</span><span·class="p"·data-group-id="3161405588-4">]</span><span·class="p">,</span><span·class="p"·data-group-id="3161405588-6">[</span><span·class="p"·data-group-id="3161405588-6">]</span><span·class="p">,</span><span·class="p"·data-group-id="3161405588-7">[</span><span·class="p"·data-group-id="3161405588-7">]</span><span·class="p"·data-group-id="3161405588-3">}</span><span·class="p"·data-group-id="3161405588-2">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3161405588-8">[</span><span·class="p"·data-group-id="3161405588-8">]</span><span·class="p"·data-group-id="3161405588-1">)</span><span·class="p">.</span><span·class="w"> 
1297 </span><span·class="mi">1</span></code></pre><p>Only·trace·messages·from·other·nodes:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nc">trace</span><span·class="p">:</span><span·class="nf">recv</s[·...·truncated·by·diffoscope;·len:·1471,·SHA:·d0da95902ee591098a2523d005c903096c4bb89ee190846c481a34c3db189001·...·]-1">)</span><span·class="p">.</span><span·class="w">1295 specification·is·removed.</p></li></ul><p>Argument·<code·class="inline">FlagList</code>·must·be·<code·class="inline">[]</code>·for·receive·tracing.</p><p>The·return·value·is·always·<code·class="inline">1</code>.</p><p><em>Examples:</em></p><p>Only·trace·me[·...·truncated·by·diffoscope;·len:·1310,·SHA:·df4bdd1161c6959e808796da22101b1af35d53e939b5388ff6bae2437efdce27·...·]-1">)</span><span·class="p">.</span><span·class="w">
 1296 </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="6980030544-1">(</span><span·class="n">Session</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6980030544-2">[</span><span·class="p"·data-group-id="6980030544-3">{</span><span·class="p"·data-group-id="6980030544-4">[</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6980030544-5">{</span><span·class="ss">reply</span><span·class="p">,</span><span·class="ss">&#39;_&#39;</span><span·class="p"·data-group-id="6980030544-5">}</span><span·class="p"·data-group-id="6980030544-4">]</span><span·class="p">,</span><span·class="p"·data-group-id="6980030544-6">[</span><span·class="p"·data-group-id="6980030544-6">]</span><span·class="p">,</span><span·class="p"·data-group-id="6980030544-7">[</span><span·class="p"·data-group-id="6980030544-7">]</span><span·class="p"·data-group-id="6980030544-3">}</span><span·class="p"·data-group-id="6980030544-2">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6980030544-8">[</span><span·class="p"·data-group-id="6980030544-8">]</span><span·class="p"·data-group-id="6980030544-1">)</span><span·class="p">.</span><span·class="w">
 1297 </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="4708242826-1">(</span><span·class="n">Session</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4708242826-2">[</span><span·class="p"·data-group-id="4708242826-3">{</span><span·class="p"·data-group-id="4708242826-4">[</span><span·class="ss">&#39;$1&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;_&#39;</span><span·class="p"·data-group-id="4708242826-4">]</span><span·class="p">,</span><span·class="p"·data-group-id="4708242826-5">[</span><span·class="p"·data-group-id="4708242826-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="4708242826-7">{</span><span·class="nb">node</span><span·class="p"·data-group-id="4708242826-7">}</span><span·class="p"·data-group-id="4708242826-6">}</span><span·class="p"·data-group-id="4708242826-5">]</span><span·class="p">,</span><span·class="p"·data-group-id="4708242826-8">[</span><span·class="p"·data-group-id="4708242826-8">]</span><span·class="p"·data-group-id="4708242826-3">}</span><span·class="p"·data-group-id="4708242826-2">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4708242826-9">[</span><span·class="p"·data-group-id="4708242826-9">]</span><span·class="p"·data-group-id="4708242826-1">)</span><span·class="p">.</span><span·class="w">
1298 </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·body1298 </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
1299 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>,1299 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>,
1300 <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·excessive1300 <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
1301 nesting·which·causes·scheduler·stack·exhaustion·for·the·scheduler·that·the1301 nesting·which·causes·scheduler·stack·exhaustion·for·the·scheduler·that·the
1302 calling·process·is·executing·on.1302 calling·process·is·executing·on.
1303 <a·href="../../../../erts-15.2.6/doc/html/erl_cmd.html#sched_thread_stack_size">Scheduler·stack·size</a>·can·be·configured1303 <a·href="../../../../erts-15.2.6/doc/html/erl_cmd.html#sched_thread_stack_size">Scheduler·stack·size</a>·can·be·configured
1304 when·starting·the·runtime·system.</p></li></ul>1304 when·starting·the·runtime·system.</p></li></ul>
Offset 1339, 18 lines modifiedOffset 1339, 18 lines modified
1339 the·list·<code·class="inline">[Receiver,·Msg]</code>.·<code·class="inline">Receiver</code>·is·the·process·or·port·identity·of·the1339 the·list·<code·class="inline">[Receiver,·Msg]</code>.·<code·class="inline">Receiver</code>·is·the·process·or·port·identity·of·the
1340 receiver·and·<code·class="inline">Msg</code>·is·the·message·term.·The·pid·of·the·sending·process·can·be1340 receiver·and·<code·class="inline">Msg</code>·is·the·message·term.·The·pid·of·the·sending·process·can·be
1341 accessed·with·the·guard·function·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#self/0"><code·class="inline">self/0</code></a>.·An·empty·list·is·the·same·as1341 accessed·with·the·guard·function·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#self/0"><code·class="inline">self/0</code></a>.·An·empty·list·is·the·same·as
1342 <code·class="inline">true</code>.·For·more·information,·see·section1342 <code·class="inline">true</code>.·For·more·information,·see·section
1343 <a·href="../../../../erts-15.2.6/doc/html/match_spec.html">Match·Specifications·in·Erlang</a>·in·the·User's·Guide1343 <a·href="../../../../erts-15.2.6/doc/html/match_spec.html">Match·Specifications·in·Erlang</a>·in·the·User's·Guide
1344 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>·traced1344 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
1345 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·specification1345 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
1346 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="0326515618-1">(</span><span·class="n">Session</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0326515618-2">[</span><span·class="p"·data-group-id="0326515618-3">{</span><span·class="p"·data-group-id="0326515618-4">[</sp[·...·truncated·by·diffoscope;·len:·726,·SHA:·1e59ced94360599ee3ee0831315612f079ba2a12e93cdd5a9c43c75f0c1a4377·...·]-1">)</span><span·class="p">.</span><span·class="w">1346 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="7909921362-1">(</span><span·class="n">Session</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7909921362-2">[</span><span·class="p"·data-group-id="7909921362-3">{</span><span·class="p"·data-group-id="7909921362-4">[</sp[·...·truncated·by·diffoscope;·len:·726,·SHA:·edfb281c38b790cf1738f325f0e20bd6c8c1c619c68ff954ea7f9242adefd6eb·...·]-1">)</span><span·class="p">.</span><span·class="w">
1347 </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="1415840294-1">(</span><span·class="n">Session</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1415840294-2">[</span><span·class="p"·data-group-id="1415840294-3">{</span><span·class="p"·data-group-id="1415840294-4">[</sp[·...·truncated·by·diffoscope;·len:·894,·SHA:·5cd1513c4df564928e1b6a8112f8926b3e5fd831d1fa81e80a8173f0a576b0ea·...·]-1">)</span><span·class="p">.</span><span·class="w">1347 </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="5280144806-1">(</span><span·class="n">Session</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5280144806-2">[</span><span·class="p"·data-group-id="5280144806-3">{</span><span·class="p"·data-group-id="5280144806-4">[</sp[·...·truncated·by·diffoscope;·len:·894,·SHA:·8c938ac5436c5b4e1bf556f46b4d9c2e997762e6c3449bb094c4d48553a3ee7b·...·]-1">)</span><span·class="p">.</span><span·class="w">
1348 </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="8633963435-1">(</span><span·class="n">Session</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8633963435-2">[</span><span·class="p"·data-group-id="8633963435-3">{</span><span·class="p"·data-group-id="8633963435-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="8633963435-4">]</span><span·class="p">,</span><span·class="p"·data-group-id="8633963435-5">[</span><span·class="p"·data-group-id="8633963435-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="8633963435-7">{</span><span·class="ss">self</span><span·class="p"·data-group-id="8633963435-7">}</span><span·class="p"·data-group-id="8633963435-6">}</span><span·class="p"·data-group-id="8633963435-5">]</span><span·class="p">,</span><span·class="p"·data-group-id="8633963435-8">[</span><span·class="p"·data-group-id="8633963435-8">]</span><span·class="p"·data-group-id="8633963435-3">}</span><span·class="p"·data-group-id="8633963435-2">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8633963435-9">[</span><span·class="p"·data-group-id="8633963435-9">]</span><span·class="p"·data-group-id="8633963435-1">)</span><span·class="p">.</span><span·class="w"> 
1349 </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="6022894430-1">(</span><span·class="n">[·...·truncated·by·diffoscope;·len:·1475,·SHA:·d6f1bc729c38ddf289125b81650196c8d5ad2e965388a0fee6ba64e5ed0652f3·...·]-1">)</span><span·class="p">.</span><span·class="w">1348 </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="4190918869-1">(</span><span·clas[·...·truncated·by·diffoscope;·len:·1321,·SHA:·0326587b6a7b64d08980696b1a7cf627b69fdc82d044eabe97ba68d486b70c92·...·]-1">)</span><span·class="p">.</span><span·class="w">
 1349 </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="3588847900-1">(</span><span·class="n">Session</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3588847900-2">[</span><span·class="p"·data-group-id="3588847900-3">{</span><span·class="p"·data-group-id="3588847900-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="3588847900-4">]</span><span·class="p">,</span><span·class="p"·data-group-id="3588847900-5">[</span><span·class="p"·data-group-id="3588847900-6">{</span><span·class="ss">&#39;=/=&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="3588847900-7">{</span><span·class="nb">node</span><span·class="p">,</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="3588847900-7">}</span><span·class="p">,</span><span·class="p"·data-group-id="3588847900-8">{</span><span·class="nb">node</span><span·class="p"·data-group-id="3588847900-8">}</span><span·class="p"·data-group-id="3588847900-6">}</span><span·class="p"·data-group-id="3588847900-5">]</span><span·class="p">,</span><span·class="p"·data-group-id="3588847900-9">[</span><span·class="p"·data-group-id="3588847900-9">]</span><span·class="p"·data-group-id="3588847900-3">}</span><span·class="p"·data-group-id="3588847900-2">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3588847900-10">[</span><span·class="p"·data-group-id="3588847900-10">]</span><span·class="p"·data-group-id="3588847900-1">)</span><span·class="p">.</span><span·class="w">
1350 </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·functions1350 </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
1351 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·excessive1351 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
1352 nesting·which·causes·scheduler·stack·exhaustion·for·the·scheduler·that·the1352 nesting·which·causes·scheduler·stack·exhaustion·for·the·scheduler·that·the
1353 calling·process·is·executing·on.1353 calling·process·is·executing·on.
1354 <a·href="../../../../erts-15.2.6/doc/html/erl_cmd.html#sched_thread_stack_size">Scheduler·stack·size</a>·can·be·configured1354 <a·href="../../../../erts-15.2.6/doc/html/erl_cmd.html#sched_thread_stack_size">Scheduler·stack·size</a>·can·be·configured
1355 when·starting·the·runtime·system.</p></li></ul>1355 when·starting·the·runtime·system.</p></li></ul>
1356 ··</section>1356 ··</section>
290 KB
./usr/share/doc/erlang-doc/html/lib/megaco-4.7.2/doc/html/megaco.epub
6.87 KB
zipinfo {}
    
Offset 1, 43 lines modifiedOffset 1, 43 lines modified
1 Zip·file·size:·181546·bytes,·number·of·entries:·411 Zip·file·size:·181539·bytes,·number·of·entries:·41
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Apr-18·14:02·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Apr-18·15:31·mimetype
3 ?rw-r--r--··6.1·unx······716·bx·defN·25-Apr-18·14:02·OEBPS/title.xhtml3 ?rw-r--r--··6.1·unx······716·bx·defN·25-Apr-18·15:31·OEBPS/title.xhtml
4 ?rw-r--r--··6.1·unx····45324·bx·defN·25-Apr-18·14:02·OEBPS/notes.xhtml4 ?rw-r--r--··6.1·unx····45324·bx·defN·25-Apr-18·15:31·OEBPS/notes.xhtml
5 ?rw-r--r--··6.1·unx·····2561·bx·defN·25-Apr-18·14:02·OEBPS/nav.xhtml5 ?rw-r--r--··6.1·unx·····2561·bx·defN·25-Apr-18·15:31·OEBPS/nav.xhtml
6 ?rw-r--r--··6.1·unx····80451·bx·defN·25-Apr-18·14:02·OEBPS/megaco_user.xhtml6 ?rw-r--r--··6.1·unx····80451·bx·defN·25-Apr-18·15:31·OEBPS/megaco_user.xhtml
7 ?rw-r--r--··6.1·unx····25503·bx·defN·25-Apr-18·14:02·OEBPS/megaco_udp.xhtml7 ?rw-r--r--··6.1·unx····25503·bx·defN·25-Apr-18·15:31·OEBPS/megaco_udp.xhtml
8 ?rw-r--r--··6.1·unx·····1927·bx·defN·25-Apr-18·14:02·OEBPS/megaco_transport_mechanisms.xhtml8 ?rw-r--r--··6.1·unx·····1927·bx·defN·25-Apr-18·15:31·OEBPS/megaco_transport_mechanisms.xhtml
9 ?rw-r--r--··6.1·unx·····9405·bx·defN·25-Apr-18·14:02·OEBPS/megaco_transport.xhtml9 ?rw-r--r--··6.1·unx·····9405·bx·defN·25-Apr-18·15:31·OEBPS/megaco_transport.xhtml
10 ?rw-r--r--··6.1·unx····24956·bx·defN·25-Apr-18·14:02·OEBPS/megaco_tcp.xhtml10 ?rw-r--r--··6.1·unx····24956·bx·defN·25-Apr-18·15:31·OEBPS/megaco_tcp.xhtml
11 ?rw-r--r--··6.1·unx····32872·bx·defN·25-Apr-18·14:02·OEBPS/megaco_sdp.xhtml11 ?rw-r--r--··6.1·unx····32872·bx·defN·25-Apr-18·15:31·OEBPS/megaco_sdp.xhtml
12 ?rw-r--r--··6.1·unx····15144·bx·defN·25-Apr-18·14:02·OEBPS/megaco_run.xhtml12 ?rw-r--r--··6.1·unx····15144·bx·defN·25-Apr-18·15:31·OEBPS/megaco_run.xhtml
13 ?rw-r--r--··6.1·unx·····9265·bx·defN·25-Apr-18·14:02·OEBPS/megaco_performance.xhtml13 ?rw-r--r--··6.1·unx·····9265·bx·defN·25-Apr-18·15:31·OEBPS/megaco_performance.xhtml
14 ?rw-r--r--··6.1·unx·····2425·bx·defN·25-Apr-18·14:02·OEBPS/megaco_mib.xhtml14 ?rw-r--r--··6.1·unx·····2425·bx·defN·25-Apr-18·15:31·OEBPS/megaco_mib.xhtml
15 ?rw-r--r--··6.1·unx·····4319·bx·defN·25-Apr-18·14:02·OEBPS/megaco_intro.xhtml15 ?rw-r--r--··6.1·unx·····4319·bx·defN·25-Apr-18·15:31·OEBPS/megaco_intro.xhtml
16 ?rw-r--r--··6.1·unx····10923·bx·defN·25-Apr-18·14:02·OEBPS/megaco_flex_scanner.xhtml16 ?rw-r--r--··6.1·unx····10923·bx·defN·25-Apr-18·15:31·OEBPS/megaco_flex_scanner.xhtml
17 ?rw-r--r--··6.1·unx·····5758·bx·defN·25-Apr-18·14:02·OEBPS/megaco_examples.xhtml17 ?rw-r--r--··6.1·unx·····5758·bx·defN·25-Apr-18·15:31·OEBPS/megaco_examples.xhtml
18 ?rw-r--r--··6.1·unx····43300·bx·defN·25-Apr-18·14:02·OEBPS/megaco_encoder.xhtml18 ?rw-r--r--··6.1·unx····43300·bx·defN·25-Apr-18·15:31·OEBPS/megaco_encoder.xhtml
19 ?rw-r--r--··6.1·unx····24557·bx·defN·25-Apr-18·14:02·OEBPS/megaco_encode.xhtml19 ?rw-r--r--··6.1·unx····24557·bx·defN·25-Apr-18·15:31·OEBPS/megaco_encode.xhtml
20 ?rw-r--r--··6.1·unx·····5287·bx·defN·25-Apr-18·14:02·OEBPS/megaco_edist_compress.xhtml20 ?rw-r--r--··6.1·unx·····5287·bx·defN·25-Apr-18·15:31·OEBPS/megaco_edist_compress.xhtml
21 ?rw-r--r--··6.1·unx····10369·bx·defN·25-Apr-18·14:02·OEBPS/megaco_digit_map.xhtml21 ?rw-r--r--··6.1·unx····10369·bx·defN·25-Apr-18·15:31·OEBPS/megaco_digit_map.xhtml
22 ?rw-r--r--··6.1·unx····12843·bx·defN·25-Apr-18·14:02·OEBPS/megaco_debug.xhtml22 ?rw-r--r--··6.1·unx····12843·bx·defN·25-Apr-18·15:31·OEBPS/megaco_debug.xhtml
23 ?rw-r--r--··6.1·unx·····3924·bx·defN·25-Apr-18·14:02·OEBPS/megaco_codec_transform.xhtml23 ?rw-r--r--··6.1·unx·····3924·bx·defN·25-Apr-18·15:31·OEBPS/megaco_codec_transform.xhtml
24 ?rw-r--r--··6.1·unx·····3954·bx·defN·25-Apr-18·14:02·OEBPS/megaco_codec_mstone2.xhtml24 ?rw-r--r--··6.1·unx·····3954·bx·defN·25-Apr-18·15:31·OEBPS/megaco_codec_mstone2.xhtml
25 ?rw-r--r--··6.1·unx····17312·bx·defN·25-Apr-18·14:02·OEBPS/megaco_codec_mstone1.xhtml25 ?rw-r--r--··6.1·unx····17312·bx·defN·25-Apr-18·15:31·OEBPS/megaco_codec_mstone1.xhtml
26 ?rw-r--r--··6.1·unx·····3353·bx·defN·25-Apr-18·14:02·OEBPS/megaco_codec_meas.xhtml26 ?rw-r--r--··6.1·unx·····3353·bx·defN·25-Apr-18·15:31·OEBPS/megaco_codec_meas.xhtml
27 ?rw-r--r--··6.1·unx·····7630·bx·defN·25-Apr-18·14:02·OEBPS/megaco_architecture.xhtml27 ?rw-r--r--··6.1·unx·····7630·bx·defN·25-Apr-18·15:31·OEBPS/megaco_architecture.xhtml
28 ?rw-r--r--··6.1·unx···193289·bx·defN·25-Apr-18·14:02·OEBPS/megaco.xhtml28 ?rw-r--r--··6.1·unx···193289·bx·defN·25-Apr-18·15:31·OEBPS/megaco.xhtml
29 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Apr-18·14:02·OEBPS/dist/epub-erlang-ESPT6BQV.css29 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Apr-18·15:31·OEBPS/dist/epub-erlang-ESPT6BQV.css
30 ?rw-r--r--··6.1·unx······499·bx·defN·25-Apr-18·14:02·OEBPS/dist/epub-LSJCIYTM.js30 ?rw-r--r--··6.1·unx······499·bx·defN·25-Apr-18·15:31·OEBPS/dist/epub-LSJCIYTM.js
31 ?rw-r--r--··6.1·unx·····5778·bx·defN·25-Apr-18·14:02·OEBPS/content.opf31 ?rw-r--r--··6.1·unx·····5778·bx·defN·25-Apr-18·15:31·OEBPS/content.opf
32 ?rw-r--r--··6.1·unx·····3043·bx·stor·25-Apr-18·14:02·OEBPS/assets/single_node_config.gif32 ?rw-r--r--··6.1·unx·····3043·bx·stor·25-Apr-18·15:31·OEBPS/assets/single_node_config.gif
33 ?rw-r--r--··6.1·unx·····7270·bx·stor·25-Apr-18·14:02·OEBPS/assets/megaco_sys_arch.gif33 ?rw-r--r--··6.1·unx·····7270·bx·stor·25-Apr-18·15:31·OEBPS/assets/megaco_sys_arch.gif
34 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Apr-18·14:02·OEBPS/assets/logo.png34 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Apr-18·15:31·OEBPS/assets/logo.png
35 ?rw-r--r--··6.1·unx·····4992·bx·stor·25-Apr-18·14:02·OEBPS/assets/distr_node_config.gif35 ?rw-r--r--··6.1·unx·····4992·bx·stor·25-Apr-18·15:31·OEBPS/assets/distr_node_config.gif
36 ?rw-r--r--··6.1·unx·····4738·bx·stor·25-Apr-18·14:02·OEBPS/assets/call_flow_cont.gif36 ?rw-r--r--··6.1·unx·····4738·bx·stor·25-Apr-18·15:31·OEBPS/assets/call_flow_cont.gif
37 ?rw-r--r--··6.1·unx·····4673·bx·stor·25-Apr-18·14:02·OEBPS/assets/call_flow.gif37 ?rw-r--r--··6.1·unx·····4673·bx·stor·25-Apr-18·15:31·OEBPS/assets/call_flow.gif
38 ?rw-r--r--··6.1·unx·····4560·bx·stor·25-Apr-18·14:02·OEBPS/assets/MG_startup_call_flow.gif38 ?rw-r--r--··6.1·unx·····4560·bx·stor·25-Apr-18·15:31·OEBPS/assets/MG_startup_call_flow.gif
39 ?rw-r--r--··6.1·unx·····3317·bx·stor·25-Apr-18·14:02·OEBPS/assets/MGC_startup_call_flow.gif39 ?rw-r--r--··6.1·unx·····3317·bx·stor·25-Apr-18·15:31·OEBPS/assets/MGC_startup_call_flow.gif
40 ?rw-r--r--··6.1·unx·····5663·bx·stor·25-Apr-18·14:02·OEBPS/assets/MG-startup_flow_noMID.gif40 ?rw-r--r--··6.1·unx·····5663·bx·stor·25-Apr-18·15:31·OEBPS/assets/MG-startup_flow_noMID.gif
41 ?rw-r--r--··6.1·unx······252·bx·defN·25-Apr-18·14:02·META-INF/container.xml41 ?rw-r--r--··6.1·unx······252·bx·defN·25-Apr-18·15:31·META-INF/container.xml
42 ?rw-r--r--··6.1·unx······162·bx·defN·25-Apr-18·14:02·META-INF/com.apple.ibooks.display-options.xml42 ?rw-r--r--··6.1·unx······162·bx·defN·25-Apr-18·15:31·META-INF/com.apple.ibooks.display-options.xml
43 41·files,·662733·bytes·uncompressed,·174038·bytes·compressed:··73.7%43 41·files,·662733·bytes·uncompressed,·174031·bytes·compressed:··73.7%
229 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,·Apr·18·2025·14:02: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,·Apr·18·2025·15:31:10,·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="3630219749-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="3630219749-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="6782388609-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="6782388609-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="5549470402-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:·6147d0de243b992b7eb156d42e2cae20dac274569aede576ba201cbefe0edabb·...·]-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="6774370929-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:·dba05a56434b9d7960797ae99af3855f8268171809a65b4fc70943e9bfcc4a0e·...·]-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="6349186271-1">(</samp><samp·class="p"·data-group-id="6349186271-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="6349186[·...·truncated·by·diffoscope;·len:·56,·SHA:·ab10d040463c401c16716106b299aa1da86c572d2380ad4a450483ffb34ab0b1·...·]-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="3043188335-1">(</samp><samp·class="p"·data-group-id="3043188335-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="3043188[·...·truncated·by·diffoscope;·len:·56,·SHA:·b3fc50770e5d9f6ace61961c4e3915d982f3874d1fd673b1c1235ddd50fb1071·...·]-2">}</samp><samp·class="w">
41 </samp><samp·class="nf">action_reply</samp><samp·class="p"·data-group-id="6349186271-3">(</samp><samp·class="p"·data-group-id="6349186271-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="634918627[·...·truncated·by·diffoscope;·len:·54,·SHA:·f8c387835f65b778b2036748a930473614b3b87aef74e2473b98eed0b2f891e3·...·]-4">}</samp><samp·class="w">41 </samp><samp·class="nf">action_reply</samp><samp·class="p"·data-group-id="3043188335-3">(</samp><samp·class="p"·data-group-id="3043188335-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="304318833[·...·truncated·by·diffoscope;·len:·54,·SHA:·b262b56271d1d78c3a40467b582f28c599efe39bd55fb201d257e746cf135cae·...·]-4">}</samp><samp·class="w">
42 </samp><samp·class="nf">error_desc</samp><samp·class="p"·data-group-id="6349186271-5">(</samp><samp·class="p"·data-group-id="6349186271-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="6349186271-6">{</samp><samp·class="p"·data-group-id="6349186271-6">}</samp><samp·class="w"> 
43 </samp><samp·class="nf">segment_no</samp><samp·class="p"·data-group-id="6349186271-7">(</samp><samp·class="p"·data-group-id="6349186271-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=[·...·truncated·by·diffoscope;·len:·654,·SHA:·0627269fa20a8d1ac2bc3dd418e56d52a0c785a15f734d866d85f48355e5e424·...·]42 </samp><samp·class="nf">error_desc</samp><samp·class="p"·data-group-id="3043188335-5">(</samp><samp·class="p"·data-group-id="3043188335-5">)</samp><samp·class="w">·</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·class="o">#</samp><samp·class="ss">&#39;ErrorDescriptor[·...·truncated·by·diffoscope;·len:·134,·SHA:·735abe0fd0420a989ed1c2e6c0755094c0176c967a2485989b39aa58310326c3·...·]
 43 </samp><samp·class="nf">segment_no</samp><samp·class="p"·data-group-id="3043188335-7">(</samp><samp·class="p"·data-group-id="3043188335-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="3043188335-8">(</samp><samp·class="p"·data-group-id="3043188335-8">)</samp></code></pre><pre><code·class="makeup·erlang"·translate="no"><samp·class="nf">conn_handle</samp><samp·class="p"·data-group-id="1328585486-1">(</samp><samp·class="p"·data-group-id="1328585486-1">)</samp><samp·class="w">·</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·class="o">#</samp><samp·class="ss">megaco_conn_handle</samp><samp·class="p"·data-group-id="1328585486-2">{</samp><samp·class="p"·data-group-id="1328585486-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="4073463265-1">(</span><span·class="s">&quot;baidarka&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4073463265-2">[</span><span·class="p"·data-group-id="4073463265-2">]</span><span·class="p"·data-group-id="407346[·...·truncated·by·diffoscope;·len:·4,·SHA:·ae8502b547dea0285938b80c225004b2bae4893f1fd22d195d4e72bb13c20d81·...·]-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="8009010048-1">(</span><span·class="s">&quot;baidarka&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8009010048-2">[</span><span·class="p"·data-group-id="8009010048-2">]</span><span·class="p"·data-group-id="800901[·...·truncated·by·diffoscope;·len:·4,·SHA:·fc195401ed6824a8640d05a9f84ea28c9293bcaf93506e2e236be711e64bce11·...·]-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="4073463265-3">(</span><span·class="s">&quot;baidarka&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4073463265-4">[</span><span·class="p"·data-group-id="4073463265-4">]</span><span·class="p"·data-group-id="4073463265-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="4073463265-5">(</span><span·class="s">&quot;baidarka&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4073463265-6">[</span><span·class="p"·data-group-id="4073463265-6"[·...·truncated·by·diffoscope;·len:·52,·SHA:·f94ee44ec2ee9d322c04fb0bb3e0d656d4dcd4fe5a6db5e6d9f22d8737cb62af·...·]">)</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="8009010048-3">(</span><span·class="s">&quot;baidarka&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8009010048-4">[</span><span·class="p"·data-group-id="8009010048-[·...·truncated·by·diffoscope;·len:·54,·SHA:·b312e1352fbd3da827edd2eed7ff1c9cb6abec5d7db9afc18295c5e4123482e8·...·]">)</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="8009010048-5">(</span><span·class="s">&quot;baidarka&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8009010048-6">[</span><span·class="p"·data-group-id="8009010048-6">]</span><span·class="p"·data-group-id="8009010048-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="4073463265-7">(</span><span·class="s">&quot;baidarka&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4073463265-8">[</span><span·class="p"·data-group-id="4073463265-8">]</span><span·class="p"·data-group-id="407346[·...·truncated·by·diffoscope;·len:·4,·SHA:·ae8502b547dea0285938b80c225004b2bae4893f1fd22d195d4e72bb13c20d81·...·]-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="8009010048-7">(</span><span·class="s">&quot;baidarka&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8009010048-8">[</span><span·class="p"·data-group-id="8009010048-8">]</span><span·class="p"·data-group-id="800901[·...·truncated·by·diffoscope;·len:·4,·SHA:·fc195401ed6824a8640d05a9f84ea28c9293bcaf93506e2e236be711e64bce11·...·]-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="0330034637-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="0330034637-1">}</samp><samp·class="w">·</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·class[·...·truncated·by·diffoscope;·len:·441,·SHA:·5cfb0b0ffa56b61529a23603f56334e2660ef5830e85b349ba5150973cb1ac47·...·]-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="2247057548-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="2247057548-1">}</samp><samp·class="w">·</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·class[·...·truncated·by·diffoscope;·len:·441,·SHA:·0da658e0dcb2a3c23c1c17e017ff27f7abdc9653ba2333046aaeb4522400ec0f·...·]-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.47 KB
OEBPS/content.opf
3.44 KB
OEBPS/content.opf
Max HTML report size reached
2.76 KB
./usr/share/doc/erlang-doc/html/lib/megaco-4.7.2/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.6/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.6/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="2985310632-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="2985310632-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·441,·SHA:·93d3b3b84c1b9c185edbe8bf08f8d6060856c27a4ae0ada0f554c41d047f7ede·...·]-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="5729653584-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="5729653584-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·441,·SHA:·9fd0ce28e073c8e550f5001b07ca636e91675561738433e1416dd40d37b186d5·...·]-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.2/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="9530512762-1">(</span><span·class="n">BEAM</span><span·class="p"·data-group-id="9530512762-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:·4f20e387626cfc48856c665796bb748063281192232ee5b473714f5a8327dbfe·...·]-2">]</span><span·class="w">175 ········</span><span·class="n">Erlang</span><span·class="w">·</span><span·class="p"·data-group-id="8290591247-1">(</span><span·class="n">BEAM</span><span·class="p"·data-group-id="8290591247-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:·b542d1f4725fe2c5fdf8641a0fe4c0e924e95acd680b067bf4ea07fec13d5f13·...·]-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="9530512762-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="9530512762-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="8290591247-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="8290591247-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="9530512762-4">(</span><span·class="p"·data-group-id="9530512762-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="8290591247-4">(</span><span·class="p"·data-group-id="8290591247-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="9530512762-5">(</span><span·class="p"·data-group-id="9530512762-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="8290591247-5">(</span><span·class="p"·data-group-id="8290591247-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="7655299477-1">(</span><span·class="p"·data-group-id="7655299477-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:·685,·SHA:·e02a2d83284b149b6eb1eb05a479a4826ff1126f912b039d616c77f81f7efed6·...·]7-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="7397317017-1">(</span><span·class="p"·data-group-id="7397317017-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:·685,·SHA:·744b93032b0bcec3f1999598fa4eebb64852097fe8896fe5b20b43efaf8a846c·...·]7-2">)</span><span·class="w">
203 </span><span·class="nf">messages_list</span><span·class="p"·data-group-id="7655299477-3">(</span><span·class="p"·data-group-id="7655299477-3">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="7655299477-4">[</span><span·class="p"·data-group-id="7655299477-5">{</span><spa[·...·truncated·by·diffoscope;·len:·416,·SHA:·a594bf89acb1ac17fbf4aa3d31c306898936c84b37466ded399f41f13539d33f·...·]7-4">]</span><span·class="w">203 </span><span·class="nf">messages_list</span><span·class="p"·data-group-id="7397317017-3">(</span><span·class="p"·data-group-id="7397317017-3">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="7397317017-4">[</span><span·class="p"·data-group-id="7397317017-5">{</span><spa[·...·truncated·by·diffoscope;·len:·416,·SHA:·d405612fa44a930903cd014e3f4e14f8aea1a2b281693d91d75b8e932cb7af2a·...·]7-4">]</span><span·class="w">
204 </span><span·class="nf">message_name</span><span·class="p"·data-group-id="7655299477-8">(</span><span·class="p"·data-group-id="7655299477-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="7655299477-9">(</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·11,·SHA:·3e397dd8183fdb42ad9f6dd5a943c167c7ba65427297180e4815085dcf3a3d84·...·]7-9">)</span><span·class="w">204 </span><span·class="nf">message_name</span><span·class="p"·data-group-id="7397317017-8">(</span><span·class="p"·data-group-id="7397317017-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="7397317017-9">(</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·11,·SHA:·41899f35206da2c9b24352ea9df5f0f8648efecf5d3c0a33ad49ba4c63cd84df·...·]7-9">)</span><span·class="w">
205 </span><span·class="nf">message</span><span·class="p"·data-group-id="7655299477-10">(</span><span·class="p"·data-group-id="7655299477-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="7655299477-11">(</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·16,·SHA:·796f7ccbedaa213881bd8a6c893c55babf36c7b46d18469653f199e94c5c5c77·...·]7-11">)</span></code></pre><p>The·codec·name·is·the·name·of·the·codec·with·which·all·messages·in·the205 </span><span·class="nf">message</span><span·class="p"·data-group-id="7397317017-10">(</span><span·class="p"·data-group-id="7397317017-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="7397317017-11">(</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·16,·SHA:·74e7280dbee2015942f9b14eea7e891870fb6ac2ab6dfdef1144452bbec95cc7·...·]7-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.2/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="4311790566-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·cla[·...·truncated·by·diffoscope;·len:·129,·SHA:·69554631ea154fdc44f8fe94f7268c6af328836beccc2f29417a3e06351b2a36·...·]-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="4733628314-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·cla[·...·truncated·by·diffoscope;·len:·129,·SHA:·ce70d03c9659c87abbec683c99c19c90273e9648ec50d64715d1c40e4b6db5fb·...·]-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="4311790566-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="4733628314-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="4311790566-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="4311790566-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="4733628314-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="4733628314-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="4311790566-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="4733628314-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="4311790566-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="4311790566-5">[</span><span·class="o">?</span><span·class="ss">megaco_root_termination_id</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·1101eedb34577251ef9512921742dbc4ff78f2fd4cbfe4f4084efab059a07317·...·]-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="4733628314-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="4733628314-5">[</span><span·class="o">?</span><span·class="ss">megaco_root_termination_id</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·b94d293f12f3ea75e2e0bb2984433de13f9dce14a6205375fd744d76cf71e3dd·...·]-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="4311790566-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="4733628314-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="4311790566-6">[</span><span·class="o">#</span><span·class="ss">&#39;ActionRequest&#39;</span><span·class="p"·data-group-id="4311790566-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="4733628314-6">[</span><span·class="o">#</span><span·class="ss">&#39;ActionRequest&#39;</span><span·class="p"·data-group-id="4733628314-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="4311790566-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="4311790566-8">}</span><span·class="p"·data-group-id="4311790566-7">}</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·3dd70ce2572f6da2234c3478481c63ae2a768f27d077db2443f8abf982c6e522·...·]-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="4733628314-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="4733628314-8">}</span><span·class="p"·data-group-id="4733628314-7">}</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·2dd8a1df29d4311eb7257c0f5272e2f470fb8fba0a7a176b0644d663dcaae9e8·...·]-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="4311790566-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="4311790566-9">)<[·...·truncated·by·diffoscope;·len:·215,·SHA:·3409f539ffb840b914f6eec292c9582670359fc1b7bcc7327efc67632c8be93d·...·]1-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="4733628314-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="4733628314-9">)<[·...·truncated·by·diffoscope;·len:·215,·SHA:·7574777d016e13dd3144e32cdd91633b4e867dd6a8666df697056616d273c502·...·]1-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="2146280711-2">{</span><span·class="ss">&#39;Message&#39;</span><span·class="p">,</span><span·class="w">188 ···</span><span·class="p"·data-group-id="0633354131-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="2146280711-3">{</span><span·class="ss">ip4Address</span><span·class="p">,</span><span·class="p"·data-group-id="2146280711-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:·432,·SHA:·704ad46838834583da1ebbc521077c6d5c0c8c79b076112b75eaf0f190da5edc·...·]1-3">}</span><span·class="p">,</span><span·class="w">190 ····</span><span·class="p"·data-group-id="0633354131-3">{</span><span·class="ss">ip4Address</span><span·class="p">,</span><span·class="p"·data-group-id="0633354131-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:·432,·SHA:·c84afbf950cd13473fce1b33512ba1242e4fc4ee27c66726cc1c9c364074d9e9·...·]1-3">}</span><span·class="p">,</span><span·class="w">
191 ····</span><span·class="p"·data-group-id="2146280711-6">{</span><span·class="ss">transactions</span><span·class="p">,</span><span·class="w">191 ····</span><span·class="p"·data-group-id="0633354131-6">{</span><span·class="ss">transactions</span><span·class="p">,</span><span·class="w">
192 ·····</span><span·class="p"·data-group-id="2146280711-7">[</span><span·class="w">192 ·····</span><span·class="p"·data-group-id="0633354131-7">[</span><span·class="w">
193 ······</span><span·class="p"·data-group-id="2146280711-8">{</span><span·class="ss">transactionRequest</span><span·class="p">,</span><span·class="w">193 ······</span><span·class="p"·data-group-id="0633354131-8">{</span><span·class="ss">transactionRequest</span><span·class="p">,</span><span·class="w">
194 ·······</span><span·class="p"·data-group-id="2146280711-9">{</span><span·class="ss">&#39;TransactionRequest&#39;</span><span·class="p">,</span><span·class="w">194 ·······</span><span·class="p"·data-group-id="0633354131-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="2146280711-10">[</span><span·class="p"·data-group-id="2146280711-11">{</span><span·class="ss">&#39;ActionRequest&#39;</span><span·class="p">,</span><span·class="w">196 ·········</span><span·class="p"·data-group-id="0633354131-10">[</span><span·class="p"·data-group-id="0633354131-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="2146280711-12">[</span><span·class="w">200 ···········</span><span·class="p"·data-group-id="0633354131-12">[</span><span·class="w">
201 ············</span><span·class="p"·data-group-id="2146280711-13">{</span><span·class="ss">&#39;CommandRequest&#39;</span><span·class="p">,</span><span·class="w">201 ············</span><span·class="p"·data-group-id="0633354131-13">{</span><span·class="ss">&#39;CommandRequest&#39;</span><span·class="p">,</span><span·class="w">
202 ·············</span><span·class="p"·data-group-id="2146280711-14">{</span><span·class="ss">serviceChangeReq</span><span·class="p">,</span><span·class="w">202 ·············</span><span·class="p"·data-group-id="0633354131-14">{</span><span·class="ss">serviceChangeReq</span><span·class="p">,</span><span·class="w">
203 ··············</span><span·class="p"·data-group-id="2146280711-15">{</span><span·class="ss">&#39;ServiceChangeRequest&#39;</span><span·class="p">,</span><span·class="w">203 ··············</span><span·class="p"·data-group-id="0633354131-15">{</span><span·class="ss">&#39;ServiceChangeRequest&#39;</span><span·class="p">,</span><span·class="w">
204 ···············</span><span·class="p"·data-group-id="2146280711-16">[</span><span·class="w">204 ···············</span><span·class="p"·data-group-id="0633354131-16">[</span><span·class="w">
205 ················</span><span·class="p"·data-group-id="2146280711-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="2146280711-18">[</span><span·class="s">[·...·truncated·by·diffoscope;·len:·171,·SHA:·6f06f1c34ef9310899f7a4071fa466d210fad1a6f1da4560101dfcb07f5eec4f·...·]1-16">]</span><span·class="p">,</span><span·class="w">205 ················</span><span·class="p"·data-group-id="0633354131-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="0633354131-18">[</span><span·class="s">[·...·truncated·by·diffoscope;·len:·171,·SHA:·9f2d883e0c723a559ce731ce7a8b7dbbca1e21d535f097e878f3e09615e247cb·...·]1-16">]</span><span·class="p">,</span><span·class="w">
206 ················</span><span·class="p"·data-group-id="2146280711-19">{</span><span·class="ss">&#39;ServiceChangeParm&#39;</span><span·class="p">,</span><span·class="w">206 ················</span><span·class="p"·data-group-id="0633354131-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="2146280711-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="2146280711-20">}</span><span·class="p">,</span><span·class="w">208 ·················</span><span·class="p"·data-group-id="0633354131-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="0633354131-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="2146280711-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:·125,·SHA:·ceeb84cc27f51096fc03750d2ba2f63f4c38af9d08e761c0beab0c4e243c657c·...·]1-21">}</span><span·class="p">,</span><span·class="w">210 ·················</span><span·class="p"·data-group-id="0633354131-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:·125,·SHA:·75da18d3ba4f2e92b473229f71c66565e350e6cbda282eafd5eabfb51b783813·...·]1-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="2146280711-19">}</span><span·class="w">215 ················</span><span·class="p"·data-group-id="0633354131-19">}</span><span·class="w">
216 ··············</span><span·class="p"·data-group-id="2146280711-15">}</span><span·class="w">216 ··············</span><span·class="p"·data-group-id="0633354131-15">}</span><span·class="w">
217 ·············</span><span·class="p"·data-group-id="2146280711-14">}</span><span·class="p">,</span><span·class="w">217 ·············</span><span·class="p"·data-group-id="0633354131-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="2146280711-13">}</span><span·class="w">220 ············</span><span·class="p"·data-group-id="0633354131-13">}</span><span·class="w">
221 ···········</span><span·class="p"·data-group-id="2146280711-12">]</span><span·class="w">221 ···········</span><span·class="p"·data-group-id="0633354131-12">]</span><span·class="w">
222 ··········</span><span·class="p"·data-group-id="2146280711-11">}</span><span·class="w">222 ··········</span><span·class="p"·data-group-id="0633354131-11">}</span><span·class="w">
223 ·········</span><span·class="p"·data-group-id="2146280711-10">]</span><span·class="w">223 ·········</span><span·class="p"·data-group-id="0633354131-10">]</span><span·class="w">
224 ·······</span><span·class="p"·data-group-id="2146280711-9">}</span><span·class="w">224 ·······</span><span·class="p"·data-group-id="0633354131-9">}</span><span·class="w">
225 ······</span><span·class="p"·data-group-id="2146280711-8">}</span><span·class="w">225 ······</span><span·class="p"·data-group-id="0633354131-8">}</span><span·class="w">
226 ·····</span><span·class="p"·data-group-id="2146280711-7">]</span><span·class="w">226 ·····</span><span·class="p"·data-group-id="0633354131-7">]</span><span·class="w">
227 ····</span><span·class="p"·data-group-id="2146280711-6">}</span><span·class="w">227 ····</span><span·class="p"·data-group-id="0633354131-6">}</span><span·class="w">
228 ···</span><span·class="p"·data-group-id="2146280711-2">}</span><span·class="w">228 ···</span><span·class="p"·data-group-id="0633354131-2">}</span><span·class="w">
229 ··</span><span·class="p"·data-group-id="2146280711-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="0633354131-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.22 KB
./usr/share/doc/erlang-doc/html/lib/megaco-4.7.2/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="2998695901-1">(</span><span·class="s">&quot;baidarka&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2998695901-2">[</span><span·class="p"·data-group-id="2998695901-2">]</span><span·class="p"·data-group-id="299869[·...·truncated·by·diffoscope;·len:·4,·SHA:·b329c24bcd7aeba27e6c18622e8316fdc0f9dc51342bcbe06a7b918656561db7·...·]-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="8773626646-1">(</span><span·class="s">&quot;baidarka&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8773626646-2">[</span><span·class="p"·data-group-id="8773626646-2">]</span><span·class="p"·data-group-id="877362[·...·truncated·by·diffoscope;·len:·4,·SHA:·5c26108d7fa480308d990d8d00f68eed851151dd28ca1322f299a9b1c937168e·...·]-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="2998695901-3">(</span><span·class="s">&quot;baidarka&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2998695901-4">[</span><span·class="p"·data-group-id="2998695901-4">]</span><span·class="p"·data-group-id="2998695901-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="2998695901-5">(</span><span·class="s">&quot;baidarka&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2998695901-6">[</span><span·class="p"·data-group-id="2998695901-6"[·...·truncated·by·diffoscope;·len:·52,·SHA:·68117e8025e6b88b82293a4645b0c757d5ad58adca1a5da86af6a43d92af9349·...·]">)</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="8773626646-3">(</span><span·class="s">&quot;baidarka&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8773626646-4">[</span><span·class="p"·data-group-id="8773626646-[·...·truncated·by·diffoscope;·len:·54,·SHA:·14e8e1e5f82f82a06073fcad665ecf3d2c024893f3fb05801ec07f690a30462a·...·]">)</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="8773626646-5">(</span><span·class="s">&quot;baidarka&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8773626646-6">[</span><span·class="p"·data-group-id="8773626646-6">]</span><span·class="p"·data-group-id="8773626646-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="2998695901-7">(</span><span·class="s">&quot;baidarka&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2998695901-8">[</span><span·class="p"·data-group-id="2998695901-8">]</span><span·class="p"·data-group-id="299869[·...·truncated·by·diffoscope;·len:·4,·SHA:·b329c24bcd7aeba27e6c18622e8316fdc0f9dc51342bcbe06a7b918656561db7·...·]-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="8773626646-7">(</span><span·class="s">&quot;baidarka&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8773626646-8">[</span><span·class="p"·data-group-id="8773626646-8">]</span><span·class="p"·data-group-id="877362[·...·truncated·by·diffoscope;·len:·4,·SHA:·5c26108d7fa480308d990d8d00f68eed851151dd28ca1322f299a9b1c937168e·...·]-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.2/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="3230486693-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="3230486693-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="4586895406-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="4586895406-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="8248378897-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:·d182f6f5068767d96f7185a1f260933398a2b16a152ef62af86cda74f58914ca·...·]-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="6485902649-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:·54585bfd0c45cf7e69b68d5e34abdf1ff3d37d18d63bb205c72f5133f8b63dfc·...·]-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="9965703921-1">(</span><span·class="p"·data-group-id="9965703921-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="9965703[·...·truncated·by·diffoscope;·len:·54,·SHA:·2867b6ad27123ece4b29f79ecfa0b502afe10e4c6df7ca4a7fe3c6e5afeb0ced·...·]21-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="1023873721-1">(</span><span·class="p"·data-group-id="1023873721-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="1023873[·...·truncated·by·diffoscope;·len:·54,·SHA:·ec8ba6c2b773d34b5267d023388304eae15fd61968e64f12afa525090a7b0cc3·...·]21-2">}</span><span·class="w">
146 </span><span·class="nf">action_reply</span><span·class="p"·data-group-id="9965703921-3">(</span><span·class="p"·data-group-id="9965703921-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="996570392[·...·truncated·by·diffoscope;·len:·52,·SHA:·07de7b045f1f6cfd997f4a7ebb38df4475a141a88ae165675e85bd79811115ff·...·]21-4">}</span><span·class="w">146 </span><span·class="nf">action_reply</span><span·class="p"·data-group-id="1023873721-3">(</span><span·class="p"·data-group-id="1023873721-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="102387372[·...·truncated·by·diffoscope;·len:·52,·SHA:·44cae9ae62b07eb5066c6881acd6baf85f2f11a471e66f81011dcbf7b88ed81a·...·]21-4">}</span><span·class="w">
147 </span><span·class="nf">error_desc</span><span·class="p"·data-group-id="9965703921-5">(</span><span·class="p"·data-group-id="9965703921-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="99657[·...·truncated·by·diffoscope;·len:·56,·SHA:·1d00630da8fc64bb3f67b4d4254cc8a66228c540b3c5b540a1de68a0d3d93da5·...·]21-6">}</span><span·class="w">147 </span><span·class="nf">error_desc</span><span·class="p"·data-group-id="1023873721-5">(</span><span·class="p"·data-group-id="1023873721-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="10238[·...·truncated·by·diffoscope;·len:·56,·SHA:·5f020eee18ccb459618577be94f17d30f20cc39bdd75a26cdbeb606d70f3e6d1·...·]21-6">}</span><span·class="w">
148 </span><span·class="nf">segment_no</span><span·class="p"·data-group-id="9965703921-7">(</span><span·class="p"·data-group-id="9965703921-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="9965703921-8">(</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·460,·SHA:·a589d4d2d5fce031b091de77172fde8d7657c5fac6e737299f8185b2ae2bb38e·...·]51-2">}</span></code></pre><p>The·record·initially·returned·by·<code·class="inline">megaco:connect/4,5</code>.·It·identifies·a·&quot;virtual&quot;148 </span><span·class="nf">segment_no</span><span·class="p"·data-group-id="1023873721-7">(</span><span·class="p"·data-group-id="1023873721-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="1023873721-8">(</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·460,·SHA:·733f57b2dc7447b45cabed83e45ff7e20bc6f05ffed3d732c588549b494b2037·...·]51-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>
1020 KB
./usr/share/doc/erlang-doc/html/lib/mnesia-4.23.5/doc/html/mnesia.epub
3.96 KB
zipinfo {}
    
Offset 1, 26 lines modifiedOffset 1, 26 lines modified
1 Zip·file·size:·221934·bytes,·number·of·entries:·241 Zip·file·size:·221935·bytes,·number·of·entries:·24
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Apr-18·14:01·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Apr-18·15:28·mimetype
3 ?rw-r--r--··6.1·unx······718·bx·defN·25-Apr-18·14:01·OEBPS/title.xhtml3 ?rw-r--r--··6.1·unx······718·bx·defN·25-Apr-18·15:28·OEBPS/title.xhtml
4 ?rw-r--r--··6.1·unx····78811·bx·defN·25-Apr-18·14:01·OEBPS/notes.xhtml4 ?rw-r--r--··6.1·unx····78811·bx·defN·25-Apr-18·15:28·OEBPS/notes.xhtml
5 ?rw-r--r--··6.1·unx·····2017·bx·defN·25-Apr-18·14:01·OEBPS/nav.xhtml5 ?rw-r--r--··6.1·unx·····2017·bx·defN·25-Apr-18·15:28·OEBPS/nav.xhtml
6 ?rw-r--r--··6.1·unx·····7620·bx·defN·25-Apr-18·14:01·OEBPS/mnesia_registry.xhtml6 ?rw-r--r--··6.1·unx·····7620·bx·defN·25-Apr-18·15:28·OEBPS/mnesia_registry.xhtml
7 ?rw-r--r--··6.1·unx·····6838·bx·defN·25-Apr-18·14:01·OEBPS/mnesia_overview.xhtml7 ?rw-r--r--··6.1·unx·····6838·bx·defN·25-Apr-18·15:28·OEBPS/mnesia_overview.xhtml
8 ?rw-r--r--··6.1·unx····13297·bx·defN·25-Apr-18·14:01·OEBPS/mnesia_frag_hash.xhtml8 ?rw-r--r--··6.1·unx····13297·bx·defN·25-Apr-18·15:28·OEBPS/mnesia_frag_hash.xhtml
9 ?rw-r--r--··6.1·unx·····1788·bx·defN·25-Apr-18·14:01·OEBPS/mnesia_chap8.xhtml9 ?rw-r--r--··6.1·unx·····1788·bx·defN·25-Apr-18·15:28·OEBPS/mnesia_chap8.xhtml
10 ?rw-r--r--··6.1·unx····71362·bx·defN·25-Apr-18·14:01·OEBPS/mnesia_chap7.xhtml10 ?rw-r--r--··6.1·unx····71362·bx·defN·25-Apr-18·15:28·OEBPS/mnesia_chap7.xhtml
11 ?rw-r--r--··6.1·unx···136245·bx·defN·25-Apr-18·14:01·OEBPS/mnesia_chap5.xhtml11 ?rw-r--r--··6.1·unx···136245·bx·defN·25-Apr-18·15:28·OEBPS/mnesia_chap5.xhtml
12 ?rw-r--r--··6.1·unx···116071·bx·defN·25-Apr-18·14:01·OEBPS/mnesia_chap4.xhtml12 ?rw-r--r--··6.1·unx···116071·bx·defN·25-Apr-18·15:28·OEBPS/mnesia_chap4.xhtml
13 ?rw-r--r--··6.1·unx····45343·bx·defN·25-Apr-18·14:01·OEBPS/mnesia_chap3.xhtml13 ?rw-r--r--··6.1·unx····45343·bx·defN·25-Apr-18·15:28·OEBPS/mnesia_chap3.xhtml
14 ?rw-r--r--··6.1·unx···103046·bx·defN·25-Apr-18·14:01·OEBPS/mnesia_chap2.xhtml14 ?rw-r--r--··6.1·unx···103046·bx·defN·25-Apr-18·15:28·OEBPS/mnesia_chap2.xhtml
15 ?rw-r--r--··6.1·unx·····3837·bx·defN·25-Apr-18·14:01·OEBPS/mnesia_chap1.xhtml15 ?rw-r--r--··6.1·unx·····3837·bx·defN·25-Apr-18·15:28·OEBPS/mnesia_chap1.xhtml
16 ?rw-r--r--··6.1·unx····40203·bx·defN·25-Apr-18·14:01·OEBPS/mnesia_app_c.xhtml16 ?rw-r--r--··6.1·unx····40203·bx·defN·25-Apr-18·15:28·OEBPS/mnesia_app_c.xhtml
17 ?rw-r--r--··6.1·unx····81685·bx·defN·25-Apr-18·14:01·OEBPS/mnesia_app_b.xhtml17 ?rw-r--r--··6.1·unx····81685·bx·defN·25-Apr-18·15:28·OEBPS/mnesia_app_b.xhtml
18 ?rw-r--r--··6.1·unx····39380·bx·defN·25-Apr-18·14:01·OEBPS/mnesia_app_a.xhtml18 ?rw-r--r--··6.1·unx····39380·bx·defN·25-Apr-18·15:28·OEBPS/mnesia_app_a.xhtml
19 ?rw-r--r--··6.1·unx···314521·bx·defN·25-Apr-18·14:01·OEBPS/mnesia.xhtml19 ?rw-r--r--··6.1·unx···314521·bx·defN·25-Apr-18·15:28·OEBPS/mnesia.xhtml
20 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Apr-18·14:01·OEBPS/dist/epub-erlang-ESPT6BQV.css20 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Apr-18·15:28·OEBPS/dist/epub-erlang-ESPT6BQV.css
21 ?rw-r--r--··6.1·unx······499·bx·defN·25-Apr-18·14:01·OEBPS/dist/epub-LSJCIYTM.js21 ?rw-r--r--··6.1·unx······499·bx·defN·25-Apr-18·15:28·OEBPS/dist/epub-LSJCIYTM.js
22 ?rw-r--r--··6.1·unx·····3374·bx·defN·25-Apr-18·14:01·OEBPS/content.opf22 ?rw-r--r--··6.1·unx·····3374·bx·defN·25-Apr-18·15:28·OEBPS/content.opf
23 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Apr-18·14:01·OEBPS/assets/logo.png23 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Apr-18·15:28·OEBPS/assets/logo.png
24 ?rw-r--r--··6.1·unx······252·bx·defN·25-Apr-18·14:01·META-INF/container.xml24 ?rw-r--r--··6.1·unx······252·bx·defN·25-Apr-18·15:28·META-INF/container.xml
25 ?rw-r--r--··6.1·unx······162·bx·defN·25-Apr-18·14:01·META-INF/com.apple.ibooks.display-options.xml25 ?rw-r--r--··6.1·unx······162·bx·defN·25-Apr-18·15:28·META-INF/com.apple.ibooks.display-options.xml
26 24·files,·1087488·bytes·uncompressed,·217712·bytes·compressed:··80.0%26 24·files,·1087488·bytes·uncompressed,·217713·bytes·compressed:··80.0%
131 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,·Apr·18·2025·14:01:30,·uncompressed·size·20,·method=store1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Apr·18·2025·15:28:12,·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="7636998576-1">[</samp><samp·class="p"·data-group-id="7636998576-2">{</samp><samp·class="p"·data-group-id="7636998576-3">{</samp><samp·class="ss">disc_only_copies</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="nf">node</samp><samp·class=[·...·truncated·by·diffoscope;·len:·318,·SHA:·96c44a013ab73ee6f90204affd4c543b788a14244f41f93c42ab10329875e91b·...·]-3">}</samp><samp·class="p">]</samp><samp·class="p">,</samp><samp·class="w">139 is·to·reside·as·<code·class="inline">disc_only_copies</code>·on·all·nodes,·a·call·looks·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="w">··········</samp><samp·class="n">TabDef</samp><samp·class="w">·</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="8835021438-1">[</samp><samp·class="p"·data-group-id="8835021438-2">{</samp><samp·class="p"·data-group-id="8835021438-3">{</samp><samp·class="ss">disc_only_copies</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="nf">node</samp><samp·class=[·...·truncated·by·diffoscope;·len:·318,·SHA:·168003a4e3aed19c065bc3a41b0b21291615239b88d88ee78899003c331503ce·...·]-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="7636998576-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="7636998576-6">)</samp></code></pre>140 ··········</samp><samp·class="nc">mnesia_registry</samp><samp·class="p">:</samp><samp·class="nf">create_table</samp><samp·class="p"·data-group-id="8835021438-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="8835021438-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.5/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="8323934056-1">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8323934056-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="4877413735-1">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4877413735-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="8323934056-3">[</span><span·class="p"·data-group-id="8323934056-3">]</span><span·class="p"·data-group-id="8323934056-2">}</span><span·class="p"·data-group-id="8323934056-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="4877413735-3">[</span><span·class="p"·data-group-id="4877413735-3">]</span><span·class="p"·data-group-id="4877413735-2">}</span><span·class="p"·data-group-id="4877413735-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.6/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.6/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="0207810960-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="0207810960-2">(</span><span·class="p"·data-group-id="0207810960-2">)</span><span·class="p">,</span[·...·truncated·by·diffoscope;·len:·99,·SHA:·514e557cdef4bc04e933eb9c98dcb4bade934ca8a5a1fbd1beaa333225f5143a·...·]60-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="0735101060-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="0735101060-2">(</span><span·class="p"·data-group-id="0735101060-2">)</span><span·class="p">,</span[·...·truncated·by·diffoscope;·len:·99,·SHA:·047cd226b2ef0f9be7c73dfaab37f7d1ec871e11cdf9be85030b970e7bdfb5e2·...·]60-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="2460597922-1">(</span><span·class="ss">table</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2460597922-2">[</span><span·class="p"·data-group-id="2460597922-3">{</span><span·class="ss">ram_copies</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·689,·SHA:·cead224ed0bbb8c75f17a2fd4d339a9d2cd9b7120b8fbf06527e6d7e3fd58674·...·]-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="6413703249-1">(</span><span·class="ss">table</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6413703249-2">[</span><span·class="p"·data-group-id="6413703249-3">{</span><span·class="ss">ram_copies</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·689,·SHA:·268ad23e8c46a094f862bd576237288666adbfbbccf8f961495ff9863a7a53f5·...·]-6">}</span><span·class="p">,</span><span·class="w">
3040 ·······</span><span·class="p"·data-group-id="2460597922-8">{</span><span·class="ss">storage_properties</span><span·class="p">,</span><span·class="w">3040 ·······</span><span·class="p"·data-group-id="6413703249-8">{</span><span·class="ss">storage_properties</span><span·class="p">,</span><span·class="w">
3041 ········</span><span·class="p"·data-group-id="2460597922-9">[</span><span·class="p"·data-group-id="2460597922-10">{</span><span·class="ss">ets</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2460597922-11">[</span><span·class="ss">compressed</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·872,·SHA:·4720cf86862ca13c2cf5d74f46d0b345dcb5f47d3c3fb3b548e85c0fc361672b·...·]-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="6413703249-9">[</span><span·class="p"·data-group-id="6413703249-10">{</span><span·class="ss">ets</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6413703249-11">[</span><span·class="ss">compressed</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·872,·SHA:·4c8bf6a4f6dff3b758fcce5a08d43b3e9e21069c133dae6f7c7e6194648e268a·...·]-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="1054953086-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="3018157023-1">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">
3048 ····</span><span·class="p"·data-group-id="1054953086-2">[</span><span·class="p"·data-group-id="1054953086-3">{</span><span·class="ss">ram_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1054953086-4">[</span><span·class="n">N1</span><span·class="p">,</span><span·class="w">·</span><span·class="n">N2</span><span·class="p"·data-group-id="1054953086-4">]</span><span·class="p"·data-group-id="1054953086-3">}</span><span·class="p">,</span><span·class="w"> 
3049 ·····</span><span·class="p"·data-group-id="1054953086-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="1054953086-6">(</span><span·class="ss">fields</[·...·truncated·by·diffoscope;·len:·412,·SHA:·eb3c0ea8c191b3dd4f297b6690e8a456641e3a8bc15940dda85894ce33cdc500·...·]3048 ····</span><span·class="p"·data-group-id="3018157023-2">[</span><span·class="p"·data-group-id="3018157023-3">{</span><span·class="ss">ram_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3018157023-4">[</span><span·cl[·...·truncated·by·diffoscope;·len:·236,·SHA:·a63bf5cecaf40b4ee05d604b4547bb782127706e083d8d2b15f00da91d75672d·...·]
 3049 ·····</span><span·class="p"·data-group-id="3018157023-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="3018157023-6">(</span><span·class="ss">fields</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">person</span><span·class="p"·data-group-id="3018157023-6">)</span><span·class="p"·data-group-id="3018157023-5">}</span><span·class="p"·data-group-id="3018157023-2">]</span><span·class="p"·data-group-id="3018157023-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="7518300413-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="9027098977-1">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">
3052 ····</span><span·class="p"·data-group-id="7518300413-2">[</span><span·class="p"·data-group-id="7518300413-3">{</span><span·class="ss">ram_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7518300413-4">[</span><span·class="n">N1</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·146,·SHA:·8d9215b2df5d6c9ee16edbeeda241470c55d3911b31e29b8d13d031ff49c30a3·...·]-3">}</span><span·class="p">,</span><span·class="w">3052 ····</span><span·class="p"·data-group-id="9027098977-2">[</span><span·class="p"·data-group-id="9027098977-3">{</span><span·class="ss">ram_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9027098977-4">[</span><span·class="n">N1</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·146,·SHA:·3af6b61ac813351595e4e99c11006bd26e28792d810605fa2c0c0d46b5d17c83·...·]-3">}</span><span·class="p">,</span><span·class="w">
3053 ·····</span><span·class="p"·data-group-id="7518300413-5">{</span><span·class="ss">index</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7518300413-6">[</span><span·class="ss">address</span><span·class="p"·data-group-id="7518300413-6">]</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·8732deb876d6844eed9f45f6716c82707a3cc604489a829f020a8cb42353a786·...·]-5">}</span><span·class="p">,</span><span·class="w">3053 ·····</span><span·class="p"·data-group-id="9027098977-5">{</span><span·class="ss">index</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9027098977-6">[</span><span·class="ss">address</span><span·class="p"·data-group-id="9027098977-6">]</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·91deb68da28e9f596d8ba10d4113dd12724798f0389a552400a5639ac424fdcc·...·]-5">}</span><span·class="p">,</span><span·class="w">
3054 ·····</span><span·class="p"·data-group-id="7518300413-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="7518300413-8">(</span><span·class="ss">fields</span><span·class="p">,</span><span·clas[·...·truncated·by·diffoscope;·len:·244,·SHA:·bd845dc5e3eeb7daa81fd03f4f211bfc7814515425da8442c88d78ffa3d0eecf·...·]-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="9027098977-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="9027098977-8">(</span><span·class="ss">fields</span><span·class="p">,</span><span·clas[·...·truncated·by·diffoscope;·len:·244,·SHA:·730a14dfac3552fdf61f0b7f02811064218fa0d3154fc923c4eef081764e9830·...·]-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.2/doc/html/ets.html#select/3"><code·class="inline">ets:select/3</code></a>.·Optionally·a·lock·<code·class="inline">read</code>·or·<code·class="inline">write</code>·can·be·given·as·the·third5157 <a·href="../../../../lib/stdlib-6.2.2/doc/html/ets.html#select/3"><code·class="inline">ets:select/3</code></a>.·Optionally·a·lock·<code·class="inline">read</code>·or·<code·class="inline">write</code>·can·be·given·as·the·third
5158 argument.·Default·is·<code·class="inline">read</code>.·The·return·value·depends·on·<code·class="inline">MatchSpec</code>.</p><p>Notice·that·for·best·performance,·<code·class="inline">select</code>·is·to·be·used·before·any·modifying5158 argument.·Default·is·<code·class="inline">read</code>.·The·return·value·depends·on·<code·class="inline">MatchSpec</code>.</p><p>Notice·that·for·best·performance,·<code·class="inline">select</code>·is·to·be·used·before·any·modifying
5159 operations·are·done·on·that·table·in·the·same·transaction.·That·is,·do·not·use5159 operations·are·done·on·that·table·in·the·same·transaction.·That·is,·do·not·use
5160 <code·class="inline">write</code>·or·<code·class="inline">delete</code>·before·a·<code·class="inline">select</code>.</p><p>In·its·simplest·forms,·the·<code·class="inline">match_spec</code>·look·as·follows:</p><ul><li><code·class="inline">MatchSpec·=·[MatchFunction]</code></li><li><code·class="inline">MatchFunction·=·{MatchHead,·[Guard],·[Result]}</code></li><li><p><code·class="inline">MatchHead·=·tuple()·|·record()</code></p></li><li><code·class="inline">Guard·=·{&quot;Guardtest·name&quot;,·...}</code></li><li><code·class="inline">Result·=·&quot;Term·construct&quot;</code></li></ul><p>For·a·complete·description·of·<code·class="inline">select</code>,·see·the·<a·href="../../../../erts-15.2.6/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.6/doc/html/index.html">ERTS</a>
5161 User's·Guide·and·the·<a·href="../../../../lib/stdlib-6.2.2/doc/html/ets.html"><code·class="inline">ets</code></a>·manual·page·in·STDLIB.</p><p>For·example,·to·find·the·names·of·all·male·persons·older·than·30·in·table·<code·class="inline">Tab</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">MatchHead</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="2040094656-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:·96b8331820ca83d3c18b72d5a09efc2713c41799bdb18d74ea45976888399543·...·]-1">}</span><span·class="p">,</span><span·class="w">5161 User's·Guide·and·the·<a·href="../../../../lib/stdlib-6.2.2/doc/html/ets.html"><code·class="inline">ets</code></a>·manual·page·in·STDLIB.</p><p>For·example,·to·find·the·names·of·all·male·persons·older·than·30·in·table·<code·class="inline">Tab</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">MatchHead</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="3326098831-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:·0cd17eee166159e493b6bc05e2a8ff28ca1fb03ae808eb579844f4bc62d24e6d·...·]-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="2040094656-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="2040094[·...·truncated·by·diffoscope;·len:·3,·SHA:·d62a7b3da232bd0ac1f7520a3b5bb57b171aec57f960f55b47b1987d4e398f68·...·]-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="3326098831-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="3326098[·...·truncated·by·diffoscope;·len:·3,·SHA:·209eb5f20ab018ff6f1e42b98e5b57921aa4e2b7a7b683de32458b7153720a28·...·]-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="2040094656-3">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="p"·data-group-id="2040094656-4">[</span><span·class="p"·data-group-id="2040094656-5">{</span><span·class="n">MatchHead</span><span·class="p">,</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·466,·SHA:·b551470ea9e2c5ec78dc48a608d569c47a1597dc6a21700a2efa9c25807ec0ae·...·]-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="3326098831-3">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="p"·data-group-id="3326098831-4">[</span><span·class="p"·data-group-id="3326098831-5">{</span><span·class="n">MatchHead</span><span·class="p">,</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·466,·SHA:·6c3fded3d9b46a587c59b5d40e701dd6fe17d09557b0ad56d734b761752588e1·...·]-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="6327108892-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="8940677437-1">(</span><span·class="ss">employee</span><span·class="p">,</span><span·class="w">
5443 ····</span><span·class="p"·data-group-id="6327108892-2">[</span><span·class="p"·data-group-id="6327108892-3">{</span><span·class="ss">snmp</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6327108892-4">[</span><span·class="p"·data-group-id="6327108892-5">{</span[·...·truncated·by·diffoscope;·len:·438,·SHA:·224ed3efaa4eae54e84296a49fb3295dd35c6b7f579e0e408e69b1934d566ecc·...·]-3">}</span><span·class="p">,</span><span·class="w">5443 ····</span><span·class="p"·data-group-id="8940677437-2">[</span><span·class="p"·data-group-id="8940677437-3">{</span><span·class="ss">snmp</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8940677437-4">[</span><span·class="p"·data-group-id="8940677437-5">{</span[·...·truncated·by·diffoscope;·len:·438,·SHA:·74226c280d3da8f1625365db8c7056f02a21e0a2898ae0799bcdfc3a9072567a·...·]-3">}</span><span·class="p">,</span><span·class="w">
5444 ·····</span><span·class="p"·data-group-id="6327108892-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="6327108892-8">(</span><span·class="ss">fields</span><span·class="p">,</span><span·clas[·...·truncated·by·diffoscope;·len:·247,·SHA:·0df257823349ddd48adf5d094cb5ca5d0cfaddd3bc320d90399c2a2403c01b62·...·]-1">)</span><span·class="p">,</span></code></pre><p>The·corresponding·SNMP·table·would·have·three·columns:·<code·class="inline">department</code>,·<code·class="inline">name</code>,·and5444 ·····</span><span·class="p"·data-group-id="8940677437-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="8940677437-8">(</span><span·class="ss">fields</span><span·class="p">,</span><span·clas[·...·truncated·by·diffoscope;·len:·247,·SHA:·8c07d72dfca5730c66c50296a4856dc375086954d6512afffa738f739e32b027·...·]-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="6769607366-1">(</span><span·class="p"·data-group-id="6769607366-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:·e78c1f59865ac6513b82135ddb309548dabd20d90e1c7bc98375b866a6f66830·...·]-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="9244329968-1">(</span><span·class="p"·data-group-id="9244329968-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:·dfeb0296e033e509a4d0a301242566054a909a6200fe35e9f7dfdadee696a0a6·...·]-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="6769607366-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:·494c0077953f0e5e58b13e565228ec26690ce5a7343f8fe4c7739a453c8d2a87·...·]-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="9244329968-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:·03dfc8edce89feedd65ad1893fdd195801afdf2db6a9299e1ae73c63fd691c28·...·]-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="6769607366-4">(</span><span·class="p"·data-group-id="6769607366-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="9244329968-4">(</span><span·class="p"·data-group-id="9244329968-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="6769607366-5">(</span><span·class="n">F</span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="6769607366-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="6769607366-6">}</span><span·class="p"·data-group-id="6769607366-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="6769607366-7">(</span><span·class="n">M</span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="6769607366-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:·7c1d3ffe8fda8cbef9a44d58e86a130d9d056bea08f67294f53c434251b91868·...·]">)</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="9244329968-5">(</span><span·class="n">F</span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="9244329968-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:·e0473d40ce56129dd5db6eed4b4117fb5e0e8a43e186d078c58253574cc206aa·...·]">)</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="9244329968-7">(</span><span·class="n">M</span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="9244329968-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="9244329968-8">}</span><span·class="p"·data-group-id="9244329968-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="6769607366-9">(</span><span·class="n">Child</span><span·class="p"·data-group-id="6769607366-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:·9d6828429986062215c01b1c6a8897205413e76bf58b8ef084e50c0ec2706e1b·...·]-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="9244329968-9">(</span><span·class="n">Child</span><span·class="p"·data-group-id="9244329968-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:·970613c178a1a4c79eec1602f881343ce6eaab5a6f459f9b938c6e3cdd22e232·...·]-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="6769607366-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="6769607366-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="9244329968-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="9244329968-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="6769607366-12">(</span><span·class="n">Trans</span><span·class="p"·data-group-id="6769607366-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="9244329968-12">(</span><span·class="n">Trans</span><span·class="p"·data-group-id="9244329968-12">)</span><span·class="p">.</span><span·class="w">
  
6023 </span><span·class="nf">oid</span><span·class="p"·data-group-id="6769607366-13">(</span><span·class="n">Rec</span><span·class="p"·data-group-id="6769607366-13">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="6769607366-14">{</span><span·class="nf">elemen[·...·truncated·by·diffoscope;·len:·542,·SHA:·8d6b9e5fa1231627815cf4417087976cd2eeb7e654ad382192372f9460fe4580·...·]-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="9244329968-13">(</span><span·class="n">Rec</span><span·class="p"·data-group-id="9244329968-13">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="9244329968-14">{</span><span·class="nf">elemen[·...·truncated·by·diffoscope;·len:·542,·SHA:·a2128fecc2f81df0a598833a240e650dadd4aa5f188a433316282b99fc0ce792·...·]-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.5/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="3034825808-1">(</span><span·class="ss">mnesia_backup</span><span·class="p"·data-group-id="3034825808-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="3308209959-1">(</span><span·class="ss">mnesia_backup</span><span·class="p"·data-group-id="3308209959-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="3034825808-2">(</span><span·class="s">&quot;kernel/include/file.hrl&quot;</span><span·class="p"·data-group-id="3034825808-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="3308209959-2">(</span><span·class="s">&quot;kernel/include/file.hrl&quot;</span><span·class="p"·data-group-id="3308209959-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="3034825808-3">(</span><span·class="p"·data-group-id="3034825808-4">[</span><span·class="w">166 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="3308209959-3">(</span><span·class="p"·data-group-id="3308209959-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="3034825808-4">]</span><span·class="p"·data-group-id="3034825808-3">)</span><span·class="p">.</span><span·class="w">176 ········</span><span·class="p"·data-group-id="3308209959-4">]</span><span·class="p"·data-group-id="3308209959-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="3034825808-5">(</span><span·class="ss">backup</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3034825808-6">{</span><span·class="ss">tmp_file</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">file</s[·...·truncated·by·diffoscope;·len:·179,·SHA:·38359fcf72273c1c6f0c0e076edbae8c0055dd76a595180a5ac2b70f9141f41f·...·]-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="3308209959-5">(</span><span·class="ss">backup</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3308209959-6">{</span><span·class="ss">tmp_file</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">file</s[·...·truncated·by·diffoscope;·len:·179,·SHA:·1a64472eb32212b4628ad7aa36847879e9af983875295b0d5d6b08459c4c4a81·...·]-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="3034825808-7">(</span><span·class="n">OpaqueData</span><span·class="p"·data-group-id="3034825808-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="3308209959-7">(</span><span·class="n">OpaqueData</span><span·class="p"·data-group-id="3308209959-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="3034825808-8">(</span><span·class="p"·data-group-id="3034825808-9">[</span><span·class="n">File</span><span·class="p">,</span><span·class="s">&quot;.BUPTMP&quot;</span><span·class="p"·data-group-id="3034825808-9">]</span><span·class="p"·data-group-id="30348[·...·truncated·by·diffoscope;·len:·5,·SHA:·e3d0a9487a6af41a0763dc51ccb285737203440b398434aa43f777fddec9c4e8·...·]-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="3308209959-8">(</span><span·class="p"·data-group-id="3308209959-9">[</span><span·class="n">File</span><span·class="p">,</span><span·class="s">&quot;.BUPTMP&quot;</span><span·class="p"·data-group-id="3308209959-9">]</span><span·class="p"·data-group-id="33082[·...·truncated·by·diffoscope;·len:·5,·SHA:·eb4ec265982ef1bd42dc6a68ebdf66b902a7de13752ab729323bed80930da9e4·...·]-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="3034825808-10">(</span><span·class="n">Tmp</span><span·class="p"·data-group-id="3034825808-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="3308209959-10">(</span><span·class="n">Tmp</span><span·class="p"·data-group-id="3308209959-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="3034825808-11">(</span><span·class="p"·data-group-id="3034825808-12">[</span><span·class="p"·data-group-id="3034825808-13">{</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">make_ref</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·131,·SHA:·dd7b7a6a15b27b3500e18220e4528b6c0bde40f5af713b1396aba79c926efc2f·...·]-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="3308209959-11">(</span><span·class="p"·data-group-id="3308209959-12">[</span><span·class="p"·data-group-id="3308209959-13">{</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">make_ref</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·131,·SHA:·7a72a013b6033009774496bae368e3c0155e6dad18cbbf7f829a57c1d762ef65·...·]-13">}</span><span·class="p">,</span><span·class="w">
188 ························</span><span·class="p"·data-group-id="3034825808-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="3034825808-15">}</span><span·class="p">,</span><span·class="w">188 ························</span><span·class="p"·data-group-id="3308209959-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="3308209959-15">}</span><span·class="p">,</span><span·class="w">
189 ························</span><span·class="p"·data-group-id="3034825808-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="3034825808-16">}</span><span·class="p">,</span><span·class="w">189 ························</span><span·class="p"·data-group-id="3308209959-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="3308209959-16">}</span><span·class="p">,</span><span·class="w">
190 ························</span><span·class="p"·data-group-id="3034825808-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="3034825808-18">(</span><span·class="p"·data-group-id="3034825808-18">)</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·129,·SHA:·ab6d5684ac719aaa0f587940f0b4f202a4d4563920a1e6b779ed15714d24387f·...·]-11">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">190 ························</span><span·class="p"·data-group-id="3308209959-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="3308209959-18">(</span><span·class="p"·data-group-id="3308209959-18">)</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·129,·SHA:·880518c7bfb341d6c71273f695255df9c084f3391fb62c9dbfbe7eaa928f0dfa·...·]-11">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
191 ········</span><span·class="p"·data-group-id="3034825808-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="3034825808-19">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">191 ········</span><span·class="p"·data-group-id="3308209959-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="3308209959-19">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
192 ············</span><span·class="p"·data-group-id="3034825808-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="3034825808-21">{</span><span·class="ss">tmp_file</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·526,·SHA:·711526d84d896c721892034b7b5b0b451a440f984a943ba2db9985c5aaef4ea1·...·]-20">}</span><span·class="p">;</span><span·class="w">192 ············</span><span·class="p"·data-group-id="3308209959-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="3308209959-21">{</span><span·class="ss">tmp_file</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·526,·SHA:·5de9b4255d0ffdabe5f4a17a37b3dbf2239c37ca2ed5f5618a1a55dfb5f41123·...·]-20">}</span><span·class="p">;</span><span·class="w">
193 ········</span><span·class="p"·data-group-id="3034825808-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="3034825808-22">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">193 ········</span><span·class="p"·data-group-id="3308209959-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="3308209959-22">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
194 ············</span><span·class="p"·data-group-id="3034825808-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="3034825808-23">}</span><span·class="w">194 ············</span><span·class="p"·data-group-id="3308209959-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="3308209959-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="3034825808-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="3034825808-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="3308209959-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="3308209959-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="3034825808-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"·d[·...·truncated·by·diffoscope;·len:·24,·SHA:·714491c18241512d975cd797dcb1c055bad72a8c9fbadfade1db759d23000cbd·...·]-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="3308209959-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"·d[·...·truncated·by·diffoscope;·len:·24,·SHA:·c487628e6472132f76118ae958e20077e204a855f82a9bb1ec51e131725ee9a5·...·]-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="3034825808-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="3034825808-26">}</span><span·class="p">;</span><span·class="w">203 ············</span><span·class="p"·data-group-id="3308209959-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="3308209959-26">}</span><span·class="p">;</span><span·class="w">
204 ········</span><span·class="p"·data-group-id="3034825808-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="3034825808-27">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">204 ········</span><span·class="p"·data-group-id="3308209959-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="3308209959-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="3034825808-28">(</span><span·class="n">B</span><span·class="p"·data-group-id="3034825808-28">)</span><span·class="p">,</span><span·class="w">205 ············</span><span·class="nf">abort_write</span><span·class="p"·data-group-id="3308209959-28">(</span><span·class="n">B</span><span·class="p"·data-group-id="3308209959-28">)</span><span·class="p">,</span><span·class="w">
206 ············</span><span·class="p"·data-group-id="3034825808-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="3034825808-29">}</span><span·class="w">206 ············</span><span·class="p"·data-group-id="3308209959-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="3308209959-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="3034825808-30">(</span><span·class="n">OpaqueData</span><span·class="p"·data-group-id="3034825808-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="3308209959-30">(</span><span·class="n">OpaqueData</span><span·class="p"·data-group-id="3308209959-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="3034825808-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="3034825808-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="3308209959-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="3308209959-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="3034825808-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="3034825808-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="3308209959-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="3308209959-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="3034825808-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="3034825808-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="3308209959-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="3308209959-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="3034825808-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><spa[·...·truncated·by·diffoscope;·len:·119,·SHA:·9cd2e00ec7450b5d3efb5165a3097b36e5ffd84410c5fe3dbfbff4ca472c2c6d·...·]-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="3308209959-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><spa[·...·truncated·by·diffoscope;·len:·119,·SHA:·38a1d780fc86323608926a43ebac5e6d9b7269820fe2ae1efdf237f4df2c44c5·...·]-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="3034825808-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:·11,·SHA:·d3d53c41222d73acf743b454b766d697e9fd2a30e30ad4151763c4e9185fd6c1·...·]-35">}</span><span·class="p">;</span><span·class="w">220 ····························</span><span·class="p"·data-group-id="3308209959-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:·11,·SHA:·a214bea2389517e50b46d525d23b1eac3b1aea1f28e846e362e0869986535d96·...·]-35">}</span><span·class="p">;</span><span·class="w">
221 ························</span><span·class="p"·data-group-id="3034825808-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="3034825808-36">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">221 ························</span><span·class="p"·data-group-id="3308209959-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="3308209959-36">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
222 ····························</span><span·class="p"·data-group-id="3034825808-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="3034825808-37">}</span><span·class="w">222 ····························</span><span·class="p"·data-group-id="3308209959-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="3308209959-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="3034825808-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="3034825808-38">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">224 ················</span><span·class="p"·data-group-id="3308209959-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="3308209959-38">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
225 ····················</span><span·class="p"·data-group-id="3034825808-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="3034825808-39">}</span><span·class="w">225 ····················</span><span·class="p"·data-group-id="3308209959-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="3308209959-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="3034825808-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="3034825808-40">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">227 ········</span><span·class="p"·data-group-id="3308209959-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="3308209959-40">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
228 ············</span><span·class="p"·data-group-id="3034825808-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="3034825808-41">}</span><span·class="w">228 ············</span><span·class="p"·data-group-id="3308209959-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="3308209959-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="3034825808-42">(</span><span·class="n">BackupRef</span><span·class="p"·data-group-id="3034825808-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="3308209959-42">(</span><span·class="n">BackupRef</span><span·class="p"·data-group-id="3308209959-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="3034825808-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="3034825808-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="3308209959-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="3308209959-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="3034825808-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="3034825808-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="3308209959-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="3308209959-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="3034825808-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-g[·...·truncated·by·diffoscope;·len:·19,·SHA:·3eb132c85efce26ddb7bd839131ad8521314e2589e04f16a58769716794d8fb9·...·]-45">}</span><span·class="p">;</span><span·class="w">238 ············</span><span·class="p"·data-group-id="3308209959-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-g[·...·truncated·by·diffoscope;·len:·19,·SHA:·75097764a72630b0e9d45cd67b25ac07b907ea8e1659f895ca83f354152c3f32·...·]-45">}</span><span·class="p">;</span><span·class="w">
239 ········</span><span·class="p"·data-group-id="3034825808-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="3034825808-46">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">239 ········</span><span·class="p"·data-group-id="3308209959-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="3308209959-46">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
240 ············</span><span·class="p"·data-group-id="3034825808-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="3034825808-47">}</span><span·class="w">240 ············</span><span·class="p"·data-group-id="3308209959-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="3308209959-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="3034825808-48">(</span><span·class="ss">restore</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3034825808-49">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">file_des[·...·truncated·by·diffoscope;·len:·179,·SHA:·76d2ecd3a727415f737d4bfa5f56f5f4639b1600ee30e4c7be262a2cbcb4b98e·...·]-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="3308209959-48">(</span><span·class="ss">restore</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3308209959-49">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">file_des[·...·truncated·by·diffoscope;·len:·179,·SHA:·0acddf88cb85b3bf10371ab25bd6547c97e9d0d174166c58c8f1d3c878add4ce·...·]-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="3034825808-50">(</span><span·class="n">OpaqueData</span><span·class="p"·data-group-id="3034825808-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="3308209959-50">(</span><span·class="n">OpaqueData</span><span·class="p"·data-group-id="3308209959-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="3034825808-51">(</span><span·class="n">File</span><span·class="p"·data-group-id="3034825808-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="3308209959-51">(</span><span·class="n">File</span><span·class="p"·data-group-id="3308209959-51">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
252 ········</span><span·class="p"·data-group-id="3034825808-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="3034825808-52">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">252 ········</span><span·class="p"·data-group-id="3308209959-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="3308209959-52">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
253 ············</span><span·class="p"·data-group-id="3034825808-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="3034825808-53">}</span><span·class="p">;</span><span·class="w">253 ············</span><span·class="p"·data-group-id="3308209959-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="3308209959-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="3034825808-54">(</span><span·class="p"·data-group-id="3034825808-55">[</span><span·class="p"·data-group-id="3034825808-56">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="w">·</span><span·class="n">File</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·18,·SHA:·688d01e8b370b976f72fb6be85a9fe570bb5dcd7ab2d700143af553124f46558·...·]-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="3308209959-54">(</span><span·class="p"·data-group-id="3308209959-55">[</span><span·class="p"·data-group-id="3308209959-56">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="w">·</span><span·class="n">File</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·18,·SHA:·034956feef26f3c157b1f38623bd760804eededa983723539a35af1032e10c0a·...·]-56">}</span><span·class="p">,</span><span·class="w">
256 ································</span><span·class="p"·data-group-id="3034825808-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="3034825808-58">(</span><span·class="p"·data-group-id="3034825808-58">)</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·26048ecc35ad3e045b6c59e61c4622ba1d0862002171b31fc436f41195818448·...·]-57">}</span><span·class="p">,</span><span·class="w">256 ································</span><span·class="p"·data-group-id="3308209959-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="3308209959-58">(</span><span·class="p"·data-group-id="3308209959-58">)</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·7dfb5ce31ddec62e9d9ede0380ab784511c256343677369daef95e2d1e9e30e5·...·]-57">}</span><span·class="p">,</span><span·class="w">
257 ································</span><span·class="p"·data-group-id="3034825808-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="3034825808-59">}</span><span·class="p">,</span><span·class="w">257 ································</span><span·class="p"·data-group-id="3308209959-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="3308209959-59">}</span><span·class="p">,</span><span·class="w">
258 ································</span><span·class="p"·data-group-id="3034825808-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="3034825808-60">}</span><span·class="p">,</span><span·class="w">258 ································</span><span·class="p"·data-group-id="3308209959-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="3308209959-60">}</span><span·class="p">,</span><span·class="w">
259 ································</span><span·class="p"·data-group-id="3034825808-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="3034825808-62">(</span><span·class="p"·data-group-id="3034825808-62">)</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·129,·SHA:·a16811ec9e37f2fec5a8b3712c70ec7f7a325e835449a1e978e39d2afa812762·...·]-54">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">259 ································</span><span·class="p"·data-group-id="3308209959-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="3308209959-62">(</span><span·class="p"·data-group-id="3308209959-62">)</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·129,·SHA:·dc0fea96b557d0ef81edb67b3b29c2bfe41256e630b85647810fcce8ffdcc5f1·...·]-54">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
260 ················</span><span·class="p"·data-group-id="3034825808-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="3034825808-63">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">260 ················</span><span·class="p"·data-group-id="3308209959-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="3308209959-63">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
261 ····················</span><span·class="p"·data-group-id="3034825808-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="3034825808-65">{</span><span·class="ss">file</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·526,·SHA:·c15d524edcd961c4c397f8c99728fbe082182b4edbf5491a33fcb8c477b371ab·...·]-64">}</span><span·class="p">;</span><span·class="w">261 ····················</span><span·class="p"·data-group-id="3308209959-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="3308209959-65">{</span><span·class="ss">file</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·526,·SHA:·fd52194306269be546e8a66a8b2f69ca265b688c21c3a2ac1c0fc9e809687606·...·]-64">}</span><span·class="p">;</span><span·class="w">
262 ················</span><span·class="p"·data-group-id="3034825808-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·cla[·...·truncated·by·diffoscope;·len:·245,·SHA:·3284c3cbc3844a4df469c07896e785da505eee7e88985039119ec8fc0c4efcae·...·]-66">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">262 ················</span><span·class="p"·data-group-id="3308209959-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·cla[·...·truncated·by·diffoscope;·len:·245,·SHA:·b18c4077cdd4d465ba80698fa03226866440c4f58a72f144519f18da3e00e59b·...·]-66">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
263 ····················</span><span·class="p"·data-group-id="3034825808-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="3034825808-69">{</span><span·class="ss">file</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·526,·SHA:·4d24bbf2e25ca272378e344caf118e7cacd0b2c5bb28c993794c9a15767734d4·...·]-68">}</span><span·class="p">;</span><span·class="w">263 ····················</span><span·class="p"·data-group-id="3308209959-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="3308209959-69">{</span><span·class="ss">file</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·526,·SHA:·ec760567721172d819bc634a79ec929afab45c234e13211462c627b805991064·...·]-68">}</span><span·class="p">;</span><span·class="w">
264 ················</span><span·class="p"·data-group-id="3034825808-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·cla[·...·truncated·by·diffoscope;·len:·56,·SHA:·b17d1799caa919c35427b78d5ae51dbce538d95c2ffa6cd7ba7805aa613175cc·...·]-70">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">264 ················</span><span·class="p"·data-group-id="3308209959-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·cla[·...·truncated·by·diffoscope;·len:·56,·SHA:·a6aacf30e8ebf6c50fb55c819cf1058c576851ba03709d0afeb56023bf800a30·...·]-70">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
265 ····················</span><span·class="p"·data-group-id="3034825808-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="3034825808-72">{</span><span·class="ss">file</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">File</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">file_desc</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Fd</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">cont</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">start</span><span·class="p"·data-group-id="3034825808-72">}</span><span·class="p"·data-group-id="3034825808-71">}</span><span·class="p">;</span><span·class="w"> 
266 ················</span><span·class="p"·data-group-id="3034825808-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="3034825808-73">}</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·9,·SHA:·1b26a2050bc0b75ef4370344a2e40ae3592c46c6e3996ee0aaf0545c4c8db15a·...·];</span><span·class="w">265 ····················</span><span·class="p"·data-group-id="3308209959-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="3308209959-72">{</span><span·cl[·...·truncated·by·diffoscope;·len:·598,·SHA:·1fdbe7c237a7186f5cab7fe8d98811769fff478498760ad86a01c6bedb53f9ba·...·];</span><span·class="w">
 266 ················</span><span·class="p"·data-group-id="3308209959-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="3308209959-73">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
267 ····················</span><span·class="p"·data-group-id="3034825808-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="3034825808-74">}</span><span·class="w">267 ····················</span><span·class="p"·data-group-id="3308209959-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="3308209959-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">
Max diff block lines reached; 14569/65907 bytes (22.11%) of diff not shown.
147 KB
./usr/share/doc/erlang-doc/html/lib/mnesia-4.23.5/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="1874417651-1">(</span><span·class="ss">mnesia_frag</span><span·class="p"·data-group-id="1874417651-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="1476774182-1">(</span><span·class="ss">mnesia_frag</span><span·class="p"·data-group-id="1476774182-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="1874417651-2">(</span><span·class="p"·data-group-id="1874417651-3">[</span><span·class="w">135 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="1476774182-2">(</span><span·class="p"·data-group-id="1476774182-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="1874417651-3">]</span><span·class="p"·data-group-id="1874417651-2">)</span><span·class="p">.</span><span·class="w">144 ········</span><span·class="p"·data-group-id="1476774182-3">]</span><span·class="p"·data-group-id="1476774182-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="1874417651-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="1874417651-5">{</span><span·class="ss">table</[·...·truncated·by·diffoscope;·len:·276,·SHA:·cfc5feb4d4bfbd7f85479e5ea3680caa4bc7a13d65e75a84da974eb2bfc20e77·...·]-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="1476774182-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="1476774182-5">{</span><span·class="ss">table</[·...·truncated·by·diffoscope;·len:·276,·SHA:·63c5ed1c4f67f8415c140f54d7a2173231af3bb6b906f82527ac7dc842c01974·...·]-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="1874417651-6">(</span><span·class="n">Tab</span><span·class="p"·data-group-id="1874417651-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="1476774182-6">(</span><span·class="n">Tab</span><span·class="p"·data-group-id="1476774182-6">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
150 ········</span><span·class="p"·data-group-id="1874417651-7">[</span><span·class="n">Tab</span><span·class="p"·data-group-id="1874417651-7">]</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">150 ········</span><span·class="p"·data-group-id="1476774182-7">[</span><span·class="n">Tab</span><span·class="p"·data-group-id="1476774182-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="1874417651-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="1874417651-9">{</span><span·class="ss">table</[·...·truncated·by·diffoscope;·len:·252,·SHA:·d6e2eabc3fd0cd9d0d2c9b8f4221258fa8570b188b70140c2e09d3c21a5954c0·...·]-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="1476774182-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="1476774182-9">{</span><span·class="ss">table</[·...·truncated·by·diffoscope;·len:·252,·SHA:·2b293044bd65c22b8fd1d8b45bde5af5277cd2caab16282dfeb9bcfc95cbe5e4·...·]-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="1874417651-10">[</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">lock</span><span·class="p"·data-group-id="1874417651-11">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">O[·...·truncated·by·diffoscope;·len:·389,·SHA:·8a84b7b4230c18a433b943acd891cd78f642c8187e870e7558089004167c1e04·...·]-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="1476774182-10">[</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">lock</span><span·class="p"·data-group-id="1476774182-11">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">O[·...·truncated·by·diffoscope;·len:·389,·SHA:·58383758051ab6525aa3de791f23931bba1db606ef2f3b4cb2d19356eb9ebbfa·...·]-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="1874417651-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="1476774182-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="1874417651-13">(</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">append</span><span·class="p"·data-group-id="1874417651-14">(</span><span·class="n">DeepNs</span><span·class="p"·data-group-id="1874417651-14">)</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·07c05d83e5ffe5dd2c42176e797a7124344a43bf68bfac259031dbcbc42e3561·...·]-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="1476774182-13">(</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">append</span><span·class="p"·data-group-id="1476774182-14">(</span><span·class="n">DeepNs</span><span·class="p"·data-group-id="1476774182-14">)</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·da4dda5de72e4b0c934e252dda1e5a8bfedf7684d1be82c51576aa29319607dc·...·]-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="1874417651-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">·</sp[·...·truncated·by·diffoscope;·len:·75,·SHA:·4b3f2d0f1b24da41a3c12de3648a5c6dac6f6942e8bd9eac09c4656bc8f35c88·...·]-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="1476774182-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">·</sp[·...·truncated·by·diffoscope;·len:·75,·SHA:·0249392816bc470bfe3d6c7e1c7bd437e8379925a9d3186417a2f56c417e8765·...·]-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="1874417651-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">·</sp[·...·truncated·by·diffoscope;·len:·75,·SHA:·4b3f2d0f1b24da41a3c12de3648a5c6dac6f6942e8bd9eac09c4656bc8f35c88·...·]-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="1476774182-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">·</sp[·...·truncated·by·diffoscope;·len:·75,·SHA:·0249392816bc470bfe3d6c7e1c7bd437e8379925a9d3186417a2f56c417e8765·...·]-16">)</span><span·class="p">.</span><span·class="w">
  
159 </span><span·class="nf">write</span><span·class="p"·data-group-id="1874417651-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><s[·...·truncated·by·diffoscope;·len:·144,·SHA:·fb89897ddc76fdeeaf57aa66568b9bfa11655727ec665794495694efb4bae0f6·...·]-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="1476774182-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><s[·...·truncated·by·diffoscope;·len:·144,·SHA:·9340a6e3503d3e85d150ec4ee8bf9356f923c09f2e9feeb8b9d31cf4d25a1f47·...·]-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="1874417651-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="1874417651-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="1476774182-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="1476774182-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="1874417651-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:·e10396bfef70c602b778dc956d503d441e6ca8d0a7adf6e91bc721a77acfafd4·...·]-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="1476774182-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:·93878d227d5e617a263245e2ea023452376f72665417833d0da948e44ee3e610·...·]-19">)</span><span·class="p">.</span><span·class="w">
  
162 </span><span·class="nf">delete</span><span·class="p"·data-group-id="1874417651-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><s[·...·truncated·by·diffoscope;·len:·144,·SHA:·089c1a50a7037d5a1c04f7df1be6eb6d152b3f24c576911c7503ced690471b20·...·]-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="1476774182-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><s[·...·truncated·by·diffoscope;·len:·144,·SHA:·bead5a4fefbc5cac15fbb09db66f6fdd8d13c2e8eb60dab0cecb1681562255c4·...·]-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="1874417651-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="1874417651-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="1476774182-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="1476774182-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="1874417651-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:·17b0195314c9c96387ac5e156ef1d07d4ebb06922f20da46529bb4605a4af0d5·...·]-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="1476774182-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:·e364c13b552a990b9ba26a623e741c03af34e0f04e9bcafb2a89d47815057533·...·]-22">)</span><span·class="p">.</span><span·class="w">
  
165 </span><span·class="nf">delete_object</span><span·class="p"·data-group-id="1874417651-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><s[·...·truncated·by·diffoscope;·len:·144,·SHA:·fb89897ddc76fdeeaf57aa66568b9bfa11655727ec665794495694efb4bae0f6·...·]-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="1476774182-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><s[·...·truncated·by·diffoscope;·len:·144,·SHA:·9340a6e3503d3e85d150ec4ee8bf9356f923c09f2e9feeb8b9d31cf4d25a1f47·...·]-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="1874417651-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="1874417651-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="1476774182-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="1476774182-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="1874417651-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:·e10396bfef70c602b778dc956d503d441e6ca8d0a7adf6e91bc721a77acfafd4·...·]-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="1476774182-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:·93878d227d5e617a263245e2ea023452376f72665417833d0da948e44ee3e610·...·]-25">)</span><span·class="p">.</span><span·class="w">
  
168 </span><span·class="nf">read</span><span·class="p"·data-group-id="1874417651-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><s[·...·truncated·by·diffoscope;·len:·144,·SHA:·089c1a50a7037d5a1c04f7df1be6eb6d152b3f24c576911c7503ced690471b20·...·]-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="1476774182-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><s[·...·truncated·by·diffoscope;·len:·144,·SHA:·bead5a4fefbc5cac15fbb09db66f6fdd8d13c2e8eb60dab0cecb1681562255c4·...·]-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="1874417651-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="1874417651-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="1476774182-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="1476774182-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="1874417651-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:·17b0195314c9c96387ac5e156ef1d07d4ebb06922f20da46529bb4605a4af0d5·...·]-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="1476774182-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:·e364c13b552a990b9ba26a623e741c03af34e0f04e9bcafb2a89d47815057533·...·]-28">)</span><span·class="p">.</span><span·class="w">
  
171 </span><span·class="nf">match_object</span><span·class="p"·data-group-id="1874417651-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><s[·...·truncated·by·diffoscope;·len:·148,·SHA:·e7793631d5b86893e4d98105041e836d45ded172a0642609cec6d89c3f4d460e·...·]-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="1476774182-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><s[·...·truncated·by·diffoscope;·len:·148,·SHA:·8645279e5d908579adacabf5efd1b8bdf71ad386b683271cdb1c3e2f2d81636b·...·]-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="1874417651-30">[</span><span·class="p"·data-group-id="1874417651-31">{</span><span·class="n">HeadPat</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1874417651-32">[</span><span·class="p"·data-group-id="1874417651-32">]<[·...·truncated·by·diffoscope;·len:·293,·SHA:·b706282eb464e64c28c99139496eaff2a4096329996d43efe664c741c95ba4c7·...·]-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="1476774182-30">[</span><span·class="p"·data-group-id="1476774182-31">{</span><span·class="n">HeadPat</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1476774182-32">[</span><span·class="p"·data-group-id="1476774182-32">]<[·...·truncated·by·diffoscope;·len:·293,·SHA:·36aecc3115ac1526b3484873466028de63e98fb8cc5105f8367423eb7aeb3441·...·]-30">]</span><span·class="p">,</span><span·class="w">
173 ····</span><span·class="nf">select</span><span·class="p"·data-group-id="1874417651-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><s[·...·truncated·by·diffoscope;·len:·150,·SHA:·f4616fc7b3b8bdd20c4ac0b5196db3973872ef65fa48857a1a435d4eba2f503f·...·]-34">)</span><span·class="p">.</span><span·class="w">173 ····</span><span·class="nf">select</span><span·class="p"·data-group-id="1476774182-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><s[·...·truncated·by·diffoscope;·len:·150,·SHA:·87320924ce199f76c81f65dd2aef3a21ac6914d85ae19fe2ab9fdbbae32adecd·...·]-34">)</span><span·class="p">.</span><span·class="w">
  
174 </span><span·class="nf">select</span><span·class="p"·data-group-id="1874417651-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><s[·...·truncated·by·diffoscope;·len:·150,·SHA:·f4616fc7b3b8bdd20c4ac0b5196db3973872ef65fa48857a1a435d4eba2f503f·...·]-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="1476774182-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><s[·...·truncated·by·diffoscope;·len:·150,·SHA:·87320924ce199f76c81f65dd2aef3a21ac6914d85ae19fe2ab9fdbbae32adecd·...·]-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="1874417651-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><s[·...·truncated·by·diffoscope;·len:·150,·SHA:·f4616fc7b3b8bdd20c4ac0b5196db3973872ef65fa48857a1a435d4eba2f503f·...·]-36">)</span><span·class="p">.</span><span·class="w">175 ····</span><span·class="nf">do_select</span><span·class="p"·data-group-id="1476774182-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><s[·...·truncated·by·diffoscope;·len:·150,·SHA:·87320924ce199f76c81f65dd2aef3a21ac6914d85ae19fe2ab9fdbbae32adecd·...·]-36">)</span><span·class="p">.</span><span·class="w">
  
  
176 </span><span·class="nf">select</span><span·class="p"·data-group-id="1874417651-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><s[·...·truncated·by·diffoscope;·len:·226,·SHA:·69d34e035c980ed46dd33d09d06ddd28b20bc81029a79b2a875fec68c6247aa2·...·]-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="1476774182-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><s[·...·truncated·by·diffoscope;·len:·226,·SHA:·7efea2da0badef4a1177effef95dd9dadaf584402c28a6302a13b11584c62088·...·]-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="1874417651-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><s[·...·truncated·by·diffoscope;·len:·226,·SHA:·69d34e035c980ed46dd33d09d06ddd28b20bc81029a79b2a875fec68c6247aa2·...·]-38">)</span><span·class="p">.</span><span·class="w">177 ····</span><span·class="nf">init_select</span><span·class="p"·data-group-id="1476774182-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><s[·...·truncated·by·diffoscope;·len:·226,·SHA:·7efea2da0badef4a1177effef95dd9dadaf584402c28a6302a13b11584c62088·...·]-38">)</span><span·class="p">.</span><span·class="w">
  
178 </span><span·class="nf">select_cont</span><span·class="p"·data-group-id="1874417651-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="1874417651-40">{</span><span·class="ss">frag_cont</span><span·class="p">,</span><[·...·truncated·by·diffoscope;·len:·369,·SHA:·acb6f5d790ad9c76dce942de87673198f5f0a0f74d132208323aee0712351224·...·]-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="1476774182-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="1476774182-40">{</span><span·class="ss">frag_cont</span><span·class="p">,</span><[·...·truncated·by·diffoscope;·len:·369,·SHA:·64181cf51d9bf0932e3937311a0b6f275c88cef72c00b378886943cdeb58c9f5·...·]-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="1874417651-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="1874417651-43">{</span><span·class="ss">frag_cont</span><span·class="p">,</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·636,·SHA:·8e8beb7c8aa8f4462de15f57340182889d9c5a24c4952cc2020ed97dd964bfe0·...·]-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="1476774182-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="1476774182-43">{</span><span·class="ss">frag_cont</span><span·class="p">,</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·636,·SHA:·255ed3e107b2f3758fef40207a9d0b5516eb86257192bb8f11b198275d653b59·...·]-42">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
180 ····</span><span·class="p"·data-group-id="1874417651-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="1874417651-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="1476774182-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="1476774182-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="1874417651-47">(</span><span·class="n">FixedSpec</span><span·class="p"·data-group-id="1874417651-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">d[·...·truncated·by·diffoscope;·len:·351,·SHA:·79ba8baf5913a6cceb22c9cdad8141f8017ed0cdf2c7c7259b0f01d1fa8de54f·...·]-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="1476774182-47">(</span><span·class="n">FixedSpec</span><span·class="p"·data-group-id="1476774182-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">d[·...·truncated·by·diffoscope;·len:·351,·SHA:·500acbb4837727eb40fa6726667eb34a62698f24c143835aa58936db7b4d5cc1·...·]-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="1874417651-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><sp[·...·truncated·by·diffoscope;·len:·296,·SHA:·5de982cc4562ec48ba65148edf4b9fd6feb5219950fb01cd0e25501af8651c65·...·]-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="1476774182-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><sp[·...·truncated·by·diffoscope;·len:·296,·SHA:·5247824e6c9a90e0fb85c30d98733e2cf02d6acebd3913ccb8ca57e1e9355184·...·]-49">)</span><span·class="p">,</span><span·class="w">
183 ····</span><span·class="nf">frag_sel_cont</span><span·class="p"·data-group-id="1874417651-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="1874417651-50">)</span><span·class="p">;</span><span·class="w">183 ····</span><span·class="nf">frag_sel_cont</span><span·class="p"·data-group-id="1476774182-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="1476774182-50">)</span><span·class="p">;</span><span·class="w">
184 </span><span·class="nf">select_cont</span><span·class="p"·data-group-id="1874417651-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="1874417651-52">{</span><span·class="ss">frag_cont</span><span·class="p">,</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·272,·SHA:·7cf845adb8fa539d5b9dfff5beb45dee2a0829cdaae41e5bcdfeffde2512761e·...·]-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="1476774182-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="1476774182-52">{</span><span·class="ss">frag_cont</span><span·class="p">,</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·272,·SHA:·8212b8801f3fd8a7ddbe318158468872b8359880163bbe53ef60362ed5895bf1·...·]-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="1874417651-53">(</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">select_cont</span><span·class="p"·data-group-id="1874417651-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:·79eb3132249b367ef62de474cd585e92396b1ef514472e7a90b1efe26b19bce1·...·]-53">)</span><span·class="p">;</span><span·class="w">185 ····</span><span·class="nf">frag_sel_cont</span><span·class="p"·data-group-id="1476774182-53">(</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">select_cont</span><span·class="p"·data-group-id="1476774182-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:·86c7c9a8bd2e11da9bd940eec710bcbc4c1097f0d741583f5838c17ee3f7dc63·...·]-53">)</span><span·class="p">;</span><span·class="w">
186 </span><span·class="nf">select_cont</span><span·class="p"·data-group-id="1874417651-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="1874417651-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="1476774182-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="1476774182-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="1874417651-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="1874417651-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="1476774182-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="1476774182-56">)</span><span·class="p">.</span><span·class="w">
  
188 </span><span·class="nf">all_keys</span><span·class="p"·data-group-id="1874417651-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><s[·...·truncated·by·diffoscope;·len:·70,·SHA:·fc994ce4760a919b5c571a94b3644879c999341f05c105e42afebc1298c61afb·...·]-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="1476774182-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><s[·...·truncated·by·diffoscope;·len:·70,·SHA:·c8236af66992579e77d1d8220601126a218b06f76aefc04f881499a4b12c2ebc·...·]-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="1874417651-58">[</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">all_keys</span><span·class="p"·data-group-id="1874417651-59">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="[·...·truncated·by·diffoscope;·len:·211,·SHA:·deb0a8dda1e0663f1e12403ea2eb2dbc84e95b99b974118c6569010523a8db8c·...·]-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="1476774182-58">[</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">all_keys</span><span·class="p"·data-group-id="1476774182-59">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="[·...·truncated·by·diffoscope;·len:·211,·SHA:·bfa90c271b3e395970069b58796df45842e00b991c5d9f61a914b4e14811a549·...·]-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="1874417651-60">(</span><span·class="n">Tab</span><span·class="p"·data-group-id="1874417651-60">)</span><span·class="p"·data-group-id="1874417651-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="1476774182-60">(</span><span·class="n">Tab</span><span·class="p"·data-group-id="1476774182-60">)</span><span·class="p"·data-group-id="1476774182-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="1874417651-61">(</span><span·class="n">Match</span><span·class="p"·data-group-id="1874417651-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="1476774182-61">(</span><span·class="n">Match</span><span·class="p"·data-group-id="1476774182-61">)</span><span·class="p">.</span><span·class="w">
  
192 </span><span·class="nf">clear_table</span><span·class="p"·data-group-id="1874417651-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><s[·...·truncated·by·diffoscope;·len:·65,·SHA:·ecc92829e218d4b79f72b9ab2f0cb7d3465a628781a1037c84c8aee12f40ee25·...·]-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="1476774182-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><s[·...·truncated·by·diffoscope;·len:·65,·SHA:·3e3264d5c5fb62c6d7d90749551b002ee62018f0281954c20c1cb194af675210·...·]-62">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
193 ····</span><span·class="p"·data-group-id="1874417651-63">[</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">clear_table</span><span·class="p"·data-group-id="1874417651-64">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·608,·SHA:·a77b6021584b2c6f174b1451017d8f98dbea03b5ba8e4a376baf9792099561f3·...·]-63">]</span><span·class="p">,</span><span·class="w">193 ····</span><span·class="p"·data-group-id="1476774182-63">[</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">clear_table</span><span·class="p"·data-group-id="1476774182-64">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·608,·SHA:·7c861ca594c7084fdc5e2aa4b730facc8f2da2a2ab2461c55c434f6a96963f9c·...·]-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="1874417651-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><s[·...·truncated·by·diffoscope;·len:·219,·SHA:·a5283b2bd2ec7fa0bc816abc90c49b75af3d4f122d466779414ed15c8f25e298·...·]-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="1476774182-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><s[·...·truncated·by·diffoscope;·len:·219,·SHA:·027c2dbed248c7e269427872c31763ebb205410b8dcd96591e5a23360728bfaa·...·]-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="1874417651-67">[</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">index_match_object</span><span·class="p"·data-group-id="1874417651-68">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·370,·SHA:·a05a76eff04b4f608746e7f8e8f81608ca908a166533a1f834c5c78d0f7575c3·...·]-68">)</span><span·class="w">197 ········</span><span·class="p"·data-group-id="1476774182-67">[</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">index_match_object</span><span·class="p"·data-group-id="1476774182-68">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·370,·SHA:·e2891adc66a7a053324e4490665cd39db0f6371143aadee2c2bb24ac262efa57·...·]-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="1874417651-69">(</span><span·class="n">Tab</span><span·class="p"·data-group-id="1874417651-69">)</span><span·class="p"·data-group-id="1874417651-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="1476774182-69">(</span><span·class="n">Tab</span><span·class="p"·data-group-id="1476774182-69">)</span><span·class="p"·data-group-id="1476774182-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="1874417651-70">(</span><span·class="n">Match</span><span·class="p"·data-group-id="1874417651-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="1476774182-70">(</span><span·class="n">Match</span><span·class="p"·data-group-id="1476774182-70">)</span><span·class="p">.</span><span·class="w">
  
200 </span><span·class="nf">index_read</span><span·class="p"·data-group-id="1874417651-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><s[·...·truncated·by·diffoscope;·len:·219,·SHA:·2fe9c991dec9e103824c96f67a6556790164db24058ec2574224f9ae66f4038c·...·]-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="1476774182-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><s[·...·truncated·by·diffoscope;·len:·219,·SHA:·07df0f163e13d08576d32d5cd00d0d06c0e2e41cf3fa86cc7f486f52b43cd836·...·]-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="1874417651-72">[</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">index_read</span><span·class="p"·data-group-id="1874417651-73">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·362,·SHA:·fbe5c5bd94fbc027e183337382008a092496fbd0efe82c6539ec999b1df8c670·...·]-73">)</span><span·class="w">202 ········</span><span·class="p"·data-group-id="1476774182-72">[</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">index_read</span><span·class="p"·data-group-id="1476774182-73">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·362,·SHA:·3be84bdd95d39ba251d19b81af53d74f1694e7154e19d4ce7502a044990c8f06·...·]-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="1874417651-74">(</span><span·class="n">Tab</span><span·class="p"·data-group-id="1874417651-74">)</span><span·class="p"·data-group-id="1874417651-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="1476774182-74">(</span><span·class="n">Tab</span><span·class="p"·data-group-id="1476774182-74">)</span><span·class="p"·data-group-id="1476774182-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="1874417651-75">(</span><span·class="n">Match</span><span·class="p"·data-group-id="1874417651-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="1476774182-75">(</span><span·class="n">Match</span><span·class="p"·data-group-id="1476774182-75">)</span><span·class="p">.</span><span·class="w">
  
205 </span><span·class="nf">foldl</span><span·class="p"·data-group-id="1874417651-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><s[·...·truncated·by·diffoscope;·len:·218,·SHA:·ce721b62d5fb1be79605c3850c9e926a31e64374a015672a5413abacdd0947fa·...·]-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="1476774182-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><s[·...·truncated·by·diffoscope;·len:·218,·SHA:·3a9fdb33e0dd8e3540c6ed782491f0c2884b5734e8b8c5e68a06319359e65c1e·...·]-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="1874417651-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="1874417651-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="1476774182-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="1476774182-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="1874417651-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><s[·...·truncated·by·diffoscope;·len:·217,·SHA:·65075cffd95a90cae1481b944b7253e8d376a4a21b132dcfae1d20662ed35e23·...·]-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="1476774182-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><s[·...·truncated·by·diffoscope;·len:·217,·SHA:·6c0ca1dce87275347a42622e4204b281a62d2f373153f95ca2521edc8a099dee·...·]-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="1874417651-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="1874417651-80">(</sp[·...·truncated·by·diffoscope;·len:·124,·SHA:·036502e67eb89c930941bc48236bec6d4f7366dea5fa661096c74e8b657776d8·...·]-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="1476774182-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="1476774182-80">(</sp[·...·truncated·by·diffoscope;·len:·124,·SHA:·6e8812e5857a4da100b7a1932f96d2336123158c3f9ef363467df8e781b3c3df·...·]-79">)</span><span·class="p">.</span><span·class="w">
  
210 </span><span·class="nf">foldr</span><span·class="p"·data-group-id="1874417651-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><s[·...·truncated·by·diffoscope;·len:·218,·SHA:·ce721b62d5fb1be79605c3850c9e926a31e64374a015672a5413abacdd0947fa·...·]-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="1476774182-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><s[·...·truncated·by·diffoscope;·len:·218,·SHA:·3a9fdb33e0dd8e3540c6ed782491f0c2884b5734e8b8c5e68a06319359e65c1e·...·]-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="1874417651-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="1874417651-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="1476774182-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="1476774182-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="1874417651-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><s[·...·truncated·by·diffoscope;·len:·217,·SHA:·65075cffd95a90cae1481b944b7253e8d376a4a21b132dcfae1d20662ed35e23·...·]-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="1476774182-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><s[·...·truncated·by·diffoscope;·len:·217,·SHA:·6c0ca1dce87275347a42622e4204b281a62d2f373153f95ca2521edc8a099dee·...·]-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="1874417651-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="1874417651-85">(</sp[·...·truncated·by·diffoscope;·len:·124,·SHA:·4e5ede39732fa2d86ae19b41da632dd4eedb3cadf6cd5fa3535f8f578dc3a79e·...·]-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="1476774182-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="1476774182-85">(</sp[·...·truncated·by·diffoscope;·len:·124,·SHA:·3d1db238a94533e0c5d38eb99265320cd68dd382fda15ab31433580966ee1f70·...·]-84">)</span><span·class="p">.</span><span·class="w">
  
215 </span><span·class="nf">table_info</span><span·class="p"·data-group-id="1874417651-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="1874417651-87">{</span><span·class="n">Tab</s[·...·truncated·by·diffoscope;·len:·248,·SHA:·5933a3e26122d789f69958051c6d397fa38cce2930f71db121c90730890ba3aa·...·]-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="1476774182-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="1476774182-87">{</span><span·class="n">Tab</s[·...·truncated·by·diffoscope;·len:·248,·SHA:·04c9ce89befeba45cd3a5a86753f7e48f088ebbec43f93c3586098f4540880bc·...·]-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="1874417651-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="1874417651-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="1476774182-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="1476774182-88">)</span><span·class="p">,</span><span·class="w">
217 ····</span><span·class="nf">table_info2</span><span·class="p"·data-group-id="1874417651-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><s[·...·truncated·by·diffoscope;·len:·141,·SHA:·a506d5213f0ff405b0ade5abb29501e7c5242f42dbb74d860c5ebaf1fb8582e4·...·]-89">)</span><span·class="p">;</span><span·class="w">217 ····</span><span·class="nf">table_info2</span><span·class="p"·data-group-id="1476774182-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><s[·...·truncated·by·diffoscope;·len:·141,·SHA:·b843b31cdec79b7e19d40a0fca14091476b596ee0cd7f116985ee6c193e77bf0·...·]-89">)</span><span·class="p">;</span><span·class="w">
218 </span><span·class="nf">table_info</span><span·class="p"·data-group-id="1874417651-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><s[·...·truncated·by·diffoscope;·len:·66,·SHA:·df7bb08ca6ae7c5ab6b3d3a65bf7cef66115c2e0cdb6ed17037c1a1ec9b8fe11·...·]-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="1476774182-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><s[·...·truncated·by·diffoscope;·len:·66,·SHA:·f30b17d04af0ad3cb6ba62d0396b87c7c8ccee826e2dcd146cd23cc0f82fa9f3·...·]-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="1874417651-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><s[·...·truncated·by·diffoscope;·len:·140,·SHA:·0ee463cc41a97ebb06919bec15151b3035e37bce419110d83e2e18a339da0242·...·]-91">)</span><span·class="p">.</span><span·class="w">219 ····</span><span·class="nf">table_info2</span><span·class="p"·data-group-id="1476774182-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><s[·...·truncated·by·diffoscope;·len:·140,·SHA:·c3c146f854c06cb44b97d662de5b4fe5311969270feb5bbd0e31e9a82cbb1ca6·...·]-91">)</span><span·class="p">.</span><span·class="w">
  
220 </span><span·class="nf">table_info2</span><span·class="p"·data-group-id="1874417651-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><s[·...·truncated·by·diffoscope;·len:·141,·SHA:·a506d5213f0ff405b0ade5abb29501e7c5242f42dbb74d860c5ebaf1fb8582e4·...·]-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="1476774182-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><s[·...·truncated·by·diffoscope;·len:·141,·SHA:·b843b31cdec79b7e19d40a0fca14091476b596ee0cd7f116985ee6c193e77bf0·...·]-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="1874417651-93">(</span><span·class="p"·data-group-id="1874417651-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="1874417651-94">}</span><span·class="p">,</span><sp[·...·truncated·by·diffoscope;·len:·88,·SHA:·9d2d74333756ea95a0ff2a08db41b28b849c3254a7a4636f348b79967aa91c60·...·]-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="1476774182-93">(</span><span·class="p"·data-group-id="1476774182-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="1476774182-94">}</span><span·class="p">,</span><sp[·...·truncated·by·diffoscope;·len:·88,·SHA:·e42207f796a12de8942d73268ddf8e9a3923adbd74320e8470b5465eea60fe76·...·]-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="1874417651-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="1874417651-96">(</sp[·...·truncated·by·diffoscope;·len:·282,·SHA:·9729982b9a365da95fa026fcd4c02e08cae5badb296f3164c8183ffbc6ca9f9a·...·]-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="1476774182-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="1476774182-96">(</sp[·...·truncated·by·diffoscope;·len:·282,·SHA:·f46b5876e606e640c5d6b3a8c2a6408592771b25eeabcb7a114262c1296aba32·...·]-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="1874417651-97">(</span><span·class="p"·data-group-id="1874417651-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="1874417651-98">}</span><span·class="p">,</span><sp[·...·truncated·by·diffoscope;·len:·88,·SHA:·9d2d74333756ea95a0ff2a08db41b28b849c3254a7a4636f348b79967aa91c60·...·]-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="1476774182-97">(</span><span·class="p"·data-group-id="1476774182-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="1476774182-98">}</span><span·class="p">,</span><sp[·...·truncated·by·diffoscope;·len:·88,·SHA:·e42207f796a12de8942d73268ddf8e9a3923adbd74320e8470b5465eea60fe76·...·]-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="1874417651-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="1874417651-100">(<[·...·truncated·by·diffoscope;·len:·286,·SHA:·552bb77bd91177bdde608fc2a29f7dd64f07fd6a32caeb7157194c256ed3b947·...·]-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="1476774182-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="1476774182-100">(<[·...·truncated·by·diffoscope;·len:·286,·SHA:·f0987152afa95957f044879f84d176f037c2df3056eca78b63ef3a67dd77d9e9·...·]-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="1874417651-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="1874417651-101">)</span><span·class="p">;</span><span·class="w">229 ············</span><span·class="nf">lookup_prop</span><span·class="p"·data-group-id="1476774182-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="1476774182-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="1874417651-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="1874417651-102">)</span><span·class="p">;</span><span·class="w">231 ············</span><span·class="nf">lookup_prop</span><span·class="p"·data-group-id="1476774182-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="1476774182-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.5/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="7230511567-1">(</span><span·class="ss">mnesia_frag_hash</span><span·class="p"·data-group-id="7230511567-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="9387499353-1">(</span><span·class="ss">mnesia_frag_hash</span><span·class="p"·data-group-id="9387499353-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="7230511567-2">(</span><span·class="p"·data-group-id="7230511567-3">[</span><span·class="p"·data-group-id="7230511567-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:·a70842cfd93788a66583b1d33e881473a2a4a1e4261882a5871e91ded7e5e12f·...·]-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="9387499353-2">(</span><span·class="p"·data-group-id="9387499353-3">[</span><span·class="p"·data-group-id="9387499353-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:·117d4c8562e24f2e98f26065958d8712c2009839b98cc22f2db35d7fcb74e384·...·]-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="7230511567-7">(</span><span·class="p"·data-group-id="7230511567-8">[</span><span·class="w">136 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="9387499353-7">(</span><span·class="p"·data-group-id="9387499353-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="7230511567-8">]</span><span·class="p"·data-group-id="7230511567-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="6771263073-1">(</span><span·class="ss">hash_state</span><span·class="p">,</span><span·class="w">142 ········</span><span·class="p"·data-group-id="9387499353-8">]</span><span·class="p"·data-group-id="9387499353-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="7253982708-1">(</span><span·class="ss">hash_state</span><span·class="p">,</span><span·class="w">
143 ····</span><span·class="p"·data-group-id="6771263073-2">{</span><span·class="ss">n_fragments</span><span·class="p">,</span><span·class="w">143 ····</span><span·class="p"·data-group-id="7253982708-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="6771263073-2">}</span><span·class="p"·data-group-id="6771263073-1">)</span><span·class="p">.</span><span·class="w">146 ·····</span><span·class="ss">function</span><span·class="p"·data-group-id="7253982708-2">}</span><span·class="p"·data-group-id="7253982708-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="6771263073-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="6771263073-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="7253982708-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="7253982708-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="6771263073-4">(</span><span·class="p"·data-group-id="6771263073-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="7253982708-4">(</span><span·class="p"·data-group-id="7253982708-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="6771263073-5">(</span><span·class="p"·data-group-id="6771263073-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="7253982708-5">(</span><span·class="p"·data-group-id="7253982708-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="6771263073-6">(</span><span·class="p"·data-group-id="6771263073-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="7253982708-6">(</span><span·class="p"·data-group-id="7253982708-6">)</span><span·class="p">.</span><span·class="w">
152 </span><span·class="nf">init_state</span><span·class="p"·data-group-id="6771263073-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="6771263073-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="7253982708-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="7253982708-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="6771263073-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="7253982708-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="6771263073-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="7253982708-8">}</span><span·class="p">.</span><span·class="w">
  
157 </span><span·class="nf">convert_old_state</span><span·class="p"·data-group-id="6771263073-9">(</span><span·class="p"·data-group-id="6771263073-10">{</span><span·class="ss">hash_state</span><span·class="p">,</span><span·class="w">·</span><span·class="n">N</span><span·class="p">,</span><span·class="w">·</span><span·class="n">P</span><s[·...·truncated·by·diffoscope;·len:·165,·SHA:·0f69c200f8f04d62693375a681c63b0ad247375c0efda808facc607c20aaa109·...·]-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="7253982708-9">(</span><span·class="p"·data-group-id="7253982708-10">{</span><span·class="ss">hash_state</span><span·class="p">,</span><span·class="w">·</span><span·class="n">N</span><span·class="p">,</span><span·class="w">·</span><span·class="n">P</span><s[·...·truncated·by·diffoscope;·len:·165,·SHA:·6337e9b772c7244bf6e071d9cc2d1e69bbfa3ee74ead283a4c33d69f70d085c3·...·]-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="6771263073-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="7253982708-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="6771263073-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="7253982708-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="6771263073-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="6771263073-13">(</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·453,·SHA:·c798b9b73e7c1ad6cc708d07cf2a031b118602a0664d8a9dfcbce59389395a40·...·]-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="7253982708-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="7253982708-13">(</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·453,·SHA:·79eb6778bdca8f4ca57b3c8204bd86d26ff2813b260390de0f7a78ca1bc54de4·...·]-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="6771263073-15">(</span><span·class="p"·data-group-id="6771263073-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="7253982708-15">(</span><span·class="p"·data-group-id="7253982708-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="6771263073-16">[</span><span·class="nf">integer</span><span·class="p"·data-group-id="6771263073-17">(</span><span·class="p"·data-group-id="6771263073-17">)</span><span·class="p"·data-group-id="6771263073-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="7253982708-16">[</span><span·class="nf">integer</span><span·class="p"·data-group-id="7253982708-17">(</span><span·class="p"·data-group-id="7253982708-17">)</span><span·class="p"·data-group-id="7253982708-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="6771263073-18">[</span><span·class="nf">integer</span><span·class="p"·data-group-id="6771263073-19">(</span><span·class="p"·data-group-id="6771263073-19">)</span><span·class="p"·data-group-id="6771263073-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="7253982708-18">[</span><span·class="nf">integer</span><span·class="p"·data-group-id="7253982708-19">(</span><span·class="p"·data-group-id="7253982708-19">)</span><span·class="p"·data-group-id="7253982708-18">]</span><span·class="p">.</span><span·class="w">
168 </span><span·class="nf">add_frag</span><span·class="p"·data-group-id="6771263073-20">(</span><span·class="o">#</span><span·class="ss">hash_state</span><span·class="p"·data-group-id="6771263073-21">{</span><span·class="ss">next_n_to_split</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·570,·SHA:·3157aa95c57313995516a6e86631bdb64ec661f8098d32e34b8a7fbe61025719·...·]-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="7253982708-20">(</span><span·class="o">#</span><span·class="ss">hash_state</span><span·class="p"·data-group-id="7253982708-21">{</span><span·class="ss">next_n_to_split</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·570,·SHA:·4aef977b84d2feeb8a59defa3c162f8522498c1492d2d3298a03cd14f17e1974·...·]-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="6771263073-22">(</span><span·class="n">L</span><span·class="p"·data-group-id="6771263073-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="7253982708-22">(</span><span·class="n">L</span><span·class="p"·data-group-id="7253982708-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="6771263073-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="7253982708-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="6771263073-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="7253982708-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="6771263073-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="7253982708-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="6771263073-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="7253982708-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="6771263073-25">{</span><span·class="n">State2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6771263073-26">[</span><span·class="n">SplitN</span><span·class="p"·data-group-id="6771263073-26">]</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·205,·SHA:·2c99559662d82f94c18d4d9489022490daba0705a1776319b94c6ed17cabdbf2·...·]-25">}</span><span·class="p">;</span><span·class="w">180 ····</span><span·class="p"·data-group-id="7253982708-25">{</span><span·class="n">State2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7253982708-26">[</span><span·class="n">SplitN</span><span·class="p"·data-group-id="7253982708-26">]</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·205,·SHA:·d233a97cecb6c760b90e0de7fc2a4489980e696a5775b55225ac767390c706d0·...·]-25">}</span><span·class="p">;</span><span·class="w">
181 </span><span·class="nf">add_frag</span><span·class="p"·data-group-id="6771263073-28">(</span><span·class="n">OldState</span><span·class="p"·data-group-id="6771263073-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="7253982708-28">(</span><span·class="n">OldState</span><span·class="p"·data-group-id="7253982708-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="6771263073-29">(</span><span·class="n">OldState</span><span·class="p"·data-group-id="6771263073-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="7253982708-29">(</span><span·class="n">OldState</span><span·class="p"·data-group-id="7253982708-29">)</span><span·class="p">,</span><span·class="w">
183 ····</span><span·class="nf">add_frag</span><span·class="p"·data-group-id="6771263073-30">(</span><span·class="n">State</span><span·class="p"·data-group-id="6771263073-30">)</span><span·class="p">.</span><span·class="w">183 ····</span><span·class="nf">add_frag</span><span·class="p"·data-group-id="7253982708-30">(</span><span·class="n">State</span><span·class="p"·data-group-id="7253982708-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="6771263073-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="6771263073-32">(</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·453,·SHA:·5d2fd4c6988ae15c2e4e985e422428ef0f74d1aa90d1826ae90bba1f384010f9·...·]-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="7253982708-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="7253982708-32">(</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·453,·SHA:·d261b75f0824eab7d80f0d7e35a700d880e95c5c083aeac5f21e8209f74bbd44·...·]-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="6771263073-34">(</span><span·class="p"·data-group-id="6771263073-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="7253982708-34">(</span><span·class="p"·data-group-id="7253982708-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="6771263073-35">[</span><span·class="nf">integer</span><span·class="p"·data-group-id="6771263073-36">(</span><span·class="p"·data-group-id="6771263073-36">)</span><span·class="p"·data-group-id="6771263073-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="7253982708-35">[</span><span·class="nf">integer</span><span·class="p"·data-group-id="7253982708-36">(</span><span·class="p"·data-group-id="7253982708-36">)</span><span·class="p"·data-group-id="7253982708-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="6771263073-37">[</span><span·class="nf">integer</span><span·class="p"·data-group-id="6771263073-38">(</span><span·class="p"·data-group-id="6771263073-38">)</span><span·class="p"·data-group-id="6771263073-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="7253982708-37">[</span><span·class="nf">integer</span><span·class="p"·data-group-id="7253982708-38">(</span><span·class="p"·data-group-id="7253982708-38">)</span><span·class="p"·data-group-id="7253982708-37">]</span><span·class="p">.</span><span·class="w">
190 </span><span·class="nf">del_frag</span><span·class="p"·data-group-id="6771263073-39">(</span><span·class="o">#</span><span·class="ss">hash_state</span><span·class="p"·data-group-id="6771263073-40">{</span><span·class="ss">next_n_to_split</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·570,·SHA:·18abbdd6609153fd61acdae64b169c1fa8e94cc1019bbf8b91ba52b00b9a5b3f·...·]-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="7253982708-39">(</span><span·class="o">#</span><span·class="ss">hash_state</span><span·class="p"·data-group-id="7253982708-40">{</span><span·class="ss">next_n_to_split</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·570,·SHA:·aff261555c6d091ee2af475951a886ccd068e78b8726d654b151398f30c0f834·...·]-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="6771263073-41">(</span><span·class="n">L2</span><span·class="p"·data-group-id="6771263073-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="7253982708-41">(</span><span·class="n">L2</span><span·class="p"·data-group-id="7253982708-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="6771263073-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="7253982708-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="6771263073-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="7253982708-42">}</span><span·class="p">,</span><span·class="w">
199 ············</span><span·class="p"·data-group-id="6771263073-43">{</span><span·class="n">State2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6771263073-44">[</span><span·class="n">N</span><span·class="p"·data-group-id="6771263073-44">]</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·202,·SHA:·73151836e1e19d5eeef89887389a58b0864496892e7e4d917e20db50db06af17·...·]-43">}</span><span·class="p">;</span><span·class="w">199 ············</span><span·class="p"·data-group-id="7253982708-43">{</span><span·class="n">State2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7253982708-44">[</span><span·class="n">N</span><span·class="p"·data-group-id="7253982708-44">]</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·202,·SHA:·4f46a6cc010a6e7173bfa1b8b7286c32aef44a5d452c8c1003f5856d85490737·...·]-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="6771263073-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="7253982708-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="6771263073-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="7253982708-46">}</span><span·class="p">,</span><span·class="w">
204 ············</span><span·class="p"·data-group-id="6771263073-47">{</span><span·class="n">State2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6771263073-48">[</span><span·class="n">N</span><span·class="p"·data-group-id="6771263073-48">]</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·202,·SHA:·af5cec9dcb9fe04460f7c3d3fcfb4fa13574ab8e47f0fcffe8c4e5fb94fcfd9a·...·]-47">}</span><span·class="w">204 ············</span><span·class="p"·data-group-id="7253982708-47">{</span><span·class="n">State2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7253982708-48">[</span><span·class="n">N</span><span·class="p"·data-group-id="7253982708-48">]</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·202,·SHA:·90771eb0d48f1e1d313d8bac9b15eba05f86e6097977e0cb99faa1f10face622·...·]-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="6771263073-50">(</span><span·class="n">OldState</span><span·class="p"·data-group-id="6771263073-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="7253982708-50">(</span><span·class="n">OldState</span><span·class="p"·data-group-id="7253982708-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="6771263073-51">(</span><span·class="n">OldState</span><span·class="p"·data-group-id="6771263073-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="7253982708-51">(</span><span·class="n">OldState</span><span·class="p"·data-group-id="7253982708-51">)</span><span·class="p">,</span><span·class="w">
208 ····</span><span·class="nf">del_frag</span><span·class="p"·data-group-id="6771263073-52">(</span><span·class="n">State</span><span·class="p"·data-group-id="6771263073-52">)</span><span·class="p">.</span><span·class="w">208 ····</span><span·class="nf">del_frag</span><span·class="p"·data-group-id="7253982708-52">(</span><span·class="n">State</span><span·class="p"·data-group-id="7253982708-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="6771263073-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="6771263073-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="7253982708-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="7253982708-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="6771263073-54">(</span><span·class="p"·data-group-id="6771263073-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="7253982708-54">(</span><span·class="p"·data-group-id="7253982708-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="6771263073-55">(</span><span·class="p"·data-group-id="6771263073-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="7253982708-55">(</span><span·class="p"·data-group-id="7253982708-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="6771263073-56">(</span><span·class="p"·data-group-id="6771263073-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="7253982708-56">(</span><span·class="p"·data-group-id="7253982708-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="6771263073-57">(</span><span·class="o">#</span><span·class="ss">hash_state</span><span·class="p"·data-group-id="6771263073-58">{</span><span·class="ss">function</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nb">[·...·truncated·by·diffoscope;·len:·537,·SHA:·a2839ca39f914c103c4fa23b2f657ea23f4d01122199df2634458d9773fdbdad·...·]-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="7253982708-57">(</span><span·class="o">#</span><span·class="ss">hash_state</span><span·class="p"·data-group-id="7253982708-58">{</span><span·class="ss">function</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nb">[·...·truncated·by·diffoscope;·len:·537,·SHA:·699e7c71941382a1db2cd1a5c80ab07e810f4a92aff6d501f2516cc897d4be01·...·]-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="6771263073-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="6771263073-60">(</span><span·class="n">L</span><span·class="w">·</span><span·class="o">+</span><sp[·...·truncated·by·diffoscope;·len:·141,·SHA:·30239a039fdbeadddd5df4d0fac34e3764078211c0d836f10e13db82150fe76a·...·]-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="7253982708-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="7253982708-60">(</span><span·class="n">L</span><span·class="w">·</span><span·class="o">+</span><sp[·...·truncated·by·diffoscope;·len:·141,·SHA:·fc86bdc148c9b8b08a423d663ac8860b3dc19bea7e53c1963949c932fc8bbc4a·...·]-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="6771263073-61">(</span><span·class="n">L</span><span·class="p"·data-group-id="6771263073-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="7253982708-61">(</span><span·class="n">L</span><span·class="p"·data-group-id="7253982708-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="6771263073-62">(</span><span·class="o">#</span><span·class="ss">hash_state</span><span·class="p"·data-group-id="6771263073-63">{</span><span·class="ss">function</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nb">[·...·truncated·by·diffoscope;·len:·538,·SHA:·a7c5cf16cdfc211d9d1cb7124b3d8792316e80834bb28aa38c223185b45e1c1e·...·]-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="7253982708-62">(</span><span·class="o">#</span><span·class="ss">hash_state</span><span·class="p"·data-group-id="7253982708-63">{</span><span·class="ss">function</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nb">[·...·truncated·by·diffoscope;·len:·538,·SHA:·689714a3fcec8ee054a4a07a6e1b22c17b642a35296d3249e560e980c49171ef·...·]-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="6771263073-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="6771263073-65">(</span><span·class="n">L</span><span·class="w">·</span><span·class="o">+</span><sp[·...·truncated·by·diffoscope;·len:·141,·SHA:·b8d915858ca890f4c094ff7ef2ebead71bfacdc7d2a9a4452771fe39ee2c56aa·...·]-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="7253982708-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="7253982708-65">(</span><span·class="n">L</span><span·class="w">·</span><span·class="o">+</span><sp[·...·truncated·by·diffoscope;·len:·141,·SHA:·5921487881fe6a42dc5f0492dc7bfa8cae312a34f175b7181e86dc613461c95b·...·]-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="6771263073-66">(</span><span·class="n">L</span><span·class="p"·data-group-id="6771263073-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="7253982708-66">(</span><span·class="n">L</span><span·class="p"·data-group-id="7253982708-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="6771263073-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="6771263073-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="7253982708-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="7253982708-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="6771263073-68">(</span><span·class="n">OldState</span><span·class="p"·data-group-id="6771263073-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="7253982708-68">(</span><span·class="n">OldState</span><span·class="p"·data-group-id="7253982708-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="6771263073-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="6771263073-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="7253982708-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="7253982708-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="6771263073-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="6771263073-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="7253982708-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="7253982708-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="6771263073-71">(</span><span·class="p"·data-group-id="6771263073-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="7253982708-71">(</span><span·class="p"·data-group-id="7253982708-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="6771263073-72">(</span><span·class="p"·data-group-id="6771263073-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="7253982708-72">(</span><span·class="p"·data-group-id="7253982708-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="6771263073-73">[</span><span·class="nf">integer</span><span·class="p"·data-group-id="6771263073-74">(</span><span·class="p"·data-group-id="6771263073-74">)</span><span·class="p"·data-group-id="6771263073-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="7253982708-73">[</span><span·class="nf">integer</span><span·class="p"·data-group-id="7253982708-74">(</span><span·class="p"·data-group-id="7253982708-74">)</span><span·class="p"·data-group-id="7253982708-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="6771263073-75">(</span><span·class="o">#</span><span·class="ss">hash_state</span><span·class="p"·data-group-id="6771263073-76">{</span><span·class="ss">n_fragments</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n[·...·truncated·by·diffoscope;·len:·285,·SHA:·7c65ef558bf19410505f3e5ef40165d239db59da91559ef88d01df93afb198d6·...·]-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="7253982708-75">(</span><span·class="o">#</span><span·class="ss">hash_state</span><span·class="p"·data-group-id="7253982708-76">{</span><span·class="ss">n_fragments</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n[·...·truncated·by·diffoscope;·len:·285,·SHA:·f7160c62f2022a018f73f051dd63f4de20c8aa19650b8ca37482c569b051ef6b·...·]-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="6771263073-77">[</span><span·class="p"·data-group-id="6771263073-78">{</span><span·class="n">HeadPat</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span[·...·truncated·by·diffoscope;·len:·555,·SHA:·55f57fb689687b822ee9ca29c86c3f216145da3568e04e77a5a9bb686eae9d92·...·]-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="7253982708-77">[</span><span·class="p"·data-group-id="7253982708-78">{</span><span·class="n">HeadPat</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span[·...·truncated·by·diffoscope;·len:·555,·SHA:·c784f1e8e19a9c4e240eb21352d99e684c71ec80d53ff7e26b99feff243ba34e·...·]-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="6771263073-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="6771263073-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="7253982708-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="7253982708-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="6771263073-82">(</span><span·class="n">KeyPat</span><span·class="p"·data-group-id="6771263073-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="7253982708-82">(</span><span·class="n">KeyPat</span><span·class="p"·data-group-id="7253982708-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="6771263073-83">[</span><span·class="nf">key_to_frag_number</span><span·class="p"·data-group-id="6771263073-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="6[·...·truncated·by·diffoscope;·len:·63,·SHA:·9f955e5b8a136c6eb7d0058964c9d6bb0cf7d0de9b28da84776d3e74e00519c6·...·]-83">]</span><span·class="p">;</span><span·class="w">244 ····················</span><span·class="p"·data-group-id="7253982708-83">[</span><span·class="nf">key_to_frag_number</span><span·class="p"·data-group-id="7253982708-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="7[·...·truncated·by·diffoscope;·len:·63,·SHA:·486f4bdb25f6794cce047a9a7ed3666b8be54c79d4c8af5795459c4c95e71663·...·]-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.5/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="5768961052-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="5768961052-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="4286601349-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="4286601349-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="5768961052-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:·39ee37045d539bebd0c58a252976d455dc5a2614fd121c80314f7b7d92ac5cea·...·]-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="4286601349-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:·ee202c8d59b320f24a3b84f8f8a00b32905f097c4502079f114eef7606a31fbb·...·]-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="5768961052-4">(</span><span·class="p"·data-group-id="5768961052-5">[</span><span·class="nf">node</span><span·class="p"·data-group-id="5768961052-6">(</span><span·class="p"·data-group-id="5768961052-6">)</span><span·class="p"·data-group-id="5768961052-5">]<[·...·truncated·by·diffoscope;·len:·47,·SHA:·853ffbd3a164e9bd998a9eccc86a69ef84e9ec7e13184d38ca8cbfa4a2bea097·...·]-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="4286601349-4">(</span><span·class="p"·data-group-id="4286601349-5">[</span><span·class="nf">node</span><span·class="p"·data-group-id="4286601349-6">(</span><span·class="p"·data-group-id="4286601349-6">)</span><span·class="p"·data-group-id="4286601349-5">]<[·...·truncated·by·diffoscope;·len:·47,·SHA:·d33af72de8d51fb3b4ffc3217841ec325c24ab90705a97661dc3c9a04a9129ba·...·]-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="5768961052-7">(</span><span·class="p"·data-group-id="5768961052-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="4286601349-7">(</span><span·class="p"·data-group-id="4286601349-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="5768961052-8">(</span><span·class="ss">funky</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5768961052-9">[</span><span·class="p"·data-group-id="5768961052-9">]</span><span·class="p"·data-group-id="5768961052-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="4286601349-8">(</span><span·class="ss">funky</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4286601349-9">[</span><span·class="p"·data-group-id="4286601349-9">]</span><span·class="p"·data-group-id="4286601349-8">)</span><span·class="p">.</span><span·class="w">
147 </span><span·class="p"·data-group-id="5768961052-10">{</span><span·class="ss">atomic</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p"·data-group-id="5768961052-10">}</span><span·class="gp·unselectable">147 </span><span·class="p"·data-group-id="4286601349-10">{</span><span·class="ss">atomic</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p"·data-group-id="4286601349-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="5768961052-11">(</span><span·class="p"·data-group-id="5768961052-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="4286601349-11">(</span><span·class="p"·data-group-id="4286601349-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="5768961052-12">[</span><span·class="ss">nonode@nohost</span><span·class="p"·data-group-id="5768961052-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="4286601349-12">[</span><span·class="ss">nonode@nohost</span><span·class="p"·data-group-id="4286601349-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="5768961052-13">[</span><span·class="p"·data-group-id="5768961052-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="4286601349-13">[</span><span·class="p"·data-group-id="4286601349-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="5768961052-14">[</span><span·class="p"·data-group-id="5768961052-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="4286601349-14">[</span><span·class="p"·data-group-id="4286601349-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="5768961052-15">[</span><span·class="p"·data-group-id="5768961052-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="4286601349-15">[</span><span·class="p"·data-group-id="4286601349-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="5768961052-16">[</span><span·class="ss">funky</span><span·class="p"·data-group-id="5768961052-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="4286601349-16">[</span><span·class="ss">funky</span><span·class="p"·data-group-id="4286601349-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="5768961052-17">[</span><span·class="ss">schema</span><span·class="p"·data-group-id="5768961052-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="4286601349-17">[</span><span·class="ss">schema</span><span·class="p"·data-group-id="4286601349-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="5768961052-18">[</span><span·class="p"·data-group-id="5768961052-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="4286601349-18">[</span><span·class="p"·data-group-id="4286601349-18">]</span><span·class="w">
167 </span><span·class="p"·data-group-id="5768961052-19">[</span><span·class="p"·data-group-id="5768961052-20">{</span><span·class="ss">nonode@nohost</span><span·class="p">,</span><span·class="ss">disc_copies</span><span·class="p"·data-group-id="5768961052-20">}</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·222,·SHA:·91559cb80425f5f19d1157226b1bb9209edb733262fd22b355629830e7b87429·...·]-21">]</span><span·class="w">167 </span><span·class="p"·data-group-id="4286601349-19">[</span><span·class="p"·data-group-id="4286601349-20">{</span><span·class="ss">nonode@nohost</span><span·class="p">,</span><span·class="ss">disc_copies</span><span·class="p"·data-group-id="4286601349-20">}</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·222,·SHA:·19ce7027bbc82c55af7407ef3a024911d771a337fcba8a4fb48c7185f8222f4b·...·]-21">]</span><span·class="w">
168 </span><span·class="p"·data-group-id="5768961052-22">[</span><span·class="p"·data-group-id="5768961052-23">{</span><span·class="ss">nonode@nohost</span><span·class="p">,</span><span·class="ss">ram_copies</span><span·class="p"·data-group-id="5768961052-23">}</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·220,·SHA:·33f88d2e40be8b8b8361994b372df3fd13d221615c8e27a4bb0f37895fd44195·...·]-24">]</span><span·class="w">168 </span><span·class="p"·data-group-id="4286601349-22">[</span><span·class="p"·data-group-id="4286601349-23">{</span><span·class="ss">nonode@nohost</span><span·class="p">,</span><span·class="ss">ram_copies</span><span·class="p"·data-group-id="4286601349-23">}</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·220,·SHA:·5c4fba8c708318b2b7fad991da9a51de6fb24e323e25a26919d101f7a6609d57·...·]-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="5768961052-25">[</span><span·class="p"·data-group-id="5768961052-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="4286601349-25">[</span><span·class="p"·data-group-id="4286601349-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="2104368087-1">(</span><span·class="ss">employee</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2104368087-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="5646780308-1">(</span><span·class="ss">employee</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5646780308-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="2104368087-2">}</span><span·class="p"·data-group-id="2104368087-1">)</span><span·class="p">.</span><span·class="w">237 ···················</span><span·class="ss">room_no</span><span·class="p"·data-group-id="5646780308-2">}</span><span·class="p"·data-group-id="5646780308-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="2104368087-3">(</span><span·class="ss">dept</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2104368087-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="5646780308-3">(</span><span·class="ss">dept</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5646780308-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="2104368087-4">}</span><span·class="p"·data-group-id="2104368087-3">)</span><span·class="p">.</span><span·class="w">240 ···············</span><span·class="ss">name</span><span·class="p"·data-group-id="5646780308-4">}</span><span·class="p"·data-group-id="5646780308-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="2104368087-5">(</span><span·class="ss">project</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2104368087-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="5646780308-5">(</span><span·class="ss">project</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5646780308-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="2104368087-6">}</span><span·class="p"·data-group-id="2104368087-5">)</span><span·class="p">.</span><span·class="w">243 ··················</span><span·class="ss">number</span><span·class="p"·data-group-id="5646780308-6">}</span><span·class="p"·data-group-id="5646780308-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="2104368087-7">(</span><span·class="ss">manager</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2104368087-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="5646780308-7">(</span><span·class="ss">manager</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5646780308-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="2104368087-8">}</span><span·class="p"·data-group-id="2104368087-7">)</span><span·class="p">.</span><span·class="w">246 ··················</span><span·class="ss">dept</span><span·class="p"·data-group-id="5646780308-8">}</span><span·class="p"·data-group-id="5646780308-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="2104368087-9">(</span><span·class="ss">at_dep</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2104368087-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="5646780308-9">(</span><span·class="ss">at_dep</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5646780308-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="2104368087-10">}</span><span·class="p"·data-group-id="2104368087-9">)</span><span·class="p">.</span><span·class="w">249 ·················</span><span·class="ss">dept_id</span><span·class="p"·data-group-id="5646780308-10">}</span><span·class="p"·data-group-id="5646780308-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="2104368087-11">(</span><span·class="ss">in_proj</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2104368087-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="5646780308-11">(</span><span·class="ss">in_proj</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5646780308-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="2104368087-12">}</span><span·class="p"·data-group-id="2104368087-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="5646780308-12">}</span><span·class="p"·data-group-id="5646780308-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="6656246345-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="6656246345-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="1035066413-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="1035066413-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="6656246345-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:·ecb695c3014ea7a8fad14d07ab17c08757d1a2becd4d333f17f0c38d67315320·...·]-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="1035066413-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:·6d8a11f2d8733d3ea238b6daafa66c8c149d4c1894f8ab30d8ee7114f8f8944a·...·]-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="6656246345-4">(</span><span·class="p"·data-group-id="6656246345-5">[</span><span·class="nf">node</span><span·class="p"·data-group-id="6656246345-6">(</span><span·class="p"·data-group-id="6656246345-6">)</span><span·class="p"·data-group-id="6656246345-5">]<[·...·truncated·by·diffoscope;·len:·47,·SHA:·b505ba1a39fbe924cec4f3d5997954ce1d05520e318d50ecfec41f036e1f8190·...·]-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="1035066413-4">(</span><span·class="p"·data-group-id="1035066413-5">[</span><span·class="nf">node</span><span·class="p"·data-group-id="1035066413-6">(</span><span·class="p"·data-group-id="1035066413-6">)</span><span·class="p"·data-group-id="1035066413-5">]<[·...·truncated·by·diffoscope;·len:·47,·SHA:·0ce5227965d6325a98760daac702d23f0854318b764f3cf29cf557e1ee861ade·...·]-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="6656246345-7">(</span><span·class="p"·data-group-id="6656246345-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="1035066413-7">(</span><span·class="p"·data-group-id="1035066413-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="7535675997-1">(</span><span·class="s">&quot;stdlib/include/qlc.hrl&quot;</span><span·class="p"·data-group-id="7535675997-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="8109991869-1">(</span><span·class="s">&quot;stdlib/include/qlc.hrl&quot;</span><span·class="p"·data-group-id="8109991869-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="7535675997-2">(</span><span·class="s">&quot;company.hrl&quot;</span><span·class="p"·data-group-id="7535675997-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="8109991869-2">(</span><span·class="s">&quot;company.hrl&quot;</span><span·class="p"·data-group-id="8109991869-2">)</span><span·class="p">.</span><span·class="w">
  
277 </span><span·class="nf">init</span><span·class="p"·data-group-id="7535675997-3">(</span><span·class="p"·data-group-id="7535675997-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="8109991869-3">(</span><span·class="p"·data-group-id="8109991869-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="7535675997-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="8109991869-4">(</span><span·class="ss">employee</span><span·class="p">,</span><span·class="w">
279 ························</span><span·class="p"·data-group-id="7535675997-5">[</span><span·class="p"·data-group-id="7535675997-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="7535675997-7">(</span><span·class[·...·truncated·by·diffoscope;·len:·299,·SHA:·e81df615f3902a7d4e0ab0452c67ad55feae449860f12541535ad9d87eb9caff·...·]-4">)</span><span·class="p">,</span><span·class="w">279 ························</span><span·class="p"·data-group-id="8109991869-5">[</span><span·class="p"·data-group-id="8109991869-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="8109991869-7">(</span><span·class[·...·truncated·by·diffoscope;·len:·299,·SHA:·2ec9648f4791a7a54df8b395a542637357db07e2ca4d49a09ca02e6be1d53c91·...·]-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="7535675997-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="8109991869-8">(</span><span·class="ss">dept</span><span·class="p">,</span><span·class="w">
281 ························</span><span·class="p"·data-group-id="7535675997-9">[</span><span·class="p"·data-group-id="7535675997-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="7535675997-11">(</span><span·cla[·...·truncated·by·diffoscope;·len:·299,·SHA:·716c62dc01a9353b3b4364a403adcbf8b3decdb369b9756814894278e4ce6da2·...·]-8">)</span><span·class="p">,</span><span·class="w">281 ························</span><span·class="p"·data-group-id="8109991869-9">[</span><span·class="p"·data-group-id="8109991869-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="8109991869-11">(</span><span·cla[·...·truncated·by·diffoscope;·len:·299,·SHA:·e9ae179198869c9b128a9da00f3ed16905eff67b7e461fa5385462e11f46c811·...·]-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="7535675997-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="8109991869-12">(</span><span·class="ss">project</span><span·class="p">,</span><span·class="w">
283 ························</span><span·class="p"·data-group-id="7535675997-13">[</span><span·class="p"·data-group-id="7535675997-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="7535675997-15">(</span><span·cl[·...·truncated·by·diffoscope;·len:·304,·SHA:·c7c25d76d74f50b5d30bc32f0a21d1b64be1c93bd2b9164b5d4256c648b5652e·...·]-12">)</span><span·class="p">,</span><span·class="w">283 ························</span><span·class="p"·data-group-id="8109991869-13">[</span><span·class="p"·data-group-id="8109991869-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="8109991869-15">(</span><span·cl[·...·truncated·by·diffoscope;·len:·304,·SHA:·ecc4e4d4a6b1d9e58aa431f34b22747fd112a6b9f8263d18bb73b3257145730f·...·]-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="7535675997-16">(</span><span·class="ss">manager</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7535675997-17">[</span><span·class="p"·data-group-id="7535675997-18">{</span><span·class="ss">type</span><span·class="p">,<[·...·truncated·by·diffoscope;·len:·98,·SHA:·fa4c99606f26d589feaa766ed33ffe4ad6f96a3d8234f98f92148ea390ca58ca·...·]-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="8109991869-16">(</span><span·class="ss">manager</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8109991869-17">[</span><span·class="p"·data-group-id="8109991869-18">{</span><span·class="ss">type</span><span·class="p">,<[·...·truncated·by·diffoscope;·len:·98,·SHA:·2406faeec0392e0158c4463b71499520860963b5289ece10a1d96f49c52864ce·...·]-18">}</span><span·class="p">,</span><span·class="w">
285 ··································</span><span·class="p"·data-group-id="7535675997-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="7535675997-20">(</span><span·class="ss">fields</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·250,·SHA:·2f861f90cbffffb8bdc8e0144b18069b3959de92c49626ba9d54671e617f7f2c·...·]-16">)</span><span·class="p">,</span><span·class="w">285 ··································</span><span·class="p"·data-group-id="8109991869-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="8109991869-20">(</span><span·class="ss">fields</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·250,·SHA:·496b85fe7f1df7c3f1d0dfa9af350ec6037d2a1d888367a4c1428ff14199083d·...·]-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="7535675997-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="8109991869-21">(</span><span·class="ss">at_dep</span><span·class="p">,</span><span·class="w">
287 ·························</span><span·class="p"·data-group-id="7535675997-22">[</span><span·class="p"·data-group-id="7535675997-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="7535675997-24">(</span><span·cl[·...·truncated·by·diffoscope;·len:·303,·SHA:·17e511e3e9da4211d165fa6be604fdbbbe28644ee1f2108cf242bbfcbc76da92·...·]-21">)</span><span·class="p">,</span><span·class="w">287 ·························</span><span·class="p"·data-group-id="8109991869-22">[</span><span·class="p"·data-group-id="8109991869-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="8109991869-24">(</span><span·cl[·...·truncated·by·diffoscope;·len:·303,·SHA:·aaac52968e35b4cbecc006f6747d9a99f3199adde93284260a362373c1ee2357·...·]-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="7535675997-25">(</span><span·class="ss">in_proj</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7535675997-26">[</span><span·class="p"·data-group-id="7535675997-27">{</span><span·class="ss">type</span><span·class="p">,<[·...·truncated·by·diffoscope;·len:·98,·SHA:·fa4c99606f26d589feaa766ed33ffe4ad6f96a3d8234f98f92148ea390ca58ca·...·]-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="8109991869-25">(</span><span·class="ss">in_proj</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8109991869-26">[</span><span·class="p"·data-group-id="8109991869-27">{</span><span·class="ss">type</span><span·class="p">,<[·...·truncated·by·diffoscope;·len:·98,·SHA:·2406faeec0392e0158c4463b71499520860963b5289ece10a1d96f49c52864ce·...·]-27">}</span><span·class="p">,</span><span·class="w">
289 ··································</span><span·class="p"·data-group-id="7535675997-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="7535675997-29">(</span><span·class="ss">fields</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·250,·SHA:·2dc1a56c751d91e3fc18d14b12d28e7f7ba8b9ff0ea335458a951d176adacddf·...·]-25">)</span><span·class="p">.</span></code></pre><h3·id="program-explained"·class="section-heading">289 ··································</span><span·class="p"·data-group-id="8109991869-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="8109991869-29">(</span><span·class="ss">fields</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·250,·SHA:·4103972ebe25e59199f60728cf5cf9135282383bf2b6b385d3d3ba7e1aa0e6c1·...·]-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.5/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="4004766438-1">(</span><span·class="ss">old</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4004766438-2">{</span><span·class="ss">key</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">val</span><spa[·...·truncated·by·diffoscope;·len:·90,·SHA:·281496f33253ba8de5d7ebac9a0955524f89aa9d026c3b19f5c25ee8b2c3f987·...·]-1">)</span><span·class="p">.</span><span·class="w">178 changed.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="0382943784-1">(</span><span·class="ss">old</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0382943784-2">{</span><span·class="ss">key</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">val</span><spa[·...·truncated·by·diffoscope;·len:·90,·SHA:·355a0180934769bc806ddf2999de2656e30de4d24e0a785848103b93511d8694·...·]-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="4004766438-3">(</span><span·class="ss">new</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4004766438-4">{</span><span·class="ss">key</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">val</span><spa[·...·truncated·by·diffoscope;·len:·167,·SHA:·c554725ca3e88d6c3d19d477ba3908ffd078dd82ce0d714415059d54a837ff3a·...·]-3">)</span><span·class="p">.</span><span·class="w">179 </span><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="0382943784-3">(</span><span·class="ss">new</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0382943784-4">{</span><span·class="ss">key</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">val</span><spa[·...·truncated·by·diffoscope;·len:·167,·SHA:·d4b2602da452bc3287230e802b58fd5f1e9820ddc24c203bcd43861b8bc79994·...·]-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="4004766438-5">(</span><span·class="n">X</span><span·class="p"·data-group-id="4004766438-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="4004766438-6">(</span[·...·truncated·by·diffoscope;·len:·141,·SHA:·4c84e6f7746a613a88ef1a11b5147d34d338d11274188a5bd7d437940a94517e·...·]-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="0382943784-5">(</span><span·class="n">X</span><span·class="p"·data-group-id="0382943784-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="0382943784-6">(</span[·...·truncated·by·diffoscope;·len:·141,·SHA:·81fd02cb699cdd101ca1b0180ccffb459b64c1227207da235b27bed8aa5320f2·...·]-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="4004766438-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="0382943784-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="4004766438-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="0382943784-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="4004766438-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="4004766438-8">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·129,·SHA:·6ee8c361c5d167a0a53dd8ed65157007d6d71b34f9f48fc3926c3d11ba8c3f49·...·]-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="0382943784-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="0382943784-8">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·129,·SHA:·4d026416e036c242f9409583197428d17e26f20e6115e69edf9b9c9d217697d7·...·]-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="4004766438-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="4004766438-10">)</span><span·class="p">,</span><span·class="w">187 ······································</span><span·class="nf">record_info</span><span·class="p"·data-group-id="0382943784-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="0382943784-10">)</span><span·class="p">,</span><span·class="w">
188 ······································</span><span·class="ss">new</span><span·class="p"·data-group-id="4004766438-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="0382943784-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="0507851314-1">(</span><span·class="p"·data-group-id="0507851314-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="0507851314-2">]</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·451b107db90795bb1855551aab2a50a6946206efdbaa4b327a7e804080a3283d·...·]-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="2463142443-1">(</span><span·class="p"·data-group-id="2463142443-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="2463142443-2">]</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·aa9990b4bade7c1c9875743fc8d90fb3dd9b88773e7a37262d441e184447096e·...·]-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="8151795682-1">(</span><span·class="p"·data-group-id="8151795682-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="4793356982-1">(</span><span·class="p"·data-group-id="4793356982-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="8151795682-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="4793356982-2">(</span><span·class="ss">employee</span><span·class="p">,</span><span·class="w">
244 ·························</span><span·class="p"·data-group-id="8151795682-3">[</span><span·class="p"·data-group-id="8151795682-4">{</span><span·class="ss">ram_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8151795682-5">[</span><span·class="ss">a@gin</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·156,·SHA:·dc81188ec6af81b4f64afc878e5dec8a3af79d8238a295d2e335e9e193c6ad9f·...·]82-4">}</span><span·class="p">,</span><span·class="w">244 ·························</span><span·class="p"·data-group-id="4793356982-3">[</span><span·class="p"·data-group-id="4793356982-4">{</span><span·class="ss">ram_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4793356982-5">[</span><span·class="ss">a@gin</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·156,·SHA:·07592d9ff1378902de54287876fa1c7fb2ae1a45af08e4b975bddcde1d559f01·...·]82-4">}</span><span·class="p">,</span><span·class="w">
245 ··························</span><span·class="p"·data-group-id="8151795682-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="8151795682-7">(</span><span·class="ss">fields</span><span·class="p">,</span><span·class="w">245 ··························</span><span·class="p"·data-group-id="4793356982-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="4793356982-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="8151795682-7">)</span><span·class="p"·data-group-id="8151795682-6">}</span><span·class="p"·data-group-id="8151795682-3">]</span><span·class="p"·data-group-id="8151795682-2">)</span><span·class="p">,</span><span·class="w">246 ···················································</span><span·class="ss">employee</span><span·class="p"·data-group-id="4793356982-7">)</span><span·class="p"·data-group-id="4793356982-6">}</span><span·class="p"·data-group-id="4793356982-3">]</span><span·class="p"·data-group-id="4793356982-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="8151795682-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="4793356982-8">(</span><span·class="ss">dept</span><span·class="p">,</span><span·class="w">
248 ·························</span><span·class="p"·data-group-id="8151795682-9">[</span><span·class="p"·data-group-id="8151795682-10">{</span><span·class="ss">ram_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8151795682-11">[</span><span·class="ss">a@gin</span><span·class="p"[·...·truncated·by·diffoscope;·len:·159,·SHA:·922a5c3d27a2906b5de833964bc3f4957d70e10c287aaaee6eb3cafe14e4bfdc·...·]82-10">}</span><span·class="p">,</span><span·class="w">248 ·························</span><span·class="p"·data-group-id="4793356982-9">[</span><span·class="p"·data-group-id="4793356982-10">{</span><span·class="ss">ram_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4793356982-11">[</span><span·class="ss">a@gin</span><span·class="p"[·...·truncated·by·diffoscope;·len:·159,·SHA:·53282e5903c093c8d28e44d91c63b887993742f8a32752ad40a89e4c485a010c·...·]82-10">}</span><span·class="p">,</span><span·class="w">
249 ··························</span><span·class="p"·data-group-id="8151795682-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="8151795682-13">(</span><span·class="ss">fields</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·244,·SHA:·b78f46549e1cf7cea5404999ee35fa2e55b9d0f06a89e24670f91ba0cc90bd2a·...·]82-8">)</span><span·class="p">,</span><span·class="w">249 ··························</span><span·class="p"·data-group-id="4793356982-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="4793356982-13">(</span><span·class="ss">fields</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·244,·SHA:·75bccc9b74dc78e3e1984b7f876f03e4b557216a2ca9b44aa5afecabe87695c9·...·]82-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="8151795682-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="4793356982-14">(</span><span·class="ss">project</span><span·class="p">,</span><span·class="w">
251 ·························</span><span·class="p"·data-group-id="8151795682-15">[</span><span·class="p"·data-group-id="8151795682-16">{</span><span·class="ss">ram_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8151795682-17">[</span><span·class="ss">a@gin</span><span·class="p[·...·truncated·by·diffoscope;·len:·160,·SHA:·65e46d7580f18e35a2b1b5956752c9efa57045d5c1810e0eb3d41248a21faa4c·...·]82-16">}</span><span·class="p">,</span><span·class="w">251 ·························</span><span·class="p"·data-group-id="4793356982-15">[</span><span·class="p"·data-group-id="4793356982-16">{</span><span·class="ss">ram_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4793356982-17">[</span><span·class="ss">a@gin</span><span·class="p[·...·truncated·by·diffoscope;·len:·160,·SHA:·ed6df7b70326fb78a8ca8a0a128cff6787ff591d35faccd20b499fcca6f68720·...·]82-16">}</span><span·class="p">,</span><span·class="w">
252 ··························</span><span·class="p"·data-group-id="8151795682-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="8151795682-19">(</span><span·class="ss">fields</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·248,·SHA:·33a980ac2fba0fef469cc9c0b2f3ac7fd902b59f3ba77e1e928ed58a603ce47e·...·]82-14">)</span><span·class="p">,</span><span·class="w">252 ··························</span><span·class="p"·data-group-id="4793356982-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="4793356982-19">(</span><span·class="ss">fields</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·248,·SHA:·f173bd9b65254f755e424fabe1978e0a616f78134cf2a81c7aa9bfc4ee9b5ca7·...·]82-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="8151795682-20">(</span><span·class="ss">manager</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8151795682-21">[</span><span·class="p"·data-group-id="8151795682-22">{</span><span·class="ss">type</span><span·class="p">,<[·...·truncated·by·diffoscope;·len:·96,·SHA:·b833263175a90f43cdf8758cd923242754753fd7d9f0bb1ab3cf827b3235903f·...·]82-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="4793356982-20">(</span><span·class="ss">manager</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4793356982-21">[</span><span·class="p"·data-group-id="4793356982-22">{</span><span·class="ss">type</span><span·class="p">,<[·...·truncated·by·diffoscope;·len:·96,·SHA:·5954ac40764ec8c7d25aa687fecdd7ef85a327d7dd6b5471805b06a35ad89dd6·...·]82-22">}</span><span·class="p">,</span><span·class="w">
254 ··································</span><span·class="p"·data-group-id="8151795682-23">{</span><span·class="ss">ram_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8151795682-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:·106,·SHA:·f0a19da6e76dd14a7f66e23991d3e92d38eed4cb6ddedab66ff175655bad5860·...·]82-23">}</span><span·class="p">,</span><span·class="w">254 ··································</span><span·class="p"·data-group-id="4793356982-23">{</span><span·class="ss">ram_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4793356982-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:·106,·SHA:·2f951867428866290be548e762884695bad6e33b432111fd268b09a12d15585d·...·]82-23">}</span><span·class="p">,</span><span·class="w">
255 ··································</span><span·class="p"·data-group-id="8151795682-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="8151795682-26">(</span><span·class="ss">fields</span><span·class="p">,</span><span·class="w">255 ··································</span><span·class="p"·data-group-id="4793356982-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="4793356982-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="8151795682-26">)</span><span·class="p"·data-group-id="8151795682-25">}</span><span·class="p"·data-group-id="8151795682-21">]</span><span·class="p"·data-group-id="8151795682-20">)</span><span·class="p">,</span><span·class="w">256 ···························································</span><span·class="ss">manager</span><span·class="p"·data-group-id="4793356982-26">)</span><span·class="p"·data-group-id="4793356982-25">}</span><span·class="p"·data-group-id="4793356982-21">]</span><span·class="p"·data-group-id="4793356982-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="8151795682-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="4793356982-27">(</span><span·class="ss">at_dep</span><span·class="p">,</span><span·class="w">
258 ·························</span><span·class="p"·data-group-id="8151795682-28">[</span><span·class="p"·data-group-id="8151795682-29">{</span><span·class="ss">ram_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8151795682-30">[</span><span·class="ss">a@gin</span><span·class="p[·...·truncated·by·diffoscope;·len:·160,·SHA:·464f281d79b742d12d9f02a58ab23e021745791bc693778267f646fdca52c511·...·]82-29">}</span><span·class="p">,</span><span·class="w">258 ·························</span><span·class="p"·data-group-id="4793356982-28">[</span><span·class="p"·data-group-id="4793356982-29">{</span><span·class="ss">ram_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4793356982-30">[</span><span·class="ss">a@gin</span><span·class="p[·...·truncated·by·diffoscope;·len:·160,·SHA:·6aba49fd1a7a976e8dbf8f179853e4c3ba462d010917685149cfd62dd45166c5·...·]82-29">}</span><span·class="p">,</span><span·class="w">
259 ··························</span><span·class="p"·data-group-id="8151795682-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="8151795682-32">(</span><span·class="ss">fields</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·247,·SHA:·c215582c6c7689f264449471c40e3e6ab73cbff1606950e6d7e07397df888a02·...·]82-27">)</span><span·class="p">,</span><span·class="w">259 ··························</span><span·class="p"·data-group-id="4793356982-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="4793356982-32">(</span><span·class="ss">fields</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·247,·SHA:·15c251170fae7d575e10fb93c731762e82e4dcf1c77a626589b8bad081833d46·...·]82-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="8151795682-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="4793356982-33">(</span><span·class="ss">in_proj</span><span·class="p">,</span><span·class="w">
261 ························</span><span·class="p"·data-group-id="8151795682-34">[</span><span·class="p"·data-group-id="8151795682-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="8151795682-35">}</span><span·class="p">,</span><span·class="w">261 ························</span><span·class="p"·data-group-id="4793356982-34">[</span><span·class="p"·data-group-id="4793356982-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="4793356982-35">}</span><span·class="p">,</span><span·class="w">
262 ·························</span><span·class="p"·data-group-id="8151795682-36">{</span><span·class="ss">ram_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8151795682-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:·106,·SHA:·3301326fe626af7f87a68eb8ff48a7f429289f5c9b7a6fa59cbdf4f9880d3c26·...·]82-36">}</span><span·class="p">,</span><span·class="w">262 ·························</span><span·class="p"·data-group-id="4793356982-36">{</span><span·class="ss">ram_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4793356982-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:·106,·SHA:·1fc5722355086aa339e9f77e25c1daebbe893d5542cd50e9998d172b3e166798·...·]82-36">}</span><span·class="p">,</span><span·class="w">
263 ·························</span><span·class="p"·data-group-id="8151795682-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="8151795682-39">(</span><span·class="ss">fields</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·248,·SHA:·1360c64358c68f176ff455e8a4168fbe2a2d68f8778dd8596d664d0a8a7e5cf7·...·]82-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="4793356982-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="4793356982-39">(</span><span·class="ss">fields</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·248,·SHA:·393896bad751f465a015dcc816b279befeafe93a03a63b5ecc69974232f5ffd3·...·]82-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="9576978462-1">(</span><span·class="p"·data-group-id="9576978462-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="3856447845-1">(</span><span·class="p"·data-group-id="3856447845-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="3289744465-1">(</span><span·class="p"·data-group-id="3289744465-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="3289744465-2">]</span><span·class="p">,</span><span·[·...·truncated·by·diffoscope;·len:·88,·SHA:·1c0b442cbca9266e546045a20579e74b0a2be1eb175c1e586f51395249de8ee6·...·]-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="7209745212-1">(</span><span·class="p"·data-group-id="7209745212-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="7209745212-2">]</span><span·class="p">,</span><span·[·...·truncated·by·diffoscope;·len:·88,·SHA:·b2f9c1e0964224c0b0004c851d4242d6d5f3c90de22d229896bc004030bfbde3·...·]-1">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
304 ··</span><span·class="p"·data-group-id="3289744465-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="3289744465-3">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">304 ··</span><span·class="p"·data-group-id="7209745212-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="7209745212-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="3289744465-4">(</span><span·class="n">RemainingTabs</span><span·class="p"·data-group-id="3289744465-4">)</span><span·class="p">;</span><span·class="w">305 ····</span><span·class="nf">panic</span><span·class="p"·data-group-id="7209745212-4">(</span><span·class="n">RemainingTabs</span><span·class="p"·data-group-id="7209745212-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="5690283778-1">(</span><span·class="p"·data-group-id="5690283778-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="5243681011-1">(</span><span·class="p"·data-group-id="5243681011-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="5690283778-2">(</span><span·class="p"·data-group-id="5690283778-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="5243681011-2">(</span><span·class="p"·data-group-id="5243681011-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="5690283778-3">(</span><span·class="p"·data-group-id="5690283778-4">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">2</span><span·cla[·...·truncated·by·diffoscope;·len:·85,·SHA:·649eb5d893d624cecfe462f13c75b366e8ea653266046234e9df5d9038a31b96·...·]-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="5243681011-3">(</span><span·class="p"·data-group-id="5243681011-4">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">2</span><span·cla[·...·truncated·by·diffoscope;·len:·85,·SHA:·e14cb03e147d013739d2669d9e69946cb5aecd3d686d77955fd8937c95e4dae8·...·]-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="5690283778-5">(</span><span·class="p"·data-group-id="5690283778-6">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">3</span><span·cla[·...·truncated·by·diffoscope;·len:·85,·SHA:·5ab4e04af488672a830b90db75a2d11287845a60f39f131f86e767b646744f34·...·]-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="5243681011-5">(</span><span·class="p"·data-group-id="5243681011-6">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">3</span><span·cla[·...·truncated·by·diffoscope;·len:·85,·SHA:·e6534cb7c11528006c495b303e0ca0079fa379e75ec6e82dbb43c3733737722f·...·]-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="5690283778-7">(</span><span·class="p"·data-group-id="5690283778-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="5690283778-8">}</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·12,·SHA:·ddd222bfa4603795d14b296b0b806a6e073de724f7ef085685fc8f486b634f4b·...·]-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="5243681011-7">(</span><span·class="p"·data-group-id="5243681011-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="5243681011-8">}</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·12,·SHA:·10a04041785782103944812bd3400dafdc4c5f2035aa8a04f93ffbed6e105efe·...·]-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="5690283778-9">(</span><span·class="n">F</span><span·class="p"·data-group-id="5690283778-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="5243681011-9">(</span><span·class="n">F</span><span·class="p"·data-group-id="5243681011-9">)</span><span·class="p">.</span></code></pre><p>This·transaction·returns·the·list·<code·class="inline">[{foo,1,3}]</code>·if·table·<code·class="inline">foo</code>·is·of·type
338 <code·class="inline">set</code>.·However,·the·list·<code·class="inline">[{foo,1,2},·{foo,1,3}]</code>·is·returned·if·the·table338 <code·class="inline">set</code>.·However,·the·list·<code·class="inline">[{foo,1,2},·{foo,1,3}]</code>·is·returned·if·the·table
339 is·of·type·<code·class="inline">bag</code>.</p><p><code·class="inline">Mnesia</code>·tables·can·never·contain·duplicates·of·the·same·record·in·the·same339 is·of·type·<code·class="inline">bag</code>.</p><p><code·class="inline">Mnesia</code>·tables·can·never·contain·duplicates·of·the·same·record·in·the·same
340 table.·Duplicate·records·have·attributes·with·the·same·contents·and·key.</p></li><li><p><code·class="inline">{disc_copies,·NodeList}</code>,·where·<code·class="inline">NodeList</code>·is·a·list·of·the·nodes·where340 table.·Duplicate·records·have·attributes·with·the·same·contents·and·key.</p></li><li><p><code·class="inline">{disc_copies,·NodeList}</code>,·where·<code·class="inline">NodeList</code>·is·a·list·of·the·nodes·where
341 this·table·is·to·reside·on·disc.</p><p>Write·operations·to·a·table·replica·of·type·<code·class="inline">disc_copies</code>·write·data·to·the341 this·table·is·to·reside·on·disc.</p><p>Write·operations·to·a·table·replica·of·type·<code·class="inline">disc_copies</code>·write·data·to·the
342 disc·copy·and·to·the·RAM·copy·of·the·table.</p><p>It·is·possible·to·have·a·replicated·table·of·type·<code·class="inline">disc_copies</code>·on·one·node,342 disc·copy·and·to·the·RAM·copy·of·the·table.</p><p>It·is·possible·to·have·a·replicated·table·of·type·<code·class="inline">disc_copies</code>·on·one·node,
343 and·the·same·table·stored·as·a·different·type·on·another·node.·Default·is343 and·the·same·table·stored·as·a·different·type·on·another·node.·Default·is
344 <code·class="inline">[]</code>.·This·arrangement·is·desirable·if·the·following·operational344 <code·class="inline">[]</code>.·This·arrangement·is·desirable·if·the·following·operational
Offset 374, 19 lines modifiedOffset 374, 19 lines modified
374 possible·for·you·to·provide·the·attribute·names·or·to·use·the374 possible·for·you·to·provide·the·attribute·names·or·to·use·the
375 <code·class="inline">record_info/2</code>·notation.</p><p>It·is·recommended·to·use·the·<code·class="inline">record_info/2</code>·notation,·as·it·becomes·easier375 <code·class="inline">record_info/2</code>·notation.</p><p>It·is·recommended·to·use·the·<code·class="inline">record_info/2</code>·notation,·as·it·becomes·easier
376 to·maintain·the·program·and·the·program·becomes·more·robust·with·regards·to376 to·maintain·the·program·and·the·program·becomes·more·robust·with·regards·to
377 future·record·changes.</p></li><li><p><code·class="inline">{record_name,·Atom}</code>·specifies·the·common·name·of·all·records·stored·in·the377 future·record·changes.</p></li><li><p><code·class="inline">{record_name,·Atom}</code>·specifies·the·common·name·of·all·records·stored·in·the
378 table.·All·records·stored·in·the·table·must·have·this·name·as·their·first378 table.·All·records·stored·in·the·table·must·have·this·name·as·their·first
379 element.·<code·class="inline">record_name</code>·defaults·to·the·name·of·the·table.·For·more379 element.·<code·class="inline">record_name</code>·defaults·to·the·name·of·the·table.·For·more
Max diff block lines reached; 7203/53400 bytes (13.49%) of diff not shown.
141 KB
./usr/share/doc/erlang-doc/html/lib/mnesia-4.23.5/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="6627061078-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="6627061078-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="9729333024-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="9729333024-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="6627061078-2">(</span><span·class="p"·data-group-id="6627061078-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="9729333024-2">(</span><span·class="p"·data-group-id="9729333024-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
150 ················</span><span·class="p"·data-group-id="6627061078-3">[</span><span·class="n">E</span><span·class="p"·data-group-id="6627061078-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:·b0cabe9aee0f58b7e37a1157e19e7ca69f60a90ee36a7df1f62fc78e18612aa1·...·]-4">)</span><span·class="p">,</span><span·class="w">150 ················</span><span·class="p"·data-group-id="9729333024-3">[</span><span·class="n">E</span><span·class="p"·data-group-id="9729333024-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:·03b046391b913d37a4338911604435b4059936adba626c0e5a533187545f8349·...·]-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="6627061078-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="6627061078-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="9729333024-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="9729333024-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="6627061078-6">(</span><span·class="n">New</span><span·class="p"·data-group-id="6627061078-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="9729333024-6">(</span><span·class="n">New</span><span·class="p"·data-group-id="9729333024-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="6627061078-7">(</span><span·class="n">F</span><span·class="p"·data-group-id="6627061078-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="9729333024-7">(</span><span·class="n">F</span><span·class="p"·data-group-id="9729333024-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="7377047065-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="7377047065-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="8804731521-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="8804731521-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="7377047065-2">(</span><span·class="p"·data-group-id="7377047065-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="8804731521-2">(</span><span·class="p"·data-group-id="8804731521-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
251 ················</span><span·class="p"·data-group-id="7377047065-3">[</span><span·class="n">E</span><span·class="p"·data-group-id="7377047065-3">]</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">read</span><sp[·...·truncated·by·diffoscope;·len:·303,·SHA:·fd23666dd0490d661d4a3da4315a91441a5d48aa74ca054c534f0683e40007ed·...·]-4">)</span><span·class="p">,</span><span·class="w">251 ················</span><span·class="p"·data-group-id="8804731521-3">[</span><span·class="n">E</span><span·class="p"·data-group-id="8804731521-3">]</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">read</span><sp[·...·truncated·by·diffoscope;·len:·303,·SHA:·1bc9a4a70c6701503a2d3f47553f4061b241d6d863116192d58bc00c3a4f4337·...·]-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="7377047065-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="7377047065-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="8804731521-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="8804731521-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="7377047065-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="7377047065-8">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·65,·SHA:·2cf32f6f0a435070ba6c799f31c5fc1836a0f4f9984423b4b1ee4465636f4875·...·]-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="8804731521-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="8804731521-8">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·65,·SHA:·63c6fe6494ec87d8be5b35d409b146c4bead3531f8c012e80563bd3ee6ae420f·...·]-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="7377047065-9">(</span><span·class="n">New</span><span·class="p"·data-group-id="7377047065-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="8804731521-9">(</span><span·class="n">New</span><span·class="p"·data-group-id="8804731521-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="7377047065-10">(</span><span·class="n">F</span><span·class="p"·data-group-id="7377047065-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="8804731521-10">(</span><span·class="n">F</span><span·class="p"·data-group-id="8804731521-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="6219784919-1">(</span><span·class="p"·data-group-id="6219784919-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="4827018560-1">(</span><span·class="p"·data-group-id="4827018560-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="6219784919-2">(</span><span·class="o">#</span><span·class="ss">foo</span><span·class="p"·data-group-id="6219784919-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:·05dd66440dd0dbbcc50221cb8e51c5af3016a7eba18249e8b9b3c56f84d3c85c·...·]-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="4827018560-2">(</span><span·class="o">#</span><span·class="ss">foo</span><span·class="p"·data-group-id="4827018560-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:·63708fb486f424334994ebb78b524e6c76a11a5b1921a93ab5b1f79c69142d03·...·]-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="6219784919-4">(</span><span·class="n">F</span><span·class="p"·data-group-id="6219784919-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:·d70d3e26f05dc8eb007380515ba1660a43e7a46447ca378f098ebcec55639d6d·...·]-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="4827018560-4">(</span><span·class="n">F</span><span·class="p"·data-group-id="4827018560-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:·549ebff807b80998c7687bb698f34ec4c6d42c0d97b28da196448708582984c6·...·]-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="4181917546-2">(</span><span·class="o">#</span><span·class="ss">foo</span><span·class="p"·data-group-id="4181917546-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:·a960890f13278a1e07ea57ed8a6d39fcf94dfb71b38e66735be9726f74234bae·...·]-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="3449721809-2">(</span><span·class="o">#</span><span·class="ss">foo</span><span·class="p"·data-group-id="3449721809-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:·d4be69fa3d9561613200b7a2e9b77525d970e8aa445db0bb264192d5edeee21d·...·]-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="4181917546-4">(</span><span·class="n">F</span><span·class="p"·data-group-id="4181917546-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="3449721809-4">(</span><span·class="n">F</span><span·class="p"·data-group-id="3449721809-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="3894713198-1">(</span><span·class="p"·data-group-id="3894713198-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="3894713198-2">}</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">read</span><span·class="p"·data-group-id="3894713198-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="3894713198-3">(</span><span·class="p"·data-group-id="3894713198-4">{</span><span·class="ss">table</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·345,·SHA:·ba279cf5672328284a5a3aad9daeeebce021eceb12dbfc97226ba051f37ea901·...·]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:·760188af2d72b28cdc12f350c5f89fd6dbc31fbd2f07b0b00a5eb67f4a4c83dd·...·]
 337 </span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">lock</span><span·class="p"·data-group-id="7224522534-3">(</span><span·class="p"·data-group-id="7224522534-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="7224522534-4">}</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">write</span><span·class="p"·data-group-id="7224522534-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="5430328566-1">(</span><span·class="ss">subscriber</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5430328566-2">[</span><span·class="p"·data-group-id="5430328566-2">]</span><span·class="p"·data-group-id="5430328566-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="6847268248-1">(</span><span·class="ss">subscriber</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6847268248-2">[</span><span·class="p"·data-group-id="6847268248-2">]</span><span·class="p"·data-group-id="6847268248-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="5026281743-1">[</span><span·class="p"·data-group-id="5026281743-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="5026281743-2">}</span><span·class=[·...·truncated·by·diffoscope;·len:·29,·SHA:·2c9981d65acbf15983ca19feb04459641fdaadbb8bc94f46e697a7192b011a39·...·]-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="5458517116-1">[</span><span·class="p"·data-group-id="5458517116-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="5458517116-2">}</span><span·class=[·...·truncated·by·diffoscope;·len:·29,·SHA:·062fdbcca5aad67c3824183b467677394e50e842fe3ed1b6e42ba7571d555264·...·]-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="5026281743-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="5026281743-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="5458517116-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="5458517116-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="5026281743-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="5026281743-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="5458517116-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="5458517116-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="4713754949-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="4713754949-2">{</span><span·class="p"·data-group-id="4713754949[·...·truncated·by·diffoscope;·len:·130,·SHA:·f6c86f9b194e9f3743cb7db1faf53c220be4460d8c63683bfb7a1b1d80cba333·...·]-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="1450313362-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="1450313362-2">{</span><span·class="p"·data-group-id="1450313362[·...·truncated·by·diffoscope;·len:·130,·SHA:·5640fc0639660db281fadb333f42f792d7b3dd30fe2b8f82f358821f2a494883·...·]-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="4713754949-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="4713754949-4">{</span><span·class="p"·data-group-id="4713754[·...·truncated·by·diffoscope;·len:·140,·SHA:·74a212849cafc9037f0880f6bdae949056764bd516a9d20a4b79c1796a3f0f8b·...·]-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="1450313362-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="1450313362-4">{</span><span·class="p"·data-group-id="1450313[·...·truncated·by·diffoscope;·len:·140,·SHA:·d65a81764044fa14b2916af5dab71ca25671fe2e559f9074e7816128593fa060·...·]-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="4713754949-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="4713754949-6">{</span><span·class="p"·data-group-id="47137[·...·truncated·by·diffoscope;·len:·135,·SHA:·a1aa5a6902f7d015956a70d80ea643e2162490521d61525ace9f963cdc67d086·...·]-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="1450313362-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="1450313362-6">{</span><span·class="p"·data-group-id="14503[·...·truncated·by·diffoscope;·len:·135,·SHA:·4a8177328643e1ddcbc40df6a3f4c3da93941e043f64e1c79f1f9cd56b12146a·...·]-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="0475104415-1">(</span><span·class="n">Record</span><span·class="p"·data-group-id="0475104415-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="7197314166-1">(</span><span·class="n">Record</span><span·class="p"·data-group-id="7197314166-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="0475104415-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="0475104415-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="7197314166-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="7197314166-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="0475104415-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="0475104415-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="7197314166-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="7197314166-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="0475104415-4">(</span><span·class="p"·data-group-id="0475104415-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="0475104415-5">}</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·13,·SHA:·7ce3c0e4413596048131119d9a6d0eb07ff471f619c0f399fc2d1c0e3cda4d2a·...·]-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="7197314166-4">(</span><span·class="p"·data-group-id="7197314166-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="7197314166-5">}</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·13,·SHA:·f624005a6430d804c1cce505b12c19239ba6d48fe6e834ed4fd021bfafd88d7d·...·]-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="0475104415-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="0475104415-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="7197314166-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="7197314166-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="0475104415-7">(</span><span·class="n">Record</span><span·class="p"·data-group-id="0475104415-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="7197314166-7">(</span><span·class="n">Record</span><span·class="p"·data-group-id="7197314166-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="0475104415-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="0475104415-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="7197314166-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="7197314166-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="0475104415-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="0475104415-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="7197314166-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="7197314166-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="0475104415-10">(</span><span·class="p"·data-group-id="0475104415-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="0475104415-11">}</span><span·class="p">,</span><[·...·truncated·by·diffoscope;·len:·91,·SHA:·fefa2b9e2d401cc96f9cfa7bb83ff287603ceaa284a97b918434e3fb9d45de2e·...·]-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="7197314166-10">(</span><span·class="p"·data-group-id="7197314166-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="7197314166-11">}</span><span·class="p">,</span><[·...·truncated·by·diffoscope;·len:·91,·SHA:·2e85a201f9bf4d24f973b66d27f694c59c65aefeb5f7b69e8835c101bae4b56f·...·]-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="0475104415-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="0475104415-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="7197314166-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="7197314166-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="0475104415-13">(</span><span·class="p"·data-group-id="0475104415-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="0475104415-14">}</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·fd1280e6cacd74d66295057ef805b4d5580b8d243daa4eb0793b26a2b804ddfb·...·]-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="7197314166-13">(</span><span·class="p"·data-group-id="7197314166-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="7197314166-14">}</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·64f78c80b93fb1eb26226bd727405740da745eddae5af8053d973bb68c2f01d3·...·]-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="0475104415-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="0475104415-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="7197314166-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="7197314166-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="0475104415-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="0475104415-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="7197314166-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="7197314166-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="0475104415-17">(</span><span·class="n">Pattern</span><span·class="p"·data-group-id="0475104415-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="7197314166-17">(</span><span·class="n">Pattern</span><span·class="p"·data-group-id="7197314166-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="0475104415-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="0475104415-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="7197314166-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="7197314166-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="0475104415-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="0475104415-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="7197314166-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="7197314166-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.5/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="2900115456-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="3099036275-1">(</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">
171 ····················</span><span·class="p"·data-group-id="2900115456-2">[</span><span·class="p"·data-group-id="2900115456-3">{</span><span·class="ss">ram_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2900115456-4">[</span><span·class="n">N1</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·146,·SHA:·2165dacb462e3696ebf9c4225249c6bdf18094219c3dbbe662ec0853c275e535·...·]-3">}</span><span·class="p">,</span><span·class="w">171 ····················</span><span·class="p"·data-group-id="3099036275-2">[</span><span·class="p"·data-group-id="3099036275-3">{</span><span·class="ss">ram_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3099036275-4">[</span><span·class="n">N1</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·146,·SHA:·d8dab79287b06b1b53067df9a48571c9b30edd2504927f4ac81452f8a94cfdb2·...·]-3">}</span><span·class="p">,</span><span·class="w">
172 ·····················</span><span·class="p"·data-group-id="2900115456-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="2900115456-6">(</span><span·class="ss">fields</span><span·class="p">,</span><span·clas[·...·truncated·by·diffoscope;·len:·241,·SHA:·74456b32654f726b8b3fc4e2b81f3d51e3a534e2c641bd1a0895b0827f521e55·...·]-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="3099036275-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="3099036275-6">(</span><span·class="ss">fields</span><span·class="p">,</span><span·clas[·...·truncated·by·diffoscope;·len:·241,·SHA:·3d3ac0e901d1c966092ebc20e6953a777e767447bbfe0a70ce33946929eb8569·...·]-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="2660499525-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:·be814fbfbdb05802bd563a25b279182ac461f52b2d90d1248a9421dbc88cf4d8·...·]-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="9591660850-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:·f72e3413d343049227dac86dddac73f7f08a0ad907087856e9abdba7c185740f·...·]-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="2660499525-3">(</span><span·class="p"·data-group-id="2660499525-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="9591660850-3">(</span><span·class="p"·data-group-id="9591660850-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="2660499525-4">(</span><span·class="ss">a@sam</span><span·class="p"·data-group-id="2660499525-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:·b99ac03ef99aaa67e28db2bcc6314b1c842364c12f6523efb4b1aa7a90a9bdc3·...·]-5">)</span><span·class="p">.</span><span·class="w">228 </span><span·class="p"·data-group-id="9591660850-4">(</span><span·class="ss">a@sam</span><span·class="p"·data-group-id="9591660850-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:·ff7ceaa6ffdea6ab30d61adb320c1d30889e2fa24f48900c5569e7daefaae6d4·...·]-5">)</span><span·class="p">.</span><span·class="w">
229 </span><span·class="p"·data-group-id="2660499525-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="2660499525-6">]</span><span·class="gp·unselectable">229 </span><span·class="p"·data-group-id="9591660850-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="9591660850-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="2660499525-7">(</span><span·class="ss">a@sam</span><span·class="p"·data-group-id="2660499525-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:·8222f5c4c672a783bcc652b3c9b15b20df1dd3dcf2411788bdba847f408492ff·...·]-8">)</span><span·class="p">.</span><span·class="w">232 </span><span·class="p"·data-group-id="9591660850-7">(</span><span·class="ss">a@sam</span><span·class="p"·data-group-id="9591660850-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:·4a333a149cbd235a590f6c5f84c987e3a7c097156883a9efc57db2c91a607326·...·]-8">)</span><span·class="p">.</span><span·class="w">
233 </span><span·class="p"·data-group-id="2660499525-12">{</span><span·class="ss">atomic</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p"·data-group-id="2660499525-12">}</span><span·class="gp·unselectable">233 </span><span·class="p"·data-group-id="9591660850-12">{</span><span·class="ss">atomic</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p"·data-group-id="9591660850-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="2660499525-13">(</span><span·class="n">Keys</span><span·class="p"·data-group-id="2660499525-13">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="2660499525-14">[</span><span·class="nc">mnesi[·...·truncated·by·diffoscope;·len:·664,·SHA:·858a25c0f4e82c67f39bf488153789deb402a234192c0472e9a0dba424163dbb·...·]-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="9591660850-13">(</span><span·class="n">Keys</span><span·class="p"·data-group-id="9591660850-13">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="9591660850-14">[</span><span·class="nc">mnesi[·...·truncated·by·diffoscope;·len:·664,·SHA:·e9ac77d81e7f4804b9b0d0c8e588a89058727382df0984d33a7a3b5c665a83c2·...·]-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="2660499525-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="2660499525-18">[</span><span·class="nc">list[·...·truncated·by·diffoscope;·len:·445,·SHA:·100ea0aff6a25b7a13791d8adfd8bd0f16b12b33e257727c31cac698d4aedc03·...·]-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="9591660850-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="9591660850-18">[</span><span·class="nc">list[·...·truncated·by·diffoscope;·len:·445,·SHA:·021697ccdbf1800eb21c5fbe5a91a077cca50fc51680afe72340df2cf5ed07cf·...·]-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="2660499525-20">(</span><span·class="ss">a@sam</span><span·class="p"·data-group-id="2660499525-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:·26e380c9a487d0d174df7bdf276a991dc1d83fc7aac077dfae39e8b4028640f5·...·]-21">)</span><span·class="p">.</span><span·class="w">238 </span><span·class="p"·data-group-id="9591660850-20">(</span><span·class="ss">a@sam</span><span·class="p"·data-group-id="9591660850-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:·17c18a7c5f35628ace53239849190a34824aa319b7ccf34f6d8931e835a387b4·...·]-21">)</span><span·class="p">.</span><span·class="w">
239 </span><span·class="p"·data-group-id="2660499525-24">{</span><span·class="ss">atomic</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p"·data-group-id="2660499525-24">}</span><span·class="gp·unselectable">239 </span><span·class="p"·data-group-id="9591660850-24">{</span><span·class="ss">atomic</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p"·data-group-id="9591660850-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="2660499525-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="2660499525-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="9591660850-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="9591660850-25">)</span><span·class="p">.</span><span·class="w">
241 </span><span·class="p"·data-group-id="2660499525-26">[</span><span·class="p"·data-group-id="2660499525-27">{</span><span·class="ss">base_table</span><span·class="p">,</span><span·class="ss">dictionary</span><span·class="p"·data-group-id="2660499525-27">}</span><span·class="p">,</span><span·class="w">241 </span><span·class="p"·data-group-id="9591660850-26">[</span><span·class="p"·data-group-id="9591660850-27">{</span><span·class="ss">base_table</span><span·class="p">,</span><span·class="ss">dictionary</span><span·class="p"·data-group-id="9591660850-27">}</span><span·class="p">,</span><span·class="w">
242 ·</span><span·class="p"·data-group-id="2660499525-28">{</span><span·class="ss">foreign_key</span><span·class="p">,</span><span·class="ss">undefined</span><span·class="p"·data-group-id="2660499525-28">}</span><span·class="p">,</span><span·class="w">242 ·</span><span·class="p"·data-group-id="9591660850-28">{</span><span·class="ss">foreign_key</span><span·class="p">,</span><span·class="ss">undefined</span><span·class="p"·data-group-id="9591660850-28">}</span><span·class="p">,</span><span·class="w">
243 ·</span><span·class="p"·data-group-id="2660499525-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="2660499525-29">}</span><span·class="p">,</span><span·class="w">243 ·</span><span·class="p"·data-group-id="9591660850-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="9591660850-29">}</span><span·class="p">,</span><span·class="w">
244 ·</span><span·class="p"·data-group-id="2660499525-30">{</span><span·class="ss">hash_state</span><span·class="p">,</span><span·class="p"·data-group-id="2660499525-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:·8826b961a974c16684efb00c73e39ef425395bb128cfb6789a879850c36a17b3·...·]-30">}</span><span·class="p">,</span><span·class="w">244 ·</span><span·class="p"·data-group-id="9591660850-30">{</span><span·class="ss">hash_state</span><span·class="p">,</span><span·class="p"·data-group-id="9591660850-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:·6abbf3eacbbf0359d6e2d31a81f2ca016c4d3118c4f6a6c69658ad7ec1edafd1·...·]-30">}</span><span·class="p">,</span><span·class="w">
245 ·</span><span·class="p"·data-group-id="2660499525-32">{</span><span·class="ss">n_fragments</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="2660499525-32">}</span><span·class="p">,</span><span·class="w">245 ·</span><span·class="p"·data-group-id="9591660850-32">{</span><span·class="ss">n_fragments</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="9591660850-32">}</span><span·class="p">,</span><span·class="w">
246 ·</span><span·class="p"·data-group-id="2660499525-33">{</span><span·class="ss">node_pool</span><span·class="p">,</span><span·class="p"·data-group-id="2660499525-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:·8d6fa48f2eb407e04891b0fedc5ee6a6ee47a87444e74947237123aac2a6f96f·...·]-26">]</span><span·class="gp·unselectable">246 ·</span><span·class="p"·data-group-id="9591660850-33">{</span><span·class="ss">node_pool</span><span·class="p">,</span><span·class="p"·data-group-id="9591660850-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:·172b293127758dadc1e281af39756e120d2a7d539991bfaba493da975144d373·...·]-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="2660499525-35">(</span><span·class="n">Item</span><span·class="p"·data-group-id="2660499525-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:·d50dcabc6cab154b2e33394efb1af2d79eb583bc994025987d8d591041c308c3·...·]-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="9591660850-35">(</span><span·class="n">Item</span><span·class="p"·data-group-id="9591660850-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:·e502feca7bc8815573e4ecc9cf9b207503f5925d04f5260dcb7772b5d816b0c8·...·]-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="2660499525-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="2660499525-38">[</span><span·class="ss">frag_[·...·truncated·by·diffoscope;·len:·189,·SHA:·9bce5f8c075a95a8ce2d98a6ff7fa91ad18cff5c18214dc13486d5ce9f770320·...·]-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="9591660850-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="9591660850-38">[</span><span·class="ss">frag_[·...·truncated·by·diffoscope;·len:·189,·SHA:·b5e60ba03f97f2272e133eadfe3e832c618df23b96eac4d5f166fe25a04c4ace·...·]-37">)</span><span·class="p">.</span><span·class="w">
250 </span><span·class="p"·data-group-id="2660499525-39">[</span><span·class="p"·data-group-id="2660499525-40">{</span><span·class="ss">c@sam</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="2660499525-40">}</span><span·class="p">,</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·414,·SHA:·0625a203652288dbd4479cc72992bd59a01b6168db2bc38b0985cfe0acad74e9·...·]-39">]</span><span·class="gp·unselectable">250 </span><span·class="p"·data-group-id="9591660850-39">[</span><span·class="p"·data-group-id="9591660850-40">{</span><span·class="ss">c@sam</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="9591660850-40">}</span><span·class="p">,</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·414,·SHA:·efa02278dcd323b38c642b925ce4675688de4d37c891b83693b69b9b4bce9dda·...·]-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="2660499525-43">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2660499525-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:·1f547e89a48fdab27904ac5798af9d56ff72e5401a2b852f9eb1229da6f45d99·...·]-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="9591660850-43">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9591660850-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:·6ff9090b1e19e4a1c4bfad674a3906657d2a783f9236a53c4530959dbe61ae46·...·]-43">)</span><span·class="p">.</span><span·class="w">
252 </span><span·class="p"·data-group-id="2660499525-45">{</span><span·class="ss">atomic</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p"·data-group-id="2660499525-45">}</span><span·class="gp·unselectable">252 </span><span·class="p"·data-group-id="9591660850-45">{</span><span·class="ss">atomic</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p"·data-group-id="9591660850-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="2660499525-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="2660499525-47">[</span><span·class="ss">frag_[·...·truncated·by·diffoscope;·len:·189,·SHA:·bf5eb10d1371f89a4a8077920f87d3f14a941aa1cc873eef504bdb5999d7c7f6·...·]-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="9591660850-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="9591660850-47">[</span><span·class="ss">frag_[·...·truncated·by·diffoscope;·len:·189,·SHA:·9c91c3bc74a9184237171a23357429291152be27ccad51efd878819b9def0008·...·]-46">)</span><span·class="p">.</span><span·class="w">
254 </span><span·class="p"·data-group-id="2660499525-48">[</span><span·class="p"·data-group-id="2660499525-49">{</span><span·class="ss">b@sam</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="2660499525-49">}</span><span·class="p">,</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·414,·SHA:·54ba495b3b9c0020e1878577be4794161126278625a066cab4e9b1c545118e22·...·]-48">]</span><span·class="gp·unselectable">254 </span><span·class="p"·data-group-id="9591660850-48">[</span><span·class="p"·data-group-id="9591660850-49">{</span><span·class="ss">b@sam</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="9591660850-49">}</span><span·class="p">,</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·414,·SHA:·85575b63d848759aef01331a99df452847ef26e92e3f150649604c61354ba13e·...·]-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="2660499525-52">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2660499525-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:·9f95cc6c5e152ab2b16024e48a6984c76f0a9841f614f8862d54953ae31cc789·...·]-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="9591660850-52">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9591660850-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:·f83163a25feb488e7810e046f2193ace8a7f0737f8e2d4851fbabdcaa778b6cc·...·]-52">)</span><span·class="p">.</span><span·class="w">
256 </span><span·class="p"·data-group-id="2660499525-54">{</span><span·class="ss">atomic</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p"·data-group-id="2660499525-54">}</span><span·class="gp·unselectable">256 </span><span·class="p"·data-group-id="9591660850-54">{</span><span·class="ss">atomic</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p"·data-group-id="9591660850-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="2660499525-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="2660499525-56">[</span><span·class="ss">frag_[·...·truncated·by·diffoscope;·len:·189,·SHA:·9ad4aa1f126c7ca9642be982a46b773048ff9ac1a5cacd7fc8e30d5a7f60e6c4·...·]-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="9591660850-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="9591660850-56">[</span><span·class="ss">frag_[·...·truncated·by·diffoscope;·len:·189,·SHA:·d83ecf9ea4cf2af78a63703907b737a8293178ffba0c0fc2fe1f3f4c7f0df629·...·]-55">)</span><span·class="p">.</span><span·class="w">
258 </span><span·class="p"·data-group-id="2660499525-57">[</span><span·class="p"·data-group-id="2660499525-58">{</span><span·class="ss">a@sam</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="2660499525-58">}</span><span·class="p">,</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·414,·SHA:·6184d663fb8ae758889ca09ff7564faa09418f42e912d5f9066cecbf82ff6ab9·...·]-57">]</span><span·class="gp·unselectable">258 </span><span·class="p"·data-group-id="9591660850-57">[</span><span·class="p"·data-group-id="9591660850-58">{</span><span·class="ss">a@sam</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="9591660850-58">}</span><span·class="p">,</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·414,·SHA:·779a5f6bc5ea2d0e9f8b34d721e4aeaaafa96ca2430aa855a069e67b3639b108·...·]-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="2660499525-61">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2660499525-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:·0002c6f3c8b5609ac9bb0524d4efd1319d1c61cb272e37d9efe63ea7f66c73d9·...·]-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="9591660850-61">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9591660850-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:·f1122671546448c5c69739066c1ce23f6c23605931df471bc89933d169cfcecf·...·]-61">)</span><span·class="p">.</span><span·class="w">
260 </span><span·class="p"·data-group-id="2660499525-63">{</span><span·class="ss">atomic</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p"·data-group-id="2660499525-63">}</span><span·class="gp·unselectable">260 </span><span·class="p"·data-group-id="9591660850-63">{</span><span·class="ss">atomic</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p"·data-group-id="9591660850-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="2660499525-64">(</span><span·class="n">Key</span><span·class="p"·data-group-id="2660499525-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:·d6d16dcecf4b4006b8199cc187d0470f0f5730753c5f4a321e552422cc90089e·...·]-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="9591660850-64">(</span><span·class="n">Key</span><span·class="p"·data-group-id="9591660850-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:·f5b5777229f18204a05090c16b07b568652539b1416356767a50793c274ecc55·...·]-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="2660499525-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="2660499525-68">[</span><span·class="mi">12</[·...·truncated·by·diffoscope;·len:·183,·SHA:·06f961d3062abfbe1b8e359ae13b5ecda160ab0230484443b1fb9adb65f9a2a9·...·]-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="9591660850-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="9591660850-68">[</span><span·class="mi">12</[·...·truncated·by·diffoscope;·len:·183,·SHA:·d85d3b3bdeae59aa2199edf64f625316e31103efdef7bc78ca21ce9dd4da4dfe·...·]-67">)</span><span·class="p">.</span><span·class="w">
264 </span><span·class="p"·data-group-id="2660499525-69">[</span><span·class="p"·data-group-id="2660499525-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:·f0b93a98807c49620e1a5a8dc2a031286dd85f8d289da8d08f9e8863eeb1d0a1·...·]-69">]</span><span·class="gp·unselectable">264 </span><span·class="p"·data-group-id="9591660850-69">[</span><span·class="p"·data-group-id="9591660850-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:·f1212caed529835b5db0fa2b9bf803c42731563de9ec0319673e680ffb9bb5c2·...·]-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="2660499525-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="2660499525-72">[</span><span·class="ss">frag_[·...·truncated·by·diffoscope;·len:·189,·SHA:·154cb423f1993540fe87ae835fe3e7aa9520db8c12a08671d0f0915beae461c8·...·]-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="9591660850-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="9591660850-72">[</span><span·class="ss">frag_[·...·truncated·by·diffoscope;·len:·189,·SHA:·94cca416dd83b89ef84901473846fd23622c681d9c7b7324e6777f66d7bfd586·...·]-71">)</span><span·class="p">.</span><span·class="w">
266 </span><span·class="p"·data-group-id="2660499525-73">[</span><span·class="p"·data-group-id="2660499525-74">{</span><span·class="ss">dictionary</span><span·class="p">,</span><span·class="mi">57</span><span·class="p"·data-group-id="2660499525-74">}</span><span·class="p">,</span><span·class="w">266 </span><span·class="p"·data-group-id="9591660850-73">[</span><span·class="p"·data-group-id="9591660850-74">{</span><span·class="ss">dictionary</span><span·class="p">,</span><span·class="mi">57</span><span·class="p"·data-group-id="9591660850-74">}</span><span·class="p">,</span><span·class="w">
267 ·</span><span·class="p"·data-group-id="2660499525-75">{</span><span·class="ss">dictionary_frag2</span><span·class="p">,</span><span·class="mi">63</span><span·class="p"·data-group-id="2660499525-75">}</span><span·class="p">,</span><span·class="w">267 ·</span><span·class="p"·data-group-id="9591660850-75">{</span><span·class="ss">dictionary_frag2</span><span·class="p">,</span><span·class="mi">63</span><span·class="p"·data-group-id="9591660850-75">}</span><span·class="p">,</span><span·class="w">
268 ·</span><span·class="p"·data-group-id="2660499525-76">{</span><span·class="ss">dictionary_frag3</span><span·class="p">,</span><span·class="mi">62</span><span·class="p"·data-group-id="2660499525-76">}</span><span·class="p">,</span><span·class="w">268 ·</span><span·class="p"·data-group-id="9591660850-76">{</span><span·class="ss">dictionary_frag3</span><span·class="p">,</span><span·class="mi">62</span><span·class="p"·data-group-id="9591660850-76">}</span><span·class="p">,</span><span·class="w">
269 ·</span><span·class="p"·data-group-id="2660499525-77">{</span><span·class="ss">dictionary_frag4</span><span·class="p">,</span><span·class="mi">74</span><span·class="p"·data-group-id="2660499525-77">}</span><span·class="p"·data-group-id="2660499525-73">]</span><span·class="w">269 ·</span><span·class="p"·data-group-id="9591660850-77">{</span><span·class="ss">dictionary_frag4</span><span·class="p">,</span><span·class="mi">74</span><span·class="p"·data-group-id="9591660850-77">}</span><span·class="p"·data-group-id="9591660850-73">]</span><span·class="w">
270 </span><span·class="p"·data-group-id="2660499525-78">(</span><span·class="ss">a@sam</span><span·class="p"·data-group-id="2660499525-78">)</span><span·class="mi">19</span><span·class="o">&gt;</span></code></pre><h3·id="fragmentation-properties"·class="section-heading">270 </span><span·class="p"·data-group-id="9591660850-78">(</span><span·class="ss">a@sam</span><span·class="p"·data-group-id="9591660850-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="4964117224-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:·acf7d0a4d44d9cc8b7c6e3887ed1fed902c4dad25f1277cf68da2256debb0b9a·...·]-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="1528626193-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:·edb627ba693b735b0f946a45db9c63d118b1f9034a92995faba689c969afec09·...·]-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="4964117224-3">(</span><span·class="p"·data-group-id="4964117224-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="1528626193-3">(</span><span·class="p"·data-group-id="1528626193-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="4964117224-4">(</span><span·class="ss">a@sam</span><span·class="p"·data-group-id="4964117224-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:·83c99bed2f233e2f6072d0d3d233a7f1d0a1d5bb895ff9b298fd777af98cc082·...·]-5">]</span><span·class="p">.</span><span·class="w">315 </span><span·class="p"·data-group-id="1528626193-4">(</span><span·class="ss">a@sam</span><span·class="p"·data-group-id="1528626193-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:·5b540aa6b7a02f178d76d825b96795f4fb9b2be188cfe39f15fd9a4be7c5686a·...·]-5">]</span><span·class="p">.</span><span·class="w">
316 </span><span·class="p"·data-group-id="4964117224-10">[</span><span·class="p"·data-group-id="4964117224-11">{</span><span·class="ss">n_fragments</span><span·class="p">,</span><span·class="mi">7</span><span·class="p"·data-group-id="4964117224-11">}</span><span·class="p">,</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·326,·SHA:·41cf44e495c44d70dfe9df37c5c6bcc5a90f0ba5cee44e0dff251d466380e4fe·...·]-10">]</span><span·class="gp·unselectable">316 </span><span·class="p"·data-group-id="1528626193-10">[</span><span·class="p"·data-group-id="1528626193-11">{</span><span·class="ss">n_fragments</span><span·class="p">,</span><span·class="mi">7</span><span·class="p"·data-group-id="1528626193-11">}</span><span·class="p">,</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·326,·SHA:·a66709e6c46413eb1662c72a731a024a00e61e6590482933bb29eadab9d9bc02·...·]-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="4964117224-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="1528626193-14">(</span><span·class="ss">prim_dict</span><span·class="p">,</span><span·class="w">
318 ······························</span><span·class="p"·data-group-id="4964117224-15">[</span><span·class="p"·data-group-id="4964117224-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="4964117224-16">}</span><span·class="p">,</span><span·class="w">318 ······························</span><span·class="p"·data-group-id="1528626193-15">[</span><span·class="p"·data-group-id="1528626193-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="1528626193-16">}</span><span·class="p">,</span><span·class="w">
319 ·······························</span><span·class="p"·data-group-id="4964117224-17">{</span><span·class="ss">attributes</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4964117224-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:·88e148cb23aa2a795cab2eef12ef3bd7540ce7f776ee1b407745c3dd605422ca·...·]-14">)</span><span·class="p">.</span><span·class="w">319 ·······························</span><span·class="p"·data-group-id="1528626193-17">{</span><span·class="ss">attributes</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1528626193-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:·518423046ae45bd5e3e0b9e9dd3bb6cfe8b05e62e15233c4bd046a85d68b4f26·...·]-14">)</span><span·class="p">.</span><span·class="w">
320 </span><span·class="p"·data-group-id="4964117224-19">{</span><span·class="ss">atomic</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p"·data-group-id="4964117224-19">}</span><span·class="gp·unselectable">320 </span><span·class="p"·data-group-id="1528626193-19">{</span><span·class="ss">atomic</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p"·data-group-id="1528626193-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="4964117224-20">[</span><span·class="p"·data-group-id="4964117224-21">{</span><span·class="ss">foreign_key</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4964117224-22">{</span><span·class="ss">prim_dict</span><span·cla[·...·truncated·by·diffoscope;·len:·219,·SHA:·22acc98aba118abbec9b2b80b8591d79135e14ae277a4de835f580f664e147cd·...·]-20">]</span><span·class="p">.</span><span·class="w">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="1528626193-20">[</span><span·class="p"·data-group-id="1528626193-21">{</span><span·class="ss">foreign_key</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1528626193-22">{</span><span·class="ss">prim_dict</span><span·cla[·...·truncated·by·diffoscope;·len:·219,·SHA:·b7a3b861bbce0b414de36a20d03c4d28a79e5ae113dbc3d739a0e54363d42a2b·...·]-20">]</span><span·class="p">.</span><span·class="w">
322 </span><span·class="p"·data-group-id="4964117224-23">[</span><span·class="p"·data-group-id="4964117224-24">{</span><span·class="ss">foreign_key</span><span·class="p">,</span><span·class="p"·data-group-id="4964117224-25">{</span><span·class="ss">prim_dict</span><span·class="p">,</span><span·cla[·...·truncated·by·diffoscope;·len:·171,·SHA:·3534501fefe798c721490b97abddb17a9afab652276d694bce67db122dc62c5b·...·]-23">]</span><span·class="gp·unselectable">322 </span><span·class="p"·data-group-id="1528626193-23">[</span><span·class="p"·data-group-id="1528626193-24">{</span><span·class="ss">foreign_key</span><span·class="p">,</span><span·class="p"·data-group-id="1528626193-25">{</span><span·class="ss">prim_dict</span><span·class="p">,</span><span·cla[·...·truncated·by·diffoscope;·len:·171,·SHA:·bb5b85ef067cd969889570da8471eee6250bc3023441f16de983c1f31dcb6ed3·...·]-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="4964117224-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="1528626193-26">(</span><span·class="ss">sec_dict</span><span·class="p">,</span><span·class="w">
324 ······························</span><span·class="p"·data-group-id="4964117224-27">[</span><span·class="p"·data-group-id="4964117224-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="4964117224-28">}</span><span·class="p">,</span><span·class="w">324 ······························</span><span·class="p"·data-group-id="1528626193-27">[</span><span·class="p"·data-group-id="1528626193-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="1528626193-28">}</span><span·class="p">,</span><span·class="w">
325 ·······························</span><span·class="p"·data-group-id="4964117224-29">{</span><span·class="ss">attributes</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4964117224-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:·a9d0e028b03c01a2ce33d8bb38b8f2a0fa222f63f1610c2ebf07cd1883d0bfd6·...·]-26">)</span><span·class="p">.</span><span·class="w">325 ·······························</span><span·class="p"·data-group-id="1528626193-29">{</span><span·class="ss">attributes</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1528626193-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:·7a0f4b86f6b506d6e6ce157a64c3865879dfa865394204961aa102d879a50533·...·]-26">)</span><span·class="p">.</span><span·class="w">
326 </span><span·class="p"·data-group-id="4964117224-31">{</span><span·class="ss">atomic</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p"·data-group-id="4964117224-31">}</span><span·class="gp·unselectable">326 </span><span·class="p"·data-group-id="1528626193-31">{</span><span·class="ss">atomic</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p"·data-group-id="1528626193-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="4964117224-32">(</span><span·class="n">Rec</span><span·class="p"·data-group-id="4964117224-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:·145c4f5617cbcf2ef6f1df3dd53081cc548c7d921b7f0d0771e8bd2bb41c491e·...·]-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="1528626193-32">(</span><span·class="n">Rec</span><span·class="p"·data-group-id="1528626193-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:·e0abb50a4ac79acd2b6d9848909f522ec8df01a465b339c5e325e81e46805ac9·...·]-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="4964117224-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="1528626193-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="4964117224-35">[</span><span·class="p"·data-group-id="4964117224-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:·7da168a166ea4799fe607ef473264b05d3c27f90d7f0ac66c1ff5747fef8d1b9·...·]-34">)</span><span·class="p">.</span><span·class="w">334 ··························</span><span·class="p"·data-group-id="1528626193-35">[</span><span·class="p"·data-group-id="1528626193-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:·6fb539ad2a3825f028de41206c3f1c7ef69b8afdc4b629c315a324f011e8c8f0·...·]-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="4964117224-37">(</span><span·class="ss">a@sam</span><span·class="p"·data-group-id="4964117224-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:·5d17f73cd808ac8a7fd58225b10c6e296873f346c1fbdf61f8ad3f0c949a7797·...·]-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="1528626193-37">(</span><span·class="ss">a@sam</span><span·class="p"·data-group-id="1528626193-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:·f022db19573aef8f6635b1ec8b28ccac0e20160a883b258735b6befdb3dcce29·...·]-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="4964117224-39">[</span><span·class="p"·data-group-id="4964117224-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:·53d126f87427aa8285ee23cafb9635f616bb4baeca8b3db0481e739f4b064305·...·]-38">)</span><span·class="p">.</span><span·class="w">337 ···························</span><span·class="p"·data-group-id="1528626193-39">[</span><span·class="p"·data-group-id="1528626193-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:·3e4c15ce9ce0bc277e6e7f02dafb44583e8be6c7a269f6ec671c63f811ad0848·...·]-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="4964117224-41">(</span><span·class="ss">a@sam</span><span·class="p"·data-group-id="4964117224-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:·630,·SHA:·7222469314b9f0d97f0931441cb2ead735b9b4eb111679ec198f1bf80b949ff3·...·]-42">)</span><span·class="p">.</span><span·class="w">339 </span><span·class="p"·data-group-id="1528626193-41">(</span><span·class="ss">a@sam</span><span·class="p"·data-group-id="1528626193-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:·630,·SHA:·de5f1f93f1617047b116e46bfccd9bb26f5ef6f489fcb7984b9090bd95027d29·...·]-42">)</span><span·class="p">.</span><span·class="w">
340 </span><span·class="p"·data-group-id="4964117224-46">{</span><span·class="ss">atomic</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p"·data-group-id="4964117224-46">}</span><span·class="gp·unselectable">340 </span><span·class="p"·data-group-id="1528626193-46">{</span><span·class="ss">atomic</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p"·data-group-id="1528626193-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="4964117224-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="4964117224-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="1528626193-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="1528626193-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="4964117224-48">(</span><span·class="p"·data-group-id="4964117224-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="4964117224-49">}</span><span·class="p"[·...·truncated·by·diffoscope;·len:·179,·SHA:·f2597c5793462fe653da3318bad1fb617d8bf1da9beb99a3034645fc9ae5809a·...·]-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="1528626193-48">(</span><span·class="p"·data-group-id="1528626193-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="1528626193-49">}</span><span·class="p"[·...·truncated·by·diffoscope;·len:·179,·SHA:·62af8fe55b6abb88434c92f80c08d264cd94d73225e009a498da9abcd45c91f8·...·]-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="4964117224-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="1528626193-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="4964117224-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="4964117224-51">]</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">mnesia_[·...·truncated·by·diffoscope;·len:·52,·SHA:·5e05cee99d1787f46f129b170812d4786ba30497135b32b892bfad3a34c5abbd·...·]-50">)</span><span·class="p">.</span><span·class="w">345 ···························</span><span·class="p"·data-group-id="1528626193-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="1528626193-51">]</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">mnesia_[·...·truncated·by·diffoscope;·len:·52,·SHA:·2d6173ba924a4e83ab4b9604533a6cac0686265517cc805bd43a0859488b9add·...·]-50">)</span><span·class="p">.</span><span·class="w">
346 </span><span·class="p"·data-group-id="4964117224-52">[</span><span·class="p"·data-group-id="4964117224-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="4964117224-53">}[·...·truncated·by·diffoscope;·len:·48,·SHA:·713e1029a4d84d18cf4e0e1f12a3525e39a1126f5ff701a2854743aed4f58b12·...·]-52">]</span><span·class="gp·unselectable">346 </span><span·class="p"·data-group-id="1528626193-52">[</span><span·class="p"·data-group-id="1528626193-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="1528626193-53">}[·...·truncated·by·diffoscope;·len:·48,·SHA:·58c3d71fd9574789821dbe2c00f68d25fcb8e90e9c3fde03c9c44db39faf129f·...·]-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="4964117224-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="4964117224-54">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·282,·SHA:·b1e18ee300ab4d9d940457b49d8a9224436ac031ef1f43e1de9fe1bdf6f29951·...·]-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="1528626193-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="1528626193-54">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·282,·SHA:·096879cb30bf76980d8f177e922340208721d4746dfc556bc9bf935d039b0257·...·]-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="4964117224-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="1528626193-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">
350 ···························</span><span·class="p"·data-group-id="4964117224-57">[</span><span·class="ss">prim_dict</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">frag_size</span><span·class="p"·data-group-id="4964117224-57">]</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·59,·SHA:·6a33b4d452dca259a9320d621bc606e264012d299746f751cd36c490f138650d·...·]-56">)</span><span·class="p">.</span><span·class="w">350 ···························</span><span·class="p"·data-group-id="1528626193-57">[</span><span·class="ss">prim_dict</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">frag_size</span><span·class="p"·data-group-id="1528626193-57">]</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·59,·SHA:·778c917f29ec080653387c3b30cebc1d7be6842aa47dfcc178f11edfd8324256·...·]-56">)</span><span·class="p">.</span><span·class="w">
351 </span><span·class="p"·data-group-id="4964117224-58">[</span><span·class="p"·data-group-id="4964117224-59">{</span><span·class="ss">prim_dict</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="4964117224-59">}</span><span·class="p">,</span><span·class="w">351 </span><span·class="p"·data-group-id="1528626193-58">[</span><span·class="p"·data-group-id="1528626193-59">{</span><span·class="ss">prim_dict</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="1528626193-59">}</span><span·class="p">,</span><span·class="w">
352 ·</span><span·class="p"·data-group-id="4964117224-60">{</span><span·class="ss">prim_dict_frag2</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="4964117224-60">}</span><span·class="p">,</span><span·class="w">352 ·</span><span·class="p"·data-group-id="1528626193-60">{</span><span·class="ss">prim_dict_frag2</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="1528626193-60">}</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.5/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="1278507347-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="1278507347-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="9689970952-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="9689970952-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="1278507347-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:·923181b1c7c3293b488e256fad4a86375b85ebb1bdd937b0cb98c912f64f4b3c·...·]-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="9689970952-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:·f4404eba303d0f49677909928f3fa452fe7a3e4f4408d4adf0ed722b12d2498d·...·]-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="1278507347-4">(</span><span·class="p"·data-group-id="1278507347-5">[</span><span·class="nf">node</span><span·class="p"·data-group-id="1278507347-6">(</span><span·class="p"·data-group-id="1278507347-6">)</span><span·class="p"·data-group-id="1278507347-5">]<[·...·truncated·by·diffoscope;·len:·47,·SHA:·b9becea3a262d268b04d86aa8e9ed30685c4f4c391588dcef24d99fce17effa1·...·]-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="9689970952-4">(</span><span·class="p"·data-group-id="9689970952-5">[</span><span·class="nf">node</span><span·class="p"·data-group-id="9689970952-6">(</span><span·class="p"·data-group-id="9689970952-6">)</span><span·class="p"·data-group-id="9689970952-5">]<[·...·truncated·by·diffoscope;·len:·47,·SHA:·b47e2b5485e18b9cd94bd7b86547401f195f79d98b925d1a62c8a28677bc4069·...·]-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="1278507347-7">(</span><span·class="ss">klacke@gin</span><span·class="p"·data-group-id="1278507347-7">)</span><span·class="mi">2</span><span·class="o">&gt;</span><span·class="w">240 </span><span·class="p"·data-group-id="9689970952-7">(</span><span·class="ss">klacke@gin</span><span·class="p"·data-group-id="9689970952-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="1278507347-8">[</span><span·class="mi">1</span><span·class="p"·data-group-id="1278507347-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="9689970952-8">[</span><span·class="mi">1</span><span·class="p"·data-group-id="9689970952-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="8352901589-1">(</span><span·class="p"·data-group-id="8352901589-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="6859647577-1">(</span><span·class="p"·data-group-id="6859647577-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="8879793935-1">(</span><span·class="ss">foo</span><span·class="p">,</span><span·class="p"·data-group-id="8879793935-2">[</span><span·class="p"·data-group-id="8879793935-3">{</span><span·class="ss">disc_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8879793935-4">[</span><span·class="nf">node</span><span·class="p"·data-group-id="8879793935-5">(</span><span·class="p"·data-group-id="8879793935-5">)</span><span·class="p"·data-group-id="8879793935-4">]</span><span·class="p"·data-group-id="8879793935-3">}</span><span·class="p"·data-group-id="8879793935-2">]</span><span·class="p"·data-group-id="8879793935-1">)</span><span·class="p">.</span><span·class="w"> 
254 </span><span·class="p"·data-group-id="8879793935-6">{</span><span·class="ss">atomic</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p"·data-group-id="8879793935-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:·85394b0c0273d6b3244e48ba558eb097def4965ef7134a805b4579c66c4e8eec·...·]
 254 </span><span·class="p"·data-group-id="3083324319-6">{</span><span·class="ss">atomic</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p"·data-group-id="3083324319-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.2/doc/html/dets.html"><code·class="inline">dets</code></a>·in·<code·class="inline">STDLIB</code>.</p><p>All·operations·that·can·be·performed·on·<code·class="inline">dets</code>·files·can·also·be·performed·on295 the·standard·library·module·<a·href="../../../../lib/stdlib-6.2.2/doc/html/dets.html"><code·class="inline">dets</code></a>·in·<code·class="inline">STDLIB</code>.</p><p>All·operations·that·can·be·performed·on·<code·class="inline">dets</code>·files·can·also·be·performed·on
296 the·<code·class="inline">Mnesia</code>·data·files.·For·example,·<code·class="inline">dets</code>·contains·the·function296 the·<code·class="inline">Mnesia</code>·data·files.·For·example,·<code·class="inline">dets</code>·contains·the·function
297 <a·href="../../../../lib/stdlib-6.2.2/doc/html/dets.html#traverse/2"><code·class="inline">dets:traverse/2</code></a>,·which·can·be·used·to·view·the·contents·of·a·<code·class="inline">Mnesia</code>·<code·class="inline">DAT</code>297 <a·href="../../../../lib/stdlib-6.2.2/doc/html/dets.html#traverse/2"><code·class="inline">dets:traverse/2</code></a>,·which·can·be·used·to·view·the·contents·of·a·<code·class="inline">Mnesia</code>·<code·class="inline">DAT</code>
298 file.·However,·this·can·only·be·done·when·<code·class="inline">Mnesia</code>·is·not·running.·So,·to·view298 file.·However,·this·can·only·be·done·when·<code·class="inline">Mnesia</code>·is·not·running.·So,·to·view
299 the·schema·file,·do·as·follows;</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="8818533335-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="8818533335-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·688,·SHA:·25dbab7468b7445130ce7fcbcbe0285720c806a69e78f78ad41460534f9875f3·...·]-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="9835736644-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="9835736644-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·688,·SHA:·672664fcd977dadec68c4695f291f16380b7004b95524e3c41385248ffee618b·...·]-5">}</span><span·class="p">,</span><span·class="w">
300 </span><span·class="p"·data-group-id="8818533335-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="8818533335-6">}</span><span·class="p"·data-group-id="8818533335-3">]</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·dac9b56024ad94d6fccb56724c1d10ee86bf19148def31dff473032f3ee201ff·...·]-2">)</span><span·class="p">,</span><span·class="w">300 </span><span·class="p"·data-group-id="9835736644-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="9835736644-6">}</span><span·class="p"·data-group-id="9835736644-3">]</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·b400c2eafe0109dd58d03a016b9ecbd4e7b4f388634833f196c9ecdc917d8f1e·...·]-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="8818533335-7">(</span><span·class="n">X</span><span·class="p"·data-group-id="8818533335-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:·b236448587a92da6dcb65b03f6e447ea2945bd5a73a0352933a4dee43596a299·...·]-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="9835736644-7">(</span><span·class="n">X</span><span·class="p"·data-group-id="9835736644-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:·2497f3836803aa724f99b8239b32d41176d2b00e17a8b73b32d61552774f8c6d·...·]-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="8818533335-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="8818533335-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="9835736644-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="9835736644-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="8818533335-11">(</span><span·class="n">N</span><span·class="p"·data-group-id="8818533335-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="9835736644-11">(</span><span·class="n">N</span><span·class="p"·data-group-id="9835736644-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="7474953717-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:·d81187c10316f4db614d638b0c274abf60fbad60347f135a0df8a1c23d4d0efc·...·]-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="6915660729-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:·2e6fb1b4ca20e5481566604d47a3bb3805f5dbcee21ef313955973a9166005a5·...·]-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="7474953717-2">(</span><span·class="n">Node</span><span·class="p"·data-group-id="7474953717-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="6915660729-2">(</span><span·class="n">Node</span><span·class="p"·data-group-id="6915660729-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="7474953717-3">(</span><span·class="n">Node</span><span·class="p"·data-group-id="7474953717-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:·c527487490e3b5cbcccb24041b087d56c73be7771b3884c13dbdf7dae21a2535·...·]-4">)</span><span·class="p">;</span><span·class="w">540 ···········</span><span·class="p"·data-group-id="6915660729-3">(</span><span·class="n">Node</span><span·class="p"·data-group-id="6915660729-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:·a7c90d644afa8bc024736c9058fca4a6d43e454328e20bf92f53006ad72584e8·...·]-4">)</span><span·class="p">;</span><span·class="w">
541 ···········</span><span·class="p"·data-group-id="7474953717-6">(</span><span·class="n">Node</span><span·class="p"·data-group-id="7474953717-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="6915660729-6">(</span><span·class="n">Node</span><span·class="p"·data-group-id="6915660729-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="7474953717-7">(</span><span·class="p"·data-group-id="7474953717-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:·823bdd63b45fb513d20d9dadd32952393f605442ed5347ca7767466bb5dc8f8e·...·]-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="6915660729-7">(</span><span·class="p"·data-group-id="6915660729-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:·ce4046f1c112f000bf7febf0fbae07efd035f5f16071cf0823091f3f08db0e06·...·]-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
545 ················</span><span·class="p"·data-group-id="7474953717-9">{</span><span·class="p"·data-group-id="7474953717-10">[</span><span·class="p"·data-group-id="7474953717-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:·75d1b1eceaf22bec87a3e454646e684d40515e14e7e5d521c2de4b52dc5bc53e·...·]-9">}</span><span·class="p">;</span><span·class="w">545 ················</span><span·class="p"·data-group-id="6915660729-9">{</span><span·class="p"·data-group-id="6915660729-10">[</span><span·class="p"·data-group-id="6915660729-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:·95fce01e8d3d07e118682d235c4d1c3a256e0108f7fe208b091bb7d99e48311f·...·]-9">}</span><span·class="p">;</span><span·class="w">
546 ···········</span><span·class="p"·data-group-id="7474953717-12">(</span><span·class="p"·data-group-id="7474953717-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:·f97ba420a7bd672559793dd80bc1e66f546ca68af53da7657916fcac2272edcd·...·]-12">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">546 ···········</span><span·class="p"·data-group-id="6915660729-12">(</span><span·class="p"·data-group-id="6915660729-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:·dcf014b5c8e20cde3dc2e695f4096a1e411499096af78f161e154f3837e1ecb1·...·]-12">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
547 ················</span><span·class="p"·data-group-id="7474953717-14">{</span><span·class="p"·data-group-id="7474953717-15">[</span><span·class="p"·data-group-id="7474953717-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:·a854f5a5cfbd1e7f5e2f648fef84e2dc0e933bbfd2c02e8e8d7232f53794297d·...·]-14">}</span><span·class="p">;</span><span·class="w">547 ················</span><span·class="p"·data-group-id="6915660729-14">{</span><span·class="p"·data-group-id="6915660729-15">[</span><span·class="p"·data-group-id="6915660729-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:·b54465cbfec4925844a396981a59b1da8937e4f1ad70a75f4dd2c272ab5564d0·...·]-14">}</span><span·class="p">;</span><span·class="w">
548 ···········</span><span·class="p"·data-group-id="7474953717-17">(</span><span·class="p"·data-group-id="7474953717-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:·7f53157eed224fab153fca3dae3d7c0c0edd66ba176349f8920276c20b7308a1·...·]-17">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">548 ···········</span><span·class="p"·data-group-id="6915660729-17">(</span><span·class="p"·data-group-id="6915660729-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:·73823ffc115b30bd8b4498843d4ba22b9af36a060657dc688762cc21fe62c283·...·]-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="7474953717-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:·575a7c5cca52079c26a7e5f84a792973643f16992ae364717f259ef8a2af5720·...·]-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="6915660729-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:·cf6b63b73353fd72ac9d80ffcfed3f0b1c7e4d603ebece8daf429942885cb890·...·]-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="7474953717-20">(</span><span·class="p"·data-group-id="7474953717-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="7474953717-21">}</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·39e44dc299c20aadf3b663e2ca77f13e4eb8cec41cab3dc09515ec909d088b6d·...·]-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="6915660729-20">(</span><span·class="p"·data-group-id="6915660729-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="6915660729-21">}</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·14ce8be2bee8432aab71e3461f94f2b27f334d7337b9166f51b1be7787696e1d·...·]-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="7474953717-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="7474953717-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="6915660729-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="6915660729-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="7474953717-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="7474953717-24">(</span><span·class="n">Switch</s[·...·truncated·by·diffoscope;·len:·173,·SHA:·782adc9ac2e5a00da5bb2301cb67e9b7a99ce9f4a84142a7ce3468fd07a01025·...·]-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="6915660729-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="6915660729-24">(</span><span·class="n">Switch</s[·...·truncated·by·diffoscope;·len:·173,·SHA:·8181edb1fd70121185630f7b53e82b14664f553f20b5d1f7b8bf1b5beda05e8f·...·]-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="7474953717-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="7474953717-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="6915660729-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="6915660729-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="7474953717-26">{</span><span·class="p"·data-group-id="7474953717-27">[</span><span·class="p"·data-group-id="7474953717-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:·0ca1d2e53927e4471ec29d13503d40d2df52256c2868f00f76dc3698940db04a·...·]-26">}</span><span·class="p">;</span><span·class="w">557 ················</span><span·class="p"·data-group-id="6915660729-26">{</span><span·class="p"·data-group-id="6915660729-27">[</span><span·class="p"·data-group-id="6915660729-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:·fba4d0a03f86f561727dc4590ebce6e3251dd1881eed2334337c412a4a94e613·...·]-26">}</span><span·class="p">;</span><span·class="w">
558 ···········</span><span·class="p"·data-group-id="7474953717-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="7474953717-30">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">558 ···········</span><span·class="p"·data-group-id="6915660729-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="6915660729-30">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
559 ················</span><span·class="p"·data-group-id="7474953717-31">{</span><span·class="p"·data-group-id="7474953717-32">[</span><span·class="n">Other</span><span·class="p"·data-group-id="7474953717-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:·ff1afd2211f94f1c32e24b122c110df045c50eaf9952e9123e5acda964f8b2bc·...·]-31">}</span><span·class="w">559 ················</span><span·class="p"·data-group-id="6915660729-31">{</span><span·class="p"·data-group-id="6915660729-32">[</span><span·class="n">Other</span><span·class="p"·data-group-id="6915660729-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:·314cda4c6fc95944941ae9786e4a1e3f449f86f4728159513f2d2f0f3fbbf936·...·]-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="7474953717-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:·ccbf169211452e44a36cd2804afb27672acf601538c3e3fd4a2263ea9217d2f0·...·]-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="6915660729-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:·c9373a418c35208ca4f3707f34cdb0b89c9ff35f0845621a11b030e36e0be82e·...·]-33">)</span><span·class="p">.</span><span·class="w">
  
562 </span><span·class="nf">view</span><span·class="p"·data-group-id="7474953717-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="7474953717-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="6915660729-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="6915660729-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="7474953717-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="7474953717-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="6915660729-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="6915660729-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="7474953717-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="7474953717-37">[</span><span·class="n">Item<[·...·truncated·by·diffoscope;·len:·101,·SHA:·187bd21ead4c71dea62207f69d0b33f6f3fa5dde81bf7cfb01ed8c1d6c3feecf·...·]-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="6915660729-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="6915660729-37">[</span><span·class="n">Item<[·...·truncated·by·diffoscope;·len:·101,·SHA:·a0c1ede0b02b124d509e60de602bce5e6006b4a1a675ecad1353efd838bfaf01·...·]-36">)</span><span·class="p">,</span><span·class="w">
565 ···················</span><span·class="p"·data-group-id="7474953717-38">{</span><span·class="p"·data-group-id="7474953717-39">[</span><span·class="n">Item</span><span·class="p"·data-group-id="7474953717-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:·fda6f3d24ac79dcb6c625b60b00b45d3c6a923e52b3abdbc94822c75ea255c32·...·]-38">}</span><span·class="w">565 ···················</span><span·class="p"·data-group-id="6915660729-38">{</span><span·class="p"·data-group-id="6915660729-39">[</span><span·class="n">Item</span><span·class="p"·data-group-id="6915660729-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:·e5edc46a0cc472b675804aec7db23fac73d194e7897266edba39a13064fdd5cc·...·]-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="7474953717-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:·f844d526b4867a8af5572554a4c8c782ba3dee9972f41dcdd8a8fab12f522641·...·]-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="6915660729-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:·88acb2ef13600de0af1fa853045f9ca8a6db1380dd4d15ec0c40af6c8f728123·...·]-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.5/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.6/doc/html/erlang.html#t:atom/0">atom</a>(),·Opt·::·[{<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:atom/0">atom</a>(),·<a·href="../../../../erts-15.2.6/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.6/doc/html/erlang.html#t:atom/0">atom</a>(),·Opt·::·[{<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:atom/0">atom</a>(),·<a·href="../../../../erts-15.2.6/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="8531262218-1">[</span><span·class="p"·data-group-id="8531262218-2">{</span><span·class="p"·data-group-id="8531262218-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:·211daf455546a30bdd02f2be88bf795e3857e9f07df3ba9dab5de297cd9752d0·...·]-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="9188041773-1">[</span><span·class="p"·data-group-id="9188041773-2">{</span><span·class="p"·data-group-id="9188041773-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:·4e6edbbc19a91c9369d98dbc8e96d3e0ae60b3d0893d72f8b6e0a136063189ca·...·]-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="8531262218-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="8531262218-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="9188041773-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="9188041773-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">
411 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:·116859·bytes,·number·of·entries:·23
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Apr-18·14:02·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Apr-18·15:30·mimetype
3 ?rw-r--r--··6.1·unx···158943·bx·defN·25-Apr-18·14:02·OEBPS/ttb_ug.xhtml3 ?rw-r--r--··6.1·unx···158943·bx·defN·25-Apr-18·15:30·OEBPS/ttb_ug.xhtml
4 ?rw-r--r--··6.1·unx···105646·bx·defN·25-Apr-18·14:02·OEBPS/ttb.xhtml4 ?rw-r--r--··6.1·unx···105646·bx·defN·25-Apr-18·15:30·OEBPS/ttb.xhtml
5 ?rw-r--r--··6.1·unx······718·bx·defN·25-Apr-18·14:02·OEBPS/title.xhtml5 ?rw-r--r--··6.1·unx······718·bx·defN·25-Apr-18·15:30·OEBPS/title.xhtml
6 ?rw-r--r--··6.1·unx····17377·bx·defN·25-Apr-18·14:02·OEBPS/observer_ug.xhtml6 ?rw-r--r--··6.1·unx····17377·bx·defN·25-Apr-18·15:30·OEBPS/observer_ug.xhtml
7 ?rw-r--r--··6.1·unx·····1190·bx·defN·25-Apr-18·14:02·OEBPS/observer_app.xhtml7 ?rw-r--r--··6.1·unx·····1190·bx·defN·25-Apr-18·15:30·OEBPS/observer_app.xhtml
8 ?rw-r--r--··6.1·unx·····8120·bx·defN·25-Apr-18·14:02·OEBPS/observer.xhtml8 ?rw-r--r--··6.1·unx·····8120·bx·defN·25-Apr-18·15:30·OEBPS/observer.xhtml
9 ?rw-r--r--··6.1·unx····65022·bx·defN·25-Apr-18·14:02·OEBPS/notes.xhtml9 ?rw-r--r--··6.1·unx····65022·bx·defN·25-Apr-18·15:30·OEBPS/notes.xhtml
10 ?rw-r--r--··6.1·unx·····1682·bx·defN·25-Apr-18·14:02·OEBPS/nav.xhtml10 ?rw-r--r--··6.1·unx·····1682·bx·defN·25-Apr-18·15:30·OEBPS/nav.xhtml
11 ?rw-r--r--··6.1·unx·····1299·bx·defN·25-Apr-18·14:02·OEBPS/introduction_ug.xhtml11 ?rw-r--r--··6.1·unx·····1299·bx·defN·25-Apr-18·15:30·OEBPS/introduction_ug.xhtml
12 ?rw-r--r--··6.1·unx·····9700·bx·defN·25-Apr-18·14:02·OEBPS/etop_ug.xhtml12 ?rw-r--r--··6.1·unx·····9700·bx·defN·25-Apr-18·15:30·OEBPS/etop_ug.xhtml
13 ?rw-r--r--··6.1·unx····12167·bx·defN·25-Apr-18·14:02·OEBPS/etop.xhtml13 ?rw-r--r--··6.1·unx····12167·bx·defN·25-Apr-18·15:30·OEBPS/etop.xhtml
14 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Apr-18·14:02·OEBPS/dist/epub-erlang-ESPT6BQV.css14 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Apr-18·15:30·OEBPS/dist/epub-erlang-ESPT6BQV.css
15 ?rw-r--r--··6.1·unx······499·bx·defN·25-Apr-18·14:02·OEBPS/dist/epub-LSJCIYTM.js15 ?rw-r--r--··6.1·unx······499·bx·defN·25-Apr-18·15:30·OEBPS/dist/epub-LSJCIYTM.js
16 ?rw-r--r--··6.1·unx·····4815·bx·defN·25-Apr-18·14:02·OEBPS/crashdump_viewer.xhtml16 ?rw-r--r--··6.1·unx·····4815·bx·defN·25-Apr-18·15:30·OEBPS/crashdump_viewer.xhtml
17 ?rw-r--r--··6.1·unx····17541·bx·defN·25-Apr-18·14:02·OEBPS/crashdump_ug.xhtml17 ?rw-r--r--··6.1·unx····17541·bx·defN·25-Apr-18·15:30·OEBPS/crashdump_ug.xhtml
18 ?rw-r--r--··6.1·unx·····2990·bx·defN·25-Apr-18·14:02·OEBPS/content.opf18 ?rw-r--r--··6.1·unx·····2990·bx·defN·25-Apr-18·15:30·OEBPS/content.opf
19 ?rw-r--r--··6.1·unx·····1523·bx·defN·25-Apr-18·14:02·OEBPS/cdv_cmd.xhtml19 ?rw-r--r--··6.1·unx·····1523·bx·defN·25-Apr-18·15:30·OEBPS/cdv_cmd.xhtml
20 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Apr-18·14:02·OEBPS/assets/logo.png20 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Apr-18·15:30·OEBPS/assets/logo.png
21 ?rw-r--r--··6.1·unx·····8877·bx·stor·25-Apr-18·14:02·OEBPS/assets/et_processes.gif21 ?rw-r--r--··6.1·unx·····8877·bx·stor·25-Apr-18·15:30·OEBPS/assets/et_processes.gif
22 ?rw-r--r--··6.1·unx·····9369·bx·stor·25-Apr-18·14:02·OEBPS/assets/et_modsprocs.gif22 ?rw-r--r--··6.1·unx·····9369·bx·stor·25-Apr-18·15:30·OEBPS/assets/et_modsprocs.gif
23 ?rw-r--r--··6.1·unx······252·bx·defN·25-Apr-18·14:02·META-INF/container.xml23 ?rw-r--r--··6.1·unx······252·bx·defN·25-Apr-18·15:30·META-INF/container.xml
24 ?rw-r--r--··6.1·unx······162·bx·defN·25-Apr-18·14:02·META-INF/com.apple.ibooks.display-options.xml24 ?rw-r--r--··6.1·unx······162·bx·defN·25-Apr-18·15:30·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,·112863·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,·Apr·18·2025·14:02:10,·uncompressed·size·20,·method=store1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Apr·18·2025·15:30:14,·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
2.43 KB
OEBPS/content.opf
2.4 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.6/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.6/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.6/doc/html/match_spec.html"><code·class="inline">Match·Specifications·in·Erlang</code></a>·in·ERTS,·which1853 <a·href="../../../../erts-15.2.6/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="1044724479-1">(</span><span·class="p"·data-group-id="1044724479-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="2994590466-1">(</span><span·class="p"·data-group-id="2994590466-1">)</span><span·class="p">.</span><span·class="w">
1856 </span><span·class="p"·data-group-id="1044724479-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="1044724479-3">[</span><span·class="ss">tiger@durin</span><span·class="p"·data-group-id="1044724479-3">]</span><span·class="p"·data-group-id="1044724479-2">}</span><span·class="gp·unselectable">1856 </span><span·class="p"·data-group-id="2994590466-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2994590466-3">[</span><span·class="ss">tiger@durin</span><span·class="p"·data-group-id="2994590466-3">]</span><span·class="p"·data-group-id="2994590466-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="1044724479-4">(</span><span·class="ss">all</span><span·class="p">,</span><span·class="ss">call</span><span·class="p"·data-group-id="1044724479-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="2994590466-4">(</span><span·class="ss">all</span><span·class="p">,</span><span·class="ss">call</span><span·class="p"·data-group-id="2994590466-4">)</span><span·class="p">.</span><span·class="w">
1858 </span><span·class="p"·data-group-id="1044724479-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="1044724479-6">{</span><span·class="p"·data-group-id="1044724479-7">[</span><span·class="ss">all</span><span·class="p"·data-group-id="1044724479-7">]</spa[·...·truncated·by·diffoscope;·len:·254,·SHA:·a3cee9086c500414448da118fe2f9c05d5d8fab30d7b3804d26ff3cb873b83d7·...·]-5">}</span><span·class="gp·unselectable">1858 </span><span·class="p"·data-group-id="2994590466-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2994590466-6">{</span><span·class="p"·data-group-id="2994590466-7">[</span><span·class="ss">all</span><span·class="p"·data-group-id="2994590466-7">]</spa[·...·truncated·by·diffoscope;·len:·254,·SHA:·c1ff64e8b19e3daedd3d8d59cebb12236ddbdae49cbcb755b35a11e91c953cec·...·]-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="1044724479-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="1044724479-[·...·truncated·by·diffoscope;·len:·107,·SHA:·fbfa72730d1ad01d8cf26e5916edd71d2ca49dd6219b290835d6f0a992be47ad·...·]-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="2994590466-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="2994590466-[·...·truncated·by·diffoscope;·len:·107,·SHA:·b75de0e59a9432005d2e4662bfbbade4d4aa889d0fec537c531a78523e2e10aa·...·]-9">)</span><span·class="p">.</span><span·class="w">
1860 </span><span·class="p"·data-group-id="1044724479-11">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="1044724479-12">[</span><span·class="p"·data-group-id="1044724479-13">{</span><span·class="ss">matched</span><span·class="p">,</span><span·class="mi">1</[·...·truncated·by·diffoscope;·len:·364,·SHA:·da493bec3902f4720343ed14df84b78d3d674757a8867a7741ec8679c61a2bb4·...·]-11">}</span><span·class="w">1860 </span><span·class="p"·data-group-id="2994590466-11">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2994590466-12">[</span><span·class="p"·data-group-id="2994590466-13">{</span><span·class="ss">matched</span><span·class="p">,</span><span·class="mi">1</[·...·truncated·by·diffoscope;·len:·364,·SHA:·236d7b3c56c2452eb6fb9af9be621f3c7549ba82514fba964f8cd8c9fb48afb6·...·]-11">}</span><span·class="w">
1861 </span><span·class="p"·data-group-id="1044724479-15">(</span><span·class="ss">tiger@durin</span><span·class="p"·data-group-id="1044724479-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="2994590466-15">(</span><span·class="ss">tiger@durin</span><span·class="p"·data-group-id="2994590466-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.6/doc/html/erlang.html#t:term/0">term</a>(),1891 ·························TracerOpts·::·<a·href="../../../../erts-15.2.6/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="8295172887-1">(</span><span·class="p"·data-group-id="8295172887-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="8295172887-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="8146156201-1">(</span><span·class="p"·data-group-id="8146156201-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="8146156201-2">]</span><span·class="p">,</span><span·class="w">
1897 ··················</span><span·class="p"·data-group-id="8295172887-3">[</span><span·class="p"·data-group-id="8295172887-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="8[·...·truncated·by·diffoscope;·len:·497,·SHA:·bf07ea9fc8d23100390b932d98f7bc2f52873a9cf922d91d22913f8ed7b19c6f·...·]-3">]</span><span·class="p">,</span><span·class="w">1897 ··················</span><span·class="p"·data-group-id="8146156201-3">[</span><span·class="p"·data-group-id="8146156201-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="8[·...·truncated·by·diffoscope;·len:·497,·SHA:·09047cf662fa24eb71c6a6bc9de86980c8799394e9645bbee959c681721ae4b1·...·]-3">]</span><span·class="p">,</span><span·class="w">
1898 ··················</span><span·class="p"·data-group-id="8295172887-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="8295172887-7">}</span><span·class="p">,</span><span·class="w">1898 ··················</span><span·class="p"·data-group-id="8146156201-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="8146156201-7">}</span><span·class="p">,</span><span·class="w">
1899 ··················</span><span·class="p"·data-group-id="8295172887-8">[</span><span·class="p"·data-group-id="8295172887-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="8295172887-9">}</span><span·class="p">,</span><s[·...·truncated·by·diffoscope;·len:·1092,·SHA:·c29c7d8e3295173c70937e32521301e9d8920a2acfbd78bcfd531fa77d84b587·...·]33-2">]</span><span·class="p">,</span><span·class="w">1899 ··················</span><span·class="p"·data-group-id="8146156201-8">[</span><span·class="p"·data-group-id="8146156201-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="8146156201-9">}</span><span·class="p">,</span><s[·...·truncated·by·diffoscope;·len:·1092,·SHA:·d5807e85ce99976a3ea1fff1650901bc0153f0c3de223bffb8838fafef756947·...·]33-2">]</span><span·class="p">,</span><span·class="w">
1900 ··················</span><span·class="p"·data-group-id="3671461433-3">[</span><span·class="p"·data-group-id="3671461433-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="3671461433-4">}</span><span·class="p">,</span><[·...·truncated·by·diffoscope;·len:·586,·SHA:·a33feff2ea6cdd4fe168b4478d898c44643d6436c3c437c88e144fc44ed2f6ad·...·]33-1">)</span><span·class="p">,</span><span·class="w">1900 ··················</span><span·class="p"·data-group-id="5831464333-3">[</span><span·class="p"·data-group-id="5831464333-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="5831464333-4">}</span><span·class="p">,</span><[·...·truncated·by·diffoscope;·len:·586,·SHA:·816d556362b9fd1f23a1c439b61684e9c8a4bcc93982d0e380b0b22e4f153815·...·]33-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="3671461433-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="3671461433-8">[</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·61,·SHA:·06763fe38981c3699746b7007a1bf8a3ad106483e854cc1d14cebeea4d74aa6d·...·]33-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="5831464333-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="5831464333-8">[</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·61,·SHA:·1b60c29f14410da6c711f0f01dfb0edc085df8d7c8aced9059a7f745da9c4487·...·]33-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="3671461433-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:·136,·SHA:·17dbacb026380d9e7c67767bcf705fd1ee8aa6304371ee85721c2f6f4bf3e82f·...·]33-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="5831464333-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:·136,·SHA:·62b930e54f1c9d6d10d6986993376535712da6bf765d6cc6d1a15386e8d36bae·...·]33-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="3671461433-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="3671461433-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="5831464333-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="5831464333-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="4807777576-1">(</span><span·class="ss">m</span><span·class="p"·data-group-id="4807777576-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="1924199849-1">(</span><span·class="ss">m</span><span·class="p"·data-group-id="1924199849-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="4807777576-2">(</span><span·class="p"·data-group-id="4807777576-3">[</span><span·class="ss">f</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="4807777576-3">]</span><span·class="p"·data-group-id="4807777576-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="1924199849-2">(</span><span·class="p"·data-group-id="1924199849-3">[</span><span·class="ss">f</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="1924199849-3">]</span><span·class="p"·data-group-id="1924199849-2">)</span><span·class="p">.</span><span·class="w">
177 </span><span·class="nf">f</span><span·class="p"·data-group-id="4807777576-4">(</span><span·class="p"·data-group-id="4807777576-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="1924199849-4">(</span><span·class="p"·data-group-id="1924199849-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="4807777576-5">(</span><span·class="n">From</span><span·class="p"·data-group-id="4807777576-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="1924199849-5">(</span><span·class="n">From</span><span·class="p"·data-group-id="1924199849-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="4807777576-6">(</span><span·class="p"·data-group-id="4807777576-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="1924199849-6">(</span><span·class="p"·data-group-id="1924199849-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="4807777576-7">{</span><span·class="nf">self</span><span·class="p"·data-group-id="4807777576-8">(</span><span·class="p"·data-group-id="4807777576-8">)</span><span·class="p">,</span><span·class="n">Now</span><span·class="p"·data-group-id="4807777576-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="1924199849-7">{</span><span·class="nf">self</span><span·class="p"·data-group-id="1924199849-8">(</span><span·class="p"·data-group-id="1924199849-8">)</span><span·class="p">,</span><span·class="n">Now</span><span·class="p"·data-group-id="1924199849-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="1678765289-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="1678765289-2">[</span><span·class="p"·data-group-id="1678765289-2">]</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·11,·SHA:·60e262c803508bb721947896c28b026f50456b91e5f44f343eb369c8dcbb4c6c·...·]-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="2398466650-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="2398466650-2">[</span><span·class="p"·data-group-id="2398466650-2">]</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·11,·SHA:·685322e3202a633cca54db96e2571bc3563fd12dcc81ee4d7baf0bd9b581edd0·...·]-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="1678765289-3">(</span><span·class="ss">tiger@durin</span><span·class="p"·data-group-id="1678765289-3">)</span><span·class="mi">48</span><span·class="o">&gt;</span><span·class="gp·unselectable">189 </span><span·class="p"·data-group-id="2398466650-3">(</span><span·class="ss">tiger@durin</span><span·class="p"·data-group-id="2398466650-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="1678765289-4">(</span><span·class="p"·data-group-id="1678765289-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="2398466650-4">(</span><span·class="p"·data-group-id="2398466650-4">)</span><span·class="p">.</span><span·class="w">
192 </span><span·class="p"·data-group-id="1678765289-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="1678765289-6">[</span><span·class="ss">tiger@durin</span><span·class="p"·data-group-id="1678765289-6">]</span><span·class="p"·data-group-id="1678765289-5">}</span><span·class="w"> 
193 </span><span·class="p"·data-group-id="1678765289-7">(</span><span·class="ss">tiger@durin</span><span·class="p"·data-group-id="1678765289-7">)</span><span·class="mi">49</span><span·class="o">&gt;</span><span·class="gp·unselectable">192 </span><span·class="p"·data-group-id="2398466650-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2398466650-6">[</span><span·class="ss">tiger@durin</span><span·class="p"·data-group-id="2398466650-6">]</span><span·class="p"·data-group-id="2398466650-5[·...·truncated·by·diffoscope;·len:·24,·SHA:·9514610d0b259140b5a72a9a59a9416af812489313b738ea51e1262922ca17e0·...·]">
 193 </span><span·class="p"·data-group-id="2398466650-7">(</span><span·class="ss">tiger@durin</span><span·class="p"·data-group-id="2398466650-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="1678765289-8">(</span><span·class="n">Pid</span><span·class="p">,</span><span·class="p"·data-group-id="1678765289-9">[</span><span·class="ss">call</span><span·class="p">,</span><span·class="nb">send</span><span·class="p"·data-group-id="1678765289-9">]</spa[·...·truncated·by·diffoscope;·len:·43,·SHA:·71884a0afb5cc75fb146c16c244d49f80299f909b4cd9827d5899e54dbec6fae·...·]-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="2398466650-8">(</span><span·class="n">Pid</span><span·class="p">,</span><span·class="p"·data-group-id="2398466650-9">[</span><span·class="ss">call</span><span·class="p">,</span><span·class="nb">send</span><span·class="p"·data-group-id="2398466650-9">]</spa[·...·truncated·by·diffoscope;·len:·43,·SHA:·dc001499e5a0957f4b962d06b4cdbc5732962e8e97c0c93a61c2c559de4c48a3·...·]-8">)</span><span·class="p">.</span><span·class="w">
197 </span><span·class="p"·data-group-id="1678765289-10">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="1678765289-11">[</span><span·class="p"·data-group-id="1678765289-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="1678765289-13">[</span><span·class="p"·data-group-id="1678765289-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="1678765289-14">}</span><span·class="p"·data-group-id="1678765289-13">]</span><span·class="p"·data-group-id="1678765289-12">}</span><span·class="p"·data-group-id="1678765289-11">]</span><span·class="p"·data-group-id="1678765289-10">}</span><span·class="w"> 
198 </span><span·class="p"·data-group-id="1678765289-15">(</span><span·class="ss">tiger@durin</span><span·class="p"·data-group-id="1678765289-15">)</span><span·class="mi">50</span><span·class="o">&gt;</span><span·class="gp·unselectable">197 </span><span·class="p"·data-group-id="2398466650-10">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2398466650-11">[</span><span·class="p"·data-group-id="2398466650-12">{</span><span·class="o">&lt;</span><span·class="mf">0.125</span><span·class="p">.</[·...·truncated·by·diffoscope;·len:·612,·SHA:·d566b1b56b36f9f651ad9c8b261b44993b3d93579354e2232c60eb38b0d9038d·...·]">
 198 </span><span·class="p"·data-group-id="2398466650-15">(</span><span·class="ss">tiger@durin</span><span·class="p"·data-group-id="2398466650-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="1678765289-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="1678765289-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="2398466650-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="2398466650-16">)</span><span·class="p">.</span><span·class="w">
206 </span><span·class="p"·data-group-id="1678765289-17">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="1678765289-18">[</span><span·class="p"·data-group-id="1678765289-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="1678765289-19">}</span><span·class="p">,</span><span·class="p"·data-group-id="1678765289-20">{</span><span·class="ss">saved</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="1678765289-20">}</span><span·class="p"·data-group-id="1678765289-18">]</span><span·class="p"·data-group-id="1678765289-17">}</span><span·class="w"> 
207 </span><span·class="p"·data-group-id="1678765289-21">(</span><span·class="ss">tiger@durin</span><span·class="p"·data-group-id="1678765289-21">)</span><span·class="mi">52</span><span·class="o">&gt;</span><span·class="gp·unselectable">206 </span><span·class="p"·data-group-id="2398466650-17">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2398466650-18">[</span><span·class="p"·data-group-id="2398466650-19">{</span><span·class="ss">matched</span><span·class="p">,</span><span·class="ss">tig[·...·truncated·by·diffoscope;·len:·450,·SHA:·ca7e41479077b97e28831a4fdd6c1b8c206d98560b7d56fd150784f68959d4b6·...·]">
 207 </span><span·class="p"·data-group-id="2398466650-21">(</span><span·class="ss">tiger@durin</span><span·class="p"·data-group-id="2398466650-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="1678765289-22">(</span><span·class="p"·data-group-id="1678765289-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="2398466650-22">(</span><span·class="p"·data-group-id="2398466650-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="1678765289-23">(</span><span·class="ss">tiger@durin</span><span·class="p"·data-group-id="1678765289-23">)</span><span·class="mi">53</span><span·class="o">&gt;</span><span·class="gp·unselectable">212 </span><span·class="p"·data-group-id="2398466650-23">(</span><span·class="ss">tiger@durin</span><span·class="p"·data-group-id="2398466650-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="1678765289-24">(</span><span·class="p"·data-group-id="1678765289-25">[</span><span·class="ss">return</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1678765289-26">{</span><span·class="ss">fetch_dir</span><span·class="p[·...·truncated·by·diffoscope;·len:·223,·SHA:·21847844f1cfcdf7225eb36a87e6cbe14f8b448dc2449ef0966a5ec4a81d5dac·...·]-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="2398466650-24">(</span><span·class="p"·data-group-id="2398466650-25">[</span><span·class="ss">return</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2398466650-26">{</span><span·class="ss">fetch_dir</span><span·class="p[·...·truncated·by·diffoscope;·len:·223,·SHA:·262cdc9de9b644f5e6fdb2f23426708fab00cb3ba46fbffe9b9e6556302e01f7·...·]-24">)</span><span·class="p">.</span><span·class="w">
216 </span><span·class="p"·data-group-id="1678765289-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="1678765289-27">}</span><span·class="w">216 </span><span·class="p"·data-group-id="2398466650-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="2398466650-27">}</span><span·class="w">
217 </span><span·class="p"·data-group-id="1678765289-28">(</span><span·class="ss">tiger@durin</span><span·class="p"·data-group-id="1678765289-28">)</span><span·class="mi">54</span><span·class="o">&gt;</span><span·class="gp·unselectable">217 </span><span·class="p"·data-group-id="2398466650-28">(</span><span·class="ss">tiger@durin</span><span·class="p"·data-group-id="2398466650-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="1678765289-29">(</span><span·class="s">&quot;fetch&quot;</span><span·class="p"·data-group-id="1678765289-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="2398466650-29">(</span><span·class="s">&quot;fetch&quot;</span><span·class="p"·data-group-id="2398466650-29">)</span><span·class="p">.</span><span·class="w">
220 </span><span·class="p"·data-group-id="1678765289-30">(</span><span·class="p"·data-group-id="1678765289-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:·c35b52b3e81e664912f8a02a4f4661075f98f4977eaa9a11a71c51bde3113b3d·...·]-33">)</span><span·class="w">220 </span><span·class="p"·data-group-id="2398466650-30">(</span><span·class="p"·data-group-id="2398466650-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:·b29128e9e279c92e3105932ea5331533f5f1ceb2f5e9452f38f793287d89b452·...·]-33">)</span><span·class="w">
221 </span><span·class="p"·data-group-id="1678765289-34">(</span><span·class="p"·data-group-id="1678765289-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:·d2bd6121239a4da30ad3fd915ea1ea2f2938f8479845ebb3854eb852a6e6515e·...·]-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="2398466650-34">(</span><span·class="p"·data-group-id="2398466650-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:·b0ac74ef885820442c166fff87a80d05fc41ecf86ab8b18fe9bf532e6db1335a·...·]-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="1678765289-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="1678765289-37">}</span><span·class="w">222 </span><span·class="p"·data-group-id="2398466650-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="2398466650-37">}</span><span·class="w">
223 </span><span·class="p"·data-group-id="1678765289-38">(</span><span·class="p"·data-group-id="1678765289-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:·4d2fda0281c5e845d054bce6397a005efe4a795e5bf36014ccffe3306861b417·...·]-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="2398466650-38">(</span><span·class="p"·data-group-id="2398466650-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:·d0e21d99a3dfb31bc7c11e0e0eb3b8f84af9371e132c648d6aa6e94c9a6f9f35·...·]-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="1678765289-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="1678765289-42">{</span><span·class="mi">1031</[·...·truncated·by·diffoscope;·len:·208,·SHA:·e899a2ee367792c01c6f79c14ed509d9e9b0404f05190c52de815f5d98821980·...·]-41">}</span><span·class="w">224 </span><span·class="p"·data-group-id="2398466650-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="2398466650-42">{</span><span·class="mi">1031</[·...·truncated·by·diffoscope;·len:·208,·SHA:·56a150c8e7f161a9bf97fad4409e7e17bc0f8fa55378735daeaa3cf108568640·...·]-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="7998342411-1">(</span><span·class="ss">mydebug</span><span·class="p"·data-group-id="7998342411-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="8520187296-1">(</span><span·class="ss">mydebug</span><span·class="p"·data-group-id="8520187296-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="7998342411-2">(</span><span·class="p"·data-group-id="7998342411-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:·be0e2d643aec7779f83e65e9986a1c29b7c969cc63f40d092bdff23a74ffefa3·...·]-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="8520187296-2">(</span><span·class="p"·data-group-id="8520187296-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:·cf01c6535e3502566cef5a938be6d7080a4f1b3823884592b5137828cec54b16·...·]-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="7998342411-4">(</span><span·class="p"·data-group-id="7998342411-5">[</span><span·class="ss">print</span><span·class="p">/</span><span·class="mi">4</span><span·class="p"·data-group-id="7998342411-5">]</span><span·class="p"·data-group-id="7998342411-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="8520187296-4">(</span><span·class="p"·data-group-id="8520187296-5">[</span><span·class="ss">print</span><span·class="p">/</span><span·class="mi">4</span><span·class="p"·data-group-id="8520187296-5">]</span><span·class="p"·data-group-id="8520187296-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="7998342411-6">(</span><span·class="s">&quot;stdlib/include/ms_transform.hrl&quot;</span><span·class="p"·data-group-id="7998342411-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="8520187296-6">(</span><span·class="s">&quot;stdlib/include/ms_transform.hrl&quot;</span><span·class="p"·data-group-id="8520187296-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="7998342411-7">(</span><span·class="p"·data-group-id="7998342411-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="8520187296-7">(</span><span·class="p"·data-group-id="8520187296-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="7998342411-8">(</span><span·class="ss">all</span><span·class="p">,</span><span·class="p"·data-group-id="7998342411-9">[</span><span·class="p"·data-group-id="7998342411-10">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="s">&quot;de[·...·truncated·by·diffoscope;·len:·726,·SHA:·9ea6535932f4f44d4fbbebdcf832822c89dd1a4af1c746914b3738305cc9dc3a·...·]-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="8520187296-8">(</span><span·class="ss">all</span><span·class="p">,</span><span·class="p"·data-group-id="8520187296-9">[</span><span·class="p"·data-group-id="8520187296-10">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="s">&quot;de[·...·truncated·by·diffoscope;·len:·726,·SHA:·631452208140959f53f19cbe76f770ef46b9fd32b529f4db386161f480a4015c·...·]-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="7998342411-14">(</span><span·class="ss">all</span><span·class="p">,</span><span·class="ss">call</span><span·class="p"·data-group-id="7998342411-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="8520187296-14">(</span><span·class="ss">all</span><span·class="p">,</span><span·class="ss">call</span><span·class="p"·data-group-id="8520187296-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="7998342411-15">(</span><span·class="n">M</span><span·class="p"·data-group-id="7998342411-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="7998342411-16">(</[·...·truncated·by·diffoscope;·len:·70,·SHA:·cb9edeb9678cb6b9fa78719d800b05dfc82c67243724e05f82ff838fb61afbc0·...·]-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="8520187296-15">(</span><span·class="n">M</span><span·class="p"·data-group-id="8520187296-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="8520187296-16">(</[·...·truncated·by·diffoscope;·len:·70,·SHA:·e47849adeca6ac3ebfc8bfe47653970c2d4f1b8f4c29b5fc1412354e9dcb64c9·...·]-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="7998342411-17">(</span><span·class="p"·data-group-id="7998342411-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="799834[·...·truncated·by·diffoscope;·len:·58,·SHA:·a2cb0a7dd8948c679cff3f6efa28a790a6ae0c0deac6b5ceaa9e7649c989cb3f·...·]-17">)</span><span·class="p">;</span><span·class="w">252 ····</span><span·class="nf">trc</span><span·class="p"·data-group-id="8520187296-17">(</span><span·class="p"·data-group-id="8520187296-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="852018[·...·truncated·by·diffoscope;·len:·58,·SHA:·2d652e3e9b38abc732bd917709530ea12217972b58cbdf04d7eca516bca831f3·...·]-17">)</span><span·class="p">;</span><span·class="w">
253 </span><span·class="nf">trc</span><span·class="p"·data-group-id="7998342411-19">(</span><span·class="p"·data-group-id="7998342411-20">{</span><span·class="n">M</span><span·class="p">,</span><span·class="n">F</span><span·class="p"·data-group-id="7998342411-20">}</span><span·class="p"·data-group-id="7998342411-19">)</span[·...·truncated·by·diffoscope;·len:·437,·SHA:·6eee969cf0527c98b76c5860e54d4de0849bdc94dae65a8aac103c9163a3266c·...·]-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="8520187296-19">(</span><span·class="p"·data-group-id="8520187296-20">{</span><span·class="n">M</span><span·class="p">,</span><span·class="n">F</span><span·class="p"·data-group-id="8520187296-20">}</span><span·class="p"·data-group-id="8520187296-19">)</span[·...·truncated·by·diffoscope;·len:·437,·SHA:·8bb481e010e600578caea61afed02ff3ee0569c2e32388cec10643c8c1c1c122·...·]-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="7998342411-23">(</span><span·class="p"·data-group-id="7998342411-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="7998342411-24">}<[·...·truncated·by·diffoscope;·len:·47,·SHA:·5a92b2f563062cb7200e3688980011faf22285af5a1bc0518592dfda06ef6685·...·]-23">)</span><span·class="p">;</span><span·class="w">254 ····</span><span·class="nf">trc</span><span·class="p"·data-group-id="8520187296-23">(</span><span·class="p"·data-group-id="8520187296-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="8520187296-24">}<[·...·truncated·by·diffoscope;·len:·47,·SHA:·a23bd0d3ca9473e07cc8f92a91449b23a26f9e336587bc063e414b52f5aead42·...·]-23">)</span><span·class="p">;</span><span·class="w">
255 </span><span·class="nf">trc</span><span·class="p"·data-group-id="7998342411-25">(</span><span·class="p"·data-group-id="7998342411-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="7998[·...·truncated·by·diffoscope;·len:·559,·SHA:·a61215e2f15fec08c1319364167d6f76319f9c2de9d78fd41778521213d7ee5d·...·]-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="8520187296-25">(</span><span·class="p"·data-group-id="8520187296-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="8520[·...·truncated·by·diffoscope;·len:·559,·SHA:·d0a8f5636041b5dfb8f3080732016880e1820b277c92aa1b06ed80b193239f2e·...·]-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="7998342411-29">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="7998342411-30">(</span><span·class="p">_</span><span·class="p"·data-group-id="7998342411-30">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·237,·SHA:·91281289fefab451f041b13ccc959b0740a90487ab3800a3e6a4221e32bce223·...·]-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="8520187296-29">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="8520187296-30">(</span><span·class="p">_</span><span·class="p"·data-group-id="8520187296-30">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·237,·SHA:·51a84fddcc22ba0a4fe99614845016442c5823f912b605ce4df502c03b4b7f10·...·]-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="7998342411-32">(</span><span·class="n">MFA</span><span·class="p">,</span><span·class="n">MatchSpec</span><span·class="p"·data-group-id="7998342411-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="8520187296-32">(</span><span·class="n">MFA</span><span·class="p">,</span><span·class="n">MatchSpec</span><span·class="p"·data-group-id="8520187296-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="7998342411-33">(</span><span·class="n">Dir</span><span·class="p"·data-group-id="7998342411-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="8520187296-33">(</span><span·class="n">Dir</span><span·class="p"·data-group-id="8520187296-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="7998342411-34">(</span><span·class="n">Dir</span><span·class="p"·data-group-id="7998342411-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="8520187296-34">(</span><span·class="n">Dir</span><span·class="p"·data-group-id="8520187296-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="7998342411-35">(</span><span·class="p"·data-group-id="7998342411-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="8520187296-35">(</span><span·class="p"·data-group-id="8520187296-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="7998342411-36">(</span><span·class="ss">return</span><span·class="p"·data-group-id="7998342411-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="8520187296-36">(</span><span·class="ss">return</span><span·class="p"·data-group-id="8520187296-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="7998342411-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:·4fd874f2abe3662a7d5f041664c17b1ba73b7a84cea0050c1471f45ad5571a51·...·]-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="8520187296-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:·7893be4341a4a6a296d41317a7f972f57686c01d0c2223ca8e8fca5203a204ad·...·]-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="7998342411-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="799[·...·truncated·by·diffoscope;·len:·7,·SHA:·91d47e9ac02ab7f7f7bdc6253873aa0559e12ea0bdb7b0d79aef9ee498fd5543·...·]-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="8520187296-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="852[·...·truncated·by·diffoscope;·len:·7,·SHA:·5461f54c2fdb035f7038d6afcf94dd555ab7c03d81e8e5a142a3e81c2249ccdc·...·]-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="7998342411-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="7998342411-39">)</span><span·class="p">,</span><span·class="w">272 ····</span><span·class="nf">do_print</span><span·class="p"·data-group-id="8520187296-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="8520187296-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="7998342411-40">(</span><span·class="n">Out</span><span·class="p">,</span><span·class="p"·data-group-id="7998342411-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:·750727da9d0786b9e752d7e5cea9174760fc36fca1c75bc7756f1486bf7d0ddb·...·]-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="8520187296-40">(</span><span·class="n">Out</span><span·class="p">,</span><span·class="p"·data-group-id="8520187296-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:·0b61c713a8458f66a5c810a940ab4b54cfd0b4990fd5a557010f19d8a6fac43a·...·]-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="7998342411-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="8520187296-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="7998342411-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:·26db44f6b05b91ac27fff4cadcf8f9a13cf8e853c441bbf4c933415c3526b618·...·]-43">)</span><span·class="p">;</span><span·class="w">279 ··············</span><span·class="p"·data-group-id="8520187296-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:·3569eca487040f10a0c013a242e0d0d352ce5b2bb99eeba7cbf98a6569faee57·...·]-43">)</span><span·class="p">;</span><span·class="w">
280 </span><span·class="nf">do_print</span><span·class="p"·data-group-id="7998342411-46">(</span><span·class="n">Out</span><span·class="p">,</span><span·class="p"·data-group-id="7998342411-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:·f4dcf4d08bf24e803204aceb7614d95fb44b3cedb25d6e2bce55e22df7190621·...·]-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="8520187296-46">(</span><span·class="n">Out</span><span·class="p">,</span><span·class="p"·data-group-id="8520187296-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:·675a7812ff4e18782ecb3b6c045c00b4c33c1e4e3cda5e02f9cb1d24213ccb05·...·]-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="7998342411-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="8520187296-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="7998342411-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:·db460e6db7dde2537ed63d8fff5b512a88132a981dd8aeff18c8ba44034b8fe0·...·]-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="8520187296-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:·db6dec84b86aa0fe18d7030d35c69775b53f3e4b23ec599599b8dfd5fd56f11a·...·]-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="7404411100-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="7404411100-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·393,·SHA:·bcc7d60c1f3b6ea63300f81b886e8090c211ace6bac630188858fd7f7b005392·...·]-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="7785641057-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="7785641057-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·393,·SHA:·7337097d9a4e06806874230bf21d0d7449eec19736146e5dd8a363cde33a09f5·...·]-2">)</span><span·class="p">.</span><span·class="w">
161 ······</span><span·class="p"·data-group-id="7404411100-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="7404411100-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="7785641057-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="7785641057-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="5943697275-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="5943697275-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="7020325749-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="7020325749-1">)</span><span·class="p">.</span><span·class="w">
168 ······</span><span·class="p"·data-group-id="5943697275-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5943697275-3">[</span><span·class="p"·data-group-id="5943697275-4">{</span><span·class="s">&quot;NR&quot;</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·107,·SHA:·16b0f80bdbaecb2554c67e12e8745cd0e2b17e272d06fbfe32497cf1251fae1b·...·]-4">}</span><span·class="p">,</span><span·class="w">168 ······</span><span·class="p"·data-group-id="7020325749-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7020325749-3">[</span><span·class="p"·data-group-id="7020325749-4">{</span><span·class="s">&quot;NR&quot;</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·107,·SHA:·fb3c7ce77f58643f2496decd6312b61ec614eeb5093c139b2a7ef1037773a871·...·]-4">}</span><span·class="p">,</span><span·class="w">
169 ············</span><span·class="p"·data-group-id="5943697275-5">{</span><span·class="s">&quot;FIRSTNAME&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5943697275-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="5943697275-6">}</span><span·class="p"·data-group-id="5943697275-5">}</span><span·class="p">,</span><span·class="w"> 
170 ············</span><span·class="p"·data-group-id="5943697275-7">{</span><span·class="s">&quot;LASTNAME&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5943697275-8">{</span><span·class="ss">sql_varchar</span><span·class="p">,</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·118,·SHA:·1dc023dc5838e0c8df69a4903eac78610c06ea42358f18801c574341962713f5·...·]</span><span·class="w">169 ············</span><span·class="p"·data-group-id="7020325749-5">{</span><span·class="s">&quot;FIRSTNAME&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7020325749-6">{</span><span·class="ss">sql_varchar</span><span·class="p">,</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·143,·SHA:·3784a2e04ea94699c1db1450916b7cb48f39a8cf89080fb115677dc47040d747·...·]</span><span·class="w">
171 ············</span><span·class="p"·data-group-id="5943697275-9">{</span><span·class="s">&quot;GENDER&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5943697275-10">{</span><span·class="ss">sql_char</span><span·class="p">,</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·763,·SHA:·654563bc058908b45f6577fd0043c51c8013c182ce479789b6f3baea7e4dd3d4·...·]</span><span·class="w">170 ············</span><span·class="p"·data-group-id="7020325749-7">{</span><span·class="s">&quot;LASTNAME&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7020325749-8">{</span><span·class="ss">sql_varchar</span><span·class="p">,</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·118,·SHA:·a2895c9dbe332073d132bc3354a7d5388ac5883417e2069e7af32f3143d80631·...·]</span><span·class="w">
 171 ············</span><span·class="p"·data-group-id="7020325749-9">{</span><span·class="s">&quot;GENDER&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7020325749-10">{</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="7020325749-10">}</span><span·class="p"·data-group-id="7020325749-9">}</span><span·class="p"·data-group-id="7020325749-3">]</span><span·class="p"·data-group-id="7020325749-2">}</span></code></pre><p><a·href=""·id="param_query"></a>·Use·a·parameterized·query·to·insert·many·rows·in·one·go.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="mi">6</span><span·class="w">·</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">odbc</span><span·class="p">:</span><span·class="nf">param_query</span><span·class="p"·data-group-id="9146583454-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="3355260226-2">[</span><span·class="p"·data-group-id="3355260226-3">{</span><span·class="ss">sql_integer</span><span·class="p">,</span><span·class="p"·data-group-id="3355260226-4">[</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</[·...·truncated·by·diffoscope;·len:·344,·SHA:·320779ea68c216c7142e0e5d54ab0a955e71c63bdcc1d06b85e6e95820ce5e58·...·]-3">}</span><span·class="p">,</span><span·class="w">173 ···················</span><span·class="p"·data-group-id="9146583454-2">[</span><span·class="p"·data-group-id="9146583454-3">{</span><span·class="ss">sql_integer</span><span·class="p">,</span><span·class="p"·data-group-id="9146583454-4">[</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</[·...·truncated·by·diffoscope;·len:·344,·SHA:·97072d4134ab9a0e3ca5f50f312de91bfb068e9f71b2df51817ac77a7eb95a0d·...·]-3">}</span><span·class="p">,</span><span·class="w">
174 ····················</span><span·class="p"·data-group-id="3355260226-5">{</span><span·class="p"·data-group-id="3355260226-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="3355260226-6">}</span><span·class="p">,</span><span·class="w">174 ····················</span><span·class="p"·data-group-id="9146583454-5">{</span><span·class="p"·data-group-id="9146583454-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="9146583454-6">}</span><span·class="p">,</span><span·class="w">
175 ·····························</span><span·class="p"·data-group-id="3355260226-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="9146583454-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="3355260226-7">]</span><span·class="p"·data-group-id="3355260226-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="9146583454-7">]</span><span·class="p"·data-group-id="9146583454-5">}</span><span·class="p">,</span><span·class="w">
177 ···················</span><span·class="p"·data-group-id="3355260226-8">{</span><span·class="p"·data-group-id="3355260226-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="3355260226-9">}</span><span·class="p">,</span><span·class="w">177 ···················</span><span·class="p"·data-group-id="9146583454-8">{</span><span·class="p"·data-group-id="9146583454-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="9146583454-9">}</span><span·class="p">,</span><span·class="w">
178 ·····························</span><span·class="p"·data-group-id="3355260226-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="9146583454-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="3355260226-10">]</span><span·class="p"·data-group-id="3355260226-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="9146583454-10">]</span><span·class="p"·data-group-id="9146583454-8">}</span><span·class="p">,</span><span·class="w">
180 ···················</span><span·class="p"·data-group-id="3355260226-11">{</span><span·class="p"·data-group-id="3355260226-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="3355260226-12">}</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·680,·SHA:·5e59ecf1f9f3605ec3e447476f57b7639c14f8fe2a562b2d2197818530a4209f·...·]-1">)</span><span·class="p">.</span><span·class="w">180 ···················</span><span·class="p"·data-group-id="9146583454-11">{</span><span·class="p"·data-group-id="9146583454-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="9146583454-12">}</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·680,·SHA:·dcc0295e7719164bc5e0b751b2ec92bac1cb25b870a49d36854d7dd0ad69c72e·...·]-1">)</span><span·class="p">.</span><span·class="w">
181 ······</span><span·class="p"·data-group-id="3355260226-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="3355260226-14">}</span></code></pre><p>Fetch·all·data·in·the·table·employee</p><pre><code·class="m[·...·truncated·by·diffoscope;·len:·439,·SHA:·a16a98fe55e610cff619c03ca9bcd56314e250239ddea4c0c1e5dcd60ab3e52a·...·]-1">)</span><span·class="p">.</span><span·class="w">181 ······</span><span·class="p"·data-group-id="9146583454-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="9146583454-14">}</span></code></pre><p>Fetch·all·data·in·the·table·employee</p><pre><code·class="m[·...·truncated·by·diffoscope;·len:·439,·SHA:·8aea8deba29a8912cde725612b6ed8d1afa2df9d730555eb9774e8c225bf897b·...·]-1">)</span><span·class="p">.</span><span·class="w">
182 ····</span><span·class="p"·data-group-id="6921716713-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="6921716713-3">[</span><span·class="s">&quot;NR&quot;</span><span·class="p">,</span><span·class="s">&quot;FIRSTNAME&quot;</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·153,·SHA:·c2f85d34b3388839665c40a5fa8c214776a0fcf84bb9f89a75f1fcaaa45115e9·...·]-3">]</span><span·class="p">,</span><span·class="w">182 ····</span><span·class="p"·data-group-id="8313238965-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="8313238965-3">[</span><span·class="s">&quot;NR&quot;</span><span·class="p">,</span><span·class="s">&quot;FIRSTNAME&quot;</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·153,·SHA:·5927692bb0e7ebd4c5aa3ceb791c26f15c6f6101fe72b220dc1b330eb64bc03c·...·]-3">]</span><span·class="p">,</span><span·class="w">
183 ··········</span><span·class="p"·data-group-id="6921716713-4">[</span><span·class="p"·data-group-id="6921716713-5">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="s">&quot;Jane&quot;</span><span·class="p">,</span><span·class="s">&quot;Doe&quot;</span><span·class="p">,</span><span·c[·...·truncated·by·diffoscope;·len:·70,·SHA:·6b257c0adc7ac87e1b3ef1825d96492128c0f3ee10007c7e4faf4aee9448dfd9·...·]-5">}</span><span·class="p">,</span><span·class="w">183 ··········</span><span·class="p"·data-group-id="8313238965-4">[</span><span·class="p"·data-group-id="8313238965-5">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="s">&quot;Jane&quot;</span><span·class="p">,</span><span·class="s">&quot;Doe&quot;</span><span·class="p">,</span><span·c[·...·truncated·by·diffoscope;·len:·70,·SHA:·75bba69efffe1c3804d85d66fc1662c725d82ae149f664944365297b5ed18e65·...·]-5">}</span><span·class="p">,</span><span·class="w">
184 ···········</span><span·class="p"·data-group-id="6921716713-6">{</span><span·class="mi">2</span><span·class="p">,</span><span·class="s">&quot;John&quot;</span><span·class="p">,</span><span·class="s">&quot;Doe&quot;</span><span·class="p">,</span><span·class="s">&quot;M&quot;</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·17,·SHA:·9d85651c10e1ec72f21ac798a7ad0fe5a6733c8e447b3888b8a413da3d6780dc·...·]-6">}</span><span·class="p">,</span><span·class="w">184 ···········</span><span·class="p"·data-group-id="8313238965-6">{</span><span·class="mi">2</span><span·class="p">,</span><span·class="s">&quot;John&quot;</span><span·class="p">,</span><span·class="s">&quot;Doe&quot;</span><span·class="p">,</span><span·class="s">&quot;M&quot;</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·17,·SHA:·a603ec2b15b78d05a3497705b97af867a01737625288a47fbee7c880b8515374·...·]-6">}</span><span·class="p">,</span><span·class="w">
185 ···········</span><span·class="p"·data-group-id="6921716713-7">{</span><span·class="mi">3</span><span·class="p">,</span><span·class="s">&quot;Monica&quot;</span><span·class="p">,</span><span·class="s">&quot;Geller&quot;</span><span·class="p">,</span><span·class="s">&quot;F&quot;</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·1e8c64faf94643bbc9845fe5d9a8cafbe684d8846f5399e435a5753dc1ee7f1d·...·]-7">}</span><span·class="p">,</span><span·class="w">185 ···········</span><span·class="p"·data-group-id="8313238965-7">{</span><span·class="mi">3</span><span·class="p">,</span><span·class="s">&quot;Monica&quot;</span><span·class="p">,</span><span·class="s">&quot;Geller&quot;</span><span·class="p">,</span><span·class="s">&quot;F&quot;</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·7dd70fecb20d6a808cbd2397b202f5570d158454c07e1af67cac4c2862ca366c·...·]-7">}</span><span·class="p">,</span><span·class="w">
186 ···········</span><span·class="p"·data-group-id="6921716713-8">{</span><span·class="mi">4</span><span·class="p">,</span><span·class="s">&quot;Ross&quot;</span><span·class="p">,</span><span·class="s">&quot;Geller&quot;</span><span·class="p">,</span><span·class="s">&quot;M&quot;</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·a861727190076839fc93bb6271d19be3c65243fa14a776aebeca55eb95d27f2b·...·]-8">}</span><span·class="p">,</span><span·class="w">186 ···········</span><span·class="p"·data-group-id="8313238965-8">{</span><span·class="mi">4</span><span·class="p">,</span><span·class="s">&quot;Ross&quot;</span><span·class="p">,</span><span·class="s">&quot;Geller&quot;</span><span·class="p">,</span><span·class="s">&quot;M&quot;</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·5737c8fee1bf86205da3bfd389b76d4219aa1de9542bcb74711b9d556ecf006d·...·]-8">}</span><span·class="p">,</span><span·class="w">
187 ···········</span><span·class="p"·data-group-id="6921716713-9">{</span><span·class="mi">5</span><span·class="p">,</span><span·class="s">&quot;Rachel&quot;</span><span·class="p">,</span><span·class="s">&quot;Green&quot;</span><span·class="p">,</span><span·class="s">&quot;F&quot;</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·8aa8bfdbe23208629899270b260a2b5155d97c606257f5062200c07014273ed3·...·]-9">}</span><span·class="p">,</span><span·class="w">187 ···········</span><span·class="p"·data-group-id="8313238965-9">{</span><span·class="mi">5</span><span·class="p">,</span><span·class="s">&quot;Rachel&quot;</span><span·class="p">,</span><span·class="s">&quot;Green&quot;</span><span·class="p">,</span><span·class="s">&quot;F&quot;</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·a393e4a084a942248ee3116694e28957ee510ef813295893dce3b1efa8133b3d·...·]-9">}</span><span·class="p">,</span><span·class="w">
188 ···········</span><span·class="p"·data-group-id="6921716713-10">{</span><span·class="mi">6</span><span·class="p">,</span><span·class="s">&quot;Piper&quot;</span><span·class="p">,</span><span·class="s">&quot;Halliwell&quot;</span><span·class="p">,</span><span·class="s">&quot;F&quot;</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·25,·SHA:·d7ecfc2d5768ffd4698cc29fb78e21ed7625d19c35710460026383e961aa982a·...·]-10">}</span><span·class="p">,</span><span·class="w">188 ···········</span><span·class="p"·data-group-id="8313238965-10">{</span><span·class="mi">6</span><span·class="p">,</span><span·class="s">&quot;Piper&quot;</span><span·class="p">,</span><span·class="s">&quot;Halliwell&quot;</span><span·class="p">,</span><span·class="s">&quot;F&quot;</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·25,·SHA:·5ec808bae8a0aab1360f686fd5b30d65eb798cd05d483c420230047fd42e06d7·...·]-10">}</span><span·class="p">,</span><span·class="w">
189 ···········</span><span·class="p"·data-group-id="6921716713-11">{</span><span·class="mi">7</span><span·class="p">,</span><span·class="s">&quot;Prue&quot;</span><span·class="p">,</span><span·class="s">&quot;Halliwell&quot;</span><span·class="p">,</span><span·class="s">&quot;F&quot;</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·24,·SHA:·1bccb49e2d27a3c1d2ba904fe4717cf2d674f924f345ca3915fd0a405584864a·...·]-11">}</span><span·class="p">,</span><span·class="w">189 ···········</span><span·class="p"·data-group-id="8313238965-11">{</span><span·class="mi">7</span><span·class="p">,</span><span·class="s">&quot;Prue&quot;</span><span·class="p">,</span><span·class="s">&quot;Halliwell&quot;</span><span·class="p">,</span><span·class="s">&quot;F&quot;</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·24,·SHA:·7c626cdc5d7c0e6884cdfe0b0c85250d0418014a54c3bb8177b80a73efc750c6·...·]-11">}</span><span·class="p">,</span><span·class="w">
190 ···········</span><span·class="p"·data-group-id="6921716713-12">{</span><span·class="mi">8</span><span·class="p">,</span><span·class="s">&quot;Louise&quot;</span><span·class="p">,</span><span·class="s">&quot;Lane&quot;</span><span·class="p">,</span><span·class="s">&quot;F&quot;</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·152,·SHA:·e1a8eb7a88d8c92125b43b4ae83cd7fbdda1a5131937fc327856f5cd29ce6705·...·]-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="8313238965-12">{</span><span·class="mi">8</span><span·class="p">,</span><span·class="s">&quot;Louise&quot;</span><span·class="p">,</span><span·class="s">&quot;Lane&quot;</span><span·class="p">,</span><span·class="s">&quot;F&quot;</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·152,·SHA:·23a12b6848bddad769b1f328faebb4ff410099c6d5edba8fca0e9c5354fa4a31·...·]-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="1582657856-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="1582657856-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="5088370081-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="5088370081-1">)</span><span·class="p">.</span><span·class="w">
192 ······</span><span·class="p"·data-group-id="1582657856-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="mi">8</span><span·class="p"·data-group-id="1582657856-2">}</span></code></pre><p>You·can·always·traverse·the·result·set·sequential·by·using·next</p><pre><code·class="makeu[·...·truncated·by·diffoscope;·len:·349,·SHA:·5a00af5246c27ac5d250a581b8a935109a8683a9ce968139eba20144f4e69c43·...·]-1">)</span><span·class="p">.</span><span·class="w">192 ······</span><span·class="p"·data-group-id="5088370081-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="mi">8</span><span·class="p"·data-group-id="5088370081-2">}</span></code></pre><p>You·can·always·traverse·the·result·set·sequential·by·using·next</p><pre><code·class="makeu[·...·truncated·by·diffoscope;·len:·349,·SHA:·2ccffcc81edf8fcca527c8a8441162fbe9bb12b39b2b2f4fe4ac199b88c3a793·...·]-1">)</span><span·class="p">.</span><span·class="w">
193 ······</span><span·class="p"·data-group-id="5945702010-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="5945702010-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:·347c7b4cf6d16589bfd3e09533f50fd972fcf6fff61db88483170732a13d3879·...·]-1">)</span><span·class="p">.</span><span·class="w">193 ······</span><span·class="p"·data-group-id="1233028075-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="1233028075-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:·273aac3535e389c8347bafd49fc19878c9809094645836788989fc923e06d3ce·...·]-1">)</span><span·class="p">.</span><span·class="w">
194 ······</span><span·class="p"·data-group-id="2824813813-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="2824813813-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:·7f138a287d728b6d5cbb67bcab372501e0eeef49bd7f62b1869d69107a7cb2f3·...·]-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="7018887002-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="7018887002-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:·45b6d592c795e23f82db0846921fcc31f3a431120c1020c787c8998294a9fca1·...·]-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="5198780510-1">(</span><span·class="n">Ref</span><span·class="p"·data-group-id="5198780510-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="7374200233-1">(</span><span·class="n">Ref</span><span·class="p"·data-group-id="7374200233-1">)</span><span·class="p">.</span><span·class="w">
196 ······</span><span·class="p"·data-group-id="5198780510-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="5198780510-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:·0bb239602c96130f549141e62eb9bf1d993a16d2d191085f3f2d1eb99004726e·...·]-1">)</span><span·class="p">.</span><span·class="w">196 ······</span><span·class="p"·data-group-id="7374200233-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="7374200233-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:·bf5abe1cce316b09524461e03e43dd555a0283dac862132d0cf90ad13b0ca485·...·]-1">)</span><span·class="p">.</span><span·class="w">
 197 ······</span><span·class="p"·data-group-id="4374991867-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="4374991867-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="4374991867-3">]</span><span·class="p">,</span><span·class="p"·data-group-id="4374991867-4">[</span><span·class="p"·data-group-id="4374991867-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="4374991867-5">}</span><span·class="p"·data-group-id="4374991867-4">]</span><span·class="p"·data-group-id="4374991867-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="9631051822-1">(</span><span·class="n">Ref</span><span·class="p"·data-group-id="9631051822-1">)</span><span·class="p">.</span><span·class="w">
197 ······</span><span·class="p"·data-group-id="6030048551-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="6030048551-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:·1057,·SHA:·07ed7a62146494fd11e5362f87f7df2982c80d777af8ec1062ad8f41cf05aefb·...·]-1">)</span><span·class="p">.</span><span·class="w">198 ······</span><span·class="p"·data-group-id="9631051822-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="9631051822-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:·92b3bcaa40a94d84520eaa1504f7db6012e76034ebb47ae4e4344ee23fb06d7a·...·]-1">)</span><span·class="p">.</span><span·class="w">
198 ······</span><span·class="p"·data-group-id="8782102657-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="8782102657-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="8782102657-3">]</span><span·class="p">,</span><span·class="p"·data-group-id="8782102657-4">[</span><span·class="p"·data-group-id="8782102657-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="8782102657-5">}</span><span·class="p"·data-group-id="8782102657-4">]</span><span·class="p"·data-group-id="8782102657-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="5591514598-1">(</span><span·class="n">Ref</span><span·class="p"·data-group-id="5591514598-1">)</span><span·class="p">.</span><span·class="w"> 
199 ······</span><span·class="p"·data-group-id="5591514598-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="5591514598-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:·3f3a7b62f9fd46a4ba4ab746586a9708510d867ce534389721cf7e8193617b3f·...·]-1">)</span><span·class="p">.</span><span·class="w">199 ······</span><span·class="p"·data-group-id="3554235382-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="3554235382-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:·a9e883b83a6038a7214c4c12b21e18bcd8341b6ea6aca8763a06543503d09a8a·...·]-1">)</span><span·class="p">.</span><span·class="w">
200 ·····</span><span·class="p"·data-group-id="6365789921-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="6365789921-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:·5a1dec39cf1121b1a79e17ffea9e03f0855df4a5da8943a407255e18be22252c·...·]-3">]</span><span·class="p">,</span><span·class="w">200 ·····</span><span·class="p"·data-group-id="7872940987-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="7872940987-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:·ef5eb780c3e06741cda12c85061151dbfa99a5c7c91e4424446c1dd69c74972c·...·]-3">]</span><span·class="p">,</span><span·class="w">
201 ··········</span><span·class="p"·data-group-id="6365789921-4">[</span><span·class="p"·data-group-id="6365789921-5">{</span><span·class="s">&quot;Jane&quot;</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="6365789921-5">}</span><span·class="p">,</span><span·class="w">201 ··········</span><span·class="p"·data-group-id="7872940987-4">[</span><span·class="p"·data-group-id="7872940987-5">{</span><span·class="s">&quot;Jane&quot;</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="7872940987-5">}</span><span·class="p">,</span><span·class="w">
202 ···········</span><span·class="p"·data-group-id="6365789921-6">{</span><span·class="s">&quot;Monica&quot;</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="6365789921-6">}</span><span·class="p">,</span><span·class="w">202 ···········</span><span·class="p"·data-group-id="7872940987-6">{</span><span·class="s">&quot;Monica&quot;</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="7872940987-6">}</span><span·class="p">,</span><span·class="w">
203 ···········</span><span·class="p"·data-group-id="6365789921-7">{</span><span·class="s">&quot;Rachel&quot;</span><span·class="p">,</span><span·class="mi">5</span><span·class="p"·data-group-id="6365789921-7">}</span><span·class="p">,</span><span·class="w">203 ···········</span><span·class="p"·data-group-id="7872940987-7">{</span><span·class="s">&quot;Rachel&quot;</span><span·class="p">,</span><span·class="mi">5</span><span·class="p"·data-group-id="7872940987-7">}</span><span·class="p">,</span><span·class="w">
204 ···········</span><span·class="p"·data-group-id="6365789921-8">{</span><span·class="s">&quot;Piper&quot;</span><span·class="p">,</span><span·class="mi">6</span><span·class="p"·data-group-id="6365789921-8">}</span><span·class="p">,</span><span·class="w">204 ···········</span><span·class="p"·data-group-id="7872940987-8">{</span><span·class="s">&quot;Piper&quot;</span><span·class="p">,</span><span·class="mi">6</span><span·class="p"·data-group-id="7872940987-8">}</span><span·class="p">,</span><span·class="w">
205 ···········</span><span·class="p"·data-group-id="6365789921-9">{</span><span·class="s">&quot;Prue&quot;</span><span·class="p">,</span><span·class="mi">7</span><span·class="p"·data-group-id="6365789921-9">}</span><span·class="p">,</span><span·class="w">205 ···········</span><span·class="p"·data-group-id="7872940987-9">{</span><span·class="s">&quot;Prue&quot;</span><span·class="p">,</span><span·class="mi">7</span><span·class="p"·data-group-id="7872940987-9">}</span><span·class="p">,</span><span·class="w">
206 ···········</span><span·class="p"·data-group-id="6365789921-10">{</span><span·class="s">&quot;Louise&quot;</span><span·class="p">,</span><span·class="mi">8</span><span·class="p"·data-group-id="6365789921-10">}</span><span·class="p"·data-group-id="6365789921-4">]</span><span·class="p"·data-group-id="63657[·...·truncated·by·diffoscope;·len:·5,·SHA:·aff4c1ded20e580e4fe3176482f4450731fe6b9095369ce9a91e0356aed7d9c6·...·]-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="7872940987-10">{</span><span·class="s">&quot;Louise&quot;</span><span·class="p">,</span><span·class="mi">8</span><span·class="p"·data-group-id="7872940987-10">}</span><span·class="p"·data-group-id="7872940987-4">]</span><span·class="p"·data-group-id="78729[·...·truncated·by·diffoscope;·len:·5,·SHA:·20672430ea27a80d30ca7ecc8329f83013025d6fa215c679de64f779314ca5c0·...·]-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="0459812815-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="3076186578-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="0459812815-1">)</span><span·class="p">.</span><span·class="w">208 ······ORDER·BY·FIRSTNAME&quot;</span><span·class="p"·data-group-id="3076186578-1">)</span><span·class="p">.</span><span·class="w">
209 ····</span><span·class="p"·data-group-id="0459812815-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="0459812815-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:·6aaf2d44660b7a5c81ad380d653362a40b60f5efde9a298cc5095c0b2634aa4f·...·]-3">]</span><span·class="p">,</span><span·class="w">209 ····</span><span·class="p"·data-group-id="3076186578-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="3076186578-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:·73a68efe6f08bea12eb0c3900390af030e82521ce234f31d87c629e116db3ded·...·]-3">]</span><span·class="p">,</span><span·class="w">
210 ··········</span><span·class="p"·data-group-id="0459812815-4">[</span><span·class="p"·data-group-id="0459812815-5">{</span><span·class="s">&quot;Jane&quot;</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="0459812815-5">}</span><span·class="p">,</span><span·class="w">210 ··········</span><span·class="p"·data-group-id="3076186578-4">[</span><span·class="p"·data-group-id="3076186578-5">{</span><span·class="s">&quot;Jane&quot;</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="3076186578-5">}</span><span·class="p">,</span><span·class="w">
211 ···········</span><span·class="p"·data-group-id="0459812815-6">{</span><span·class="s">&quot;Louise&quot;</span><span·class="p">,</span><span·class="mi">8</span><span·class="p"·data-group-id="0459812815-6">}</span><span·class="p">,</span><span·class="w">211 ···········</span><span·class="p"·data-group-id="3076186578-6">{</span><span·class="s">&quot;Louise&quot;</span><span·class="p">,</span><span·class="mi">8</span><span·class="p"·data-group-id="3076186578-6">}</span><span·class="p">,</span><span·class="w">
212 ···········</span><span·class="p"·data-group-id="0459812815-7">{</span><span·class="s">&quot;Monica&quot;</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="0459812815-7">}</span><span·class="p">,</span><span·class="w">212 ···········</span><span·class="p"·data-group-id="3076186578-7">{</span><span·class="s">&quot;Monica&quot;</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="3076186578-7">}</span><span·class="p">,</span><span·class="w">
213 ···········</span><span·class="p"·data-group-id="0459812815-8">{</span><span·class="s">&quot;Piper&quot;</span><span·class="p">,</span><span·class="mi">6</span><span·class="p"·data-group-id="0459812815-8">}</span><span·class="p">,</span><span·class="w">213 ···········</span><span·class="p"·data-group-id="3076186578-8">{</span><span·class="s">&quot;Piper&quot;</span><span·class="p">,</span><span·class="mi">6</span><span·class="p"·data-group-id="3076186578-8">}</span><span·class="p">,</span><span·class="w">
214 ···········</span><span·class="p"·data-group-id="0459812815-9">{</span><span·class="s">&quot;Prue&quot;</span><span·class="p">,</span><span·class="mi">7</span><span·class="p"·data-group-id="0459812815-9">}</span><span·class="p">,</span><span·class="w">214 ···········</span><span·class="p"·data-group-id="3076186578-9">{</span><span·class="s">&quot;Prue&quot;</span><span·class="p">,</span><span·class="mi">7</span><span·class="p"·data-group-id="3076186578-9">}</span><span·class="p">,</span><span·class="w">
215 ···········</span><span·class="p"·data-group-id="0459812815-10">{</span><span·class="s">&quot;Rachel&quot;</span><span·class="p">,</span><span·class="mi">5</span><span·class="p"·data-group-id="0459812815-10">}</span><span·class="p"·data-group-id="0459812815-4">]</span><span·class="p"·data-group-id="04598[·...·truncated·by·diffoscope;·len:·5,·SHA:·b29e466d3f1c2abd49e2137cc67e094885e64fe31af00216eeb47c41e2118233·...·]-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="3076186578-10">{</span><span·class="s">&quot;Rachel&quot;</span><span·class="p">,</span><span·class="mi">5</span><span·class="p"·data-group-id="3076186578-10">}</span><span·class="p"·data-group-id="3076186578-4">]</span><span·class="p"·data-group-id="30761[·...·truncated·by·diffoscope;·len:·5,·SHA:·5442d3279bab89b4a375e2140b830dc87d76691295324fe3a43040dd331eef91·...·]-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="8172975365-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="8172975365-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="6180878366-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="6180878366-1">)</span><span·class="p">.</span><span·class="w">
218 ······</span><span·class="p"·data-group-id="8172975365-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="mi">6</span><span·class="p"·data-group-id="8172975365-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="6180878366-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="mi">6</span><span·class="p"·data-group-id="6180878366-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="2591094080-1">(</span><span·class="n">Ref</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2591094080-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:·4a996a9d7d7504d51146c60bd40a630a1f5b14640638aa5074bd9e4e32441f46·...·]-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="9499541418-1">(</span><span·class="n">Ref</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9499541418-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:·852922528395b09d5194c9389a5030d848b63aa1a14c0f030c449609048d45fc·...·]-1">)</span><span·class="p">.</span><span·class="w">
221 ····</span><span·class="p"·data-group-id="2591094080-3">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="2591094080-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="2591094080-4">]</span><span·class="p">,</span><span·class="p"·data-group-id="2591094080-5">[</span><span·class="p"·data-group-id="2591094080-6">{</span><span·class="s">&quot;Monica&quot;</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="2591094080-6">}</span><span·class="p">,</span><span·class="p"·data-group-id="2591094080-7">{</span><span·class="s">&quot;Rachel&quot;</span><span·class="p">,</span><span·class="mi">5</span><span·class="p"·data-group-id="2591094080-7">}</span><span·class="p">,</span><span·class="p"·data-group-id="2591094080-8">{</span><span·class="s">&quot;Piper&quot;</span><span·class="p">,</span><span·class="mi">6</span><span·class="p"·data-group-id="2591094080-8">}</span><span·class="p"·data-group-id="2591094080-5">]</span><span·class="p"·data-group-id="2591094080-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="6787118345-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="6787118345-1">)</span><span·class="p">.</span><span·class="w"> 
222 ······</span><span·class="p"·data-group-id="6787118345-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="6787118345-3">[</span><span·class="s">&quot;FIRSTNAME&quot;</span><span·class="p">,</span><span·class="s">&[·...·truncated·by·diffoscope;·len:·1390,·SHA:·25d9a0ded2539529131cf28d4821ac76a13132cf6b71357aacb9b1be0e7373ef·...·]-1">)</span><span·class="p">.</span><span·class="w">221 ····</span><span·class="p"·data-group-id="9499541418-3">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="9499541418-4">[</span><span·class="s">&quot;FIRSTNAME&quot;</span><span·class="p">,</span><span·class="s">&qu[·...·truncated·by·diffoscope;·len:·1426,·SHA:·b5bbd8797df0cd1bd27caf507edcad70509d9ed1b7507290262f509184b97672·...·]-1">)</span><span·class="p">.</span><span·class="w">
 222 ······</span><span·class="p"·data-group-id="1290682516-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="1290682516-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="1290682516-3">]</span><span·class="p">,</span><span·class="p"·data-group-id="1290682516-4">[</span><span·class="p"·data-group-id="1290682516-5">{</span><span·class="s">&quot;Prue&quot;</span><span·class="p">,</span><span·class="mi">7</span><span·class="p"·data-group-id="1290682516-5">}</span><span·class="p">,</span><span·class="p"·data-group-id="1290682516-6">{</span><span·class="s">&quot;Louise&quot;</span><span·class="p">,</span><span·class="mi">8</span><span·class="p"·data-group-id="1290682516-6">}</span><span·class="p"·data-group-id="1290682516-4">]</span><span·class="p"·data-group-id="1290682516-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="4168664071-1">(</span><span·class="n">Ref</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4168664071-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="4168664071-2">}</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">2</span><span·class="p"·data-group-id="4168664071-1">)</span><span·class="p">.</span><span·class="w">
223 ······</span><span·class="p"·data-group-id="6025680678-3">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="6025680678-4">[</span><span·class="s">&quot;FIRSTNAME&quot;</span><span·class="p">,</span><span·class="s">&quot;NR&quot;</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·1167,·SHA:·32d176b6572e871dd3437a6aa555aeb2a02d939ec2b523fba0ea7439240c277a·...·]-1">)</span><span·class="p">.</span><span·class="w">223 ······</span><span·class="p"·data-group-id="4168664071-3">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="4168664071-4">[</span><span·class="s">&quot;FIRSTNAME&quot;</span><span·class="p">,</span><span·class="s">&quot;NR&quot;</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·1167,·SHA:·b4fa4c75b97051495b10825711d4e874c2d99e4cf5ee437d9c7327aeb7f51a3f·...·]-1">)</span><span·class="p">.</span><span·class="w">
224 ····</span><span·class="p"·data-group-id="4837227495-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="4837227495-3">[</span><span·class="s">&quot;FIRSTNAME&quot;</span><span·class="p">,</span><span·class="s">&quot;NR&quot;</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·1351,·SHA:·18b2ff85a04a760bfc141be56f9fd327cfdcfb69bbc4307ae22c12a7226e99a8·...·]-1">)</span><span·class="p">.</span><span·class="w">224 ····</span><span·class="p"·data-group-id="7170618769-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="7170618769-3">[</span><span·class="s">&quot;FIRSTNAME&quot;</span><span·class="p">,</span><span·class="s">&quot;NR&quot;</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·1351,·SHA:·6c21dd1aa1572cdd516bd97df87f15216de19e29c7e92a67789db6d627278c50·...·]-1">)</span><span·class="p">.</span><span·class="w">
225 ······</span><span·class="p"·data-group-id="0532704820-3">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="0532704820-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:·21,·SHA:·c3a15c90d0cc3abcc7b4a23b566d0478efff94092d40933b57d0f9cd0bdf8d4f·...·]-4">]</span><span·class="p">,</span><span·class="w">225 ······</span><span·class="p"·data-group-id="8326982179-3">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="8326982179-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:·21,·SHA:·daa672f02e3296eeab71c3f9a6f61e31a45e8ed7a25c40ebda9a2e5fd3ef88f5·...·]-4">]</span><span·class="p">,</span><span·class="w">
226 ················</span><span·class="p"·data-group-id="0532704820-5">[</span><span·class="p"·data-group-id="0532704820-6">{</span><span·class="s">&quot;Jane&quot;</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="0532704820-6">}</span><span·class="p">,</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·1082,·SHA:·bfe5062d2bff9514232f097d8364aa50d5b24239e4a8486d1b8b3b9db0f3dd32·...·]-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="8326982179-5">[</span><span·class="p"·data-group-id="8326982179-6">{</span><span·class="s">&quot;Jane&quot;</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="8326982179-6">}</span><span·class="p">,</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·1082,·SHA:·c14f9def8b104ce8a05fa42e0c202858a388bb3b10598d0370a10f3fc9eb3992·...·]-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="3975425619-2">[</span><span·class="p"·data-group-id="3975425619-3">{</span><span·class="p"·data-group-id="3975425619-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:·c8a2288c1e2f31e52dddb208f66001ec07a53e58dfcf0409f06e11bfa2a2e24b·...·]-1">)</span><span·class="p">.</span><span·class="w">227 ······</span><span·class="p"·data-group-id="9425131196-2">[</span><span·class="p"·data-group-id="9425131196-3">{</span><span·class="p"·data-group-id="9425131196-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:·245a84c4bf8bab3cbd60236ae01429141b068215d271e90420cd763a3588183d·...·]-1">)</span><span·class="p">.</span><span·class="w">
228 ······</span><span·class="p"·data-group-id="3975425619-6">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="3975425619-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:·b3ad5404501504a2ed30117a28325212df1fb691af4f47c88124adeefd44b2b9·...·]-7">]</span><span·class="p">,</span><span·class="w">228 ······</span><span·class="p"·data-group-id="9425131196-6">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="9425131196-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:·6e1892b9a891c8b2a9b86e141760117d73472b9966daabe26f0222631dc4ab17·...·]-7">]</span><span·class="p">,</span><span·class="w">
229 ················</span><span·class="p"·data-group-id="3975425619-8">[</span><span·class="p"·data-group-id="3975425619-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:·c7489a44aba64f3098594829c79d4921d276fdb9b122798f03180116cf06433a·...·]-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="9425131196-8">[</span><span·class="p"·data-group-id="9425131196-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:·cf8fbcf9b2df114d2c2ecf8314415e75532a7c89d62421acc0cf811421349cef·...·]-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="2531341625-1">(</span><span·class="n">Ref</span><span·class="p"·data-group-id="2531341625-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="7650671132-1">(</span><span·class="n">Ref</span><span·class="p"·data-group-id="7650671132-1">)</span><span·class="p">.</span><span·class="w">
231 ······</span><span·class="ss">ok</span></code></pre><p>Shut·down·the·application.</p><pre><code·class="text">·26·&gt;·odbc:stop().231 ······</span><span·class="ss">ok</span></code></pre><p>Shut·down·the·application.</p><pre><code·class="text">·26·&gt;·odbc:stop().
232 ····=INFO·REPORT====·7-Jan-2004::17:00:59·===232 ····=INFO·REPORT====·7-Jan-2004::17:00:59·===
233 ····application:·odbc233 ····application:·odbc
234 ····exited:·stopped234 ····exited:·stopped
235 ····type:·temporary235 ····type:·temporary
  
236 ····ok</code></pre>236 ····ok</code></pre>
173 KB
./usr/share/doc/erlang-doc/html/lib/odbc-2.15/doc/html/odbc.epub
2.71 KB
zipinfo {}
    
Offset 1, 18 lines modifiedOffset 1, 18 lines modified
1 Zip·file·size:·67293·bytes,·number·of·entries:·161 Zip·file·size:·67288·bytes,·number·of·entries:·16
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Apr-18·14:02·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Apr-18·15:30·mimetype
3 ?rw-r--r--··6.1·unx······710·bx·defN·25-Apr-18·14:02·OEBPS/title.xhtml3 ?rw-r--r--··6.1·unx······710·bx·defN·25-Apr-18·15:30·OEBPS/title.xhtml
4 ?rw-r--r--··6.1·unx····70635·bx·defN·25-Apr-18·14:02·OEBPS/odbc.xhtml4 ?rw-r--r--··6.1·unx····70635·bx·defN·25-Apr-18·15:30·OEBPS/odbc.xhtml
5 ?rw-r--r--··6.1·unx····51061·bx·defN·25-Apr-18·14:02·OEBPS/notes.xhtml5 ?rw-r--r--··6.1·unx····51061·bx·defN·25-Apr-18·15:30·OEBPS/notes.xhtml
6 ?rw-r--r--··6.1·unx·····1245·bx·defN·25-Apr-18·14:02·OEBPS/nav.xhtml6 ?rw-r--r--··6.1·unx·····1245·bx·defN·25-Apr-18·15:30·OEBPS/nav.xhtml
7 ?rw-r--r--··6.1·unx·····2442·bx·defN·25-Apr-18·14:02·OEBPS/introduction.xhtml7 ?rw-r--r--··6.1·unx·····2442·bx·defN·25-Apr-18·15:30·OEBPS/introduction.xhtml
8 ?rw-r--r--··6.1·unx····45354·bx·defN·25-Apr-18·14:02·OEBPS/getting_started.xhtml8 ?rw-r--r--··6.1·unx····45354·bx·defN·25-Apr-18·15:30·OEBPS/getting_started.xhtml
9 ?rw-r--r--··6.1·unx·····8056·bx·defN·25-Apr-18·14:02·OEBPS/error_handling.xhtml9 ?rw-r--r--··6.1·unx·····8056·bx·defN·25-Apr-18·15:30·OEBPS/error_handling.xhtml
10 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Apr-18·14:02·OEBPS/dist/epub-erlang-ESPT6BQV.css10 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Apr-18·15:30·OEBPS/dist/epub-erlang-ESPT6BQV.css
11 ?rw-r--r--··6.1·unx······499·bx·defN·25-Apr-18·14:02·OEBPS/dist/epub-LSJCIYTM.js11 ?rw-r--r--··6.1·unx······499·bx·defN·25-Apr-18·15:30·OEBPS/dist/epub-LSJCIYTM.js
12 ?rw-r--r--··6.1·unx····11572·bx·defN·25-Apr-18·14:02·OEBPS/databases.xhtml12 ?rw-r--r--··6.1·unx····11572·bx·defN·25-Apr-18·15:30·OEBPS/databases.xhtml
13 ?rw-r--r--··6.1·unx·····2032·bx·defN·25-Apr-18·14:02·OEBPS/content.opf13 ?rw-r--r--··6.1·unx·····2032·bx·defN·25-Apr-18·15:30·OEBPS/content.opf
14 ?rw-r--r--··6.1·unx····12172·bx·stor·25-Apr-18·14:02·OEBPS/assets/odbc_app_arc.gif14 ?rw-r--r--··6.1·unx····12172·bx·stor·25-Apr-18·15:30·OEBPS/assets/odbc_app_arc.gif
15 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Apr-18·14:02·OEBPS/assets/logo.png15 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Apr-18·15:30·OEBPS/assets/logo.png
16 ?rw-r--r--··6.1·unx······252·bx·defN·25-Apr-18·14:02·META-INF/container.xml16 ?rw-r--r--··6.1·unx······252·bx·defN·25-Apr-18·15:30·META-INF/container.xml
17 ?rw-r--r--··6.1·unx······162·bx·defN·25-Apr-18·14:02·META-INF/com.apple.ibooks.display-options.xml17 ?rw-r--r--··6.1·unx······162·bx·defN·25-Apr-18·15:30·META-INF/com.apple.ibooks.display-options.xml
18 16·files,·226611·bytes·uncompressed,·64489·bytes·compressed:··71.5%18 16·files,·226611·bytes·uncompressed,·64484·bytes·compressed:··71.5%
85.9 KB
zipdetails --redact --scan --utc {}
Max HTML report size reached
370 B
filetype from file(1)
    
Offset 1, 1 lines modifiedOffset 1, 1 lines modified
1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Apr·18·2025·14:02: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,·Apr·18·2025·15:30:22,·uncompressed·size·20,·method=store
82.3 KB
OEBPS/getting_started.xhtml
Max HTML report size reached
1.22 KB
OEBPS/content.opf
1.19 KB
OEBPS/content.opf
Max HTML report size reached
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
82.2 KB
./usr/share/doc/erlang-doc/html/lib/os_mon-2.10.1/doc/html/os_mon.epub
2.66 KB
zipinfo {}
    
Offset 1, 18 lines modifiedOffset 1, 18 lines modified
1 Zip·file·size:·50284·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-Apr-18·14:01·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Apr-18·15:28·mimetype
3 ?rw-r--r--··6.1·unx······718·bx·defN·25-Apr-18·14:01·OEBPS/title.xhtml3 ?rw-r--r--··6.1·unx······718·bx·defN·25-Apr-18·15:28·OEBPS/title.xhtml
4 ?rw-r--r--··6.1·unx····17153·bx·defN·25-Apr-18·14:01·OEBPS/os_sup.xhtml4 ?rw-r--r--··6.1·unx····17153·bx·defN·25-Apr-18·15:28·OEBPS/os_sup.xhtml
5 ?rw-r--r--··6.1·unx·····3941·bx·defN·25-Apr-18·14:01·OEBPS/os_mon_app.xhtml5 ?rw-r--r--··6.1·unx·····3941·bx·defN·25-Apr-18·15:28·OEBPS/os_mon_app.xhtml
6 ?rw-r--r--··6.1·unx·····9012·bx·defN·25-Apr-18·14:01·OEBPS/nteventlog.xhtml6 ?rw-r--r--··6.1·unx·····9012·bx·defN·25-Apr-18·15:28·OEBPS/nteventlog.xhtml
7 ?rw-r--r--··6.1·unx····51221·bx·defN·25-Apr-18·14:01·OEBPS/notes.xhtml7 ?rw-r--r--··6.1·unx····51221·bx·defN·25-Apr-18·15:28·OEBPS/notes.xhtml
8 ?rw-r--r--··6.1·unx·····1225·bx·defN·25-Apr-18·14:01·OEBPS/nav.xhtml8 ?rw-r--r--··6.1·unx·····1225·bx·defN·25-Apr-18·15:28·OEBPS/nav.xhtml
9 ?rw-r--r--··6.1·unx····25551·bx·defN·25-Apr-18·14:01·OEBPS/memsup.xhtml9 ?rw-r--r--··6.1·unx····25551·bx·defN·25-Apr-18·15:28·OEBPS/memsup.xhtml
10 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Apr-18·14:01·OEBPS/dist/epub-erlang-ESPT6BQV.css10 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Apr-18·15:28·OEBPS/dist/epub-erlang-ESPT6BQV.css
11 ?rw-r--r--··6.1·unx······499·bx·defN·25-Apr-18·14:01·OEBPS/dist/epub-LSJCIYTM.js11 ?rw-r--r--··6.1·unx······499·bx·defN·25-Apr-18·15:28·OEBPS/dist/epub-LSJCIYTM.js
12 ?rw-r--r--··6.1·unx····18738·bx·defN·25-Apr-18·14:01·OEBPS/disksup.xhtml12 ?rw-r--r--··6.1·unx····18738·bx·defN·25-Apr-18·15:28·OEBPS/disksup.xhtml
13 ?rw-r--r--··6.1·unx····22574·bx·defN·25-Apr-18·14:01·OEBPS/cpu_sup.xhtml13 ?rw-r--r--··6.1·unx····22574·bx·defN·25-Apr-18·15:28·OEBPS/cpu_sup.xhtml
14 ?rw-r--r--··6.1·unx·····2044·bx·defN·25-Apr-18·14:01·OEBPS/content.opf14 ?rw-r--r--··6.1·unx·····2044·bx·defN·25-Apr-18·15:28·OEBPS/content.opf
15 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Apr-18·14:01·OEBPS/assets/logo.png15 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Apr-18·15:28·OEBPS/assets/logo.png
16 ?rw-r--r--··6.1·unx······252·bx·defN·25-Apr-18·14:01·META-INF/container.xml16 ?rw-r--r--··6.1·unx······252·bx·defN·25-Apr-18·15:28·META-INF/container.xml
17 ?rw-r--r--··6.1·unx······162·bx·defN·25-Apr-18·14:01·META-INF/com.apple.ibooks.display-options.xml17 ?rw-r--r--··6.1·unx······162·bx·defN·25-Apr-18·15:28·META-INF/com.apple.ibooks.display-options.xml
18 16·files,·173509·bytes·uncompressed,·47530·bytes·compressed:··72.6%18 16·files,·173509·bytes·uncompressed,·47531·bytes·compressed:··72.6%
77.8 KB
zipdetails --redact --scan --utc {}
Max HTML report size reached
370 B
filetype from file(1)
    
Offset 1, 1 lines modifiedOffset 1, 1 lines modified
1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Apr·18·2025·14:01:40,·uncompressed·size·20,·method=store1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Apr·18·2025·15:28:46,·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="0389678612-1">[</span><span·class="mi">0</span><span·class="o">-</span><span·class="mi">9</span><span·class="p"·data-group-id="0389678612-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="6646435743-1">[</span><span·class="mi">0</span><span·class="o">-</span><span·class="mi">9</span><span·class="p"·data-group-id="6646435743-1">]</span><span·class="w">
  
177 </span><span·class="p"·data-group-id="0389678612-2">{</span><span·class="n">D</span><span·class="p"·data-group-id="0389678612-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="6646435743-2">{</span><span·class="n">D</span><span·class="p"·data-group-id="6646435743-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="0389678612-3">{</span><span·class="ss">token</span><span·class="p">,</span><span·class="p"·data-group-id="0389678612-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:·f8d5b10061682973aba35fe82891fac4a03a6c66d009ff4b3b39b984c9f2deee·...·]-3">}</span><span·class="p">.</span><span·class="w">178 ··</span><span·class="p"·data-group-id="6646435743-3">{</span><span·class="ss">token</span><span·class="p">,</span><span·class="p"·data-group-id="6646435743-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:·3e18a979333c4f51c69b2b226a1ab78bd24345f02ab51f73063ce1aa504b10e3·...·]-3">}</span><span·class="p">.</span><span·class="w">
  
179 </span><span·class="p"·data-group-id="0389678612-6">{</span><span·class="n">D</span><span·class="p"·data-group-id="0389678612-6">}</span><span·class="o">+</span><span·class="err">\</span><span·class="p">.</span><span·class="p"·data-group-id="0389678612-7">{</span><span·class="n">D</span><span·class="p"·data-group-id="0389678612-7">}</span><span·class="o">+</span><span·class="p"·data-group-id="0389678612-8">(</span><span·class="p"·data-group-id="0389678612-9">(</span><span·class="n">E</span><span·class="p">|</span><span·class="ss">e</span><span·class="p"·data-group-id="0389678612-9">)</span><span·class="p"·data-group-id="0389678612-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="0389678612-10">)</span><span·class="o">?</span><span·class="p"·data-group-id="0389678612-11">{</span><span·class="n">D</span><span·class="p"·data-group-id="0389678612-11">}</span><span·class="o">+</span><span·class="p"·data-group-id="0389678612-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="0389678612-12">{</span><span·class="ss">token</span><span·class="p">,</span><span·class="p"·data-group-id="0389678612-13">{</span><span·class="nb">float</span><span·class="p">,</span><span·class="n">TokenLine</span><[·...·truncated·by·diffoscope;·len:·452,·SHA:·59a850a807ea322b786cb002d74d280b4909c081b4c1d275e39d7440cda533b5·...·]179 </span><span·class="p"·data-group-id="6646435743-6">{</span><span·class="n">D</span><span·class="p"·data-group-id="6646435743-6">}</span><span·class="o">+</span><span·class="err">\</span><span·class="p">.</span><span·class="p"·data-group-id="6646435743-7">[·...·truncated·by·diffoscope;·len:·894,·SHA:·d7d30fe8be9b846e8db1d2d00af79df6658c8c78aaa1d134651f02d810285146·...·]
 180 ··</span><span·class="p"·data-group-id="6646435743-12">{</span><span·class="ss">token</span><span·class="p">,</span><span·class="p"·data-group-id="6646435743-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="6646435743-14">(</span><span·class="n">TokenChars</span><span·class="p"·data-group-id="6646435743-14">)</span><span·class="p"·data-group-id="6646435743-13">}</span><span·class="p"·data-group-id="6646435743-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="0275341686-1">(</span><span·class="n">InFile</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0275341686-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:·d311042002d3d7ed9e7adced0a94f7d84d3d77da538c0b1134ecd4201260214d·...·]-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="4324198355-1">(</span><span·class="n">InFile</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4324198355-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:·f8423d9ac2da4215f8f9c09d785c9ce78eac5f067583af15ab9481dc95f0fe3f·...·]-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="0819954989-1">(</span><span·class="n">InFile</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0819954989-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:·8f55ad0621c3325b24b9990977c81c56b6199f62d8f7df9b8bfbfacedb4936f8·...·]-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="0526896743-1">(</span><span·class="n">InFile</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0526896743-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:·ef3374d5a06b9de7f00d48f674253696870e0de51f65c0f10b38252485b0d6d4·...·]-1">)</span><span·class="w">
800 ··</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">TokensRet</span></code></pre>800 ··</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">TokensRet</span></code></pre>
801 ··</section>801 ··</section>
802 </section>802 </section>
  
803 ····</div>803 ····</div>
804 ··</section>804 ··</section>
  
135 KB
./usr/share/doc/erlang-doc/html/lib/parsetools-2.6/doc/html/parsetools.epub
2.06 KB
zipinfo {}
    
Offset 1, 14 lines modifiedOffset 1, 14 lines modified
1 Zip·file·size:·44438·bytes,·number·of·entries:·121 Zip·file·size:·44437·bytes,·number·of·entries:·12
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Apr-18·13:58·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Apr-18·15:21·mimetype
3 ?rw-r--r--··6.1·unx····61841·bx·defN·25-Apr-18·13:58·OEBPS/yecc.xhtml3 ?rw-r--r--··6.1·unx····61841·bx·defN·25-Apr-18·15:21·OEBPS/yecc.xhtml
4 ?rw-r--r--··6.1·unx······720·bx·defN·25-Apr-18·13:58·OEBPS/title.xhtml4 ?rw-r--r--··6.1·unx······720·bx·defN·25-Apr-18·15:21·OEBPS/title.xhtml
5 ?rw-r--r--··6.1·unx····31920·bx·defN·25-Apr-18·13:58·OEBPS/notes.xhtml5 ?rw-r--r--··6.1·unx····31920·bx·defN·25-Apr-18·15:21·OEBPS/notes.xhtml
6 ?rw-r--r--··6.1·unx······987·bx·defN·25-Apr-18·13:58·OEBPS/nav.xhtml6 ?rw-r--r--··6.1·unx······987·bx·defN·25-Apr-18·15:21·OEBPS/nav.xhtml
7 ?rw-r--r--··6.1·unx····49472·bx·defN·25-Apr-18·13:58·OEBPS/leex.xhtml7 ?rw-r--r--··6.1·unx····49472·bx·defN·25-Apr-18·15:21·OEBPS/leex.xhtml
8 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Apr-18·13:58·OEBPS/dist/epub-erlang-ESPT6BQV.css8 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Apr-18·15:21·OEBPS/dist/epub-erlang-ESPT6BQV.css
9 ?rw-r--r--··6.1·unx······499·bx·defN·25-Apr-18·13:58·OEBPS/dist/epub-LSJCIYTM.js9 ?rw-r--r--··6.1·unx······499·bx·defN·25-Apr-18·15:21·OEBPS/dist/epub-LSJCIYTM.js
10 ?rw-r--r--··6.1·unx·····1463·bx·defN·25-Apr-18·13:58·OEBPS/content.opf10 ?rw-r--r--··6.1·unx·····1463·bx·defN·25-Apr-18·15:21·OEBPS/content.opf
11 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Apr-18·13:58·OEBPS/assets/logo.png11 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Apr-18·15:21·OEBPS/assets/logo.png
12 ?rw-r--r--··6.1·unx······252·bx·defN·25-Apr-18·13:58·META-INF/container.xml12 ?rw-r--r--··6.1·unx······252·bx·defN·25-Apr-18·15:21·META-INF/container.xml
13 ?rw-r--r--··6.1·unx······162·bx·defN·25-Apr-18·13:58·META-INF/com.apple.ibooks.display-options.xml13 ?rw-r--r--··6.1·unx······162·bx·defN·25-Apr-18·15:21·META-INF/com.apple.ibooks.display-options.xml
14 12·files,·167735·bytes·uncompressed,·42368·bytes·compressed:··74.7%14 12·files,·167735·bytes·uncompressed,·42367·bytes·compressed:··74.7%
68.7 KB
zipdetails --redact --scan --utc {}
Max HTML report size reached
370 B
filetype from file(1)
    
Offset 1, 1 lines modifiedOffset 1, 1 lines modified
1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Apr·18·2025·13:58:48,·uncompressed·size·20,·method=store1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Apr·18·2025·15:21:44,·uncompressed·size·20,·method=store
49.2 KB
OEBPS/yecc.xhtml
Max HTML report size reached
13.5 KB
OEBPS/leex.xhtml
Max HTML report size reached
1.21 KB
OEBPS/content.opf
1.17 KB
OEBPS/content.opf
Max HTML report size reached
49.4 KB
./usr/share/doc/erlang-doc/html/lib/parsetools-2.6/doc/html/yecc.html
    
Offset 158, 16 lines modifiedOffset 158, 16 lines modified
158 <code·class="inline">{Category,·Position,·Symbol}</code>.</p><p>If·a·terminal·symbol·is·the·only·member·of·a·category,·and·the·symbol·name·is158 <code·class="inline">{Category,·Position,·Symbol}</code>.</p><p>If·a·terminal·symbol·is·the·only·member·of·a·category,·and·the·symbol·name·is
159 identical·to·the·category·name,·the·token·format·can·be·<code·class="inline">{Symbol,·Position}</code>.</p><p>A·list·of·tokens·produced·by·the·scanner·should·end·with·a·special159 identical·to·the·category·name,·the·token·format·can·be·<code·class="inline">{Symbol,·Position}</code>.</p><p>A·list·of·tokens·produced·by·the·scanner·should·end·with·a·special
160 <code·class="inline">end_of_input</code>·tuple·which·the·parser·is·looking·for.·The·format·of·this·tuple160 <code·class="inline">end_of_input</code>·tuple·which·the·parser·is·looking·for.·The·format·of·this·tuple
161 should·be·<code·class="inline">{Endsymbol,·EndPosition}</code>,·where·<code·class="inline">Endsymbol</code>·is·an·identifier·that·is161 should·be·<code·class="inline">{Endsymbol,·EndPosition}</code>,·where·<code·class="inline">Endsymbol</code>·is·an·identifier·that·is
162 distinguished·from·all·the·terminal·and·non-terminal·categories·of·the·syntax162 distinguished·from·all·the·terminal·and·non-terminal·categories·of·the·syntax
163 rules.·The·<code·class="inline">Endsymbol</code>·can·be·declared·in·the·grammar·file.</p><p>The·simplest·case·is·to·segment·the·input·string·into·a·list·of·identifiers163 rules.·The·<code·class="inline">Endsymbol</code>·can·be·declared·in·the·grammar·file.</p><p>The·simplest·case·is·to·segment·the·input·string·into·a·list·of·identifiers
164 (atoms)·and·use·those·atoms·both·as·categories·and·values·of·the·tokens.·For164 (atoms)·and·use·those·atoms·both·as·categories·and·values·of·the·tokens.·For
165 example,·the·input·string·<code·class="inline">aaa·bbb·777,·X</code>·may·be·scanned·(tokenized)·as:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="2289525457-1">[</span><span·class="p"·data-group-id="2289525457-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="2289525457-2">}</span><span·class="p">,</span><spa[·...·truncated·by·diffoscope;·len:·1016,·SHA:·74b1cd161b6a1329eb9ca438e6996add53e0b49f93e2e095cfa66cdb1292c5bc·...·]-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="3983572571-1">[</span><span·class="p"·data-group-id="3983572571-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="3983572571-2">}</span><span·class="p">,</span><spa[·...·truncated·by·diffoscope;·len:·1016,·SHA:·be4a6e7ff12099055b9fa3a38c40db841517d17f9208f0c81148f204cd47fd5a·...·]-6">}</span><span·class="p">,</span><span·class="w">
166 ·</span><span·class="p"·data-group-id="2289525457-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="2289525457-7">}</span><span·class="p"·data-group-id="2289525457-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="3983572571-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="3983572571-7">}</span><span·class="p"·data-group-id="3983572571-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.2/doc/html/io.html#scan_erl_form/3"><code·class="inline">io:scan_erl_form/3</code></a>·to·provide·a·scanner·for·Yecc·that169 added·on·top·of·<a·href="../../../../lib/stdlib-6.2.2/doc/html/io.html#scan_erl_form/3"><code·class="inline">io:scan_erl_form/3</code></a>·to·provide·a·scanner·for·Yecc·that
170 tokenizes·grammar·files·before·parsing·them·with·the·Yecc·parser.·A·more·general170 tokenizes·grammar·files·before·parsing·them·with·the·Yecc·parser.·A·more·general
171 approach·to·scanner·implementation·is·to·use·a·scanner·generator·such·as171 approach·to·scanner·implementation·is·to·use·a·scanner·generator·such·as
172 <a·href="leex.html"><code·class="inline">leex</code></a>.</p><h2·id="module-grammar-definition-format"·class="section-heading">172 <a·href="leex.html"><code·class="inline">leex</code></a>.</p><h2·id="module-grammar-definition-format"·class="section-heading">
173 ··<a·href="#module-grammar-definition-format"·class="hover-link">173 ··<a·href="#module-grammar-definition-format"·class="hover-link">
Offset 229, 29 lines modifiedOffset 229, 29 lines modified
229 list·-&gt;·'('·')'.229 list·-&gt;·'('·')'.
230 list·-&gt;·'('·elements·')'.230 list·-&gt;·'('·elements·')'.
231 elements·-&gt;·element.231 elements·-&gt;·element.
232 elements·-&gt;·element·elements.232 elements·-&gt;·element·elements.
233 element·-&gt;·atom.233 element·-&gt;·atom.
234 element·-&gt;·list.</code></pre><p>This·grammar·can·be·used·to·generate·a·parser·which·parses·list·expressions,234 element·-&gt;·list.</code></pre><p>This·grammar·can·be·used·to·generate·a·parser·which·parses·list·expressions,
235 such·as·<code·class="inline">(),·(a),·(peter·charles),·(a·(b·c)·d·(())),·...</code>·provided·that·your235 such·as·<code·class="inline">(),·(a),·(peter·charles),·(a·(b·c)·d·(())),·...</code>·provided·that·your
236 scanner·tokenizes,·for·example,·the·input·<code·class="inline">(peter·charles)</code>·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="4437654662-1">[</span><span·class="p"·data-group-id="4437654662-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="4437654662-2">}</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·920,·SHA:·de3f2f6c7d99a7c9aa5437adbaeb20fc1ded1bf0b84b3756734333277fe173c8·...·]-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="5425356454-1">[</span><span·class="p"·data-group-id="5425356454-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="5425356454-2">}</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·920,·SHA:·dfe9831710d33152e60b58f4e153d4c98841426abf695d1f03f6910f8159c3b1·...·]-5">}</span><span·class="p">,</span><span·class="w">
237 ·</span><span·class="p"·data-group-id="4437654662-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="4437654662-6">}</span><span·class="p"·data-group-id="4437654662-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="5425356454-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="5425356454-6">}</span><span·class="p"·data-group-id="5425356454-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="1082039524-1">{</span><span·class="ss">cons</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1082039524-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:·ef79e581895cb90ffa832a143209b2ddaec3bf0e948f91f17a8e3035b2678f84·...·]-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="5429024932-1">{</span><span·class="ss">cons</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5429024932-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:·b02ba20bc1308b58b172c6e49b615c157edc8043ee056f0a66a86c513801789e·...·]-4">}</span><span·class="p">,</span><span·class="w">
250 ····························</span><span·class="p"·data-group-id="1082039524-5">{</span><span·class="ss">cons</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1082039524-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:·bd9215585ff7b49cfbf20023a7a6cd9d0322f4dd00b9c7e9991ce56e3b2d51b6·...·]-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="5429024932-5">{</span><span·class="ss">cons</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5429024932-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:·a029422a17910ccf7798fe727d03c5da2c75e8a2b325ff52dc6d3b6767f4fa65·...·]-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="3469167393-1">(</span><span·class="n">Grammarfile</span><span·class="p"·data-group-id="3469167393-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="7294146235-1">(</span><span·class="n">Grammarfile</span><span·class="p"·data-group-id="7294146235-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="1557915100-1">(</span><span·class="nc">myscanner</span><span·class="p">:</span><span·class="nf">scan</span><span·class="p"·data-group-id="1557915100-2">(</span><span·class="n">Inport</span><span·class="p"·data-group-id="1557915100-2">)</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·9334304d74e23b2c12dfb0ef3bf98c5519cb34b8e38e509a86f3f9f2a76244b3·...·]-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="4663672225-1">(</span><span·class="nc">myscanner</span><span·class="p">:</span><span·class="nf">scan</span><span·class="p"·data-group-id="4663672225-2">(</span><span·class="n">Inport</span><span·class="p"·data-group-id="4663672225-2">)</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·cced56777e37c8787606fc2857b394c73f102c1fe9792e685c3b26e655ec7e4b·...·]-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.2/doc/html/io.html#format/3"><code·class="inline">io:format/3</code></a>.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>By·default,·the·parser·that·was·generated·will·not·print·out·error·messages·to283 <code·class="inline">Module:format_error(Message)</code>·and·printed·with·<a·href="../../../../lib/stdlib-6.2.2/doc/html/io.html#format/3"><code·class="inline">io:format/3</code></a>.</p><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>By·default,·the·parser·that·was·generated·will·not·print·out·error·messages·to
284 the·screen.·The·user·will·have·to·do·this·either·by·printing·the·returned284 the·screen.·The·user·will·have·to·do·this·either·by·printing·the·returned
285 error·messages,·or·by·inserting·tests·and·print·instructions·in·the·Erlang285 error·messages,·or·by·inserting·tests·and·print·instructions·in·the·Erlang
286 code·associated·with·the·syntax·rules·of·the·grammar·file.</p></section><p>It·is·also·possible·to·make·the·parser·ask·for·more·input·tokens·when·needed·if286 code·associated·with·the·syntax·rules·of·the·grammar·file.</p></section><p>It·is·also·possible·to·make·the·parser·ask·for·more·input·tokens·when·needed·if
287 the·following·call·format·is·used:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">myparser</span><span·class="p">:</span><span·class="nf">parse_and_scan</span><span·class="p"·data-group-id="3724713142-1">(</span><span·class="p"·data-group-id="3724713142-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="3724713142-2">}</span><span·class="p"·data-group-id="3724713142-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="3724713142-3">(</span><span·class="p"·data-group-id="3724713142-4">{</span><span·class="n">Mod</span><span·class="p">,</span[·...·truncated·by·diffoscope;·len:·386,·SHA:·8bc20d8effd726fb78dc71b6234b38e431a7164647a3e22f78ecfba41758b8a2·...·]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="4277820161-1">(</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·258,·SHA:·3f8ed42231805f3a1b73cacc90179e5c60ee4543539ea5323cb9d0d01f0c9973·...·]
 288 </span><span·class="nc">myparser</span><span·class="p">:</span><span·class="nf">parse_and_scan</span><span·class="p"·data-group-id="4277820161-3">(</span><span·class="p"·data-group-id="4277820161-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="4277820161-4">}</span><span·class="p"·data-group-id="4277820161-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.6/doc/html/erlang.html#apply/2"><code·class="inline">apply(Function,·Args)</code></a>·or289 <a·href="../../../../erts-15.2.6/doc/html/erlang.html#apply/2"><code·class="inline">apply(Function,·Args)</code></a>·or
290 <a·href="../../../../erts-15.2.6/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.6/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="7731986965-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="7731986965-1">}</span><span·class="w">293 following:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="9281916442-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="9281916442-1">}</span><span·class="w">
294 </span><span·class="p"·data-group-id="7731986965-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="7731986965-2">}</span><span·class="w">294 </span><span·class="p"·data-group-id="9281916442-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="9281916442-2">}</span><span·class="w">
295 </span><span·class="p"·data-group-id="7731986965-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="7731[·...·truncated·by·diffoscope;·len:·6,·SHA:·773ee5baed14899da5cf74053c8615978cc7c9fd6278598deb0fcacc023e31f8·...·]-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="9281916442-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="9281[·...·truncated·by·diffoscope;·len:·6,·SHA:·111ee7a9a037794b809f16b5ecffa55c5121057b24db113baa535504071eb61a·...·]-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="2685948160-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="2685948160-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="0522154479-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="0522154479-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="2685948160-2">{</span><span·class="ss">rule</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2685948160-3">[</span><span·class="ss">&#39;$1&#39;</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</sp[·...·truncated·by·diffoscope;·len:·80,·SHA:·7f636a03b3e98c13fc51c1a7144bddaf947ab495a7ada56f37476fdde152b778·...·]-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="0522154479-2">{</span><span·class="ss">rule</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0522154479-3">[</span><span·class="ss">&#39;$1&#39;</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</sp[·...·truncated·by·diffoscope;·len:·80,·SHA:·60d31089d3b2920f9d1cd02792f2ae7bb75c8e2ac37ecde69df22dd312a9b8a7·...·]-3">]</span><span·class="p">,</span><span·class="w">
347 ········</span><span·class="ss">&#39;$4&#39;</span><span·class="p"·data-group-id="2685948160-2">}</span><span·class="p">.</span><span·class="w">347 ········</span><span·class="ss">&#39;$4&#39;</span><span·class="p"·data-group-id="0522154479-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="2685948160-4">[</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="2685948160-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="0522154479-4">[</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="0522154479-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="2685948160-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="2685948160-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="0522154479-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="0522154479-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="2685948160-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="2685948160-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="0522154479-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="0522154479-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="2685948160-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="0522154479-7">{</span><span·class="ss">erlang_code</span><span·class="p">,</span><span·class="w">
353 ·················</span><span·class="p"·data-group-id="2685948160-8">[</span><span·class="p"·data-group-id="2685948160-9">{</span><span·class="ss">atom</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;$undefined[·...·truncated·by·diffoscope;·len:·159,·SHA:·2d035e98d7a5f060b2659ea04301776aa78d6a07423975b4b144e90460b7da14·...·]-7">}</span><span·class="p">.</span><span·class="w">353 ·················</span><span·class="p"·data-group-id="0522154479-8">[</span><span·class="p"·data-group-id="0522154479-9">{</span><span·class="ss">atom</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">&#39;$undefined[·...·truncated·by·diffoscope;·len:·159,·SHA:·b9d7f7687f4a6a936d860b615c43444dd0becf46a61b5c686dfdfabefe679173·...·]-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="2685948160-10">[</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="2685948160-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="0522154479-10">[</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="0522154479-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="2685948160-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="2685948160-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="0522154479-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="0522154479-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="2685948160-12">(</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="2685948160-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="0522154479-12">(</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="0522154479-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="2685948160-13">(</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="2685948160-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="0522154479-13">(</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="0522154479-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="2685948160-14">(</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="2685948160-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="0522154479-14">(</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="0522154479-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="2685948160-15">(</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="2685948160-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="0522154479-15">(</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="0522154479-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="2685948160-16">{</span><span·class="nf">value_of</span><span·class="p"·data-group-id="2685948160-17">(</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="2685948160-17">)</span><span·class="p">,</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·207,·SHA:·445156df698cd0590eca906019ee5783aa0f3dbdce76e769192337e8e0b69fe5·...·]-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="0522154479-16">{</span><span·class="nf">value_of</span><span·class="p"·data-group-id="0522154479-17">(</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="0522154479-17">)</span><span·class="p">,</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·207,·SHA:·ad6492eac2b3ffa28d6ffcb8c5329d653f355e3567bd44e6b54478aefbe6ab05·...·]-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="2685948160-19">{</span><span·class="nf">value_of</span><span·class="p"·data-group-id="2685948160-20">(</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="2685948160-20">)</span><span·class="p">,</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·207,·SHA:·ad5f98651db17e5b92dd5372accc8d51ec44f577787c9da87b8642b2bb485de7·...·]-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="0522154479-19">{</span><span·class="nf">value_of</span><span·class="p"·data-group-id="0522154479-20">(</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="0522154479-20">)</span><span·class="p">,</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·207,·SHA:·a57fee0d070c96e01c6d00c78a339d4f21084afba2c6d065ce0f2f8a88885fda·...·]-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="2685948160-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="2685948160-23">(</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·70,·SHA:·86fc997a2845c04816103d2693f2c095da0b20c76cac566944dd0a5fe2477003·...·]-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="0522154479-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="0522154479-23">(</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·70,·SHA:·eb0ef3434568b9be0a525a5ffbeed4c3a8c9ff9326489df4e0f5bab742e4249e·...·]-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="2685948160-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="2685948160-25">(</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·66,·SHA:·f6671add18e45577422ef126ac4582e075966f771f205c164b6905b5ccec872a·...·]-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="0522154479-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="0522154479-25">(</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·66,·SHA:·73c9307cdd2147112b6f241f63cd439db79ac2f5bd94b30680d890f9365da6c0·...·]-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="2685948160-26">(</span><span·class="n">Token</span><span·class="p"·data-group-id="2685948160-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="0522154479-26">(</span><span·class="n">Token</span><span·class="p"·data-group-id="0522154479-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="2685948160-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="2685948160-27">)</span><span·class="p">.</span><span·class="w">372 ····</span><span·class="nf">element</span><span·class="p"·data-group-id="0522154479-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="0522154479-27">)</span><span·class="p">.</span><span·class="w">
373 </span><span·class="nf">line_of</span><span·class="p"·data-group-id="2685948160-28">(</span><span·class="n">Token</span><span·class="p"·data-group-id="2685948160-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="0522154479-28">(</span><span·class="n">Token</span><span·class="p"·data-group-id="0522154479-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="2685948160-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="2685948160-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="0522154479-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="0522154479-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:·99830·bytes,·number·of·entries:·141 Zip·file·size:·99838·bytes,·number·of·entries:·14
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Apr-18·14:01·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Apr-18·15:29·mimetype
3 ?rw-r--r--··6.1·unx···125467·bx·defN·25-Apr-18·14:01·OEBPS/using_public_key.xhtml3 ?rw-r--r--··6.1·unx···125467·bx·defN·25-Apr-18·15:29·OEBPS/using_public_key.xhtml
4 ?rw-r--r--··6.1·unx······726·bx·defN·25-Apr-18·14:01·OEBPS/title.xhtml4 ?rw-r--r--··6.1·unx······726·bx·defN·25-Apr-18·15:29·OEBPS/title.xhtml
5 ?rw-r--r--··6.1·unx····64574·bx·defN·25-Apr-18·14:01·OEBPS/public_key_records.xhtml5 ?rw-r--r--··6.1·unx····64574·bx·defN·25-Apr-18·15:29·OEBPS/public_key_records.xhtml
6 ?rw-r--r--··6.1·unx·····4198·bx·defN·25-Apr-18·14:01·OEBPS/public_key_app.xhtml6 ?rw-r--r--··6.1·unx·····4198·bx·defN·25-Apr-18·15:29·OEBPS/public_key_app.xhtml
7 ?rw-r--r--··6.1·unx···198860·bx·defN·25-Apr-18·14:01·OEBPS/public_key.xhtml7 ?rw-r--r--··6.1·unx···198860·bx·defN·25-Apr-18·15:29·OEBPS/public_key.xhtml
8 ?rw-r--r--··6.1·unx····83769·bx·defN·25-Apr-18·14:01·OEBPS/notes.xhtml8 ?rw-r--r--··6.1·unx····83769·bx·defN·25-Apr-18·15:29·OEBPS/notes.xhtml
9 ?rw-r--r--··6.1·unx·····1240·bx·defN·25-Apr-18·14:01·OEBPS/nav.xhtml9 ?rw-r--r--··6.1·unx·····1240·bx·defN·25-Apr-18·15:29·OEBPS/nav.xhtml
10 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Apr-18·14:01·OEBPS/dist/epub-erlang-ESPT6BQV.css10 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Apr-18·15:29·OEBPS/dist/epub-erlang-ESPT6BQV.css
11 ?rw-r--r--··6.1·unx······499·bx·defN·25-Apr-18·14:01·OEBPS/dist/epub-LSJCIYTM.js11 ?rw-r--r--··6.1·unx······499·bx·defN·25-Apr-18·15:29·OEBPS/dist/epub-LSJCIYTM.js
12 ?rw-r--r--··6.1·unx·····1854·bx·defN·25-Apr-18·14:01·OEBPS/content.opf12 ?rw-r--r--··6.1·unx·····1854·bx·defN·25-Apr-18·15:29·OEBPS/content.opf
13 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Apr-18·14:01·OEBPS/assets/logo.png13 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Apr-18·15:29·OEBPS/assets/logo.png
14 ?rw-r--r--··6.1·unx······252·bx·defN·25-Apr-18·14:01·META-INF/container.xml14 ?rw-r--r--··6.1·unx······252·bx·defN·25-Apr-18·15:29·META-INF/container.xml
15 ?rw-r--r--··6.1·unx······162·bx·defN·25-Apr-18·14:01·META-INF/com.apple.ibooks.display-options.xml15 ?rw-r--r--··6.1·unx······162·bx·defN·25-Apr-18·15:29·META-INF/com.apple.ibooks.display-options.xml
16 14·files,·502020·bytes·uncompressed,·97356·bytes·compressed:··80.6%16 14·files,·502020·bytes·uncompressed,·97364·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,·Apr·18·2025·14:01: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,·Apr·18·2025·15:29:24,·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="2174466975-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="21744[·...·truncated·by·diffoscope;·len:·58,·SHA:·a4e0c28a6026d0377b47b53ce11bd0044a98df7e151ec539e59a439432f3f5a4·...·]-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="8065067837-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="80650[·...·truncated·by·diffoscope;·len:·58,·SHA:·1b0e6983633c6bf8e905426cf101ca01b98c0375a472015129ea65a6471a1037·...·]-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="2174466975-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:·e4e2113f4ccf837ea0716f77aa1a0e24f90eccbd16b0b358d4ab214a67d0a1f3·...·]-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="8065067837-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:·3b952194ca50a1bb5d569158619236a5a9eba2e61785812d9636c9cde4397f29·...·]-3">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
3196 ·············</span><span·class="p"·data-group-id="2174466975-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="2174466975-8">{</span><span·class="p"·data-group-id="21[·...·truncated·by·diffoscope;·len:·61,·SHA:·f4995f304f7aba6891eab1326f00a1cf1e7a9973e741dc7f9ffd575182244202·...·]-7">}</span><span·class="p">,</span><span·class="w">3196 ·············</span><span·class="p"·data-group-id="8065067837-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="8065067837-8">{</span><span·class="p"·data-group-id="80[·...·truncated·by·diffoscope;·len:·61,·SHA:·34445e8dbf3dc76901b96bfa5b336c6e018d2584bff63df507f1e66fdc0ca6c5·...·]-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="2174466975-9">(</span><span·class="p"·data-group-id="2174466975-9">)</span><span·class="p"·data-group-id="2174466975-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="8065067837-9">(</span><span·class="p"·data-group-id="8065067837-9">)</span><span·class="p"·data-group-id="8065067837-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
3198 ··</span><span·class="p"·data-group-id="2174466975-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:·6871b2457371505d753376874ff2c87a4ea443cae7706e7ffda3013642ca684f·...·]-10">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">3198 ··</span><span·class="p"·data-group-id="8065067837-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:·a04034d76975d88c6a7a11728e083260bf45a702dd49f7251a872913f72c8fe8·...·]-10">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
3199 ··</span><span·class="p"·data-group-id="2174466975-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:·b84aea26a88b1acdb9bffa658837da04554f8d80da30f17086267b6b1058d2e0·...·]-12">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">3199 ··</span><span·class="p"·data-group-id="8065067837-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:·97cec4e8080bcda5c2f500a96c851d44c946f8fff37abca75e8273186ae04e7b·...·]-12">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
3200 ··</span><span·class="p"·data-group-id="2174466975-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:·2d8074d07fad9ab901028b7664b59efc38160e70809a0b72d9164b04ccf04618·...·]-14">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">3200 ··</span><span·class="p"·data-group-id="8065067837-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:·b7dfcf38b41de21e95b50f15cb5fe90ff57135cd7f2e529d5bc13137e2c1d579·...·]-14">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
3201 ··</span><span·class="p"·data-group-id="2174466975-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:·17b0c6d2e1d655a17e2a815faea524ed80add0e90d32c8711fbeb9dc9006b218·...·]-2">}</span><span·class="p">,</span><span·class="w">3201 ··</span><span·class="p"·data-group-id="8065067837-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:·768063c167e2a0197a21e161f26c2cf18e042f4247d7f48757d67703b060948a·...·]-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="7235627694-3">(</span><span·class="p"·data-group-id="7235627694-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="6388343468-3">(</span><span·class="p"·data-group-id="6388343468-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="7235627694-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:·c115846e41e18fdb645edc8c1cf751c386a6c53f6212eeefc869f409f06b1d99·...·]-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="6388343468-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:·66f2977658fe1ff863189c47a0491c3e4510bd520e6a2f0df951afb8b47133f7·...·]-4">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
3204 ·············</span><span·class="p"·data-group-id="7235627694-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="7235627694-9">{</span><span·class="p"·data-group-id="72[·...·truncated·by·diffoscope;·len:·61,·SHA:·a43acdfce7144d869114aa77373daf045dcc58fa811d3636f305be46c5892a03·...·]-8">}</span><span·class="p">,</span><span·class="w">3204 ·············</span><span·class="p"·data-group-id="6388343468-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="6388343468-9">{</span><span·class="p"·data-group-id="63[·...·truncated·by·diffoscope;·len:·61,·SHA:·a2ad99dfe24e7f28fee8940b2a49ce377b576a541b38ebbd895175552127c648·...·]-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="7235627694-10">(</span><span·class="p"·data-group-id="7235627694-10">)</span><span·class="p"·data-group-id="7235627694-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="6388343468-10">(</span><span·class="p"·data-group-id="6388343468-10">)</span><span·class="p"·data-group-id="6388343468-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
3206 ··</span><span·class="p"·data-group-id="7235627694-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:·f134aa061da6fcfbfb38b739c6ec2e41232ad2a51d7cf60edc25862b67244853·...·]-11">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">3206 ··</span><span·class="p"·data-group-id="6388343468-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:·4235305efe21d8ba97b4cf38bba951ad5d37da76a0a776e9b540d2c2ee9b6fe1·...·]-11">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
3207 ··</span><span·class="p"·data-group-id="7235627694-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:·b7502dc4612d329a936009cf6f18d094bc61861ba99be0e2a5829278afe6d639·...·]-13">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">3207 ··</span><span·class="p"·data-group-id="6388343468-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:·9ff022d29b3cf91deb45dc17a362ee64ff43bcab09a9b27dc7d759f5eefd552c·...·]-13">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
3208 ··</span><span·class="p"·data-group-id="7235627694-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:·efdab0bec99f2312587719e5238feb8598bf0b8321ac2143610a10765c5aeee2·...·]-15">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">3208 ··</span><span·class="p"·data-group-id="6388343468-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:·f9553c4d5d67b26f150f7c3559e8ee8be52a6de81f608c746eee63ea4f5170ef·...·]-15">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
3209 ··</span><span·class="p"·data-group-id="7235627694-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:·3b81473d33b548cf728718bb689b0321296bc5312bdb18dfb1a0baa86e15ab54·...·]-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="6388343468-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:·eb4baba34721704a47fc8b860145385d810493069bd44d980d6994370c1116ad·...·]-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="8867681786-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="8867681786-2">(</span><span·class="p"·data-group-id="8867681786-2">)</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="n">FQDN</span><span·class="p">:</span><span·class="p">:</span><span·class="nf">string</span><span·class="p"·data-group-id="8867681786-3">(</span><span·class="p"·data-group-id="8867681786-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="8867681786-4">{</span><span·class="ss">dNSName</span><span·class="p">,</span><span·class="nf">string</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·509,·SHA:·9cb749f6079f8accfcff9c668798edc97f11520c8fde594574241ea70d2da579·...·]</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="8361376379-1[·...·truncated·by·diffoscope;·len:·532,·SHA:·e18d205b879577f8f0052231debbc551b8c711428c5fbf519c0db8c5d234b255·...·]</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="8361376379-4">{</span><span·class="ss">dNSName</span><span·class="p">,</span><span·class="nf">string</span><span·class="p"·data-group-id="8361376379-5">(</span><span·class="p"·data-group-id="8361376379-5">)</span><span·class="p"·data-group-id="8361376379-4">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="8361376379-6">{</span><span·class="ss">uniformResourceIdentifier</span><span·class="p">,</span><span·class="nf">string</span><span·class="p"·data-group-id="8361376379-7">(</span><span·class="p"·data-group-id="8361376379-7">)</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
3375 ·················</span><span·class="p"·data-group-id="8867681786-8">{</span><span·class="ss">iPAddress</span><span·class="p">,</span><span·class="nf">list</span><span·class="p"·data-group-id="8867681786-9">(</span><span·class="nf">byte</span><span·class="p"·data-group-id="8867681786-10">(</span><span·class="p"[·...·truncated·by·diffoscope;·len:·952,·SHA:·a3db1c54bbd7c04fa22276c801f928be86836aee07ea06d994f77f52226d623d·...·]-1">)</span></code></pre><p>This·function·replaces·the·default·host·name·matching·rules.·The·fun·should3375 ·················</span><span·class="p"·data-group-id="8361376379-8">{</span><span·class="ss">iPAddress</span><span·class="p">,</span><span·class="nf">list</span><span·class="p"·data-group-id="8361376379-9">(</span><span·class="nf">byte</span><span·class="p"·data-group-id="8361376379-10">(</span><span·class="p"[·...·truncated·by·diffoscope;·len:·952,·SHA:·eee2ef530e128532d18c720613109fd96818871648500267fd4c23f18449bfd6·...·]-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.6/doc/html/erlang.html#t:term/0">term</a>()}·|3561 ····································{revocation_status_undetermined,·Reason·::·<a·href="../../../../erts-15.2.6/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="2987253343-1">(</span><span·class="o">#</span><span·class="ss">&#39;DistributionPoint&#39;</span><span·class="p"·data-group-id="2987253343-2">{</span><span·class="p"·data-group-id="2987253343-2">}</span><span·class="p">,</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·215,·SHA:·364bda35856b74a83f34efe4da68c86e9103a211af704c37b1c0e34c8ee1bce9·...·]-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="3503899979-1">(</span><span·class="o">#</span><span·class="ss">&#39;DistributionPoint&#39;</span><span·class="p"·data-group-id="3503899979-2">{</span><span·class="p"·data-group-id="3503899979-2">}</span><span·class="p">,</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·215,·SHA:·14dc2e124a0c0a5dd88c977d7306f182a98ec44c165d168623e443f833b93a17·...·]-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="2987253343-4">{</span><span·class="p"·data-group-id="2987253343-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="3503899979-4">{</span><span·class="p"·data-group-id="3503899979-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="5401437635-1">(</span><span·class="o">#</span><span·class="ss">&#39;DistributionPoint&#39;</span><span·class="p"·data-group-id="5401437635-2">{</span><span·class="p"·data-group-id="5401437635-2">}</span><span·class="p">,</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·162,·SHA:·5463bdf778727f1ff295d81b978eb0f826991ddae2bfee8ca39821158f66443f·...·]-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="7809007700-1">(</span><span·class="o">#</span><span·class="ss">&#39;DistributionPoint&#39;</span><span·class="p"·data-group-id="7809007700-2">{</span><span·class="p"·data-group-id="7809007700-2">}</span><span·class="p">,</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·162,·SHA:·ad4e0813eee1fe3c366112ae1743eaba301c45e7f28bca85bba7183a1851407c·...·]-3">}</span><span·class="p">,</span><span·class="w">
3570 ····</span><span·class="p"·data-group-id="5401437635-4">{</span><span·class="ss">rdnSequence</span><span·class="p">,</span><span·class="p"·data-group-id="5401437635-5">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="5401437635-6">{</span><span·class="p"·data-group-id="5401437635-6">}</span><span·class="p"·data-group-id="5401437635-5">]</span><span·class="p"·data-group-id="5401437635-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="5401437635-7">(</span><span·class="p"·data-group-id="5401437635-7">)</span><span·class="p"·data-group-id="5401437635-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w"> 
3571 ··</span><span·class="p"·data-group-id="5401437635-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="5401437635-9">{</sp[·...·truncated·by·diffoscope;·len:·394,·SHA:·31791029b0f7290e0c49247d808d411eb5b6c8ea7f2ab53cfb4a81cd62018c03·...·]3570 ····</span><span·class="p"·data-group-id="7809007700-4">{</span><span·class="ss">rdnSequence</span><span·class="p">,</span><span·class="p"·data-group-id="7809007700-5">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><sp[·...·truncated·by·diffoscope;·len:·592,·SHA:·e9a1c6db7dc77ce33f617156ccbb175a695ca4776c056846a05c6bc2333b8c09·...·]
 3571 ··</span><span·class="p"·data-group-id="7809007700-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="7809007700-9">{</span><span·class="p"·data-group-id="7809007700-9">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7809007700-10">[</span><span·class="ss">der_encoded</span><span·class="p"·data-group-id="7809007700-10">]</span><span·class="p"·data-group-id="7809007700-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="9184575662-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:·3044464982a546da2257962f073fcc8f8a181b93fb804893d6bb5a6eb9bbd9a0·...·]-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="3395944008-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:·7631223eb8743db8cd465da7d63ca65a948fdbc7dc19ea4ee1fdc2c0872f4d49·...·]-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="8546449840-1">[</span><span·class="o">#</span><span·class="ss">&#39;Extension&#39;</span><span·class="p"·data-group-id="8546449840-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="1654042828-1">[</span><span·class="o">#</span><span·class="ss">&#39;Extension&#39;</span><span·class="p"·data-group-id="1654042828-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="8546449840-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="8546449840-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="1654042828-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="1654042828-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="8546449840-2">}</span><span·class="p">,</span><span·class="w">3908 ··············</span><span·class="ss">critical</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">false</span><span·class="p"·data-group-id="1654042828-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="8546449840-4">{</span><span·class="ss">extnID</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">?</span><span·class="ss">&#39;id-ce-basicConstraints&#39;</span><span·class="p">,</span><span·class="w">3909 </span><span·class="o">#</span><span·class="ss">&#39;Extension&#39;</span><span·class="p"·data-group-id="1654042828-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="8546449840-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="8546449840-5">}</span><span·class="p">,</span><span·class="w">3910 ·············</span><span·class="ss">extnValue</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">&#39;BasicConstraints&#39;</span><span·class="p"·data-group-id="1654042828-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="1654042828-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="8546449840-4">}</span><span·class="p"·data-group-id="8546449840-1">]</span></code></pre><p>Default·extensions·included·in·the·server·peer·cert·if·not·otherwise·specified3911 ·············</span><span·class="ss">critical</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">true</span><span·class="p"·data-group-id="1654042828-4">}</span><span·class="p"·data-group-id="1654042828-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="3129158514-1">[</span><span·class="o">#</span><span·class="ss">&#39;Extension&#39;</span><span·class="p"·data-group-id="3129158514-2">{</span><span·class="ss">extnID</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">?</span><span·class="ss">&#39;id-ce-keyUsage&#39;</span><span·class="p">,</span><span·class="w">3912 are:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="8270673506-1">[</span><span·class="o">#</span><span·class="ss">&#39;Extension&#39;</span><span·class="p"·data-group-id="8270673506-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="3129158514-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="3129158514-3">]</span><span·class="p">,</span><span·class="w">3913 ··············</span><span·class="ss">extnValue</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="8270673506-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="8270673506-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="3129158514-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="8270673506-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="3129158514-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="8270673506-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="3129158514-5">[</span><span·class="p"·data-group-id="3129158514-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="3129158514-6">}</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·6fe009d4599a62d1254f7be37f1c374b4ab790e1e7f201906b819a9ea00e79c4·...·]-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="8270673506-5">[</span><span·class="p"·data-group-id="8270673506-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="8270673506-6">}</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·fb216815eee2cbb357ebe3709f964abe0eca68f7599bb55e6b6662d56ab08628·...·]-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="3129158514-4">}</span><span·class="p"·data-group-id="3129158514-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="8270673506-4">}</span><span·class="p"·data-group-id="8270673506-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="0327985280-1">(</span><span·class="s">&quot;public_key/include/public_key.hrl&quot;</span><span·class="p"·data-group-id="0327985280-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="7941448008-1">(</span><span·class="s">&quot;public_key/include/public_key.hrl&quot;</span><span·class="p"·data-group-id="7941448008-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="2764836090-1">(</span><span·class="p"·data-group-id="2764836090-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="2764836090-2">(</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·231,·SHA:·7eda7b513e6ad0f9b06eac4be9e2cc97cee02e395675a8af2c2cb7327b39e668·...·]-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="8607575014-1">(</span><span·class="p"·data-group-id="8607575014-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="8607575014-2">(</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·231,·SHA:·6edca1d1b8e06f16d7bd40499cb81a0ae3ce23ca1ce2854585bb434ee2c56e66·...·]-3">)</span><span·class="w">
  
140 </span><span·class="nf">utc_time</span><span·class="p"·data-group-id="2764836090-4">(</span><span·class="p"·data-group-id="2764836090-4">)</span><span·class="w">··</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="2764836090-5">{</span><span·class="ss">utcTime</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·113,·SHA:·810d22a6c7b4f303135e177cdd98f48b528677ff91c1dacf1caba4848c3872b6·...·]-5">}</span><span·class="w">140 </span><span·class="nf">utc_time</span><span·class="p"·data-group-id="8607575014-4">(</span><span·class="p"·data-group-id="8607575014-4">)</span><span·class="w">··</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="8607575014-5">{</span><span·class="ss">utcTime</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·113,·SHA:·94a0df4f64cdbf835b87fad3d0d830f3e244ce5ad60e72a500ab55dbbac20372·...·]-5">}</span><span·class="w">
  
141 </span><span·class="nf">general_time</span><span·class="p"·data-group-id="2764836090-6">(</span><span·class="p"·data-group-id="2764836090-6">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="2764836090-7">{</span><span·class="ss">generalTime</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·118,·SHA:·903925d17983b88d485a1f45c817a1d370fa1a60378b3cedc4041dbcddd26349·...·]-7">}</span><span·class="w">141 </span><span·class="nf">general_time</span><span·class="p"·data-group-id="8607575014-6">(</span><span·class="p"·data-group-id="8607575014-6">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="8607575014-7">{</span><span·class="ss">generalTime</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·118,·SHA:·ad525d5a77d04362a8eb48cda6f9300f72879b19845f1f6d3d33f7c5994b4667·...·]-7">}</span><span·class="w">
  
142 </span><span·class="nf">general_name</span><span·class="p"·data-group-id="2764836090-8">(</span><span·class="p"·data-group-id="2764836090-8">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="2764836090-9">{</span><span·class="ss">rfc822Name</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·205,·SHA:·51e0e84cf81b9b407bbe95ce7c5597c2ee723f6363cfbf19a98c95b6dc151a49·...·]-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="8607575014-8">(</span><span·class="p"·data-group-id="8607575014-8">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="8607575014-9">{</span><span·class="ss">rfc822Name</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·205,·SHA:·3e1ab88787c67281d7784ffca239a23ff8e27bd8c1d9314c15f5048a69633f82·...·]-9">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
  
143 ·················</span><span·class="p"·data-group-id="2764836090-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="2764836090-12">(</span><span·class="p"·data-group-id="2764836090-12">)</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·25,·SHA:·df6df15cdcf62b2b57017aafb4e932a4cb6e3c02683d6e891d7926b572b9c130·...·]-11">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">143 ·················</span><span·class="p"·data-group-id="8607575014-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="8607575014-12">(</span><span·class="p"·data-group-id="8607575014-12">)</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·25,·SHA:·e0779f6ddc46aa4e3d109f86fa5bd13ac37dfc2924eb12ab601eda7616f7070b·...·]-11">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
  
144 ·················</span><span·class="p"·data-group-id="2764836090-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="2764836090-14">(</span><span·class="p"·data-group-id="2764836090-14">)</span><span·class="w">·</span><span·class="p">|</span><span·class="w">144 ·················</span><span·class="p"·data-group-id="8607575014-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="8607575014-14">(</span><span·class="p"·data-group-id="8607575014-14">)</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
  
145 ·················</span><span·class="p"·data-group-id="2764836090-15">{</span><span·class="ss">directoryName</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2764836090-16">{</span><span·class="ss">rdnSequence</span><span·class="p">,</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·379,·SHA:·1c322212a57b4efe7036a98f528b8c626c01a8f71e4f239bb459ba675530fb4a·...·]-15">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">145 ·················</span><span·class="p"·data-group-id="8607575014-15">{</span><span·class="ss">directoryName</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8607575014-16">{</span><span·class="ss">rdnSequence</span><span·class="p">,</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·379,·SHA:·58f917ee5d33b0366e7321382823787ca0c0774774432b82fcb66ae40788cd6b·...·]-15">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
  
146 ·················</span><span·class="p"·data-group-id="2764836090-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="2764836090-20">(</span><span·class="p"·data-group-id="2764836090-20">)</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·300ac94af63e80883b91b3e8db84f3401e30a2cdaf4250b0643532a90f07685b·...·]-19">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">146 ·················</span><span·class="p"·data-group-id="8607575014-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="8607575014-20">(</span><span·class="p"·data-group-id="8607575014-20">)</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·0e119e51d526669575552a6c5c35dae668e17b4b500ffe4b40da8a39e68f0f41·...·]-19">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
  
147 ·················</span><span·class="p"·data-group-id="2764836090-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="2764836090-22">(</span><span·class="p"·data-group-id="2764836090-22">)</span><sp[·...·truncated·by·diffoscope;·len:·232,·SHA:·fa41ecf50de9cc26f9784e1e2ebba9ce59d2f1ba4cddd5f7025782111c71e228·...·]-21">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">147 ·················</span><span·class="p"·data-group-id="8607575014-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="8607575014-22">(</span><span·class="p"·data-group-id="8607575014-22">)</span><sp[·...·truncated·by·diffoscope;·len:·232,·SHA:·42138e09f461871d54fee121814b48d036eb1edfa07c804c017b61b2c5a1a92e·...·]-21">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
  
148 ·················</span><span·class="p"·data-group-id="2764836090-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="2764836090-25">(</span><span·class="p"·data-group-id="2764836090-25">)</spa[·...·truncated·by·diffoscope;·len:·43,·SHA:·7658589d86b36055974988396c679bb937940d8db77199a8d0dc7168d2d7d15c·...·]-24">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">148 ·················</span><span·class="p"·data-group-id="8607575014-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="8607575014-25">(</span><span·class="p"·data-group-id="8607575014-25">)</spa[·...·truncated·by·diffoscope;·len:·43,·SHA:·3b211f731dfffc528d82b2f0c2373cad91e1c1d0904002455488c325dc899dd5·...·]-24">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
  
149 ·················</span><span·class="p"·data-group-id="2764836090-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="2764836090-27">(</span><span·class="p"·data-group-id="2764836090-27">)</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·ebab049eb5a0dbad44cc1522ac2392cf081acf8f54bed77cd5e7b8ec65b4169b·...·]-26">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">149 ·················</span><span·class="p"·data-group-id="8607575014-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="8607575014-27">(</span><span·class="p"·data-group-id="8607575014-27">)</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·47e65002bb00302e60b40f06c7a7f19d792cf432418de7f591a3252264c9732d·...·]-26">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
  
150 ·················</span><span·class="p"·data-group-id="2764836090-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="2764836090-29">(</span><span·class="p"·data-group-id="2764836090-29">)</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·ebab049eb5a0dbad44cc1522ac2392cf081acf8f54bed77cd5e7b8ec65b4169b·...·]-28">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">150 ·················</span><span·class="p"·data-group-id="8607575014-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="8607575014-29">(</span><span·class="p"·data-group-id="8607575014-29">)</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·47e65002bb00302e60b40f06c7a7f19d792cf432418de7f591a3252264c9732d·...·]-28">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
  
151 ·················</span><span·class="p"·data-group-id="2764836090-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="2764836090-31">(</span><span·class="p"·data-group-id="2764836090-31">)</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·25,·SHA:·df6df15cdcf62b2b57017aafb4e932a4cb6e3c02683d6e891d7926b572b9c130·...·]-30">}</span><span·class="w">151 ·················</span><span·class="p"·data-group-id="8607575014-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="8607575014-31">(</span><span·class="p"·data-group-id="8607575014-31">)</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·25,·SHA:·e0779f6ddc46aa4e3d109f86fa5bd13ac37dfc2924eb12ab601eda7616f7070b·...·]-30">}</span><span·class="w">
  
152 </span><span·class="nf">special_string</span><span·class="p"·data-group-id="2764836090-32">(</span><span·class="p"·data-group-id="2764836090-32">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="2764836090-33">{</span><span·class="ss">teletexString</span><span·class="p">[·...·truncated·by·diffoscope;·len:·211,·SHA:·3477e105c903321684279f60d41bed42ab9e412a61879945bd1db6335cd6939f·...·]-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="8607575014-32">(</span><span·class="p"·data-group-id="8607575014-32">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="8607575014-33">{</span><span·class="ss">teletexString</span><span·class="p">[·...·truncated·by·diffoscope;·len:·211,·SHA:·0f5f36fbde7bd4c90956a3900c453ea9d4fa5fe1c8da314abfb72b3c2d2be12f·...·]-33">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
153 ·153 ·
154 ···················</span><span·class="p"·data-group-id="2764836090-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="2764836090-36">(</span><span·class="p"·data-group-id="2764836090-36">)</span><span·cl[·...·truncated·by·diffoscope;·len:·33,·SHA:·dd60948036d971c93001bf82b51a9b5ce50aa7e441937f74d8d45a91a4d2e837·...·]-35">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">154 ···················</span><span·class="p"·data-group-id="8607575014-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="8607575014-36">(</span><span·class="p"·data-group-id="8607575014-36">)</span><span·cl[·...·truncated·by·diffoscope;·len:·33,·SHA:·7c0e89e900b37d95b26af60d18f6341e261c5b8697ee23ac708bdf759ec12705·...·]-35">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
  
155 ···················</span><span·class="p"·data-group-id="2764836090-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="2764836090-38">(</span><span·class="p"·data-group-id="2764836090-38">)</span><span·cl[·...·truncated·by·diffoscope;·len:·33,·SHA:·dd60948036d971c93001bf82b51a9b5ce50aa7e441937f74d8d45a91a4d2e837·...·]-37">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">155 ···················</span><span·class="p"·data-group-id="8607575014-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="8607575014-38">(</span><span·class="p"·data-group-id="8607575014-38">)</span><span·cl[·...·truncated·by·diffoscope;·len:·33,·SHA:·7c0e89e900b37d95b26af60d18f6341e261c5b8697ee23ac708bdf759ec12705·...·]-37">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
  
156 ···················</span><span·class="p"·data-group-id="2764836090-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="2764836090-40">(</span><span·class="p"·data-group-id="2764836090-40">)</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·ed2ddd33725f48a29d7c33dbf7d9d8f64d70b99a43df853f05847ff2e82b9125·...·]-39">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">156 ···················</span><span·class="p"·data-group-id="8607575014-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="8607575014-40">(</span><span·class="p"·data-group-id="8607575014-40">)</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·f80adc27b79875d02cb8db24ca92dfe66070393826be3628ac6341b3b5efb0da·...·]-39">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
  
157 ···················</span><span·class="p"·data-group-id="2764836090-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="2764836090-42">(</span><span·class="p"·data-group-id="2764836090-42">)</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·ebab049eb5a0dbad44cc1522ac2392cf081acf8f54bed77cd5e7b8ec65b4169b·...·]-41">}</span><span·class="w">157 ···················</span><span·class="p"·data-group-id="8607575014-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="8607575014-42">(</span><span·class="p"·data-group-id="8607575014-42">)</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·47e65002bb00302e60b40f06c7a7f19d792cf432418de7f591a3252264c9732d·...·]-41">}</span><span·class="w">
  
158 </span><span·class="nf">dist_reason</span><span·class="p"·data-group-id="2764836090-43">(</span><span·class="p"·data-group-id="2764836090-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="8607575014-43">(</span><span·class="p"·data-group-id="8607575014-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="2764836090-44">(</span><span·class="p"·data-group-id="2764836090-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="2764836090-45">(</spa[·...·truncated·by·diffoscope;·len:·43,·SHA:·7658589d86b36055974988396c679bb937940d8db77199a8d0dc7168d2d7d15c·...·]-45">)</span><span·class="w">160 </span><span·class="n">OID_macro</span><span·class="p"·data-group-id="8607575014-44">(</span><span·class="p"·data-group-id="8607575014-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="8607575014-45">(</spa[·...·truncated·by·diffoscope;·len:·43,·SHA:·3b211f731dfffc528d82b2f0c2373cad91e1c1d0904002455488c325dc899dd5·...·]-45">)</span><span·class="w">
  
161 </span><span·class="n">OID_name</span><span·class="p"·data-group-id="2764836090-46">(</span><span·class="p"·data-group-id="2764836090-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="2764836090-47">(</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·0a84474fcb0ec4971fbcc117e9cb221b7abad9524f863da388c9c178a440f434·...·]-47">)</span></code></pre><h2·id="rsa"·class="section-heading">161 </span><span·class="n">OID_name</span><span·class="p"·data-group-id="8607575014-46">(</span><span·class="p"·data-group-id="8607575014-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="8607575014-47">(</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·b2956df711f16278062638b590e468e17fc72e9584a2554350afdfd6892d040b·...·]-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="8991434235-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="6634782064-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="8991434235-1">}</span><span·class="p">.</span><span·class="w">172 ··</span><span·class="p"·data-group-id="6634782064-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="8991434235-2">{</span><span·class="w">173 </span><span·class="o">#</span><span·class="ss">&#39;RSAPrivateKey&#39;</span><span·class="p"·data-group-id="6634782064-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="8991434235-2">}</span><span·class="p">.</span><span·class="w">184 ··</span><span·class="p"·data-group-id="6634782064-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="8991434235-3">{</span><span·class="w">185 </span><span·class="o">#</span><span·class="ss">&#39;OtherPrimeInfo&#39;</span><span·class="p"·data-group-id="6634782064-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="8991434235-3">}</span><span·class="p">.</span><span·class="w">189 ··</span><span·class="p"·data-group-id="6634782064-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="8991434235-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="6634782064-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="8991434235-4">}</span><span·class="p">.</span><span·class="w">195 ··</span><span·class="p"·data-group-id="6634782064-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="8991434235-5">{</span><span·class="w">196 </span><span·class="o">#</span><span·class="ss">&#39;HashAlgorithm&#39;</span><span·class="p"·data-group-id="6634782064-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="8991434235-5">}</span><span·class="p">.</span><span·class="w">199 ··</span><span·class="p"·data-group-id="6634782064-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="8991434235-6">{</span><span·class="w">200 </span><span·class="o">#</span><span·class="ss">&#39;MaskGenAlgorithm&#39;</span><span·class="p"·data-group-id="6634782064-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="8991434235-6">}</span><span·class="p">.</span></code></pre><h2·id="dsa"·class="section-heading">203 ··</span><span·class="p"·data-group-id="6634782064-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="0891186161-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="0800872708-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="0891186161-1">}</span><span·class="p">.</span><span·class="w">217 ··</span><span·class="p"·data-group-id="0800872708-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="0891186161-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="0800872708-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="0891186161-2">}</span><span·class="p">.</span></code></pre><h2·id="ecdsa-and-eddsa"·class="section-heading">222 ··</span><span·class="p"·data-group-id="0800872708-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="9506016305-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="9506016305-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·215,·SHA:·0c824d5f5b8678ca6fb391c96a41c423e7726075f041b6a4e062942f5570dc61·...·]-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="8328523628-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="8328523628-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·215,·SHA:·9a26d3bf9b44b8dbab5e44a58b1efcfbad63eb27a26288ad6d47e08d00e4ab69·...·]-2">)</span><span·class="p">.</span><span·class="w">
152 </span><span·class="p"·data-group-id="9506016305-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9506016305-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:·d29f477e80f6766310481ed5f7937588e5a4e57b66f09a5d644c64fc0190fd2e·...·]-2">)</span><span·class="p">.</span><span·class="w">152 </span><span·class="p"·data-group-id="8328523628-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="8328523628-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:·ce64790a75cc54dcd4992914f869526430ebf2e6038743bf526d069aa8fad14e·...·]-2">)</span><span·class="p">.</span><span·class="w">
153 </span><span·class="p"·data-group-id="7281524617-3">[</span><span·class="p"·data-group-id="7281524617-4">{</span><span·class="ss">&#39;DSAPrivateKey&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="7281524617-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="0544702732-3">[</span><span·class="p"·data-group-id="0544702732-4">{</span><span·class="ss">&#39;DSAPrivateKey&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="0544702732-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="7281524617-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="0544702732-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="7281524617-4">}</span><span·class="p"·data-group-id="7281524617-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:·8577d1138492bb0665e6a03bc867501cbec1864449d0ad458a0142fde947a326·...·]-1">)</span><span·class="p">.</span><span·class="w">156 ····················</span><span·class="ss">not_encrypted</span><span·class="p"·data-group-id="0544702732-4">}</span><span·class="p"·data-group-id="0544702732-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:·139deb2a9f982118f63887d6b7e13d6dca3fc54e1e7dd7d91582d3e2bf435459·...·]-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="1480306545-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="6873763143-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="1480306545-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="6873763143-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="1147757145-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="1147757145-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·215,·SHA:·529dcb759b9e32b9dd35ec5a805175ce56d860aebea81fae1bc28e1807b53a86·...·]-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="5329660939-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="5329660939-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·215,·SHA:·51125d0d5eda28c71876393247d1e0c9e6c1b5f56b680c83b3691fc85dcd4474·...·]-2">)</span><span·class="p">.</span><span·class="w">
169 </span><span·class="p"·data-group-id="1147757145-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="1147757145-4">&lt;&lt;</span><span·class="s">&quot;Bag·Attribute&quot;</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><spa[·...·truncated·by·diffoscope;·len:·714,·SHA:·cd04a43cc43959157f9efb48717165645c19db1b8cb8a1ede5f38f09b6e82fe0·...·]-2">)</span><span·class="p">.</span><span·class="w">169 </span><span·class="p"·data-group-id="5329660939-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="5329660939-4">&lt;&lt;</span><span·class="s">&quot;Bag·Attribute&quot;</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><spa[·...·truncated·by·diffoscope;·len:·714,·SHA:·0a15e1c09ee6667579a0508d74325f95e84963df4929ce6545e9604c8808276e·...·]-2">)</span><span·class="p">.</span><span·class="w">
170 </span><span·class="p"·data-group-id="4883671042-3">[</span><span·class="p"·data-group-id="4883671042-4">{</span><span·class="ss">&#39;RSAPrivateKey&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="4883671042-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="8876261350-3">[</span><span·class="p"·data-group-id="8876261350-4">{</span><span·class="ss">&#39;RSAPrivateKey&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="8876261350-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="4883671042-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="8876261350-5">&gt;&gt;</span><span·class="p">,</span><span·class="w">
173 ··················</span><span·class="p"·data-group-id="4883671042-6">{</span><span·class="s">&quot;DES-EDE3-CBC&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="4883671042-7">&lt;&lt;</span><span·class="s">&quot;kÙeø¼pµL&quot;</span><span·class="p"·data-group-id="4883671042-7">&gt;&gt;</span>[·...·truncated·by·diffoscope;·len:·774,·SHA:·2621ece13a36ae43ae71cfd010f89d533417f7212e381dc36502f33b8528d3d7·...·]-1">)</span><span·class="p">.</span><span·class="w">173 ··················</span><span·class="p"·data-group-id="8876261350-6">{</span><span·class="s">&quot;DES-EDE3-CBC&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="8876261350-7">&lt;&lt;</span><span·class="s">&quot;kÙeø¼pµL&quot;</span><span·class="p"·data-group-id="8876261350-7">&gt;&gt;</span>[·...·truncated·by·diffoscope;·len:·774,·SHA:·d1ee4ae7fe13bc98ecc8ebed67286b0188d05d21ad5950a7673a7effe4b7a381·...·]-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="8212115845-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="7280719008-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="8212115845-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="7280719008-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="0603370203-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="0603370203-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·219,·SHA:·e6ba15311cd4c279c218ac71e8b2c3cf394008d819df0d62c8cdf51c86825595·...·]-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="6126265257-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="6126265257-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·219,·SHA:·82baba803504de53c66d04dd0acbacf3cdea1b5b728aed8b915aa4870857fbc3·...·]-2">)</span><span·class="p">.</span><span·class="w">
190 </span><span·class="p"·data-group-id="0603370203-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="0603370203-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:·798,·SHA:·fe4ce6c57cb3d06b7b8f37d9cece212ececd01bfd21ad9e18ed542c0e8fb16c1·...·]-2">)</span><span·class="p">.</span><span·class="w">190 </span><span·class="p"·data-group-id="6126265257-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="6126265257-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:·798,·SHA:·b32910643a140fb442cf1c97fc97c703d1e7c35711f6371121f4ab5924ccf61d·...·]-2">)</span><span·class="p">.</span><span·class="w">
191 </span><span·class="p"·data-group-id="3743344855-3">[</span><span·class="p"·data-group-id="3743344855-4">{</span><span·class="ss">&#39;Certificate&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="3743344855-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="9528475331-3">[</span><span·class="p"·data-group-id="9528475331-4">{</span><span·class="ss">&#39;Certificate&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="9528475331-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="3743344855-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="9528475331-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="3743344855-4">}</span><span·class="p">,</span><span·class="w">194 ················</span><span·class="ss">not_encrypted</span><span·class="p"·data-group-id="9528475331-4">}</span><span·class="p">,</span><span·class="w">
195 ·</span><span·class="p"·data-group-id="3743344855-6">{</span><span·class="ss">&#39;Certificate&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="3743344855-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="9528475331-6">{</span><span·class="ss">&#39;Certificate&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="9528475331-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="3743344855-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="9528475331-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="3743344855-6">}</span><span·class="p"·data-group-id="3743344855-3">]</span></code></pre><p>Certificates·can·be·decoded·as·usual:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">2&gt;·</span><span·class="n">Cert</span><span·[·...·truncated·by·diffoscope;·len:·289,·SHA:·70f407b7c5261aacafe57b10eb576034ae8cd3150b70c76753f027558ed7a66e·...·]17-1">)</span><span·class="p">.</span><span·class="w">197 ················</span><span·class="ss">not_encrypted</span><span·class="p"·data-group-id="9528475331-6">}</span><span·class="p"·data-group-id="9528475331-3">]</span></code></pre><p>Certificates·can·be·decoded·as·usual:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">2&gt;·</span><span·class="n">Cert</span><span·[·...·truncated·by·diffoscope;·len:·289,·SHA:·4faec0af1f2cb7917efc955f3a5af6ead11dc81221c09bda2cff201e31b48c8c·...·]17-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="2932163717-2">{</span><span·class="w">198 </span><span·class="o">#</span><span·class="ss">&#39;Certificate&#39;</span><span·class="p"·data-group-id="4622799117-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="2932163717-3">{</span><span·class="w">200 ········</span><span·class="o">#</span><span·class="ss">&#39;TBSCertificate&#39;</span><span·class="p"·data-group-id="4622799117-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="2932163717-4">{</span><span·class="w">203 ················</span><span·class="o">#</span><span·class="ss">&#39;AlgorithmIdentifier&#39;</span><span·class="p"·data-group-id="4622799117-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="2932163717-5">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">840</span><span·class="p">,</span><span·class="mi">113549</span><span·class="p">,</span><span·class="mi">1</span><span·[·...·truncated·by·diffoscope;·len:·131,·SHA:·af22079581a47d725a15f49be9a565b7c69ef4cc9199653cdc8fc609093de85d·...·]17-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="4622799117-5">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">840</span><span·class="p">,</span><span·class="mi">113549</span><span·class="p">,</span><span·class="mi">1</span><span·[·...·truncated·by·diffoscope;·len:·131,·SHA:·ec1cf8f7c5078a5d9495349b3d31da5592bf3f576fd014511f35a257d1b4f02b·...·]17-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="2932163717-6">&lt;&lt;</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="2932163717-6">&gt;&gt;</span><span·class="p"·data-group-id="2932163717-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="4622799117-6">&lt;&lt;</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="4622799117-6">&gt;&gt;</span><span·class="p"·data-group-id="4622799117-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="2932163717-7">{</span><span·class="ss">rdnSequence</span><span·class="p">,</span><span·class="w">207 ················</span><span·class="p"·data-group-id="4622799117-7">{</span><span·class="ss">rdnSequence</span><span·class="p">,</span><span·class="w">
208 ····················</span><span·class="p"·data-group-id="2932163717-8">[</span><span·class="p"·data-group-id="2932163717-9">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="2932163717-10">{</span><span·class="w">208 ····················</span><span·class="p"·data-group-id="4622799117-8">[</span><span·class="p"·data-group-id="4622799117-9">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="4622799117-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="2932163717-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="2932163717-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="4622799117-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="4622799117-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="2932163717-12">&lt;&lt;</span><span·class="mi">19</span><span·class="p">,</span><span·class="mi">8</span><span·class="p">,</span><span·class="mi">101</span><span·class="p">,</span><span·class="mi">114</span><span·class="p">,</span><span·class="mi">108</spa[·...·truncated·by·diffoscope;·len:·408,·SHA:·0b9ce847488587a80eae6853a86b327c59ff2763b614f982c5dad906e8e23f75·...·]17-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="4622799117-12">&lt;&lt;</span><span·class="mi">19</span><span·class="p">,</span><span·class="mi">8</span><span·class="p">,</span><span·class="mi">101</span><span·class="p">,</span><span·class="mi">114</span><span·class="p">,</span><span·class="mi">108</spa[·...·truncated·by·diffoscope;·len:·408,·SHA:·f3554d2440a96bd7b63c1cd161a3717d73575249a69599689d28d6acb3e0fce3·...·]17-9">]</span><span·class="p">,</span><span·class="w">
211 ·····················</span><span·class="p"·data-group-id="2932163717-13">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="2932163717-14">{</span><span·class="w">211 ·····················</span><span·class="p"·data-group-id="4622799117-13">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="4622799117-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="2932163717-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="2932163717-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="4622799117-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="4622799117-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="2932163717-16">&lt;&lt;</span><span·class="mi">19</span><span·class="p">,</span><span·class="mi">10</span><span·class="p">,</span><span·class="mi">69</span><span·class="p">,</span><span·class="mi">114</span><span·class="p">,</span><span·class="mi">108</spa[·...·truncated·by·diffoscope;·len:·508,·SHA:·faf467e6fe51c96a499304f33f1f6e9596577f1713da549c0276f837976d24c0·...·]17-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="4622799117-16">&lt;&lt;</span><span·class="mi">19</span><span·class="p">,</span><span·class="mi">10</span><span·class="p">,</span><span·class="mi">69</span><span·class="p">,</span><span·class="mi">114</span><span·class="p">,</span><span·class="mi">108</spa[·...·truncated·by·diffoscope;·len:·508,·SHA:·1a7f687823aaa8083012274be2ac088c0fd2a7fa3e9c36f6799c852bb25054e7·...·]17-13">]</span><span·class="p">,</span><span·class="w">
214 ·····················</span><span·class="p"·data-group-id="2932163717-17">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="2932163717-18">{</span><span·class="w">214 ·····················</span><span·class="p"·data-group-id="4622799117-17">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="4622799117-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="2932163717-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="2932163717-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="4622799117-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="4622799117-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="2932163717-20">&lt;&lt;</span><span·class="mi">19</span><span·class="p">,</span><span·class="mi">11</span><span·class="p">,</span><span·class="mi">69</span><span·class="p">,</span><span·class="mi">114</span><span·class="p">,</span><span·class="mi">105</spa[·...·truncated·by·diffoscope;·len:·560,·SHA:·fb02699eb5a63f73b72f257ee5fed5f3185f74b0068e324fbab92f339d450c4e·...·]17-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="4622799117-20">&lt;&lt;</span><span·class="mi">19</span><span·class="p">,</span><span·class="mi">11</span><span·class="p">,</span><span·class="mi">69</span><span·class="p">,</span><span·class="mi">114</span><span·class="p">,</span><span·class="mi">105</spa[·...·truncated·by·diffoscope;·len:·560,·SHA:·8e30cbf7b54fb1fc8b36cd3186d9a58b7ff5eb54b81649f668ba887c7f4012d7·...·]17-17">]</span><span·class="p">,</span><span·class="w">
217 ·····················</span><span·class="p"·data-group-id="2932163717-21">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="2932163717-22">{</span><span·class="w">217 ·····················</span><span·class="p"·data-group-id="4622799117-21">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="4622799117-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="2932163717-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="2932163717-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="4622799117-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="4622799117-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="2932163717-24">&lt;&lt;</span><span·class="mi">19</span><span·class="p">,</span><span·class="mi">9</span><span·class="p">,</span><span·class="mi">83</span><span·class="p">,</span><span·class="mi">116</span><span·class="p">,</span><span·class="mi">111</span[·...·truncated·by·diffoscope;·len:·460,·SHA:·3233ee8a9a8c5b28f049f5e756e6cc697f39257f7a21c8a6de88eaea0f7d9961·...·]17-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="4622799117-24">&lt;&lt;</span><span·class="mi">19</span><span·class="p">,</span><span·class="mi">9</span><span·class="p">,</span><span·class="mi">83</span><span·class="p">,</span><span·class="mi">116</span><span·class="p">,</span><span·class="mi">111</span[·...·truncated·by·diffoscope;·len:·460,·SHA:·159746394eb96e93544e85b0eca6778b5af506f2314629676c5d5332af27b35b·...·]17-21">]</span><span·class="p">,</span><span·class="w">
220 ·····················</span><span·class="p"·data-group-id="2932163717-25">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="2932163717-26">{</span><span·class="w">220 ·····················</span><span·class="p"·data-group-id="4622799117-25">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="4622799117-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="2932163717-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="2932163717-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="4622799117-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="4622799117-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="2932163717-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="2932163717-28">&gt;&[·...·truncated·by·diffoscope;·len:·103,·SHA:·75fae19ea525c7b6d16d106e5b71092279ee41fb418f8ca1c87c463f20128308·...·]17-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="4622799117-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="4622799117-28">&gt;&[·...·truncated·by·diffoscope;·len:·103,·SHA:·c639c7dc1d3f91ba86f7e71ab3c70d942a9cd277f0fb6e7db399fbe4a1f2429f·...·]17-25">]</span><span·class="p">,</span><span·class="w">
223 ·····················</span><span·class="p"·data-group-id="2932163717-29">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="2932163717-30">{</span><span·class="w">223 ·····················</span><span·class="p"·data-group-id="4622799117-29">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="4622799117-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="2932163717-31">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">840</span><span·class="p">,</span><span·class="mi">113549</span><span·class="p">,</span><span·class="mi">1</span><span[·...·truncated·by·diffoscope;·len:·132,·SHA:·740bcaa96b784026f5ff5e2dd8f6a3c602b41131a08b1c55f2d560b83f50f4d6·...·]17-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="4622799117-31">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">840</span><span·class="p">,</span><span·class="mi">113549</span><span·class="p">,</span><span·class="mi">1</span><span[·...·truncated·by·diffoscope;·len:·132,·SHA:·1db986a1b7f3f3dc4b9bc282167cc5de66971e53f3628936e71bd6acda832b38·...·]17-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="2932163717-32">&lt;&lt;</span><span·class="mi">22</span><span·class="p">,</span><span·class="mi">22</span><span·class="p">,</span><span·class="mi">112</span><span·class="p">,</span><span·class="mi">101</span><span·class="p">,</span><span·class="mi">116</sp[·...·truncated·by·diffoscope;·len:·614,·SHA:·4364a3fece714d1b8c0705776f34e2548f46f7aa7ec1570aa322f35c8392eb06·...·]17-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="4622799117-32">&lt;&lt;</span><span·class="mi">22</span><span·class="p">,</span><span·class="mi">22</span><span·class="p">,</span><span·class="mi">112</span><span·class="p">,</span><span·class="mi">101</span><span·class="p">,</span><span·class="mi">116</sp[·...·truncated·by·diffoscope;·len:·614,·SHA:·ed9144fcdf324594b510d729f38a9fb968951f3fc8b499004b6c371fffdd4c47·...·]17-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="2932163717-33">{</span><span·class="w">227 ················</span><span·class="o">#</span><span·class="ss">&#39;Validity&#39;</span><span·class="p"·data-group-id="4622799117-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="2932163717-34">{</span><span·class="ss">utcTime</span><span·class="p">,</span><span·class="s">&quot;080109082929Z&quot;</span><span·class="p"·data-group-id="2932163717-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="4622799117-34">{</span><span·class="ss">utcTime</span><span·class="p">,</span><span·class="s">&quot;080109082929Z&quot;</span><span·class="p"·data-group-id="4622799117-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="2932163717-35">{</span><span·class="ss">utcTime</span><span·class="p">,</span><span·class="s">&quot;080208082929Z&quot;</span><span·class="p"·data-group-id="2932163717-35">}</span><span·class="p"·data-group-id="2932163717-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="4622799117-35">{</span><span·class="ss">utcTime</span><span·class="p">,</span><span·class="s">&quot;080208082929Z&quot;</span><span·class="p"·data-group-id="4622799117-35">}</span><span·class="p"·data-group-id="4622799117-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="2932163717-36">{</span><span·class="ss">rdnSequence</span><span·class="p">,</span><span·class="w">231 ················</span><span·class="p"·data-group-id="4622799117-36">{</span><span·class="ss">rdnSequence</span><span·class="p">,</span><span·class="w">
232 ····················</span><span·class="p"·data-group-id="2932163717-37">[</span><span·class="p"·data-group-id="2932163717-38">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="2932163717-39">{</span><span·class="w">232 ····················</span><span·class="p"·data-group-id="4622799117-37">[</span><span·class="p"·data-group-id="4622799117-38">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="4622799117-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="2932163717-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="2932163717-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="4622799117-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="4622799117-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="2932163717-41">&lt;&lt;</span><span·class="mi">19</span><span·class="p">,</span><span·class="mi">8</span><span·class="p">,</span><span·class="mi">101</span><span·class="p">,</span><span·class="mi">114</span><span·class="p">,</span><span·class="mi">108</spa[·...·truncated·by·diffoscope;·len:·408,·SHA:·ce557acfb861721dc3a5fb62a29d9c15d7871ddf819e9799c9f41031c731c46b·...·]17-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="4622799117-41">&lt;&lt;</span><span·class="mi">19</span><span·class="p">,</span><span·class="mi">8</span><span·class="p">,</span><span·class="mi">101</span><span·class="p">,</span><span·class="mi">114</span><span·class="p">,</span><span·class="mi">108</spa[·...·truncated·by·diffoscope;·len:·408,·SHA:·674a99ddaa5a1cf5290eed1c229effa7ec3bcac445ea3b2c2164759c24473b3b·...·]17-38">]</span><span·class="p">,</span><span·class="w">
235 ·····················</span><span·class="p"·data-group-id="2932163717-42">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="2932163717-43">{</span><span·class="w">235 ·····················</span><span·class="p"·data-group-id="4622799117-42">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="4622799117-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="2932163717-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="2932163717-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="4622799117-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="4622799117-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="2932163717-45">&lt;&lt;</span><span·class="mi">19</span><span·class="p">,</span><span·class="mi">10</span><span·class="p">,</span><span·class="mi">69</span><span·class="p">,</span><span·class="mi">114</span><span·class="p">,</span><span·class="mi">108</spa[·...·truncated·by·diffoscope;·len:·508,·SHA:·adfe5d4103a7d202c102b5f162c47e962c4d81f65ad0db324a670fac9ee10d56·...·]17-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="4622799117-45">&lt;&lt;</span><span·class="mi">19</span><span·class="p">,</span><span·class="mi">10</span><span·class="p">,</span><span·class="mi">69</span><span·class="p">,</span><span·class="mi">114</span><span·class="p">,</span><span·class="mi">108</spa[·...·truncated·by·diffoscope;·len:·508,·SHA:·967ed85db7b78e7181c7cdb79424ce67c23817ebb5b73202839a33f8702dbed6·...·]17-42">]</span><span·class="p">,</span><span·class="w">
238 ·····················</span><span·class="p"·data-group-id="2932163717-46">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="2932163717-47">{</span><span·class="w">238 ·····················</span><span·class="p"·data-group-id="4622799117-46">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="4622799117-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="2932163717-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="2932163717-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="4622799117-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="4622799117-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="2932163717-49">&lt;&lt;</span><span·class="mi">19</span><span·class="p">,</span><span·class="mi">11</span><span·class="p">,</span><span·class="mi">69</span><span·class="p">,</span><span·class="mi">114</span><span·class="p">,</span><span·class="mi">105</spa[·...·truncated·by·diffoscope;·len:·556,·SHA:·6645b393b5292bd84e95ca4e3c553b59236956fa4fab75528b368d40055ed13d·...·]17-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="4622799117-49">&lt;&lt;</span><span·class="mi">19</span><span·class="p">,</span><span·class="mi">11</span><span·class="p">,</span><span·class="mi">69</span><span·class="p">,</span><span·class="mi">114</span><span·class="p">,</span><span·class="mi">105</spa[·...·truncated·by·diffoscope;·len:·556,·SHA:·17e511244861dbae6058835401c4ba09c29c1e8d3c60dc57d9bd22753e74633e·...·]17-46">]</span><span·class="p">,</span><span·class="w">
241 ·····················</span><span·class="p"·data-group-id="2932163717-50">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="2932163717-51">{</span><span·class="w">241 ·····················</span><span·class="p"·data-group-id="4622799117-50">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="4622799117-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="2932163717-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="2932163717-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="4622799117-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="4622799117-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="2932163717-53">&lt;&lt;</span><span·class="mi">19</span><span·class="p">,</span><span·class="mi">9</span><span·class="p">,</span><span·class="mi">83</span><span·class="p">,</span><span·class="mi">116</span><span·class="p">,</span><span·class="mi">111</span[·...·truncated·by·diffoscope;·len:·505,·SHA:·f16af174e81ab7391a7edababf374b6ace5a96e5bdb198d248f8c1492e1aae21·...·]17-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="4622799117-53">&lt;&lt;</span><span·class="mi">19</span><span·class="p">,</span><span·class="mi">9</span><span·class="p">,</span><span·class="mi">83</span><span·class="p">,</span><span·class="mi">116</span><span·class="p">,</span><span·class="mi">111</span[·...·truncated·by·diffoscope;·len:·505,·SHA:·7f12b2a288ef2a717b96de74066aea7e8888318c24e8f8e79b78776d93362615·...·]17-50">]</span><span·class="p">,</span><span·class="w">
244 ·····················</span><span·class="p"·data-group-id="2932163717-54">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="2932163717-55">{</span><span·class="w">244 ·····················</span><span·class="p"·data-group-id="4622799117-54">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="4622799117-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="2932163717-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="2932163717-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="4622799117-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="4622799117-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="2932163717-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="2932163717-57">&gt;&[·...·truncated·by·diffoscope;·len:·103,·SHA:·4f0e83529b643abdda6fbe13269825c3558c863a065e38d761a79a428796a77c·...·]17-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="4622799117-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="4622799117-57">&gt;&[·...·truncated·by·diffoscope;·len:·103,·SHA:·24b6fed61d3684405441e61899db97222b3b5b9bfb2101c8dd5ac96469c8b481·...·]17-54">]</span><span·class="p">,</span><span·class="w">
247 ·····················</span><span·class="p"·data-group-id="2932163717-58">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="2932163717-59">{</span><span·class="w">247 ·····················</span><span·class="p"·data-group-id="4622799117-58">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="4622799117-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="2932163717-60">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">840</span><span·class="p">,</span><span·class="mi">113549</span><span·class="p">,</span><span·class="mi">1</span><span[·...·truncated·by·diffoscope;·len:·132,·SHA:·740bcaa96b784026f5ff5e2dd8f6a3c602b41131a08b1c55f2d560b83f50f4d6·...·]17-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="4622799117-60">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">840</span><span·class="p">,</span><span·class="mi">113549</span><span·class="p">,</span><span·class="mi">1</span><span[·...·truncated·by·diffoscope;·len:·132,·SHA:·1db986a1b7f3f3dc4b9bc282167cc5de66971e53f3628936e71bd6acda832b38·...·]17-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="2932163717-61">&lt;&lt;</span><span·class="mi">22</span><span·class="p">,</span><span·class="mi">22</span><span·class="p">,</span><span·class="mi">112</span><span·class="p">,</span><span·class="mi">101</span><span·class="p">,</span><span·class="mi">116</sp[·...·truncated·by·diffoscope;·len:·513,·SHA:·77b2a2a866a49f86f9a22440df23a588f57f36dac25c25df84775ecd78da32d2·...·]17-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="4622799117-61">&lt;&lt;</span><span·class="mi">22</span><span·class="p">,</span><span·class="mi">22</span><span·class="p">,</span><span·class="mi">112</span><span·class="p">,</span><span·class="mi">101</span><span·class="p">,</span><span·class="mi">116</sp[·...·truncated·by·diffoscope;·len:·513,·SHA:·10375ed9cac0a8b823f39a6b531b969be7a305d3237c6bc4153379f9fdf20647·...·]17-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="2932163717-62">{</span><span·class="w">251 ················</span><span·class="o">#</span><span·class="ss">&#39;SubjectPublicKeyInfo&#39;</span><span·class="p"·data-group-id="4622799117-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="2932163717-63">{</span><span·class="w">253 ························</span><span·class="o">#</span><span·class="ss">&#39;AlgorithmIdentifier&#39;</span><span·class="p"·data-group-id="4622799117-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="2932163717-64">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">840</span><span·class="p">,</span><span·class="mi">113549</span><span·class="p">,</span><span·class="mi">1</span><span[·...·truncated·by·diffoscope;·len:·132,·SHA:·468c6b29bb20b4a890a97182f7c2cf53e184686a728e2d1cb9c383deee7dc25e·...·]17-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="4622799117-64">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">840</span><span·class="p">,</span><span·class="mi">113549</span><span·class="p">,</span><span·class="mi">1</span><span[·...·truncated·by·diffoscope;·len:·132,·SHA:·f628b17b1b2eb334a42ff518f8608536b6b5f015566e9dce8ab2ba6d7371f9d8·...·]17-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="2932163717-65">&lt;&lt;</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="2932163717-65">&gt;&gt;</span><span·class="p"·data-group-id="2932163717-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="4622799117-65">&lt;&lt;</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="4622799117-65">&gt;&gt;</span><span·class="p"·data-group-id="4622799117-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="2932163717-66">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="p"·data-group-id="2932163717-67">&lt;&lt;</span><span·class="mi">48</span><span·class="p">,</span><span·class="mi">129</span><span·class="p">,</span><span·class="mi">137</[·...·truncated·by·diffoscope;·len:·809,·SHA:·48d82d54487bb00aedbd50cb628fa1375db6538abc2022fb205fe214593353d6·...·]17-62">}</span><span·class="p">,</span><span·class="w">257 ························</span><span·class="p"·data-group-id="4622799117-66">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="p"·data-group-id="4622799117-67">&lt;&lt;</span><span·class="mi">48</span><span·class="p">,</span><span·class="mi">129</span><span·class="p">,</span><span·class="mi">137</[·...·truncated·by·diffoscope;·len:·809,·SHA:·f99909397c28d5acf2a2ab2b331e3678cb91b90985cbd5908407e93a58d7f9e3·...·]17-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="2932163717-68">[</span><span·class="o">#</span><span·class="ss">&#39;Extension&#39;</span><span·class="p"·data-group-id="2932163717-69">{</span><span·class="w">261 ················</span><span·class="p"·data-group-id="4622799117-68">[</span><span·class="o">#</span><span·class="ss">&#39;Extension&#39;</span><span·class="p"·data-group-id="4622799117-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="2932163717-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="2932163717-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="4622799117-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="4622799117-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="2932163717-71">[</span><span·class="mi">48</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">255</span><span·cla[·...·truncated·by·diffoscope;·len:·84,·SHA:·8b0a01e0691231ac73e8778b26eccdaf1ad11bd2847c8f7e8bba5c8889a79bc5·...·]17-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="4622799117-71">[</span><span·class="mi">48</span><span·class="p">,</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">255</span><span·cla[·...·truncated·by·diffoscope;·len:·84,·SHA:·3db44a234b26fa0dbc0d97c605638ad899867be85fa00110b583c5c2e2555c25·...·]17-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="2932163717-72">{</span><span·class="w">265 ·················</span><span·class="o">#</span><span·class="ss">&#39;Extension&#39;</span><span·class="p"·data-group-id="4622799117-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="2932163717-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="2932163717-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="4622799117-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="4622799117-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="2932163717-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="2932163717-74">]</span><span·c[·...·truncated·by·diffoscope;·len:·32,·SHA:·026b24ceedfe6337e469fc358894936a178dfe80f1b3c4f82fe4fe815d15e63d·...·]17-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="4622799117-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="4622799117-74">]</span><span·c[·...·truncated·by·diffoscope;·len:·32,·SHA:·efe1f598e1a2d0f07f3540ee7fab045830eafa6d9c51af90cd0c60be33c30a66·...·]17-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="2932163717-75">{</span><span·class="w">269 ·················</span><span·class="o">#</span><span·class="ss">&#39;Extension&#39;</span><span·class="p"·data-group-id="4622799117-75">{</span><span·class="w">
270 ·····················</span><span·class="ss">extnID</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="2932163717-76">{</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">29</span><span·class="p">,</span><span·class="mi">14</span><span·class="p"·data-group-id="2932163717-76">}</span><span·class="p">,</span><span·class="w">270 ·····················</span><span·class="ss">extnID</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="4622799117-76">{</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">29</span><span·class="p">,</span><span·class="mi">14</span><span·class="p"·data-group-id="4622799117-76">}</span><span·class="p">,</span><span·class="w">
Max diff block lines reached; 117535/211820 bytes (55.49%) of diff not shown.
454 KB
./usr/share/doc/erlang-doc/html/lib/reltool-1.0.1/doc/html/reltool.epub
2.4 KB
zipinfo {}
    
Offset 1, 16 lines modifiedOffset 1, 16 lines modified
1 Zip·file·size:·62898·bytes,·number·of·entries:·141 Zip·file·size:·62892·bytes,·number·of·entries:·14
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Apr-18·14:01·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Apr-18·15:27·mimetype
3 ?rw-r--r--··6.1·unx······718·bx·defN·25-Apr-18·14:01·OEBPS/title.xhtml3 ?rw-r--r--··6.1·unx······718·bx·defN·25-Apr-18·15:27·OEBPS/title.xhtml
4 ?rw-r--r--··6.1·unx····17091·bx·defN·25-Apr-18·14:01·OEBPS/reltool_usage.xhtml4 ?rw-r--r--··6.1·unx····17091·bx·defN·25-Apr-18·15:27·OEBPS/reltool_usage.xhtml
5 ?rw-r--r--··6.1·unx·····3354·bx·defN·25-Apr-18·14:01·OEBPS/reltool_intro.xhtml5 ?rw-r--r--··6.1·unx·····3354·bx·defN·25-Apr-18·15:27·OEBPS/reltool_intro.xhtml
6 ?rw-r--r--··6.1·unx···193923·bx·defN·25-Apr-18·14:01·OEBPS/reltool_examples.xhtml6 ?rw-r--r--··6.1·unx···193923·bx·defN·25-Apr-18·15:27·OEBPS/reltool_examples.xhtml
7 ?rw-r--r--··6.1·unx····94623·bx·defN·25-Apr-18·14:01·OEBPS/reltool.xhtml7 ?rw-r--r--··6.1·unx····94623·bx·defN·25-Apr-18·15:27·OEBPS/reltool.xhtml
8 ?rw-r--r--··6.1·unx····40198·bx·defN·25-Apr-18·14:01·OEBPS/notes.xhtml8 ?rw-r--r--··6.1·unx····40198·bx·defN·25-Apr-18·15:27·OEBPS/notes.xhtml
9 ?rw-r--r--··6.1·unx·····1198·bx·defN·25-Apr-18·14:01·OEBPS/nav.xhtml9 ?rw-r--r--··6.1·unx·····1198·bx·defN·25-Apr-18·15:27·OEBPS/nav.xhtml
10 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Apr-18·14:01·OEBPS/dist/epub-erlang-ESPT6BQV.css10 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Apr-18·15:27·OEBPS/dist/epub-erlang-ESPT6BQV.css
11 ?rw-r--r--··6.1·unx······499·bx·defN·25-Apr-18·14:01·OEBPS/dist/epub-LSJCIYTM.js11 ?rw-r--r--··6.1·unx······499·bx·defN·25-Apr-18·15:27·OEBPS/dist/epub-LSJCIYTM.js
12 ?rw-r--r--··6.1·unx·····1817·bx·defN·25-Apr-18·14:01·OEBPS/content.opf12 ?rw-r--r--··6.1·unx·····1817·bx·defN·25-Apr-18·15:27·OEBPS/content.opf
13 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Apr-18·14:01·OEBPS/assets/logo.png13 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Apr-18·15:27·OEBPS/assets/logo.png
14 ?rw-r--r--··6.1·unx······252·bx·defN·25-Apr-18·14:01·META-INF/container.xml14 ?rw-r--r--··6.1·unx······252·bx·defN·25-Apr-18·15:27·META-INF/container.xml
15 ?rw-r--r--··6.1·unx······162·bx·defN·25-Apr-18·14:01·META-INF/com.apple.ibooks.display-options.xml15 ?rw-r--r--··6.1·unx······162·bx·defN·25-Apr-18·15:27·META-INF/com.apple.ibooks.display-options.xml
16 14·files,·374254·bytes·uncompressed,·60442·bytes·compressed:··83.9%16 14·files,·374254·bytes·uncompressed,·60436·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,·Apr·18·2025·14:01: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,·Apr·18·2025·15:27:54,·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="1266438980-1">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">9.0</span><span·class="p"·data-group-id="1266438980-1">]</span><span·class="w">·</span><span·class="p"·data-group-id="1266438980-2">[</span><span·class="ss">source</[·...·truncated·by·diffoscope;·len:·1131,·SHA:·0a176f6c260208969197c45619ac2521edcf5e4af407724cab6436cd9259db64·...·]-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="8040881325-1">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">9.0</span><span·class="p"·data-group-id="8040881325-1">]</span><span·class="w">·</span><span·class="p"·data-group-id="8040881325-2">[</span><span·class="ss">source</[·...·truncated·by·diffoscope;·len:·1131,·SHA:·063b1e72a1fea7ec82f954d99a3d6580dc22140a7d6d0d048d0256aba72f9d2c·...·]-6">]</span><span·class="w">
139 </span><span·class="p"·data-group-id="1266438980-7">[</span><span·class="ss">hipe</span><span·class="p"·data-group-id="1266438980-7">]</span><span·class="w">·</span><span·class="p"·data-group-id="1266438980-8">[</span><span·class="ss">kernel</span><span·class="o">-</span><span·class="nc">poll<[·...·truncated·by·diffoscope;·len:·100,·SHA:·d695bf8c3542126dfda76ba0738e48ef2369fe2a8445be5dce0bcbc7ae37c725·...·]-8">]</span><span·class="w">139 </span><span·class="p"·data-group-id="8040881325-7">[</span><span·class="ss">hipe</span><span·class="p"·data-group-id="8040881325-7">]</span><span·class="w">·</span><span·class="p"·data-group-id="8040881325-8">[</span><span·class="ss">kernel</span><span·class="o">-</span><span·class="nc">poll<[·...·truncated·by·diffoscope;·len:·100,·SHA:·023fd4daf45f6e2feaa2f647ab4dab0d50a8f4b872c3d291f32793553a222a3c·...·]-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="1266438980-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="1266438980-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="8040881325-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="8040881325-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="1266438980-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="1266438980-10">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·280,·SHA:·da4434b9c33c459319cc2b1186cf371425eb136fe901881c0baec4e250b58c38·...·]-11">)</span><span·class="p">.</span><span·class="w">142 1&gt;·</span><span·class="p"·data-group-id="8040881325-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="8040881325-10">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·280,·SHA:·9f551ef4c55a83b56d8a3230bea189ed33d3fb2c5652925814da2284730cf9ba·...·]-11">)</span><span·class="p">.</span><span·class="w">
143 </span><span·class="p"·data-group-id="1266438980-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="1266438980-13">}</span><span·class="gp·unselectable">143 </span><span·class="p"·data-group-id="8040881325-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="8040881325-13">}</span><span·class="gp·unselectable">
144 2&gt;·</span><span·class="p"·data-group-id="1266438980-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="1266438980-14">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·206,·SHA:·0fccde4f5cf7db86adaa19470fd3e657355379824cf07e0bd7be1c2c74ea6983·...·]-15">)</span><span·class="p">.</span><span·class="w">144 2&gt;·</span><span·class="p"·data-group-id="8040881325-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="8040881325-14">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·206,·SHA:·1feaaf0327800fb538c945ef7a2a8de83ef98222a3af77a90ab9f5f61148f387·...·]-15">)</span><span·class="p">.</span><span·class="w">
145 </span><span·class="p"·data-group-id="1266438980-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="1266438980-16">}</span><span·class="gp·unselectable">145 </span><span·class="p"·data-group-id="8040881325-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="8040881325-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="1266438980-17">(</span><span·class="n">Server</span><span·class="p"·data-group-id="1266438980-17">)</span><span·class="p">.</span><span·class="w"> 
147 </span><span·class="p"·data-group-id="1266438980-18">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="1266438980-19">{</span><span·class="ss">sys</span><span·class="p">,</span><span·class="p"·data-group-id="126643898[·...·truncated·by·diffoscope;·len:·169,·SHA:·0f3da4c9963cda74dc27f492489af28c29edc53a1e67e1ae361a64df86b45f0b·...·]</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="8040881325-17">(</span><span·class="n">Server</span><span·class="p"·data-group-id="8040881325-17">)</span><span·class="p">.</span><span·class="w">
 147 </span><span·class="p"·data-group-id="8040881325-18">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="8040881325-19">{</span><span·class="ss">sys</span><span·class="p">,</span><span·class="p"·data-group-id="8040881325-20">[</span><span·class="p"·data-group-id="8040881325-20">]</span><span·class="p"·data-group-id="8040881325-19">}</span><span·class="p"·data-group-id="8040881325-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="1266438980-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="1266438980-21">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·291,·SHA:·d4f84d0e4e5c794044995a2a1bcb4d340c754a14bbdbf87e10a07e2d702aecc9·...·]-22">)</span><span·class="p">.</span><span·class="w">149 4&gt;·</span><span·class="p"·data-group-id="8040881325-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="8040881325-21">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·291,·SHA:·514423ae5bd0b39a62f87e511b78413f8d882018af33af7d84440ad12fa210b6·...·]-22">)</span><span·class="p">.</span><span·class="w">
150 </span><span·class="p"·data-group-id="1266438980-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="1266438980-24">}</span><span·class="gp·unselectable">150 </span><span·class="p"·data-group-id="8040881325-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="8040881325-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="1266438980-25">(</span><span·class="n">Server2</span><span·class="p"·data-group-id="1266438980-25">)</span><span·class="p">.</span><span·class="w"> 
152 </span><span·class="p"·data-group-id="1266438980-26">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="1266438980-27">{</span><span·class="ss">sys</span><span·class="p">,</span><span·class="p"·data-group-id="126643898[·...·truncated·by·diffoscope;·len:·204,·SHA:·b96b8cb4709bffd4128806dcc39d6cc67c21f52a70895e9f29b29f354e3a6098·...·]">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="8040881325-25">(</span><span·class="n">Server2</span><span·class="p"·data-group-id="8040881325-25">)</span><span·class="p">[·...·truncated·by·diffoscope;·len:·22,·SHA:·e5280ec72a33d941ddb767e9152358107b2476663ca4f611d5a154c3121850a0·...·]">
 152 </span><span·class="p"·data-group-id="8040881325-26">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="8040881325-27">{</span><span·class="ss">sys</span><span·class="p">,</span><span·class="p"·data-group-id="8040881325-28">[</span><span·class="p"·data-group-id="8040881325-28">]</span><span·class="p"·data-group-id="8040881325-27">}</span><span·class="p"·data-group-id="8040881325-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="1266438980-29">(</span><span·class="n">Server2</span><span·class="p"·data-group-id="1266438980-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="8040881325-29">(</span><span·class="n">Server2</span><span·class="p"·data-group-id="8040881325-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="3677381997-1">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">9.0</span><span·class="p"·data-group-id="3677381997-1">]</span><span·class="w">·</span><span·class="p"·data-group-id="3677381997-2">[</span><span·class="ss">source</[·...·truncated·by·diffoscope;·len:·1131,·SHA:·fcd231cd7ef3ef14970320c8b4fda7562e0f66ba2ad356ae40dd549ecee54508·...·]-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="8178394345-1">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">9.0</span><span·class="p"·data-group-id="8178394345-1">]</span><span·class="w">·</span><span·class="p"·data-group-id="8178394345-2">[</span><span·class="ss">source</[·...·truncated·by·diffoscope;·len:·1131,·SHA:·d9bf4e87e78e7109547cdaa6f779f95ab53b4b377a6d6d21410bf5933b9dfef6·...·]-6">]</span><span·class="w">
161 </span><span·class="p"·data-group-id="3677381997-7">[</span><span·class="ss">hipe</span><span·class="p"·data-group-id="3677381997-7">]</span><span·class="w">·</span><span·class="p"·data-group-id="3677381997-8">[</span><span·class="ss">kernel</span><span·class="o">-</span><span·class="nc">poll<[·...·truncated·by·diffoscope;·len:·100,·SHA:·4dadb0bdc4b072c1d98cc94f496057468940d143e42378bb32119f7d13c7ab42·...·]-8">]</span><span·class="w">161 </span><span·class="p"·data-group-id="8178394345-7">[</span><span·class="ss">hipe</span><span·class="p"·data-group-id="8178394345-7">]</span><span·class="w">·</span><span·class="p"·data-group-id="8178394345-8">[</span><span·class="ss">kernel</span><span·class="o">-</span><span·class="nc">poll<[·...·truncated·by·diffoscope;·len:·100,·SHA:·0128c7d5fd21ec1f5d04f2e0efa26174e72fbe283abdc7176b364e3825393be8·...·]-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="3677381997-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="3677381997-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="8178394345-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="8178394345-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="3677381997-10">{</span><span·class="ss">sys</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3677381997-11">[</span><span·class="p"·data-group-id="3677381997-12">{</span><span·class="ss">escript</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·502,·SHA:·c3865040d3881568ad339bd7ccfd5b1594947047cc11f881c4f74c69c1e2f49f·...·]-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="8178394345-10">{</span><span·class="ss">sys</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8178394345-11">[</span><span·class="p"·data-group-id="8178394345-12">{</span><span·class="ss">escript</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·502,·SHA:·3e4737ffd61ce3fe63d6a438334526377a05b91d82bb86eb4bb34d88cbb2ec56·...·]-12">}</span><span·class="p">,</span><span·class="w">
165 »       »       ···</span><span·class="p"·data-group-id="3677381997-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="3677381997-16">[</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·288,·SHA:·1681796f6f17ec09c5b747ba320a480352cceba559adc765857b64c62361b980·...·]-15">}</span><span·class="p">,</span><span·class="w">165 »       »       ···</span><span·class="p"·data-group-id="8178394345-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="8178394345-16">[</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·288,·SHA:·285653f1fda7f5d80b555f0159e627920a852cdcc1f207c03924f24699e4055e·...·]-15">}</span><span·class="p">,</span><span·class="w">
166 »       »       ···</span><span·class="p"·data-group-id="3677381997-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="3677381997-19">[</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·289,·SHA:·f9fef3602aa592ba8a248c986fd0de2190640d35c0b6c08f79caf218c448635d·...·]-18">}</span><span·class="p">,</span><span·class="w">166 »       »       ···</span><span·class="p"·data-group-id="8178394345-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="8178394345-19">[</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·289,·SHA:·9e7d8e0ed085c88e9648f596a9f5fe7f2583f172b3429f9c2f2e4f75c338346d·...·]-18">}</span><span·class="p">,</span><span·class="w">
167 »       »       ···</span><span·class="p"·data-group-id="3677381997-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="3677381997-22">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·286,·SHA:·440f8ae4bb59f688b6df8cdba995b728f3a9c7698b0c993b262d992be0a43225·...·]-21">}</span><span·class="p">,</span><span·class="w">167 »       »       ···</span><span·class="p"·data-group-id="8178394345-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="8178394345-22">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·286,·SHA:·503972ab66c7a0ccbb6e2d8a2f920735576aa0f89c982b9e8907d37740c1ac28·...·]-21">}</span><span·class="p">,</span><span·class="w">
168 »       »       ···</span><span·class="p"·data-group-id="3677381997-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="3677381997-25">[</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·296,·SHA:·6949f0779d6f8e461e37aab91e9d4021ddfe76b59250fdf3595ae6ae09e15410·...·]-24">}</span><span·class="p">,</span><span·class="w">168 »       »       ···</span><span·class="p"·data-group-id="8178394345-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="8178394345-25">[</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·296,·SHA:·5459bf8b1c25417e1013ea9fce891d9d6c80a24fcbe781959d098698e08666c7·...·]-24">}</span><span·class="p">,</span><span·class="w">
169 »       »       ···</span><span·class="p"·data-group-id="3677381997-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="3677381997-28">[</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·403,·SHA:·3dc4de91b2119bd9cfca649a9bc67392c879736669186615b462bc3b1f26f493·...·]-10">}</span><span·class="p">.</span><span·class="w">169 »       »       ···</span><span·class="p"·data-group-id="8178394345-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="8178394345-28">[</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·403,·SHA:·125ed56e3747f3665820da8a78ab30b4ceac15728c68580cf324358f8f51e280·...·]-10">}</span><span·class="p">.</span><span·class="w">
170 </span><span·class="p"·data-group-id="3677381997-30">{</span><span·class="ss">sys</span><span·class="p">,</span><span·class="p"·data-group-id="3677381997-31">[</span><span·class="p"·data-group-id="3677381997-32">{</span><span·class="ss">escript</span><span·class="p">,</span><span·class="s">&qu[·...·truncated·by·diffoscope;·len:·406,·SHA:·6accb68af07178551b59838e04522f890ea22303c9203846a0753cc2515ff141·...·]-32">}</span><span·class="p">,</span><span·class="w">170 </span><span·class="p"·data-group-id="8178394345-30">{</span><span·class="ss">sys</span><span·class="p">,</span><span·class="p"·data-group-id="8178394345-31">[</span><span·class="p"·data-group-id="8178394345-32">{</span><span·class="ss">escript</span><span·class="p">,</span><span·class="s">&qu[·...·truncated·by·diffoscope;·len:·406,·SHA:·42b239e79bdd800f5df36ad0feb949fa7a6dcfe835196cf38d149327903014b1·...·]-32">}</span><span·class="p">,</span><span·class="w">
171 ······</span><span·class="p"·data-group-id="3677381997-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="3677381997-36">[</span><span·class="p"·data-group-id="3677381997-37">{</span><span·class="ss">incl[·...·truncated·by·diffoscope;·len:·216,·SHA:·40fb08b9cbc0df345442fc77831d804f4e531c72d32d5a464e78bd7cc7be7fb6·...·]-35">}</span><span·class="p">,</span><span·class="w">171 ······</span><span·class="p"·data-group-id="8178394345-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="8178394345-36">[</span><span·class="p"·data-group-id="8178394345-37">{</span><span·class="ss">incl[·...·truncated·by·diffoscope;·len:·216,·SHA:·ab2340e45afe885ca340626ce4038b690ff12b4b9ad481ec0eb6287d3688cf19·...·]-35">}</span><span·class="p">,</span><span·class="w">
172 ······</span><span·class="p"·data-group-id="3677381997-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="3677381997-39">[</span><span·class="p"·data-group-id="3677381997-40">{</span><span·class="ss">inc[·...·truncated·by·diffoscope;·len:·217,·SHA:·f192313afa8601e52cf3cfd4c63f3259f22d1cc65be7e85ccbd11f81d3f73f40·...·]-38">}</span><span·class="p">,</span><span·class="w">172 ······</span><span·class="p"·data-group-id="8178394345-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="8178394345-39">[</span><span·class="p"·data-group-id="8178394345-40">{</span><span·class="ss">inc[·...·truncated·by·diffoscope;·len:·217,·SHA:·60bb278470a17ec98b8b441f81f5c74e52cfcc63d05fa2f4cae88e67150d182c·...·]-38">}</span><span·class="p">,</span><span·class="w">
173 ······</span><span·class="p"·data-group-id="3677381997-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="3677381997-42">[</span><span·class="p"·data-group-id="3677381997-43">{</span><span·class="ss">incl_c[·...·truncated·by·diffoscope;·len:·214,·SHA:·088c254c16da9e0b766c003926935ab4c21f5eb88e33d57da7f60eec5c5308b9·...·]-41">}</span><span·class="p">,</span><span·class="w">173 ······</span><span·class="p"·data-group-id="8178394345-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="8178394345-42">[</span><span·class="p"·data-group-id="8178394345-43">{</span><span·class="ss">incl_c[·...·truncated·by·diffoscope;·len:·214,·SHA:·061d0b795af60a68820a2bf0d1cd302167851346d3fb92ea1cf493c1e32c306c·...·]-41">}</span><span·class="p">,</span><span·class="w">
174 ······</span><span·class="p"·data-group-id="3677381997-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="3677381997-45">[</span><span·class="p"·data-group-id="3677381997-46">{</span><span·class="[·...·truncated·by·diffoscope;·len:·224,·SHA:·0020364163e7207146c3b08b67f379f066be7a67ad9f2bc11ccb329e645f3391·...·]-44">}</span><span·class="p">,</span><span·class="w">174 ······</span><span·class="p"·data-group-id="8178394345-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="8178394345-45">[</span><span·class="p"·data-group-id="8178394345-46">{</span><span·class="[·...·truncated·by·diffoscope;·len:·224,·SHA:·d2817ed37f3adca5c1e25c7f9ec4e889d5866413cdc0093d8d397f5dec8a53d2·...·]-44">}</span><span·class="p">,</span><span·class="w">
175 ······</span><span·class="p"·data-group-id="3677381997-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="3677381997-48">[</span><span·class="p"·data-group-id="3677381997-49">{</span><span·class="s[·...·truncated·by·diffoscope;·len:·331,·SHA:·f96247e8f9924a31bda2ae6eb25c63d2c4d7189c60041a66e8da967327d23db8·...·]-30">}</span><span·class="w">175 ······</span><span·class="p"·data-group-id="8178394345-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="8178394345-48">[</span><span·class="p"·data-group-id="8178394345-49">{</span><span·class="s[·...·truncated·by·diffoscope;·len:·331,·SHA:·b5242ddf0910c53e93f117e10e2e5fc7ba69e261b5659892af09833c764521f3·...·]-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="3677381997-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="3677381997-50">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·319,·SHA:·16b82968f56669b99f014a583223d741b2891666a69d0b6ccbee634bf383a526·...·]-51">)</span><span·class="p">.</span><span·class="w">177 2&gt;·</span><span·class="p"·data-group-id="8178394345-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="8178394345-50">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·319,·SHA:·5b50c04c4ff49005bcbd16a8d1b47f8d11618e87553055b3d16a1509daddd507·...·]-51">)</span><span·class="p">.</span><span·class="w">
178 </span><span·class="p"·data-group-id="3677381997-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="3677381997-53">}</span><span·class="w">178 </span><span·class="p"·data-group-id="8178394345-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="8178394345-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="3677381997-54">(</span><span·class="n">Server</span><span·class="p"·data-group-id="3677381997-54">)</span><span·class="p">.</span><span·class="w"> 
181 </span><span·class="p"·data-group-id="3677381997-55">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="3677381997-56">{</span><span·class="ss">sys</span><span·class="p">,</span><span·class="p"·data-group-id="367738199[·...·truncated·by·diffoscope;·len:·236,·SHA:·84f6f8eb0c5c73e3d63d320bd932f1bce9505088cd0197349329995a0191dbe3·...·]</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="8178394345-54">(</span><span·class="n">Server</span><span·class="p"·data-group-id="8178394345-54">)</span><span·class="p">.</span><span·class="w">
 181 </span><span·class="p"·data-group-id="8178394345-55">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="8178394345-56">{</span><span·class="ss">sys</span><span·class="p">,</span><span·class="p"·data-group-id="8178394345-57">[</span><span·class="p"·data-group-id="8178394345-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="3677381997-59">[</span><span·class="p"·data-group-id="3677381997-60">{</span><span·class="ss">incl_cond</span><span·class="p">,</span><span·class="ss">include</span><span·class="p"·data-group-id="3677381997-60">}</span><span·class="p"·data-group-id="367738[·...·truncated·by·diffoscope;·len:·58,·SHA:·e116dbfcfac21d382cc9a1b4ae77ffa733c0eae0a3a9de97cac84baa04023a20·...·]-58">}</span><span·class="p">,</span><span·class="w">182 ···················</span><span·class="p"·data-group-id="8178394345-59">[</span><span·class="p"·data-group-id="8178394345-60">{</span><span·class="ss">incl_cond</span><span·class="p">,</span><span·class="ss">include</span><span·class="p"·data-group-id="8178394345-60">}</span><span·class="p"·data-group-id="817839[·...·truncated·by·diffoscope;·len:·58,·SHA:·f6ca919615a7c2d96eaf52025ad7ae459d023232e42831c639913acbb390c4af·...·]-58">}</span><span·class="p">,</span><span·class="w">
183 ··········</span><span·class="p"·data-group-id="3677381997-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="3677381997-62">[</span><span·class="p"·data-group-id="3677381997-63">{</span><span·class="ss">incl[·...·truncated·by·diffoscope;·len:·216,·SHA:·34ead8ce6cd1d8fe1e7d1b9049f3036f56f0c1ddf70041455b6bc1d8d9e27f9a·...·]-61">}</span><span·class="p">,</span><span·class="w">183 ··········</span><span·class="p"·data-group-id="8178394345-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="8178394345-62">[</span><span·class="p"·data-group-id="8178394345-63">{</span><span·class="ss">incl[·...·truncated·by·diffoscope;·len:·216,·SHA:·779e3242bfa17c2851685b8e1a5b6b51ff8041fa162b7e6ad78ffc8834cb73ed·...·]-61">}</span><span·class="p">,</span><span·class="w">
184 ··········</span><span·class="p"·data-group-id="3677381997-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="3677381997-65">[</span><span·class="p"·data-group-id="3677381997-66">{</span><span·class="ss">inc[·...·truncated·by·diffoscope;·len:·217,·SHA:·a0c488a4b3b58961d1221e3bdd23e9dc4fc6c8db64982b579e82fe17079e86c7·...·]-64">}</span><span·class="p">,</span><span·class="w">184 ··········</span><span·class="p"·data-group-id="8178394345-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="8178394345-65">[</span><span·class="p"·data-group-id="8178394345-66">{</span><span·class="ss">inc[·...·truncated·by·diffoscope;·len:·217,·SHA:·81684da7d9fae7d3ced5c156c0019e3923c683cd3e5c0479b43550ff0fe8d91b·...·]-64">}</span><span·class="p">,</span><span·class="w">
185 ··········</span><span·class="p"·data-group-id="3677381997-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="3677381997-68">[</span><span·class="p"·data-group-id="3677381997-69">{</span><span·class="[·...·truncated·by·diffoscope;·len:·224,·SHA:·f1e42ee758266bc3d744c201f8fb0552cabd5c4645412c0067b8d333a1b2540e·...·]-67">}</span><span·class="p">,</span><span·class="w">185 ··········</span><span·class="p"·data-group-id="8178394345-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="8178394345-68">[</span><span·class="p"·data-group-id="8178394345-69">{</span><span·class="[·...·truncated·by·diffoscope;·len:·224,·SHA:·061a41494c05433cbabc20a2042a769936ba11eecb079094c3a67e1dcea6459e·...·]-67">}</span><span·class="p">,</span><span·class="w">
186 ··········</span><span·class="p"·data-group-id="3677381997-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="3677381997-71">[</span><span·class="p"·data-group-id="3677381997-72">{</span><span·class="ss">incl_c[·...·truncated·by·diffoscope;·len:·214,·SHA:·c7b49713f85268ce5020666d8b26b1e690a639b73ae58ed0819b79e641b72e4c·...·]-70">}</span><span·class="p">,</span><span·class="w">186 ··········</span><span·class="p"·data-group-id="8178394345-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="8178394345-71">[</span><span·class="p"·data-group-id="8178394345-72">{</span><span·class="ss">incl_c[·...·truncated·by·diffoscope;·len:·214,·SHA:·ee0b529152b91bc3db20050b6980aaedabf239b6656bdca6a4940eb9452644b9·...·]-70">}</span><span·class="p">,</span><span·class="w">
187 ··········</span><span·class="p"·data-group-id="3677381997-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="3677381997-74">[</span><span·class="p"·data-group-id="3677381997-75">{</span><span·class="s[·...·truncated·by·diffoscope;·len:·385,·SHA:·35fd9f510e95b6c6c3e8a10ac62fbb47d51f2abbb22854cb51c708a8d00f1d3e·...·]-55">}</span><span·class="w">187 ··········</span><span·class="p"·data-group-id="8178394345-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="8178394345-74">[</span><span·class="p"·data-group-id="8178394345-75">{</span><span·class="s[·...·truncated·by·diffoscope;·len:·385,·SHA:·613f9d2e78353d79679d09d3671556c7d1536da50088d78a9ebdbf2876f50a8b·...·]-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="3677381997-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="3677381997-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="8178394345-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="8178394345-76">)</span><span·class="p">.</span><span·class="w">
190 </span><span·class="p"·data-group-id="3677381997-77">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="3677381997-78">{</span><span·class="ss">sys</span><span·class="p">,</span><span·class="p"·data-group-id="3677381997-79">[</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·17,·SHA:·1bc4bdffa2b4211d254366d32600159e7b418a854e5a2b655c19b6a9d28a50d4·...·]-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="8178394345-77">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="8178394345-78">{</span><span·class="ss">sys</span><span·class="p">,</span><span·class="p"·data-group-id="8178394345-79">[</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·17,·SHA:·a67d9e18552b2801c430429cd76f5529b9d69df86981d0814201cf16833327aa·...·]-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="3677381997-81">[</span><span·class="p"·data-group-id="3677381997-82">{</span><span·class="ss">incl_cond</span><span·class="p">,</span><span·class="ss">include</span><span·class="p"·data-group-id="3677381997-82">}</span><span·class="p"·data-group-id="367738[·...·truncated·by·diffoscope;·len:·58,·SHA:·1f54e2c8e6e5747b9ada1f3e77e0b72092b045c23ad13edd7d111368de7eb4b7·...·]-80">}</span><span·class="p">,</span><span·class="w">191 ···················</span><span·class="p"·data-group-id="8178394345-81">[</span><span·class="p"·data-group-id="8178394345-82">{</span><span·class="ss">incl_cond</span><span·class="p">,</span><span·class="ss">include</span><span·class="p"·data-group-id="8178394345-82">}</span><span·class="p"·data-group-id="817839[·...·truncated·by·diffoscope;·len:·58,·SHA:·2437899674fdebc53b1e04498f229c2bf08460b4637d545fdfc38641ab113d6f·...·]-80">}</span><span·class="p">,</span><span·class="w">
192 ··········</span><span·class="p"·data-group-id="3677381997-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="3677381997-84">[</span><span·class="p"·data-group-id="3677381997-85">{</span><span·class="ss">incl[·...·truncated·by·diffoscope;·len:·216,·SHA:·3751209fb620fe03ac8299dde95000320776e93eee01ca8f6571de69c0d270f4·...·]-83">}</span><span·class="p">,</span><span·class="w">192 ··········</span><span·class="p"·data-group-id="8178394345-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="8178394345-84">[</span><span·class="p"·data-group-id="8178394345-85">{</span><span·class="ss">incl[·...·truncated·by·diffoscope;·len:·216,·SHA:·1ba7fdd4b3d73d2e8a3db89ec05802f9e7c33044ae5bcb0d7dff0553ea460af1·...·]-83">}</span><span·class="p">,</span><span·class="w">
193 ··········</span><span·class="p"·data-group-id="3677381997-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="3677381997-87">[</span><span·class="p"·data-group-id="3677381997-88">{</span><span·class="ss">inc[·...·truncated·by·diffoscope;·len:·217,·SHA:·43f4ae0ce603a86fda7bc5083392698d45109e06622dd1e7238732980ba63bf5·...·]-86">}</span><span·class="p">,</span><span·class="w">193 ··········</span><span·class="p"·data-group-id="8178394345-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="8178394345-87">[</span><span·class="p"·data-group-id="8178394345-88">{</span><span·class="ss">inc[·...·truncated·by·diffoscope;·len:·217,·SHA:·5e7b44ed5a7577e46c203ad238c29840916021bf58496e02c56c6f1ecab32fab·...·]-86">}</span><span·class="p">,</span><span·class="w">
194 ··········</span><span·class="p"·data-group-id="3677381997-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="3677381997-90">[</span><span·class="p"·data-group-id="3677381997-91">{</span><span·class="[·...·truncated·by·diffoscope;·len:·224,·SHA:·3e05bda033137ae9c23ecec7326c594641920da579988e7cb36858cca5426658·...·]-89">}</span><span·class="p">,</span><span·class="w">194 ··········</span><span·class="p"·data-group-id="8178394345-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="8178394345-90">[</span><span·class="p"·data-group-id="8178394345-91">{</span><span·class="[·...·truncated·by·diffoscope;·len:·224,·SHA:·495e2ae4a8e43c71509ddd52adbabb7bb65712d4d1965b92faba0e6f5d234927·...·]-89">}</span><span·class="p">,</span><span·class="w">
195 ··········</span><span·class="p"·data-group-id="3677381997-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="3677381997-93">[</span><span·class="p"·data-group-id="3677381997-94">{</span><span·class="ss">incl_c[·...·truncated·by·diffoscope;·len:·214,·SHA:·5a0224a2148217b987d4466dca49b73ee818d0f57c45c3dbe9bf072d0631deff·...·]-92">}</span><span·class="p">,</span><span·class="w">195 ··········</span><span·class="p"·data-group-id="8178394345-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="8178394345-93">[</span><span·class="p"·data-group-id="8178394345-94">{</span><span·class="ss">incl_c[·...·truncated·by·diffoscope;·len:·214,·SHA:·0ee806c834e3dba5e80b5583591650db743031b54fb6e62226c49a85a63dfb6e·...·]-92">}</span><span·class="p">,</span><span·class="w">
196 ··········</span><span·class="p"·data-group-id="3677381997-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="3677381997-96">[</span><span·class="p"·data-group-id="3677381997-97">{</span><span·class="s[·...·truncated·by·diffoscope;·len:·385,·SHA:·2213272be28e25d6d2369d68ec11e5b866eaddc185d994b3ef358af96e6ef7b6·...·]-77">}</span><span·class="w">196 ··········</span><span·class="p"·data-group-id="8178394345-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="8178394345-96">[</span><span·class="p"·data-group-id="8178394345-97">{</span><span·class="s[·...·truncated·by·diffoscope;·len:·385,·SHA:·1a52bae1356d8b903d9b53c47c6e2fe438410bdc94b67760d450eb2f6120950b·...·]-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="3677381997-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="3677381997-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="8178394345-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="8178394345-98">)</span><span·class="p">.</span><span·class="w">
199 </span><span·class="p"·data-group-id="3677381997-99">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="3677381997-100">{</span><span·class="ss">sys</span><span·class="p">,</span><span·class="p"·data-group-id="3677381997-101">[</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·186,·SHA:·61189fec3fb75a67ce929eced11ddf1e9094147e64437ddf3d26feb692923fef·...·]-102">}</span><span·class="p">,</span><span·class="w">199 </span><span·class="p"·data-group-id="8178394345-99">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="8178394345-100">{</span><span·class="ss">sys</span><span·class="p">,</span><span·class="p"·data-group-id="8178394345-101">[</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·186,·SHA:·d9778539574c64093299c628a00e2f8417cb288b79bc0884f7353782fbf75d63·...·]-102">}</span><span·class="p">,</span><span·class="w">
200 ··········</span><span·class="p"·data-group-id="3677381997-103">{</span><span·class="ss">lib_dirs</span><span·class="p">,</span><span·class="p"·data-group-id="3677381997-104">[</span><span·class="p"·data-group-id="3677381997-104">]</span><span·class="p"·data-group-id="3677381997-103">}</span><span·class="p">,</span><span·class="w">200 ··········</span><span·class="p"·data-group-id="8178394345-103">{</span><span·class="ss">lib_dirs</span><span·class="p">,</span><span·class="p"·data-group-id="8178394345-104">[</span><span·class="p"·data-group-id="8178394345-104">]</span><span·class="p"·data-group-id="8178394345-103">}</span><span·class="p">,</span><span·class="w">
201 ··········</span><span·class="p"·data-group-id="3677381997-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="8178394345-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="3677381997-106">[</span><span·class="p"·data-group-id="3677381997-107">{</span><span·class="ss">incl_cond</span><span·class="p">,</span><span·class="ss">include</span><span·class="p"·data-group-id="3677381997-107">}</span><span·class="p"·data-group-id="367[·...·truncated·by·diffoscope;·len:·62,·SHA:·0af79f239595a7ba8b6bf7970ef613f2c620ea3fa177a69fe130565fda941a9f·...·]-105">}</span><span·class="p">,</span><span·class="w">202 ···················</span><span·class="p"·data-group-id="8178394345-106">[</span><span·class="p"·data-group-id="8178394345-107">{</span><span·class="ss">incl_cond</span><span·class="p">,</span><span·class="ss">include</span><span·class="p"·data-group-id="8178394345-107">}</span><span·class="p"·data-group-id="817[·...·truncated·by·diffoscope;·len:·62,·SHA:·e28de6e9a1b4ffb209be359d9d4a5f7e9bbd168440b7b93ac95a0b7647c43cca·...·]-105">}</span><span·class="p">,</span><span·class="w">
203 ··········</span><span·class="p"·data-group-id="3677381997-108">{</span><span·class="ss">mod_cond</span><span·class="p">,</span><span·class="ss">all</span><span·class="p"·data-group-id="3677381997-108">}</span><span·class="p">,</span><span·class="w">203 ··········</span><span·class="p"·data-group-id="8178394345-108">{</span><span·class="ss">mod_cond</span><span·class="p">,</span><span·class="ss">all</span><span·class="p"·data-group-id="8178394345-108">}</span><span·class="p">,</span><span·class="w">
204 ··········</span><span·class="p"·data-group-id="3677381997-109">{</span><span·class="ss">incl_cond</span><span·class="p">,</span><span·class="ss">derived</span><span·class="p"·data-group-id="3677381997-109">}</span><span·class="p">,</span><span·class="w">204 ··········</span><span·class="p"·data-group-id="8178394345-109">{</span><span·class="ss">incl_cond</span><span·class="p">,</span><span·class="ss">derived</span><span·class="p"·data-group-id="8178394345-109">}</span><span·class="p">,</span><span·class="w">
205 ··········</span><span·class="p"·data-group-id="3677381997-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="8178394345-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="3677381997-111">[</span><span·class="p"·data-group-id="3677381997-112">{</span><span·class="ss">incl_cond</span><span·class="p">,</span><span·class="ss">include</span><span·class="p"·data-group-id="3677381997-112">}</span><span·class="p">,</span><span·clas[·...·truncated·by·diffoscope;·len:·502,·SHA:·a380077ed0f808f5798c6519d79c68a6ade5892f50fc70a07e19edc5c3c7ff99·...·]-110">}</span><span·class="p">,</span><span·class="w">206 ···············</span><span·class="p"·data-group-id="8178394345-111">[</span><span·class="p"·data-group-id="8178394345-112">{</span><span·class="ss">incl_cond</span><span·class="p">,</span><span·class="ss">include</span><span·class="p"·data-group-id="8178394345-112">}</span><span·class="p">,</span><span·clas[·...·truncated·by·diffoscope;·len:·502,·SHA:·97d3c67c07ec1cfe42d3723a8b3ef2ac635add234aeb385ff8e9fe7c281074c1·...·]-110">}</span><span·class="p">,</span><span·class="w">
207 ··········</span><span·class="p"·data-group-id="3677381997-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="3677381997-116">[</span><span·class="p"·data-group-id="3677381997-117">{</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·222,·SHA:·f95cfca9dcd0edce519ef2134f0a8b3f1d03a7e0d8498031dcac78a115e3e20e·...·]-115">}</span><span·class="p">,</span><span·class="w">207 ··········</span><span·class="p"·data-group-id="8178394345-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="8178394345-116">[</span><span·class="p"·data-group-id="8178394345-117">{</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·222,·SHA:·c6ec1eafb2bb5572fe6dfedc9a9f04e1c13b1e93a4fa38f45960d4d3d1ed26d0·...·]-115">}</span><span·class="p">,</span><span·class="w">
208 ··········</span><span·class="p"·data-group-id="3677381997-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="3677381997-119">[</span><span·class="p"·data-group-id="3677381997-120">{</span><span·clas[·...·truncated·by·diffoscope;·len:·229,·SHA:·67d6b3c2ae0fb5e98a427a0577d701c2a594315d7056d1f51d1bbe5162081bf9·...·]-118">}</span><span·class="p">,</span><span·class="w">208 ··········</span><span·class="p"·data-group-id="8178394345-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="8178394345-119">[</span><span·class="p"·data-group-id="8178394345-120">{</span><span·clas[·...·truncated·by·diffoscope;·len:·229,·SHA:·faadcc90203b4f780e4b971383115237b6b4ea3b6b3429231713606af4121269·...·]-118">}</span><span·class="p">,</span><span·class="w">
209 ··········</span><span·class="p"·data-group-id="3677381997-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="3677381997-122">[</span><span·class="p"·data-group-id="3677381997-123">{</span><span·class="ss">inc[·...·truncated·by·diffoscope;·len:·219,·SHA:·f3a1fed69e1687276428ee2c886b82fcafc21cbb06a75cdc4955fb8af2e5e58c·...·]-121">}</span><span·class="p">,</span><span·class="w">209 ··········</span><span·class="p"·data-group-id="8178394345-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="8178394345-122">[</span><span·class="p"·data-group-id="8178394345-123">{</span><span·class="ss">inc[·...·truncated·by·diffoscope;·len:·219,·SHA:·47f1f9b7dc38f0f4f39c4f7c42d7793e3f4d841bdf2bd40b1cd571c69fb4511e·...·]-121">}</span><span·class="p">,</span><span·class="w">
210 ··········</span><span·class="p"·data-group-id="3677381997-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="3677381997-125">[</span><span·class="p"·data-group-id="3677381997-126">{</span><span·class[·...·truncated·by·diffoscope;·len:·228,·SHA:·504c0231f6f88f036f9fbe3d3e079aa3cf3b4584ef2fe18f0f0593800a5adba9·...·]-124">}</span><span·class="p">,</span><span·class="w">210 ··········</span><span·class="p"·data-group-id="8178394345-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="8178394345-125">[</span><span·class="p"·data-group-id="8178394345-126">{</span><span·class[·...·truncated·by·diffoscope;·len:·228,·SHA:·b76257dd88186e10cc68f9b414c2192979cc88907ddb1062a058a2f25b22438e·...·]-124">}</span><span·class="p">,</span><span·class="w">
211 ··········</span><span·class="p"·data-group-id="3677381997-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="3677381997-127">}</span><span·class="p">,</span><span·class="w">211 ··········</span><span·class="p"·data-group-id="8178394345-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="8178394345-127">}</span><span·class="p">,</span><span·class="w">
212 ··········</span><span·class="p"·data-group-id="3677381997-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="3677381997-129">[</span><span·class="p"·data-group-id="3677381997-129">]</span><span·class="p"·data-group-id="3677381997-128">}</span><span·class="p">,</span><span·class="w"> 
213 ··········</span><span·class="p"·data-group-id="3677381997-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="3677381997-131">[</[·...·truncated·by·diffoscope;·len:·133,·SHA:·439d222e9733d8472c06b82dabad3664c43922e73b7f5f376da78ceba7973c31·...·]">}</span><span·class="p">,</span><span·class="w">212 ··········</span><span·class="p"·data-group-id="8178394345-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="8178394345-129">[<[·...·truncated·by·diffoscope;·len:·106,·SHA:·e283a5788e95eed25ce1e81eba3946aad7556fafd283900725c107ec18c8be74·...·]">}</span><span·class="p">,</span><span·class="w">
 213 ··········</span><span·class="p"·data-group-id="8178394345-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="8178394345-131">[</span><span·class="ss">sasl</span><span·class="p"·data-group-id="8178394345-131">]</span><span·class="p"·data-group-id="8178394345-130">}</span><span·class="p">,</span><span·class="w">
214 ··········</span><span·class="p"·data-group-id="3677381997-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="3677381997-132">}</span><span·class="p">,</span><span·class="w">214 ··········</span><span·class="p"·data-group-id="8178394345-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="8178394345-132">}</span><span·class="p">,</span><span·class="w">
215 ··········</span><span·class="p"·data-group-id="3677381997-133">{</span><span·class="ss">relocatable</span><span·class="p">,</span><span·class="ss">true</span><span·class="p"·data-group-id="3677381997-133">}</span><span·class="p">,</span><span·class="w">215 ··········</span><span·class="p"·data-group-id="8178394345-133">{</span><span·class="ss">relocatable</span><span·class="p">,</span><span·class="ss">true</span><span·class="p"·data-group-id="8178394345-133">}</span><span·class="p">,</span><span·class="w">
216 ··········</span><span·class="p"·data-group-id="3677381997-134">{</span><span·class="ss">profile</span><span·class="p">,</span><span·class="ss">development</span><span·class="p"·data-group-id="3677381997-134">}</span><span·class="p">,</span><span·class="w">216 ··········</span><span·class="p"·data-group-id="8178394345-134">{</span><span·class="ss">profile</span><span·class="p">,</span><span·class="ss">development</span><span·class="p"·data-group-id="8178394345-134">}</span><span·class="p">,</span><span·class="w">
217 ··········</span><span·class="p"·data-group-id="3677381997-135">{</span><span·class="ss">incl_sys_filters</span><span·class="p">,</span><span·class="p"·data-group-id="3677381997-136">[</span><span·class="s">&quot;.*&quot;</span><span·class="p"·data-group-id="3677381997-136">]</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·2459b93a6f20d4b329a4c0fafbdccb87dfa40ed80e6a1fd6d838e03712335ffa·...·]-135">}</span><span·class="p">,</span><span·class="w">217 ··········</span><span·class="p"·data-group-id="8178394345-135">{</span><span·class="ss">incl_sys_filters</span><span·class="p">,</span><span·class="p"·data-group-id="8178394345-136">[</span><span·class="s">&quot;.*&quot;</span><span·class="p"·data-group-id="8178394345-136">]</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·4b20a7e27b370cd4371d4a98ddfe90b7869cb22bbc60defa341f81e926b45438·...·]-135">}</span><span·class="p">,</span><span·class="w">
218 ··········</span><span·class="p"·data-group-id="3677381997-137">{</span><span·class="ss">excl_sys_filters</span><span·class="p">,</span><span·class="p"·data-group-id="3677381997-138">[</span><span·class="p"·data-group-id="3677381997-138">]</span><span·class="p"·data-group-id="3677381997-137">}</span><span·class="p">,</span><span·class="w">218 ··········</span><span·class="p"·data-group-id="8178394345-137">{</span><span·class="ss">excl_sys_filters</span><span·class="p">,</span><span·class="p"·data-group-id="8178394345-138">[</span><span·class="p"·data-group-id="8178394345-138">]</span><span·class="p"·data-group-id="8178394345-137">}</span><span·class="p">,</span><span·class="w">
219 ··········</span><span·class="p"·data-group-id="3677381997-139">{</span><span·class="ss">incl_app_filters</span><span·class="p">,</span><span·class="p"·data-group-id="3677381997-140">[</span><span·class="s">&quot;.*&quot;</span><span·class="p"·data-group-id="3677381997-140">]</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·2459b93a6f20d4b329a4c0fafbdccb87dfa40ed80e6a1fd6d838e03712335ffa·...·]-139">}</span><span·class="p">,</span><span·class="w">219 ··········</span><span·class="p"·data-group-id="8178394345-139">{</span><span·class="ss">incl_app_filters</span><span·class="p">,</span><span·class="p"·data-group-id="8178394345-140">[</span><span·class="s">&quot;.*&quot;</span><span·class="p"·data-group-id="8178394345-140">]</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·4b20a7e27b370cd4371d4a98ddfe90b7869cb22bbc60defa341f81e926b45438·...·]-139">}</span><span·class="p">,</span><span·class="w">
220 ··········</span><span·class="p"·data-group-id="3677381997-141">{</span><span·class="ss">excl_app_filters</span><span·class="p">,</span><span·class="p"·data-group-id="3677381997-142">[</span><span·class="p"·data-group-id="3677381997-142">]</span><span·class="p"·data-group-id="3677381997-141">}</span><span·class="p">,</span><span·class="w">220 ··········</span><span·class="p"·data-group-id="8178394345-141">{</span><span·class="ss">excl_app_filters</span><span·class="p">,</span><span·class="p"·data-group-id="8178394345-142">[</span><span·class="p"·data-group-id="8178394345-142">]</span><span·class="p"·data-group-id="8178394345-141">}</span><span·class="p">,</span><span·class="w">
221 ··········</span><span·class="p"·data-group-id="3677381997-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="3677381997-143">}</span><span·class="p">,</span><span·class="w">221 ··········</span><span·class="p"·data-group-id="8178394345-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="8178394345-143">}</span><span·class="p">,</span><span·class="w">
222 ··········</span><span·class="p"·data-group-id="3677381997-144">{</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="3677381997-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:·0d7b8fa1a997d8eb6a486b7fa7dba3e4c3fb402c4055cf1ffed95c3ed5761fa0·...·]-99">}</span><span·class="w">222 ··········</span><span·class="p"·data-group-id="8178394345-144">{</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="8178394345-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:·7f6ccf4675216f1b5130dd04706c0271e9bf3510e7f21272ec1e2dae3b7e94b3·...·]-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="3677381997-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="3677381997-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="8178394345-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="8178394345-145">)</span><span·class="p">.</span><span·class="w">
225 </span><span·class="p"·data-group-id="3677381997-146">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="3677381997-147">{</span><span·class="ss">sys</span><span·class="p">,</span><span·class="p"·data-group-id="3677381997-148">[</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·187,·SHA:·7799b079996e0de7ceaf564b34d913fd76927fa3d0aa22be76d27cefa6617ff8·...·]-149">}</span><span·class="p">,</span><span·class="w">225 </span><span·class="p"·data-group-id="8178394345-146">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="8178394345-147">{</span><span·class="ss">sys</span><span·class="p">,</span><span·class="p"·data-group-id="8178394345-148">[</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·187,·SHA:·67f19c06661f45e2802e8838d73eea410e539f4c7f9b7a0d7205ee347b8ede78·...·]-149">}</span><span·class="p">,</span><span·class="w">
226 ··········</span><span·class="p"·data-group-id="3677381997-150">{</span><span·class="ss">lib_dirs</span><span·class="p">,</span><span·class="p"·data-group-id="3677381997-151">[</span><span·class="p"·data-group-id="3677381997-151">]</span><span·class="p"·data-group-id="3677381997-150">}</span><span·class="p">,</span><span·class="w">226 ··········</span><span·class="p"·data-group-id="8178394345-150">{</span><span·class="ss">lib_dirs</span><span·class="p">,</span><span·class="p"·data-group-id="8178394345-151">[</span><span·class="p"·data-group-id="8178394345-151">]</span><span·class="p"·data-group-id="8178394345-150">}</span><span·class="p">,</span><span·class="w">
227 ··········</span><span·class="p"·data-group-id="3677381997-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="8178394345-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="3677381997-153">[</span><span·class="p"·data-group-id="3677381997-154">{</span><span·class="ss">incl_cond</span><span·class="p">,</span><span·class="ss">include</span><span·class="p"·data-group-id="3677381997-154">}</span><span·class="p"·data-group-id="367[·...·truncated·by·diffoscope;·len:·62,·SHA:·5ff83a205a8840f638e97d5068029e76eb8718f02b0387d906e225eb732dcb06·...·]-152">}</span><span·class="p">,</span><span·class="w">228 ···················</span><span·class="p"·data-group-id="8178394345-153">[</span><span·class="p"·data-group-id="8178394345-154">{</span><span·class="ss">incl_cond</span><span·class="p">,</span><span·class="ss">include</span><span·class="p"·data-group-id="8178394345-154">}</span><span·class="p"·data-group-id="817[·...·truncated·by·diffoscope;·len:·62,·SHA:·c0dc673cbde3df688cc2a4eea6ce6c38e4420a846f8c4bc803a4c20879ea8d3c·...·]-152">}</span><span·class="p">,</span><span·class="w">
229 ··········</span><span·class="p"·data-group-id="3677381997-155">{</span><span·class="ss">mod_cond</span><span·class="p">,</span><span·class="ss">all</span><span·class="p"·data-group-id="3677381997-155">}</span><span·class="p">,</span><span·class="w">229 ··········</span><span·class="p"·data-group-id="8178394345-155">{</span><span·class="ss">mod_cond</span><span·class="p">,</span><span·class="ss">all</span><span·class="p"·data-group-id="8178394345-155">}</span><span·class="p">,</span><span·class="w">
230 ··········</span><span·class="p"·data-group-id="3677381997-156">{</span><span·class="ss">incl_cond</span><span·class="p">,</span><span·class="ss">derived</span><span·class="p"·data-group-id="3677381997-156">}</span><span·class="p">,</span><span·class="w">230 ··········</span><span·class="p"·data-group-id="8178394345-156">{</span><span·class="ss">incl_cond</span><span·class="p">,</span><span·class="ss">derived</span><span·class="p"·data-group-id="8178394345-156">}</span><span·class="p">,</span><span·class="w">
231 ··········</span><span·class="p"·data-group-id="3677381997-157">{</span><span·class="ss">erts</span><span·class="p">,</span><span·class="p"·data-group-id="3677381997-158">[</span><span·class="p"·data-group-id="3677381997-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="8178394345-157">{</span><span·class="ss">erts</span><span·class="p">,</span><span·class="p"·data-group-id="8178394345-158">[</span><span·class="p"·data-group-id="8178394345-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="3677381997-160">[</span><span·class="p"·data-group-id="3677381997-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="3677381997-161">}</span><span·class="p">,</span><span·class="w">232 ······················</span><span·class="p"·data-group-id="8178394345-160">[</span><span·class="p"·data-group-id="8178394345-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="8178394345-161">}</span><span·class="p">,</span><span·class="w">
233 ·······················</span><span·class="p"·data-group-id="3677381997-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="3677381997-162">}</span><span·class="p">,</span><span·class="w">233 ·······················</span><span·class="p"·data-group-id="8178394345-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="8178394345-162">}</span><span·class="p">,</span><span·class="w">
234 ·······················</span><span·class="p"·data-group-id="3677381997-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="3677381997-164">[</span><span·class="p"·data-group-id="3677381997-164">]</span><span·class="p"·data-group-id="3677381997-163">}</span><span·class="p">,</span><span·class="w"> 
235 ·······················</span><span·class="p"·data-group-id="3677381997-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="3677381997-166">[</span><span·class="p"·data-group-id="3677381997-166">]</span><span·class="p"·data-group-id="3677381997-165">}</span><span·class="p">,</span><span·class="w"> 
236 ·······················</span><span·class="p"·data-group-id="3677381997-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="3677381997-168">[</span><span·class="p"·data-group-id="3677381997-168">]</span><span·class="p"·data-group-id="3677381997-167">}</span><span·class="p">,</span><span·class="w"> 
237 ·······················</span><span·class="p"·data-group-id="3677381997-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="3677381997-170">[</span><span·class="p"·data-group-id="3677381997-170">]</span><span·c[·...·truncated·by·diffoscope;·len:·38,·SHA:·2c5ff7c224b427a5183889efb753e68e17d4c7259a568bd560db8154cfae4cbe·...·]">}</span><span·class="p">,</span><span·class="w">234 ·······················</span><span·class="p"·data-group-id="8178394345-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="8178394345-164">[</span><span·class="p"·data-group-id="8178394345-164">]</span><span·cl[·...·truncated·by·diffoscope;·len:·37,·SHA:·6a02f5bd3d47c5dee9b80cd12d8f145c2f9e368670d9069c51529ba885026710·...·]">}</span><span·class="p">,</span><span·class="w">
 235 ·······················</span><span·class="p"·data-group-id="8178394345-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="8178394345-166">[</span><span·class="p"·data-group-id="8178394345-166">]</span><span·class="p"·data-group-id="8178394345-165">}</span><span·class="p">,</span><span·class="w">
 236 ·······················</span><span·class="p"·data-group-id="8178394345-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="8178394345-168">[</span><span·class="p"·data-group-id="8178394345-168">]</span><span·class="p"·data-group-id="8178394345-167">}</span><span·class="p">,</span><span·class="w">
 237 ·······················</span><span·class="p"·data-group-id="8178394345-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="8178394345-170">[</span><span·class="p"·data-group-id="8178394345-170">]</span><span·class="p"·data-group-id="8178394345-169">}</span><span·class="p">,</span><span·class="w">
238 ·······················</span><span·class="p"·data-group-id="3677381997-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="3677381997-172">[</span><span·class="p"·data-group-id="3677381997-172[·...·truncated·by·diffoscope;·len:·51,·SHA:·8bad939b62a038514c31215223b5a99151c8377e216ae4c383496e8786fb875b·...·]-171">}</span><span·class="p">,</span><span·class="w">238 ·······················</span><span·class="p"·data-group-id="8178394345-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="8178394345-172">[</span><span·class="p"·data-group-id="8178394345-172[·...·truncated·by·diffoscope;·len:·51,·SHA:·2c26da186c2b2d915599c14542283e94c465e4d758f615d22221835896acc812·...·]-171">}</span><span·class="p">,</span><span·class="w">
239 ·······················</span><span·class="p"·data-group-id="3677381997-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="3677381997-174">[</span><span·class="p"·data-group-id="3677381997-174">]</span><span·clas[·...·truncated·by·diffoscope;·len:·31,·SHA:·6c164756e150ac5c5d0d63e9c532ade53a4d1ae04aa6af603e8df99ba89d9322·...·]-173">}</span><span·class="p">,</span><span·class="w">239 ·······················</span><span·class="p"·data-group-id="8178394345-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="8178394345-174">[</span><span·class="p"·data-group-id="8178394345-174">]</span><span·clas[·...·truncated·by·diffoscope;·len:·31,·SHA:·e639c9d43877ae74844951fea34b41b2fb9670d6ca52056d5045c9d6c026f760·...·]-173">}</span><span·class="p">,</span><span·class="w">
240 ·······················</span><span·class="p"·data-group-id="3677381997-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="3677381997-176">[</span><span·class="p"·data-group-id="3677381997-176">]</s[·...·truncated·by·diffoscope;·len:·45,·SHA:·c3336a083a210758e4b45b1f9e4e1af197602878703c02d30518134ef5f36256·...·]-175">}</span><span·class="p">,</span><span·class="w">240 ·······················</span><span·class="p"·data-group-id="8178394345-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="8178394345-176">[</span><span·class="p"·data-group-id="8178394345-176">]</s[·...·truncated·by·diffoscope;·len:·45,·SHA:·086a049f41bf6b8d0fdd2648fd1f1ee0af56ccacfd939f18268c54de0cb40583·...·]-175">}</span><span·class="p">,</span><span·class="w">
241 ·······················</span><span·class="p"·data-group-id="3677381997-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="3677381997-178">[</span><span·class="p"·data-group-id="3677381997-178">]</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·6a4c24cbe3d2fe95f4c6072a38590c7a6fa52da57080850ee1d51c9b2b353035·...·]-177">}</span><span·class="p">,</span><span·class="w">241 ·······················</span><span·class="p"·data-group-id="8178394345-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="8178394345-178">[</span><span·class="p"·data-group-id="8178394345-178">]</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·0b4899a6ccf4e1eea9722d0b3cb247eca1eb27758aaa536c680d7aba7ac40792·...·]-177">}</span><span·class="p">,</span><span·class="w">
242 ·······················</span><span·class="p"·data-group-id="3677381997-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="3677381997-179">}</span><span·class="p">,</span><span·class="w">242 ·······················</span><span·class="p"·data-group-id="8178394345-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="8178394345-179">}</span><span·class="p">,</span><span·class="w">
243 ·······················</span><span·class="p"·data-group-id="3677381997-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="3677381997-180">}</span><span·class="p">,</span><span·class="w">243 ·······················</span><span·class="p"·data-group-id="8178394345-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="8178394345-180">}</span><span·class="p">,</span><span·class="w">
244 ·······················</span><span·class="p"·data-group-id="3677381997-181">{</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="3677381997-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:·f8b4e5984c428d7bf6222c1ad3ad953a87e103d8653509c7e3e5295c13f08068·...·]-157">}</span><span·class="p">,</span><span·class="w">244 ·······················</span><span·class="p"·data-group-id="8178394345-181">{</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="8178394345-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:·1e095a3b4d705094f242d2c2647a640e04d7c2dcd859aef385ff2410de3a2715·...·]-157">}</span><span·class="p">,</span><span·class="w">
245 ··········</span><span·class="p"·data-group-id="3677381997-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="8178394345-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="3677381997-183">[</span><span·class="p"·data-group-id="3677381997-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="3677381997-184">}</span><span·class="p">,</span><span·class="w">246 ···············</span><span·class="p"·data-group-id="8178394345-183">[</span><span·class="p"·data-group-id="8178394345-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="8178394345-184">}</span><span·class="p">,</span><span·class="w">
247 ················</span><span·class="p"·data-group-id="3677381997-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="3677381997-185">}</span><span·class="p">,</span><span·class="w">247 ················</span><span·class="p"·data-group-id="8178394345-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="8178394345-185">}</span><span·class="p">,</span><span·class="w">
248 ················</span><span·class="p"·data-group-id="3677381997-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="3677381997-187">[</span><span·class="p"·data-group-id="3677381997-187">]</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·24,·SHA:·2c4d11c6322a5ba7ceb43edf60afe7385122cc60bf68bca3f5cda4848a22318c·...·]-186">}</span><span·class="p">,</span><span·class="w">248 ················</span><span·class="p"·data-group-id="8178394345-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="8178394345-187">[</span><span·class="p"·data-group-id="8178394345-187">]</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·24,·SHA:·7200f3ea36629230e690300d4d887bd946ab4bb08057d5c3c5beaed7520bf9bf·...·]-186">}</span><span·class="p">,</span><span·class="w">
249 ················</span><span·class="p"·data-group-id="3677381997-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="3677381997-189">[</span><span·class="p"·data-group-id="3677381997-189">]</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·63c9f96bafe195f279a4420dd1c5defb4672ac4033f0b5a7a0d4cf40dea1176a·...·]-188">}</span><span·class="p">,</span><span·class="w">249 ················</span><span·class="p"·data-group-id="8178394345-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="8178394345-189">[</span><span·class="p"·data-group-id="8178394345-189">]</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·751929d5c73bab53ec53ec968fd1b02ee595a3c1d63e7d92ab6439770b592a73·...·]-188">}</span><span·class="p">,</span><span·class="w">
250 ················</span><span·class="p"·data-group-id="3677381997-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="3677381997-191">[</span><span·class="p"·data-group-id="3677381997-191">]</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·47d4f45730ff341ebbcb1572f9a26a84e251a2d063ee456f335ab97e86f08ce5·...·]-190">}</span><span·class="p">,</span><span·class="w">250 ················</span><span·class="p"·data-group-id="8178394345-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="8178394345-191">[</span><span·class="p"·data-group-id="8178394345-191">]</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·df5d9cbcf8c8d1f2ce17785c9ed6ae19c903defe7afb9140bbb9c6ef7799a830·...·]-190">}</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.6/doc/html/trace.html#process/4"><code·class="inline">trace:process/4</code></a>,·<a·href="../../../../lib/kernel-10.2.6/doc/html/trace.html#port/4"><code·class="inline">trace:port/4</code></a>,·and·<a·href="../../../../lib/kernel-10.2.6/doc/html/trace.html#function/4"><code·class="inline">trace:function/4</code></a>·BIFs,130 <a·href="../../../../lib/kernel-10.2.6/doc/html/trace.html#process/4"><code·class="inline">trace:process/4</code></a>,·<a·href="../../../../lib/kernel-10.2.6/doc/html/trace.html#port/4"><code·class="inline">trace:port/4</code></a>,·and·<a·href="../../../../lib/kernel-10.2.6/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="5654545030-1">(</span><span·class="p"·data-group-id="5654545030-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="1126995962-1">(</span><span·class="p"·data-group-id="1126995962-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="5654545030-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="5654545030-2">}</span><span·class="gp·unselectable">133 </span><span·class="p"·data-group-id="1126995962-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="1126995962-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="5654545030-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="5654545030-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="1126995962-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="1126995962-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="5654545030-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="5654545030-5">[</span><span·class="p"·data-group-id="5654545030-6">{</span><span·class="ss">matched</span><span·class="p">,</span><span·class="ss">nonode[·...·truncated·by·diffoscope;·len:·211,·SHA:·7ee79dfc004e1825cc32591099b4e1addcd803c6a5200b6594ceecbe9172538f·...·]-4">}</span><span·class="gp·unselectable">135 </span><span·class="p"·data-group-id="1126995962-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="1126995962-5">[</span><span·class="p"·data-group-id="1126995962-6">{</span><span·class="ss">matched</span><span·class="p">,</span><span·class="ss">nonode[·...·truncated·by·diffoscope;·len:·211,·SHA:·3cdb5334396126fdb348ba7d9982d156d53d9b4d047ad344859e089ed61fdd11·...·]-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="5654545030-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="5654545030-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="1126995962-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="1126995962-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="5654545030-8">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="5654545030-9">[</span><span·class="p"·data-group-id="5654545030-10">{</span><span·class="ss">matched</span><span·class="p">,</span><span·class="ss">nonod[·...·truncated·by·diffoscope;·len:·423,·SHA:·523d352c48a0509b7d7bbeac13d0eb3434a8b30a654db53e5d322fe264db4a6d·...·]-8">}</span><span·class="gp·unselectable">137 </span><span·class="p"·data-group-id="1126995962-8">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="1126995962-9">[</span><span·class="p"·data-group-id="1126995962-10">{</span><span·class="ss">matched</span><span·class="p">,</span><span·class="ss">nonod[·...·truncated·by·diffoscope;·len:·423,·SHA:·c03a9e0668665a51d90c224ffa28086ac590ca08aadaaaccd60fdda76a91ddbe·...·]-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="5654545030-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="5654545030-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="1126995962-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="1126995962-12">)</span><span·class="p">.</span><span·class="w">
139 </span><span·class="p"·data-group-id="5654545030-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="5654545030-13">)</span><span·class="w">·</span><span·class="ss">call</s[·...·truncated·by·diffoscope;·len:·885,·SHA:·6361d5c8c39f3dfb842f026ca6e2f765d4f57c955f6be9ec8b8035eef6ea8929·...·]-15">)</span><span·class="w">139 </span><span·class="p"·data-group-id="1126995962-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="1126995962-13">)</span><span·class="w">·</span><span·class="ss">call</s[·...·truncated·by·diffoscope;·len:·885,·SHA:·cc0866ec0f0ad60ec08850188b2c5212414cee551480df91e302818de5bf6dc6·...·]-15">)</span><span·class="w">
140 </span><span·class="p"·data-group-id="5654545030-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:·8b252756f84a272e627472295d3df7d9bb1868d2d7a4312cd56abd27fc5527d6·...·]-18">]</span><span·class="w">140 </span><span·class="p"·data-group-id="1126995962-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:·c27318d99f36875178c11feabcf6d1b7005a85ce7c4a013099901f0fa909ceb5·...·]-18">]</span><span·class="w">
141 </span><span·class="p"·data-group-id="5654545030-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="5654545030-19">)</span><span·class="w">·</span><span·class="ss">returne[·...·truncated·by·diffoscope;·len:·851,·SHA:·8992e97752a59e43e3019799408a63a7cd9662f20e254b672bd1faed0e5c7dda·...·]-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="1126995962-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="1126995962-19">)</span><span·class="w">·</span><span·class="ss">returne[·...·truncated·by·diffoscope;·len:·851,·SHA:·37572e4ac91e380726b139f6f526dcf955408d8f315ae82c7873fd09a16fa982·...·]-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.6/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="6453411426-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="6453411426-2">[</span><span·cl[·...·truncated·by·diffoscope;·len:·86,·SHA:·bf7cb97b72e1aa11738cadcc3e895384465a8e78c32281a4dbdfb1a05f6bf0a7·...·]-1">)</span><span·class="p">.</span><span·class="w">153 to·<a·href="../../../../lib/kernel-10.2.6/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="5669713143-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="5669713143-2">[</span><span·cl[·...·truncated·by·diffoscope;·len:·86,·SHA:·0178ad15fc7e7aab98991ed2d76c4ca958477b38d7e1a84d92f35efa02a35a11·...·]-1">)</span><span·class="p">.</span><span·class="w">
154 </span><span·class="p"·data-group-id="6453411426-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="6453411426-3">)</span><span·class="w">·</span><span·class="o">&lt;</span[·...·truncated·by·diffoscope;·len:·338,·SHA:·0defbca3841bed1331f0c77cf9cbd6f4f9d467877777e3a8186f8f2e45aa0c1e·...·]-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="5669713143-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="5669713143-3">)</span><span·class="w">·</span><span·class="o">&lt;</span[·...·truncated·by·diffoscope;·len:·338,·SHA:·b7a3bf06bb3d0e65224ac103bef50f7d291010904ac45065a34b3a9355527e23·...·]-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="6453411426-6">[</span><span·class="ss">alias</span><span·class="p">|</span><span·class="w">155 ····································</span><span·class="p"·data-group-id="5669713143-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="6453411426-6">]</span><span·class="p"·data-group-id="6453411426-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="5669713143-6">]</span><span·class="p"·data-group-id="5669713143-5">}</span><span·class="p">,</span><span·class="w">
157 ···································</span><span·class="ss">which_applications</span><span·class="p"·data-group-id="6453411426-4">}</span><span·class="w">·</span><span·class="p"·data-group-id="6453411426-7">(</span><span·class="n">Timestamp</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="6453411426-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="5669713143-4">}</span><span·class="w">·</span><span·class="p"·data-group-id="5669713143-7">(</span><span·class="n">Timestamp</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="5669713143-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="6453411426-8">}</span><span·class="p"·data-group-id="6453411426-7">)</span><span·class="w">159 ····································································</span><span·class="mi">479222</span><span·class="p"·data-group-id="5669713143-8">}</span><span·class="p"·data-group-id="5669713143-7">)</span><span·class="w">
160 </span><span·class="p"·data-group-id="6453411426-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="6453411426-9">)</span><span·class="w">·</span><span·class="ss">out</span[·...·truncated·by·diffoscope;·len:·707,·SHA:·1c6479b74cc0b2371f5bff192f53f82eeefc161e58b22bdc1c1e693d975b353a·...·]-11">)</span><span·class="w">160 </span><span·class="p"·data-group-id="5669713143-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="5669713143-9">)</span><span·class="w">·</span><span·class="ss">out</span[·...·truncated·by·diffoscope;·len:·707,·SHA:·53ffe339e7f1f4cfbd1ad689f1c60dc566bbe46cecca6d7b00a281daaee83343·...·]-11">)</span><span·class="w">
161 </span><span·class="p"·data-group-id="6453411426-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="6453411426-13">)</span><span·class="w">·</span><span·class="ss">in</spa[·...·truncated·by·diffoscope;·len:·708,·SHA:·34c527ffadbb4375a91c4ea726c286564808d0effde38fea883492db8497dbe6·...·]-15">)</span><span·class="w">161 </span><span·class="p"·data-group-id="5669713143-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="5669713143-13">)</span><span·class="w">·</span><span·class="ss">in</spa[·...·truncated·by·diffoscope;·len:·708,·SHA:·508c74ce9f3b0ff21ca53f607380fd6c941536cdec6cc293d4e81a435a1890a1·...·]-15">)</span><span·class="w">
162 </span><span·class="p"·data-group-id="6453411426-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="6453411426-17">)</span><span·class="w">·</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·522,·SHA:·d877db60af48cd7fa962aeafa22eadf7f5744a826f7c607c60b24167e36d9b18·...·]-20">]</span><span·class="p">,</span><span·class="w">162 </span><span·class="p"·data-group-id="5669713143-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="5669713143-17">)</span><span·class="w">·</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·522,·SHA:·53c74d418c64a5648334a43a6b7c8f5fe6f5ea45b3887f22d35d4b8c9373a1e4·...·]-20">]</span><span·class="p">,</span><span·class="w">
163 ···············</span><span·class="p"·data-group-id="6453411426-21">[</span><span·class="p"·data-group-id="6453411426-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:·ac622e35b5222b38c8d1eacb710befb6fa7caad1ee291ea19becfab75591085d·...·]-22">}</span><span·class="p">,</span><span·class="w">163 ···············</span><span·class="p"·data-group-id="5669713143-21">[</span><span·class="p"·data-group-id="5669713143-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:·29ef25672f7394b47ee936b5562be025afe1af6fd3ce5ee2a4492c0a100a45cd·...·]-22">}</span><span·class="p">,</span><span·class="w">
164 ················</span><span·class="p"·data-group-id="6453411426-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="6453411426-23">}</span><span·clas[·...·truncated·by·diffoscope;·len:·297,·SHA:·ebbb961ef8e914c5388c518a04d8edb3d5d4a7f7c92dbc3f87147f8edfbf7803·...·]-25">{</span><span·class="mi">1710</span><span·class="p">,</span><span·class="w">164 ················</span><span·class="p"·data-group-id="5669713143-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="5669713143-23">}</span><span·clas[·...·truncated·by·diffoscope;·len:·297,·SHA:·4a8959606cad9311e78d0c39c8f3c0b0f3259e8a5a84bd98d80b564e876e7226·...·]-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="6453411426-25">}</span><span·class="p"·data-group-id="6453411426-24">)</span><span·class="w">166 ···································································</span><span·class="mi">479274</span><span·class="p"·data-group-id="5669713143-25">}</span><span·class="p"·data-group-id="5669713143-24">)</span><span·class="w">
167 </span><span·class="p"·data-group-id="6453411426-26">[</span><span·class="p"·data-group-id="6453411426-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:·ac622e35b5222b38c8d1eacb710befb6fa7caad1ee291ea19becfab75591085d·...·]-27">}</span><span·class="p">,</span><span·class="w">167 </span><span·class="p"·data-group-id="5669713143-26">[</span><span·class="p"·data-group-id="5669713143-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:·29ef25672f7394b47ee936b5562be025afe1af6fd3ce5ee2a4492c0a100a45cd·...·]-27">}</span><span·class="p">,</span><span·class="w">
168 ·</span><span·class="p"·data-group-id="6453411426-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="6453411426-28">}</span><span·clas[·...·truncated·by·diffoscope;·len:·31,·SHA:·ac622e35b5222b38c8d1eacb710befb6fa7caad1ee291ea19becfab75591085d·...·]-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="5669713143-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="5669713143-28">}</span><span·clas[·...·truncated·by·diffoscope;·len:·31,·SHA:·29ef25672f7394b47ee936b5562be025afe1af6fd3ce5ee2a4492c0a100a45cd·...·]-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="1683793004-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="1683793004-2">[</span><span·cl[·...·truncated·by·diffoscope;·len:·159,·SHA:·8c12ec77319af3669f3beb6600ac7f2d4a80e12cfff268f1d589c5c32a0c10e4·...·]-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="9192745702-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="9192745702-2">[</span><span·cl[·...·truncated·by·diffoscope;·len:·159,·SHA:·5e6003330407c90967e0712a70f627e5ce527ea53008dc818bb07599de2c3de5·...·]-1">)</span><span·class="p">.</span><span·class="w">
174 </span><span·class="p"·data-group-id="1683793004-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="1683793004-3">)</span><span·class="w">·</span><span·class="o">&lt;</span[·...·truncated·by·diffoscope;·len:·338,·SHA:·8d906daaf6374e79c80df15c3a1a2465d94bf8255a584f86dffe80080c7952f7·...·]-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="9192745702-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="9192745702-3">)</span><span·class="w">·</span><span·class="o">&lt;</span[·...·truncated·by·diffoscope;·len:·338,·SHA:·32b001282e6c5aa02cdefd41e59e455dd8d79472e0d77f1dfc399be12b7f7f22·...·]-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="1683793004-6">[</span><span·class="ss">alias</span><span·class="p">|</span><span·class="w">175 ····································</span><span·class="p"·data-group-id="9192745702-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="1683793004-6">]</span><span·class="p"·data-group-id="1683793004-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="9192745702-6">]</span><span·class="p"·data-group-id="9192745702-5">}</span><span·class="p">,</span><span·class="w">
177 ···································</span><span·class="ss">which_applications</span><span·class="p"·data-group-id="1683793004-4">}</span><span·class="w">177 ···································</span><span·class="ss">which_applications</span><span·class="p"·data-group-id="9192745702-4">}</span><span·class="w">
178 </span><span·class="p"·data-group-id="1683793004-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="1683793004-7">)</span><span·class="w">·</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·518,·SHA:·f18800e31e4e8d6ec0fb8224a7c56239a405d9ff4cc0dc233171a0783ade6ea7·...·]-10">]</span><span·class="p">,</span><span·class="w">178 </span><span·class="p"·data-group-id="9192745702-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="9192745702-7">)</span><span·class="w">·</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·518,·SHA:·1b9e848ed9170cc92ebaa0df8d287caa943913d1e77176e761f93c001f69f547·...·]-10">]</span><span·class="p">,</span><span·class="w">
179 ···············</span><span·class="p"·data-group-id="1683793004-11">[</span><span·class="p"·data-group-id="1683793004-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:·0101698e56192c3004ab4bda5be4ade5a11a00665a8e32c68253b2cee3d2c6b0·...·]-12">}</span><span·class="p">,</span><span·class="w">179 ···············</span><span·class="p"·data-group-id="9192745702-11">[</span><span·class="p"·data-group-id="9192745702-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:·3545ebd243a2b0ed13b93729c76c11dea932b56cc71f5c1d1e4b49736cb06914·...·]-12">}</span><span·class="p">,</span><span·class="w">
180 ················</span><span·class="p"·data-group-id="1683793004-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="1683793004-13">}</span><span·clas[·...·truncated·by·diffoscope;·len:·85,·SHA:·0d9fa5b8a68feb24de4b349d68bcd9672b0ca69eab5a111ce5a81bab19dedeb4·...·]-9">}</span><span·class="w">180 ················</span><span·class="p"·data-group-id="9192745702-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="9192745702-13">}</span><span·clas[·...·truncated·by·diffoscope;·len:·85,·SHA:·99f47c9426c9f57aa9015934234d2a8f820bd8753e0520b5a7d84202898616d0·...·]-9">}</span><span·class="w">
181 </span><span·class="p"·data-group-id="1683793004-14">[</span><span·class="p"·data-group-id="1683793004-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:·0101698e56192c3004ab4bda5be4ade5a11a00665a8e32c68253b2cee3d2c6b0·...·]-15">}</span><span·class="p">,</span><span·class="w">181 </span><span·class="p"·data-group-id="9192745702-14">[</span><span·class="p"·data-group-id="9192745702-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:·3545ebd243a2b0ed13b93729c76c11dea932b56cc71f5c1d1e4b49736cb06914·...·]-15">}</span><span·class="p">,</span><span·class="w">
182 ·</span><span·class="p"·data-group-id="1683793004-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="1683793004-16">}</span><span·clas[·...·truncated·by·diffoscope;·len:·31,·SHA:·0101698e56192c3004ab4bda5be4ade5a11a00665a8e32c68253b2cee3d2c6b0·...·]-14">]</span></code></pre><h2·id="module-tracing-from-the-shell"·class="section-heading">182 ·</span><span·class="p"·data-group-id="9192745702-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="9192745702-16">}</span><span·clas[·...·truncated·by·diffoscope;·len:·31,·SHA:·3545ebd243a2b0ed13b93729c76c11dea932b56cc71f5c1d1e4b49736cb06914·...·]-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="3737270039-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="3737270039-2">(</span><span·class="p"·data-group-id="3737270039-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="k">receive</[·...·truncated·by·diffoscope;·len:·553,·SHA:·72df6ed429875c7cfce9f6167dcff9865425fdf4edbd02e8d5b7a4bcc634cfd3·...·]9-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="0842693729-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="0842693729-2">(</span><span·class="p"·data-group-id="0842693729-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="k">receive</[·...·truncated·by·diffoscope;·len:·553,·SHA:·617e835f858e6ebf950531c3b8e79e3e96816247397bcced1f080111ed6d10a4·...·]9-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="3737270039-4">(</span><span·class="p"·data-group-id="3737270039-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="0842693729-4">(</span><span·class="p"·data-group-id="0842693729-4">)</span><span·class="p">.</span><span·class="w">
193 </span><span·class="p"·data-group-id="3737270039-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="3737270039-5">}</span><span·class="gp·unselectable">193 </span><span·class="p"·data-group-id="0842693729-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="0842693729-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="3737270039-6">(</span><span·class="n">Pid</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3737270039-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:·64,·SHA:·c28fa9e7bc048090e4ad3f5a87f500569285d06bbc9ff35c84b5074068f15a8b·...·]9-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="0842693729-6">(</span><span·class="n">Pid</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0842693729-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:·64,·SHA:·afaa42ef07f7a8cc57e0dcbd5fdbd2ffd98d5f997f7483b5dfdb2235fe350fb8·...·]9-6">)</span><span·class="p">.</span><span·class="w">
195 </span><span·class="p"·data-group-id="3737270039-8">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="3737270039-9">[</span><span·class="p"·data-group-id="3737270039-10">{</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="3737270039-10">}</span><span·class="p"·data-group-id="3737270039-9">]</span><span·class="p"·data-group-id="3737270039-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="3737270039-11">{</span><span·class="nf">self</span><span·class="p"·data-group-id="3737270039-12">(</span><span·class="p"·data-group-id="3737270039-12">)</span><span·class="p">,</span><span·class="ss">hello</span><span·class="p"·data-group-id="3737270039-11">}</span><span·class="p">.</span><span·class="w"> 
197 </span><span·class="p"·data-group-id="3737270039-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="3737270039-13">)</span><span·class="w">·</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·367,·SHA:·cd0e2fc16c67a211a2881b5934431456e2a58ae3cd694a43efa047ce0204366d·...·]">195 </span><span·class="p"·data-group-id="0842693729-8">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="0842693729-9">[</span><span·class="p"·data-group-id="0842693729-10">{</span><span·class="ss">matched</span><span·class="p">,</span><span·class="ss">nonod[·...·truncated·by·diffoscope;·len:·252,·SHA:·89cdb83565af7c3f497088fa4f4a921d2d83e0d695ee0f8ee35bbb4142e75ab8·...·]">
 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="0842693729-11">{</span><span·class="nf">self</span><span·class="p"·data-group-id="0842693729-12">(</span><span·class="p"·data-group-id="0842693729-12">)</span><span·class="p">,</span><span·class="ss">hello</span><span·class="p"·data-group-id="0842693729-11">}</span><span·class="p">.</span><span·class="w">
 197 </span><span·class="p"·data-group-id="0842693729-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="0842693729-13">)</span><span·class="w">·</span><span·class="p"·data-group-id="0842693729-14">&lt;&lt;</span><span·class="w">·</span><span·class="p"·data-group-id="0842693729-15">{</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="0842693729-15">}</span><span·class="w">
198 </span><span·class="p"·data-group-id="3737270039-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="3737270039-16">}</span><span·class="w">198 </span><span·class="p"·data-group-id="0842693729-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="0842693729-16">}</span><span·class="w">
199 </span><span·class="p"·data-group-id="3737270039-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="3737270039-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="0842693729-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="0842693729-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="3737270039-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="3737270039-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="0842693729-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="0842693729-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="3737270039-19">(</span><span·class="p"·data-group-id="3737270039-19">)</span><span·class="p">.</span><span·class="w">201 5&gt;·</span><span·class="nf">flush</span><span·class="p"·data-group-id="0842693729-19">(</span><span·class="p"·data-group-id="0842693729-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="2950720329-1">(</span><span·class="p"·data-group-id="2950720329-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="4561263131-1">(</span><span·class="p"·data-group-id="4561263131-1">)</span><span·class="p">.</span><span·class="w">
206 </span><span·class="p"·data-group-id="2950720329-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="2950720329-2">}</span><span·class="gp·unselectable">206 </span><span·class="p"·data-group-id="4561263131-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="4561263131-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="2950720329-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="2950720329-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="4561263131-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="4561263131-3">)</span><span·class="p">.</span><span·class="w">
208 </span><span·class="p"·data-group-id="2950720329-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2950720329-5">[</span><span·class="p"·data-group-id="2950720329-6">{</span><span·class="ss">matched</span><span·class="p">,</span><span·class="ss">nonode[·...·truncated·by·diffoscope;·len:·211,·SHA:·dc93d60ac3342c28f5c115d46dd6305852b320d91b22c8f4d426bd30ad7f89f6·...·]-4">}</span><span·class="gp·unselectable">208 </span><span·class="p"·data-group-id="4561263131-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="4561263131-5">[</span><span·class="p"·data-group-id="4561263131-6">{</span><span·class="ss">matched</span><span·class="p">,</span><span·class="ss">nonode[·...·truncated·by·diffoscope;·len:·211,·SHA:·ab79112fd265c9ba64f90a2b5ff80c443c5f7a67cf2f4d29c9b7c492b0caecdb·...·]-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="2950720329-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:·55993a1562a1251cc3ce7b475b2e49af5632ec7ff4e7fcb99fe4fa4628b2e784·...·]-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="4561263131-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:·fd33ddc344d25196bde4e94e9dfd6f6fee234347f810c02cb173f2604ffc6f10·...·]-7">)</span><span·class="p">.</span><span·class="w">
210 </span><span·class="p"·data-group-id="2950720329-9">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2950720329-10">[</span><span·class="p"·data-group-id="2950720329-11">{</span><span·class="ss">matched</span><span·class="p">,</span><span·class="ss">nono[·...·truncated·by·diffoscope;·len:·214,·SHA:·0c231ee8c98fe2e21899942d61caa750f6add957e900dc14daa26ec85242fcc2·...·]-9">}</span><span·class="gp·unselectable">210 </span><span·class="p"·data-group-id="4561263131-9">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="4561263131-10">[</span><span·class="p"·data-group-id="4561263131-11">{</span><span·class="ss">matched</span><span·class="p">,</span><span·class="ss">nono[·...·truncated·by·diffoscope;·len:·214,·SHA:·bac7b916fbb77b2156d3fde7a4001914d809661d1dc9bea2914e44a861ef77a6·...·]-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="2950720329-12">(</span><span·class="p"·data-group-id="2950720329-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:·3fb80a0e385465f327303737787eb9cf1d65b3713387da448099f36ae7d89c79·...·]-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="4561263131-12">(</span><span·class="p"·data-group-id="4561263131-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:·7b00586f5e2df6bdbf083b8ae0aed65ae299fe198b68d6e6fcc57eebb53737cc·...·]-12">)</span><span·class="p">.</span><span·class="w">
212 </span><span·class="p"·data-group-id="2950720329-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="2950720329-14">)</span><span·class="w">·</span><span·class="ss">call</s[·...·truncated·by·diffoscope;·len:·533,·SHA:·0fc8ebc10edd4790a974bd44b2a882f9839d721c9f2afccd51cf77b110bc5a66·...·]-15">)</span><span·class="w">212 </span><span·class="p"·data-group-id="4561263131-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="4561263131-14">)</span><span·class="w">·</span><span·class="ss">call</s[·...·truncated·by·diffoscope;·len:·533,·SHA:·7040a59750c47107124ef8eaa1be33e178b040971915a09019e741fcb841a4b5·...·]-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="2950720329-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·c[·...·truncated·by·diffoscope;·len:·693,·SHA:·8f3be7983321958c2331df309e2a71f500b08d6613fdad3d629dd81ba7863adc·...·]-17">)</span><span·class="p">.</span><span·class="w">214 5&gt;·</span><span·class="nc">dbg</span><span·class="p">:</span><span·class="nf">tp</span><span·class="p"·data-group-id="4561263131-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·c[·...·truncated·by·diffoscope;·len:·693,·SHA:·3086a7a55f61d0576c47a1f83b466fc29e29a7b1bde6fda5df09bbcd18a8d365·...·]-17">)</span><span·class="p">.</span><span·class="w">
215 </span><span·class="p"·data-group-id="2950720329-23">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2950720329-24">[</span><span·class="p"·data-group-id="2950720329-25">{</span><span·class="ss">matched</span><span·class="p">,</span><span·class="ss">non[·...·truncated·by·diffoscope;·len:·425,·SHA:·bba5b5f29ea6c08e1dcc523ad56178d92b49ebfff6ee0c59bc811518622121b4·...·]-23">}</span><span·class="gp·unselectable">215 </span><span·class="p"·data-group-id="4561263131-23">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="4561263131-24">[</span><span·class="p"·data-group-id="4561263131-25">{</span><span·class="ss">matched</span><span·class="p">,</span><span·class="ss">non[·...·truncated·by·diffoscope;·len:·425,·SHA:·c062485305736f0286912e6ffd1f00bceeff5e2cc57deb0128af5a08b33e33a8·...·]-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="2950720329-27">(</span><span·class="p"·data-group-id="2950720329-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:·e05b262feff4398050f9aee2c52cfa6cb2de91191d0cef7f5506fae818759f99·...·]-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="4561263131-27">(</span><span·class="p"·data-group-id="4561263131-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:·061990f6e93c2c459e99947a50a2f67d092a09ceb9e0855165dd116c58b6f2fd·...·]-27">)</span><span·class="p">.</span><span·class="w">
217 </span><span·class="p"·data-group-id="2950720329-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="2950720329-29">)</span><span·class="w">·</span><span·class="ss">call</s[·...·truncated·by·diffoscope;·len:·533,·SHA:·ec2e43f7a5b0ffe6105fad90deae38f0eb133b79e252235d07809fa61635a087·...·]-30">)</span><span·class="w">217 </span><span·class="p"·data-group-id="4561263131-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="4561263131-29">)</span><span·class="w">·</span><span·class="ss">call</s[·...·truncated·by·diffoscope;·len:·533,·SHA:·41355840780a41ccef23e07e27881ab9f70b833c3e862496662f6b69677dc17b·...·]-30">)</span><span·class="w">
218 </span><span·class="p"·data-group-id="2950720329-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="2950720329-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="4561263131-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="4561263131-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.6/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.6/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.6/doc/html/seq_trace.html"><code·class="inline">seq_trace</code></a>·module.</p><p><a·href="../../../../lib/kernel-10.2.6/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.6/doc/html/seq_trace.html"><code·class="inline">seq_trace</code></a>·module.</p><p><a·href="../../../../lib/kernel-10.2.6/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="9859616276-1">(</span><span·class="p"·data-group-id="9859616276-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="5975125570-1">(</span><span·class="p"·data-group-id="5975125570-1">)</span><span·class="p">.</span><span·class="w">
233 </span><span·class="p"·data-group-id="9859616276-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="9859616276-2">}</span><span·class="gp·unselectable">233 </span><span·class="p"·data-group-id="5975125570-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="5975125570-2">}</span><span·class="gp·unselectable">
234 2&gt;·</span><span·class="p"·data-group-id="9859616276-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="9859616276-3">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·173,·SHA:·9dbf5d3004fa1e7d12ba193bb574f5d729206f98447174e677c819cf9d2c14f4·...·]-4">)</span><span·class="p">.</span><span·class="w">234 2&gt;·</span><span·class="p"·data-group-id="5975125570-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="5975125570-3">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·173,·SHA:·a7f640c09e08f92fb1705a77730ce445b1c5baabe813d016b2846be1b06396b7·...·]-4">)</span><span·class="p">.</span><span·class="w">
235 </span><span·class="p"·data-group-id="9859616276-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="9859616276-5">}</span><span·class="gp·unselectable">235 </span><span·class="p"·data-group-id="5975125570-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="5975125570-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="9859616276-6">(</span><span·class="n">Tracer</span><span·class="p"·data-group-id="9859616276-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="5975125570-6">(</span><span·class="n">Tracer</span><span·class="p"·data-group-id="5975125570-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="9859616276-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><span·class="p"·data-group-id="9859616276-8">[</span><span·class="p"·data-group-id="9859616276-9">{</span><span·class="p"·data-group-id="9859616276-10">[</span><span·class="p"·data-group-id="9859616276-10">]</span><span·class="p">,</span><span·class="p"·data-group-id="9859616276-11">[</span><span·class="p"·data-group-id="9859616276-11">]</span><span·class="p">,</span><span·class="p"·data-group-id="9859616276-12">[</span><span·class="p"·data-group-id="9859616276-13">{</span><span·class="ss">set_seq_token</span><span·class="p">,</span><span·class="w">·</span><span·class="nb">send</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">true</span><span·class="p"·data-group-id="9859616276-13">}</span><span·class="p"·data-group-id="9859616276-12">]</span><span·class="p"·data-group-id="9859616276-9">}</span><span·class="p"·data-group-id="9859616276-8">]</span><span·class="p"·data-group-id="9859616276-7">)</span><span·class="p">.</span><span·class="w"> 
239 </span><span·class="p"·data-group-id="9859616276-14">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9859616276-15">[</span><span·class="p"·data-group-id="9859616276-16">{</span><span·class="ss">matched</span><span·[·...·truncated·by·diffoscope;·len:·504,·SHA:·9ab04fbe0659fe2753ed44414375fda8b784f884a49c924d0dd93aa34fb2fa29·...·]">238 4&gt;·</span><span·class="nc">dbg</span><span·class="p">:</span><span·class="nf">tp</span><span·class="p"·data-group-id="5975125570-7">(</span><span·class="ss">dbg</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">get_tracer</span><spa[·...·truncated·by·diffoscope;·len:·1089,·SHA:·5a2705747dcb6808b7a541435126b2ded571a8084cf24bd6f7ea3acec449dc5b·...·]">
 239 </span><span·class="p"·data-group-id="5975125570-14">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="5975125570-15">[</span><span·class="p"·data-group-id="5975125570-16">{</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="5975125570-16">}</span><span·class="p">,</span><span·class="p"·data-group-id="5975125570-17">{</span><span·class="ss">saved</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="5975125570-17">}</span><span·class="p"·data-group-id="5975125570-15">]</span><span·class="p"·data-group-id="5975125570-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="9859616276-18">(</span><span·class="ss">all</span><span·class="p">,</span><span·class="ss">call</span><span·class="p"·data-group-id="9859616276-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="5975125570-18">(</span><span·class="ss">all</span><span·class="p">,</span><span·class="ss">call</span><span·class="p"·data-group-id="5975125570-18">)</span><span·class="p">.</span><span·class="w">
241 </span><span·class="p"·data-group-id="9859616276-19">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9859616276-20">[</span><span·class="p"·data-group-id="9859616276-21">{</span><span·class="ss">matched</span><span·class="p">,</span><span·class="ss">non[·...·truncated·by·diffoscope;·len:·216,·SHA:·e49f27c75fdb41d12baa3a74647af72472859597fdd1acc6a353c0d8801f7b51·...·]-19">}</span><span·class="gp·unselectable">241 </span><span·class="p"·data-group-id="5975125570-19">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="5975125570-20">[</span><span·class="p"·data-group-id="5975125570-21">{</span><span·class="ss">matched</span><span·class="p">,</span><span·class="ss">non[·...·truncated·by·diffoscope;·len:·216,·SHA:·cde79c7c22d8b781639186937aa8d45366869912142e6d5fbb9969b17f22a7e8·...·]-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="9859616276-22">(</span><span·class="p"·data-group-id="9859616276-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="9859616276[·...·truncated·by·diffoscope;·len:·162,·SHA:·87f35f867e4d25665705f51d781ca4e280696f7856fd9f8913bee18736c05026·...·]-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="5975125570-22">(</span><span·class="p"·data-group-id="5975125570-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="5975125570[·...·truncated·by·diffoscope;·len:·162,·SHA:·182214375a6ec911485e91f47494a1b6a56d8fec379b5e89d81809906498c968·...·]-23">)</span><span·class="p">.</span><span·class="w">
243 </span><span·class="p"·data-group-id="9859616276-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="9859616276-25">)</span><span·class="w">·</span><span·class="ss">call</s[·...·truncated·by·diffoscope;·len:·208,·SHA:·e7b29b27fc01e587b4d780ada6b99fc7c14305d9a85478fe41456491bc44d451·...·]-26">)</span><span·class="w">243 </span><span·class="p"·data-group-id="5975125570-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="5975125570-25">)</span><span·class="w">·</span><span·class="ss">call</s[·...·truncated·by·diffoscope;·len:·208,·SHA:·e827d46e598a93e8d9255382e1d1be1449242c36a2fc424b4524ee9248993dc3·...·]-26">)</span><span·class="w">
244 </span><span·class="n">SeqTrace</span><span·class="w">·</span><span·class="p"·data-group-id="9859616276-27">[</span><span·class="mi">0</span><span·class="p"·data-group-id="9859616276-27">]</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="9859616276-28">(</span><span·class="o">&lt;</span><span·class="mf">0.25</sp[·...·truncated·by·diffoscope;·len:·1035,·SHA:·289cda8ee020ff22388f7d9ac0ff7bd1c2cac3f3f2d64f548af35bd8a5d8a76a·...·]-30">]</span><span·class="w">244 </span><span·class="n">SeqTrace</span><span·class="w">·</span><span·class="p"·data-group-id="5975125570-27">[</span><span·class="mi">0</span><span·class="p"·data-group-id="5975125570-27">]</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="5975125570-28">(</span><span·class="o">&lt;</span><span·class="mf">0.25</sp[·...·truncated·by·diffoscope;·len:·1035,·SHA:·0f218f9385a5c2ec8cba9c4ec6a79f997aefd16e35768afcf5fb062e693a7ee1·...·]-30">]</span><span·class="w">
245 </span><span·class="n">SeqTrace</span><span·class="w">·</span><span·class="p"·data-group-id="9859616276-32">[</span><span·class="mi">0</span><span·class="p"·data-group-id="9859616276-32">]</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="9859616276-33">(</span><span·class="o">&lt;</span><span·class="mf">0.30</sp[·...·truncated·by·diffoscope;·len:·1186,·SHA:·6b9179bbd6b0e4bb4a8b4fcade7c912eeb7e6cddcb90c7984bb5cdc99503a10c·...·]-36">]</span><span·class="w">245 </span><span·class="n">SeqTrace</span><span·class="w">·</span><span·class="p"·data-group-id="5975125570-32">[</span><span·class="mi">0</span><span·class="p"·data-group-id="5975125570-32">]</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="5975125570-33">(</span><span·class="o">&lt;</span><span·class="mf">0.30</sp[·...·truncated·by·diffoscope;·len:·1186,·SHA:·73fb321e080b535be0b58e9d8e9884babda8838a745f6d34a5cf28df6de7908f·...·]-36">]</span><span·class="w">
246 </span><span·class="p"·data-group-id="9859616276-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:·bb043deba669288b7bed5274a271923c879543eca0bcdaf635527ca45156fb6e·...·]-38">}</span></code></pre><p>This·session·sets·the·system_tracer·to·the·same·process·as·the246 </span><span·class="p"·data-group-id="5975125570-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:·cfc5faa060591a2424e3c82fe54edc147c65770a3ea1d99d0e3fa07b971128c9·...·]-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
Max diff block lines reached; 130227/219835 bytes (59.24%) 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.6/doc/html/erlang.html#t:non_neg_integer/0">non_neg_integer</a>(),·<a·href="../../../../erts-15.2.6/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.6/doc/html/erlang.html#t:non_neg_integer/0">non_neg_integer</a>(),·<a·href="../../../../erts-15.2.6/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="3442888384-1">(</span><span·class="p"·data-group-id="3442888384-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="2697616708-1">(</span><span·class="p"·data-group-id="2697616708-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="3442888384-2">(</span><span·class="ss">false</span><span·class="p"·data-group-id="3442888384-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="2697616708-2">(</span><span·class="ss">false</span><span·class="p"·data-group-id="2697616708-2">)</span><span·class="p">,</span><span·class="w">
832 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="3442888384-3">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="3442888384-4">(</span><span·class="p"·data-group-id="3442888384-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="2697616708-3">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="2697616708-4">(</span><span·class="p"·data-group-id="2697616708-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="3442888384-5">(</span><span·class="n">TagData</span><span·class="p"·data-group-id="3442888384-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="2697616708-5">(</span><span·class="n">TagData</span><span·class="p"·data-group-id="2697616708-5">)</span><span·class="p">,</span><span·class="w">
834 ·············</span><span·class="nf">do_something</span><span·class="p"·data-group-id="3442888384-6">(</span><span·class="p"·data-group-id="3442888384-6">)</span><span·class="w">834 ·············</span><span·class="nf">do_something</span><span·class="p"·data-group-id="2697616708-6">(</span><span·class="p"·data-group-id="2697616708-6">)</span><span·class="w">
835 ··········</span><span·class="k">end</span><span·class="p"·data-group-id="3442888384-3">)</span><span·class="p">,</span><span·class="w">835 ··········</span><span·class="k">end</span><span·class="p"·data-group-id="2697616708-3">)</span><span·class="p">,</span><span·class="w">
836 ····</span><span·class="nf">do_something_else</span><span·class="p"·data-group-id="3442888384-7">(</span><span·class="p"·data-group-id="3442888384-7">)</span><span·class="p">,</span><span·class="w">836 ····</span><span·class="nf">do_something_else</span><span·class="p"·data-group-id="2697616708-7">(</span><span·class="p"·data-group-id="2697616708-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="3442888384-8">(</span><span·class="n">TagData</span><span·class="p"·data-group-id="3442888384-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="2697616708-8">(</span><span·class="n">TagData</span><span·class="p"·data-group-id="2697616708-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.6/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.6/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.2/doc/html/io.html"><code·class="inline">io</code></a>·module882 this·function·to·get·user·tags·spread·to·the·<code·class="inline">efile</code>·driver·through·that·module.</p><p>The·most·use·of·this·function·would·be·if·one,·for·example,·uses·the·<a·href="../../../../lib/stdlib-6.2.2/doc/html/io.html"><code·class="inline">io</code></a>·module
883 to·communicate·with·an·I/O-server·for·a·regular·file,·such·as·in·the·following883 to·communicate·with·an·I/O-server·for·a·regular·file,·such·as·in·the·following
884 example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">f</span><span·class="p"·data-group-id="1009838457-1">(</span><span·class="p"·data-group-id="1009838457-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="1947386104-1">(</span><span·class="p"·data-group-id="1947386104-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
885 ···</span><span·class="p"·data-group-id="1009838457-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="1009838457-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class=[·...·truncated·by·diffoscope;·len:·388,·SHA:·b93a598b16e1440b82463a982f996426c4db7507b83dbd2bdf0e312b511d5c7e·...·]-3">)</span><span·class="p">,</span><span·class="w">885 ···</span><span·class="p"·data-group-id="1947386104-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="1947386104-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class=[·...·truncated·by·diffoscope;·len:·388,·SHA:·976e1678572abfd388dfd31116f1f420529c6f52b8479fe91504e5b8998cf8d0·...·]-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="1009838457-5">(</span><span·class="ss">true</span><span·class="p"·data-group-id="1009838457-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="1947386104-5">(</span><span·class="ss">true</span><span·class="p"·data-group-id="1947386104-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="1009838457-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="1009838457-7">[</span><span·class="p"[·...·truncated·by·diffoscope;·len:·79,·SHA:·258a24aa4fb80ddb89e02f5a9c5bd4527c6cf629442ee3bfa57710de03f481c0·...·]-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="1947386104-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="1947386104-7">[</span><span·class="p"[·...·truncated·by·diffoscope;·len:·79,·SHA:·dee004b55e7e1a655450bc594443c14c42528254d628e36de3584bdebf17476a·...·]-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="1009838457-8">(</span><span·class="n">Saved</span><span·class="p"·data-group-id="1009838457-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="1947386104-8">(</span><span·class="n">Saved</span><span·class="p"·data-group-id="1947386104-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="1009838457-9">(</span><span·class="n">F</span><span·class="p"·data-group-id="1009838457-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="1947386104-9">(</span><span·class="n">F</span><span·class="p"·data-group-id="1947386104-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.2/doc/html/io.html#format/3"><code·class="inline">io:format/3</code></a>·call·is·done.</p>890 I/O-server·when·the·<a·href="../../../../lib/stdlib-6.2.2/doc/html/io.html#format/3"><code·class="inline">io:format/3</code></a>·call·is·done.</p>
891 ··</section>891 ··</section>
892 </section>892 </section>
  
893 ····</div>893 ····</div>
894 ··</section>894 ··</section>
  
50.6 KB
./usr/share/doc/erlang-doc/html/lib/runtime_tools-2.1.1/doc/html/instrument.html
    
Offset 345, 16 lines modifiedOffset 345, 16 lines modified
  
345 ······</div>345 ······</div>
  
346 <p>A·histogram·of·block·sizes·where·each·interval's·upper·bound·is·twice·as·high·as346 <p>A·histogram·of·block·sizes·where·each·interval's·upper·bound·is·twice·as·high·as
347 the·one·before·it.</p><p>The·upper·bound·of·the·first·interval·is·provided·by·the·function·that·returned347 the·one·before·it.</p><p>The·upper·bound·of·the·first·interval·is·provided·by·the·function·that·returned
348 the·histogram,·and·the·last·interval·has·no·upper·bound.</p><p>For·example,·the·histogram·below·has·40·(<code·class="inline">message</code>)·blocks·between·128-256·bytes348 the·histogram,·and·the·last·interval·has·no·upper·bound.</p><p>For·example,·the·histogram·below·has·40·(<code·class="inline">message</code>)·blocks·between·128-256·bytes
349 in·size,·78·blocks·between·256-512·bytes,2·blocks·between·512-1024·bytes,·and·2349 in·size,·78·blocks·between·256-512·bytes,2·blocks·between·512-1024·bytes,·and·2
350 blocks·between·1-2KB.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nc">instrument</span><span·class="p">:</span><span·class="nf">allocations</span><span·class="p"·data-group-id="8351394537-1">(</span><span·class="p"·data-group-id="8351394537-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:·a8145fd073f07496f3959d34df1e5c1d9f61405210b173acd611bc95ec288342·...·]-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="6772539491-1">(</span><span·class="p"·data-group-id="6772539491-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:·459b7f9a7f8bbd20129893dd489ee9316a00cb1f2d980da2e17304634633fb7c·...·]-1">)</span><span·class="p">.</span><span·class="w">
351 </span><span·class="p"·data-group-id="8351394537-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8351394537-4">{</span><span·class="mi">128</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">0</span><span·c[·...·truncated·by·diffoscope;·len:·1360,·SHA:·9b48a7b2f23cfa8130e300764eb401bb308e27534593302851c3329fb80b7d2d·...·]-3">}</span></code></pre>351 </span><span·class="p"·data-group-id="6772539491-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6772539491-4">{</span><span·class="mi">128</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">0</span><span·c[·...·truncated·by·diffoscope;·len:·1360,·SHA:·8deb4088f4628f13019b340f2bfc0f5638c85243c5fbb6636d97a67db56b04e5·...·]-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="6060946124-1">(</span><span·class="p"·data-group-id="6060946124-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:·2b5bba03c922fe7aafe4f9ddc3409d376d316f569c424d0381d5c79d05dd7e3e·...·]-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="3508998593-1">(</span><span·class="p"·data-group-id="3508998593-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:·c052ff10853c20a49efe47ce531928ec104ee7d6c8471f66d5a740472f45ea58·...·]-1">)</span><span·class="p">.</span><span·class="w">
488 </span><span·class="p"·data-group-id="6060946124-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="6060946124-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="3508998593-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="3508998593-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="6060946124-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="3508998593-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="6060946124-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="6060946124-7">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·743,·SHA:·63b2fa8d7327f50bae1176b60bb66abd313ed77c4e84bff7d4745df794b00763·...·]-6">}</span><span·class="p">,</span><span·class="w">490 ···········</span><span·class="p"·data-group-id="3508998593-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="3508998593-7">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·743,·SHA:·2d21def89b31db95107ae36d054b2d756067e2a0e804bb9fbee9f41ab574edd6·...·]-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="6060946124-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="6060946124-9">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><s[·...·truncated·by·diffoscope;·len:·677,·SHA:·38b6c8df63675e796d849a83d85f8258f70b1808cf2fa01ca5c4b9deabf63ef9·...·]-9">}</span><span·class="p">,</span><span·class="w">492 ···········</span><span·class="p"·data-group-id="3508998593-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="3508998593-9">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><s[·...·truncated·by·diffoscope;·len:·677,·SHA:·ed807aa12c54840f0f048c72c32228e5a6840481957e7f843fbc8a2032599fb1·...·]-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="6060946124-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:·d34bd2fdb7257c962165471027991fbd0d5cf0cbb451e3af6b03fa818ea4493f·...·]-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="3508998593-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:·e897f18f4440c3656fbb2c90229cbfc533f75725108efa9a49937d16e73ded7f·...·]-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="6060946124-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:·2e605a109a71eaec3215a4ea2c7a2901d32edd7128cc5216bc66176975a66996·...·]-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="3508998593-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:·2947c12512e4b6d2d13e9b03f9440bcaeb432e3cb0395b22f32c51ca2f33237c·...·]-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="6060946124-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:·5965f4f9a0d9e48857eca2736a603848a27b8d84111f3299883056a75f59384c·...·]-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="3508998593-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:·3d6deee1b36216f190868aa40108c9c6eb4b26675337b1e3a7c513a494575055·...·]-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="6060946124-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:·06c2530d045041d380719a79a4a1849a9ad47612532bf70fd2acd3e9e4b47645·...·]-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="3508998593-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:·bb8b8678e0294fbb7431a46366a65a1e8eb933f74e92e4698846019811266256·...·]-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="6060946124-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="3508998593-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="6060946124-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="3508998593-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="6060946124-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:·5e8d04f87938e752980a80e3838be28c873ee308d46b81fb3d5c6bbdc59d2e06·...·]-14">}</span><span·class="p">,</span><span·class="w">500 ·················</span><span·class="p"·data-group-id="3508998593-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:·79a190f8467149c5e8fbaf77c7f2f383e592e3452c6feace23ad5aecd6d6cd31·...·]-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="6060946124-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="6060946124-17">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0<[·...·truncated·by·diffoscope;·len:·738,·SHA:·75649b11c3e5bc18eda5a9cb14196cdf8e1dd4596b962cb675a0f23f665ce825·...·]-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="3508998593-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="3508998593-17">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0<[·...·truncated·by·diffoscope;·len:·738,·SHA:·ae7b01ae6463a970577b02f6a0de950a0c61b816068fb35784f3b0da7626704c·...·]-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="6060946124-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="6060946124-19">{</span><span·class="mi">2</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·695,·SHA:·8851b451c1a933a3df5c9747a0ec3867c50dd378ab932fbd7540dce6cb9ef104·...·]-19">}</span><span·class="p">,</span><span·class="w">503 ···········</span><span·class="p"·data-group-id="3508998593-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="3508998593-19">{</span><span·class="mi">2</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·695,·SHA:·22c42222075699d2e4cc94c59e6c52324a5e9885db4c18f4bce60c4963963c8b·...·]-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="6060946124-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:·40388f6e6f989be905c737cf1f5948696c2c0982ad04289b61acca8d2a31ded3·...·]-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="3508998593-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:·8137e94a36f9bd565afe590184d7267050454d7b257a92efc0540728079a06a5·...·]-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="6060946124-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:·40388f6e6f989be905c737cf1f5948696c2c0982ad04289b61acca8d2a31ded3·...·]-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="3508998593-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:·8137e94a36f9bd565afe590184d7267050454d7b257a92efc0540728079a06a5·...·]-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="6060946124-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:·e0abcf14845e03d09fa2f11b6dd76ced060966a0eaeb2be0e4e79a348086099e·...·]-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="3508998593-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:·ffc5624f15f13eea72731437474d451b299e499121ee6eaf5dbe2b0bf3ed58b8·...·]-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="6060946124-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:·703f2b696e3cec750c6705b1a5c33fdb9cb3a16a6a6be671d44f357a913d9803·...·]-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="3508998593-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:·c82553c21b36c8852a0c856dfa57c5a9579e78520aff5ffc12b795c022abc5f8·...·]-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="6060946124-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="6060946124-25">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">[·...·truncated·by·diffoscope;·len:·686,·SHA:·577f5860303961fc635a15ee5cf8ee81a837aec6d3c0535d356494959c426d70·...·]-25">}</span><span·class="p">,</span><span·class="w">509 ···········</span><span·class="p"·data-group-id="3508998593-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="3508998593-25">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">[·...·truncated·by·diffoscope;·len:·686,·SHA:·71e5ca3ed7889f6014289d65f2fc229663c83442756d883f513e9f8bcad70562·...·]-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="6060946124-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:·f8fd4857d2e0eefc349b1343e64b232dc7422199f7d8ef6399547bd15b48efc5·...·]-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="3508998593-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:·7780efa9a980477da9f4463c6c8d5facd71f602cbb488df895cf527295791a14·...·]-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="2320206059-1">(</span><span·class="p"·data-group-id="2320206059-2">#{</span><span·class="w">·</span><span·class="ss">histogram_start</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">512</span><span·class="p[·...·truncated·by·diffoscope;·len:·292,·SHA:·3cd1398e858ff86f12b6b355d3711d1f86ddca606d641183d659250b54934336·...·]-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="8206071277-1">(</span><span·class="p"·data-group-id="8206071277-2">#{</span><span·class="w">·</span><span·class="ss">histogram_start</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">512</span><span·class="p[·...·truncated·by·diffoscope;·len:·292,·SHA:·40c2d28b44040cb035c859805f9ab797038da829f445c831f20fdb513199d064·...·]-1">)</span><span·class="p">.</span><span·class="w">
584 </span><span·class="p"·data-group-id="2320206059-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2320206059-4">{</span><span·class="mi">512</span><span·class="p">,</span><span·class="w">584 </span><span·class="p"·data-group-id="8206071277-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="8206071277-4">{</span><span·class="mi">512</span><span·class="p">,</span><span·class="w">
585 ·····</span><span·class="p"·data-group-id="2320206059-5">[</span><span·class="p"·data-group-id="2320206059-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="8206071277-5">[</span><span·class="p"·data-group-id="8206071277-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="2320206059-7">[</span><span·class="p"·data-group-id="2320206059-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="2320206059-8[·...·truncated·by·diffoscope;·len:·51,·SHA:·3dc26e8c49ae1f118d43b7b5190da9e5138576c1aa0ecb2d49067b673589c359·...·]-7">]</span><span·class="p">,</span><span·class="w">586 ····················</span><span·class="p"·data-group-id="8206071277-7">[</span><span·class="p"·data-group-id="8206071277-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="8206071277-8[·...·truncated·by·diffoscope;·len:·51,·SHA:·aa63da5a3d19ecc100b41f43c219c61752b2822b7e9f68ed06e256080a3e008d·...·]-7">]</span><span·class="p">,</span><span·class="w">
587 ····················</span><span·class="p"·data-group-id="2320206059-9">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="[·...·truncated·by·diffoscope;·len:·228,·SHA:·5c53a6bd478a4d463f7ac64d074faa763d369903865aff5fc8779b27aebbf712·...·]-6">}</span><span·class="p">,</span><span·class="w">587 ····················</span><span·class="p"·data-group-id="8206071277-9">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="[·...·truncated·by·diffoscope;·len:·228,·SHA:·1baf593a68a68acf17381448fd00a971a9e5526e42edb364594d1fcc91c47166·...·]-6">}</span><span·class="p">,</span><span·class="w">
588 ······</span><span·class="p"·data-group-id="2320206059-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="8206071277-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="2320206059-11">[</span><span·class="p"·data-group-id="2320206059-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="2320206059[·...·truncated·by·diffoscope;·len:·54,·SHA:·9e9292b2055f81d21a600644d94eb91609a6bed5e504c5f41299e04ef779a594·...·]-11">]</span><span·class="p">,</span><span·class="w">589 ····················</span><span·class="p"·data-group-id="8206071277-11">[</span><span·class="p"·data-group-id="8206071277-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="8206071277[·...·truncated·by·diffoscope;·len:·54,·SHA:·ff05f0cb2350ea5d454effa1309c0e01cbb085c2f8f72bf102abb3d76f5aba42·...·]-11">]</span><span·class="p">,</span><span·class="w">
590 ····················</span><span·class="p"·data-group-id="2320206059-13">{</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">1</span><span·class=[·...·truncated·by·diffoscope;·len:·230,·SHA:·39f3677be10524485517fba3859835455b77402108a95d53764c6f715bce3987·...·]-10">}</span><span·class="p">,</span><span·class="w">590 ····················</span><span·class="p"·data-group-id="8206071277-13">{</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">1</span><span·class=[·...·truncated·by·diffoscope;·len:·230,·SHA:·5970122d9b0e2d4533eabad0f76686e4d34f965da827441fdeae323a96059eea·...·]-10">}</span><span·class="p">,</span><span·class="w">
591 ······</span><span·class="p"·data-group-id="2320206059-14">{</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="2320206059-14">}</span><span·class="p">|</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class[·...·truncated·by·diffoscope;·len:·136,·SHA:·c10d44f09936bf9be3b0f8982203b12d3aafea6090e1d425a1fc0a6a14802ac3·...·]-3">}</span></code></pre>591 ······</span><span·class="p"·data-group-id="8206071277-14">{</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="8206071277-14">}</span><span·class="p">|</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class[·...·truncated·by·diffoscope;·len:·136,·SHA:·822076a48a71310436a8e4c0502b732c49a078d8eb48b21fda1d426a594f6574·...·]-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.6/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.6/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="6977154386-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="6977154386-1">}</span><span·[·...·truncated·by·diffoscope;·len:·731,·SHA:·1fc07061ba9459b6f532497fc6c216f1f02d103ca3a97067b94c60b0405af889·...·]-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.6/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="0581600185-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="0581600185-1">}</span><span·[·...·truncated·by·diffoscope;·len:·731,·SHA:·bded494a31f055135f3c5f362501000cee06813b14b9605a8323cf30e0c86664·...·]-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.6/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.6/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.6/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="0574596726-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="0574596726-1">}</span><span·[·...·truncated·by·diffoscope;·len:·703,·SHA:·3063c03894be56aa6e01ad85935a79d469c23b45f8663330c4391d4a779fb5dd·...·]-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="1083246102-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="1083246102-1">}</span><span·[·...·truncated·by·diffoscope;·len:·703,·SHA:·b2a02e7004897dae338d2a9c2b262abc53f30c33417a7155f1c845003c0c4b30·...·]-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.6/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.6/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="7885928995-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="7885928995-1">}</span><span·[·...·truncated·by·diffoscope;·len:·716,·SHA:·7a99ef3cafa471d416f4648478ea88d17e86c9c4ddfeca7965e6382bb18f3c67·...·]-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.6/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="2243836674-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="2243836674-1">}</span><span·[·...·truncated·by·diffoscope;·len:·716,·SHA:·1ca6fa5ebebf1f48efe13cbfc4b2b29f6c32aa95eb20171eea0dec4ff6188bc9·...·]-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.6/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.6/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.6/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.6/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.6/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="6044744432-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="6044744432-1">}</span><span·[·...·truncated·by·diffoscope;·len:·723,·SHA:·fe0111bc4ca6482c73ab6dfb1ef419c79949028aea4f9ec889c2e8cd2142e8be·...·]-2">}</span></code></pre><p><em>port_scheduled</em></p><p>Available·through·<a·href="../../../../erts-15.2.6/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="4438878591-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="4438878591-1">}</span><span·[·...·truncated·by·diffoscope;·len:·723,·SHA:·7ae641e9956aee550ec35d6fdf404d509bcfd48af8bf1ad6bfce7f784d5a2a5b·...·]-2">}</span></code></pre><p><em>port_scheduled</em></p><p>Available·through·<a·href="../../../../erts-15.2.6/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="5290688123-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="5290688123-1">}</span><span·[·...·truncated·by·diffoscope;·len:·712,·SHA:·9f58a3c1a96c194a1988abe0c8eddded36f14a224a7f35d4de581b227ca9f081·...·]-2">}</span></code></pre><p>Available·through·<a·href="../../../../erts-15.2.6/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="3878967162-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="3878967162-1">}</span><span·[·...·truncated·by·diffoscope;·len:·712,·SHA:·dd47429f596999a2d3ad45b4088546fd006537daa60e2ce9e07f420175933cf6·...·]-2">}</span></code></pre><p>Available·through·<a·href="../../../../erts-15.2.6/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.6/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.6/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="4270684787-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="4270684787-1">}</span><span·[·...·truncated·by·diffoscope;·len:·740,·SHA:·6095a7d742e9cc4eb824f37c628e0ee8341cbec8d20d270084d640a9fcd39210·...·]-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.6/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="2208943781-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="2208943781-1">}</span><span·[·...·truncated·by·diffoscope;·len:·740,·SHA:·ec786d1592ffd26c351f6836a38213ccacd47b02e5f7eb7e57240b16ff014775·...·]-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.6/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="9631967573-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="9631967573-1">}</span><span·[·...·truncated·by·diffoscope;·len:·720,·SHA:·e59ef678fc03c3880c7bcd6ac425eeb733665e91003715ad967316ae4ad765e1·...·]-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.6/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="3475615174-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="3475615174-1">}</span><span·[·...·truncated·by·diffoscope;·len:·720,·SHA:·85bd38adc135d7b8d127a3d3acb56a8819664d52f0ceadd43ffaff989650a794·...·]-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.6/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="1494837018-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="1494837018-1">}</span><span·[·...·truncated·by·diffoscope;·len:·718,·SHA:·136d1100d203dbfeb5978907aadd983f511569be705211e3c26f80fd300e9507·...·]-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.6/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="9156898875-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="9156898875-1">}</span><span·[·...·truncated·by·diffoscope;·len:·718,·SHA:·11d06454ce006ecd420efd1d154ce72b3258be8f61a662fc3431cbb8061ed2a0·...·]-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.6/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.6/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.6/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.6/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.6/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="6664361407-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="6664361407-1">}</span><span·c[·...·truncated·by·diffoscope;·len:·857,·SHA:·0465121ff7ec86b4e4cd1650807c028cb554548af95614669702995c69d5747e·...·]-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.6/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="6493386888-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="6493386888-1">}</span><span·c[·...·truncated·by·diffoscope;·len:·857,·SHA:·86986e3dd65413a0f322c126c4b9cd863f0f7ee1bf777b47f8e9cd17979e2d69·...·]-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.6/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.6/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.6/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="3228858118-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="3228858118-1">}</span><span·[·...·truncated·by·diffoscope;·len:·861,·SHA:·dc85a3d15dbb18b583ef0e363c9cd63b2f16719d35d6fcee94f04cf0860a6980·...·]8-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.6/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="5576370068-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="5576370068-1">}</span><span·[·...·truncated·by·diffoscope;·len:·861,·SHA:·6795c04c58585fb6bac581590f3c2a0d1d2079c47c56f74abeaf1530eca6e471·...·]8-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.6/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="7420490025-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="7420490025-1">}</span><span·[·...·truncated·by·diffoscope;·len:·19389,·SHA:·c3cead19a2753ff6c60a46ea2f153279c47bc0e1a743b084b9e18d036dd0de8e·...·]-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="5291795331-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="5291795331-1">}</span><span·[·...·truncated·by·diffoscope;·len:·19389,·SHA:·442e1376992855803d7f8d1bca1a9ca534e4f5495e5b0e47b9d66b880c2f1884·...·]-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="4257271738-1">(</span><span·class="ss">dyntrace</span><span·class="p"·data-group-id="4257271738-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="4819370595-1">(</span><span·class="ss">dyntrace</span><span·class="p"·data-group-id="4819370595-1">)</span><span·class="p">.</span><span·class="w">
201 </span><span·class="p"·data-group-id="4257271738-2">{</span><span·class="ss">module</span><span·class="p">,</span><span·class="ss">dyntrace</span><span·class="p"·data-group-id="4257271738-2">}</span></code></pre><p>All·tracepoints·via·dyntrace·are·now·visible·and·can·be·listed·through201 </span><span·class="p"·data-group-id="4819370595-2">{</span><span·class="ss">module</span><span·class="p">,</span><span·class="ss">dyntrace</span><span·class="p"·data-group-id="4819370595-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="1192435023-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="1192435023-2">[</span><span·class="ss">procs</span><span·class="p">,</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·391,·SHA:·3153844e629b2ddd57641bdb505642d62189a3341f17814ea1233f002de35a9e·...·]-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="8946488966-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="8946488966-2">[</span><span·class="ss">procs</span><span·class="p">,</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·391,·SHA:·9e1566d120edb437c7e0e07a1384ecb7d0ea257dfa8ae1934db9678a561a3cf0·...·]-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.6/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="3401405290-1">(</span><span·class="mi">1000</span><span·class="p"·data-group-id="3401405290-1">)</span><span·class="p">.</span><span·class="w">132 <a·href="../../../../erts-15.2.6/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="0111907159-1">(</span><span·class="mi">1000</span><span·class="p"·data-group-id="0111907159-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="3401405290-2">(</span><span·class="p"·data-group-id="3401405290-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="0111907159-2">(</span><span·class="p"·data-group-id="0111907159-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="3401405290-3">(</span><span·class="w">·</span><span·class="mi">0</span><span·class="p"·data-group-id="3401405290-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="0111907159-3">(</span><span·class="w">·</span><span·class="mi">0</span><span·class="p"·data-group-id="0111907159-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="3401405290-4">(</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="3401405290-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="0111907159-4">(</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="0111907159-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="3401405290-5">(</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="3401405290-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="0111907159-5">(</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="0111907159-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="3401405290-6">(</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="3401405290-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="0111907159-6">(</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="0111907159-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="3401405290-7">(</span><span·class="w">·</span><span·class="mi">2</span><span·class="p"·data-group-id="3401405290-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="0111907159-7">(</span><span·class="w">·</span><span·class="mi">2</span><span·class="p"·data-group-id="0111907159-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="1862526139-1">(</span><span·class="nc">msacc</span><span·class="p">:</span><span·class="nf">stats</span><span·class="p"·data-group-id="1862526139-2">(</span><span·class="ss">runtime</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">msa[·...·truncated·by·diffoscope;·len:·1322,·SHA:·9a855abcb95df7febea2252992fbf8f2f8fae39a4697ae23ce742c82cb91963d·...·]9-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="9313982899-1">(</span><span·class="nc">msacc</span><span·class="p">:</span><span·class="nf">stats</span><span·class="p"·data-group-id="9313982899-2">(</span><span·class="ss">runtime</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">msa[·...·truncated·by·diffoscope;·len:·1322,·SHA:·4a728fa0068b9fb44a9d2f15fa4ec6e49afc51a0a26c794f13afee8e25ff171c·...·]9-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">
500 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:·118756·bytes,·number·of·entries:·201 Zip·file·size:·118750·bytes,·number·of·entries:·20
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Apr-18·13:58·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Apr-18·15:21·mimetype
3 ?rw-r--r--··6.1·unx······730·bx·defN·25-Apr-18·13:58·OEBPS/title.xhtml3 ?rw-r--r--··6.1·unx······730·bx·defN·25-Apr-18·15:21·OEBPS/title.xhtml
4 ?rw-r--r--··6.1·unx·····4130·bx·defN·25-Apr-18·13:58·OEBPS/systemtap.xhtml4 ?rw-r--r--··6.1·unx·····4130·bx·defN·25-Apr-18·15:21·OEBPS/systemtap.xhtml
5 ?rw-r--r--··6.1·unx·····7084·bx·defN·25-Apr-18·13:58·OEBPS/system_information.xhtml5 ?rw-r--r--··6.1·unx·····7084·bx·defN·25-Apr-18·15:21·OEBPS/system_information.xhtml
6 ?rw-r--r--··6.1·unx····23126·bx·defN·25-Apr-18·13:58·OEBPS/scheduler.xhtml6 ?rw-r--r--··6.1·unx····23126·bx·defN·25-Apr-18·15:21·OEBPS/scheduler.xhtml
7 ?rw-r--r--··6.1·unx·····1494·bx·defN·25-Apr-18·13:58·OEBPS/runtime_tools_app.xhtml7 ?rw-r--r--··6.1·unx·····1494·bx·defN·25-Apr-18·15:21·OEBPS/runtime_tools_app.xhtml
8 ?rw-r--r--··6.1·unx····72570·bx·defN·25-Apr-18·13:58·OEBPS/notes.xhtml8 ?rw-r--r--··6.1·unx····72570·bx·defN·25-Apr-18·15:21·OEBPS/notes.xhtml
9 ?rw-r--r--··6.1·unx·····1590·bx·defN·25-Apr-18·13:58·OEBPS/nav.xhtml9 ?rw-r--r--··6.1·unx·····1590·bx·defN·25-Apr-18·15:21·OEBPS/nav.xhtml
10 ?rw-r--r--··6.1·unx····44036·bx·defN·25-Apr-18·13:58·OEBPS/msacc.xhtml10 ?rw-r--r--··6.1·unx····44036·bx·defN·25-Apr-18·15:21·OEBPS/msacc.xhtml
11 ?rw-r--r--··6.1·unx····58689·bx·defN·25-Apr-18·13:58·OEBPS/lttng.xhtml11 ?rw-r--r--··6.1·unx····58689·bx·defN·25-Apr-18·15:21·OEBPS/lttng.xhtml
12 ?rw-r--r--··6.1·unx····44876·bx·defN·25-Apr-18·13:58·OEBPS/instrument.xhtml12 ?rw-r--r--··6.1·unx····44876·bx·defN·25-Apr-18·15:21·OEBPS/instrument.xhtml
13 ?rw-r--r--··6.1·unx····41781·bx·defN·25-Apr-18·13:58·OEBPS/dyntrace.xhtml13 ?rw-r--r--··6.1·unx····41781·bx·defN·25-Apr-18·15:21·OEBPS/dyntrace.xhtml
14 ?rw-r--r--··6.1·unx·····3689·bx·defN·25-Apr-18·13:58·OEBPS/dtrace.xhtml14 ?rw-r--r--··6.1·unx·····3689·bx·defN·25-Apr-18·15:21·OEBPS/dtrace.xhtml
15 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Apr-18·13:58·OEBPS/dist/epub-erlang-ESPT6BQV.css15 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Apr-18·15:21·OEBPS/dist/epub-erlang-ESPT6BQV.css
16 ?rw-r--r--··6.1·unx······499·bx·defN·25-Apr-18·13:58·OEBPS/dist/epub-LSJCIYTM.js16 ?rw-r--r--··6.1·unx······499·bx·defN·25-Apr-18·15:21·OEBPS/dist/epub-LSJCIYTM.js
17 ?rw-r--r--··6.1·unx···244898·bx·defN·25-Apr-18·13:58·OEBPS/dbg.xhtml17 ?rw-r--r--··6.1·unx···244898·bx·defN·25-Apr-18·15:21·OEBPS/dbg.xhtml
18 ?rw-r--r--··6.1·unx·····2672·bx·defN·25-Apr-18·13:58·OEBPS/content.opf18 ?rw-r--r--··6.1·unx·····2672·bx·defN·25-Apr-18·15:21·OEBPS/content.opf
19 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Apr-18·13:58·OEBPS/assets/logo.png19 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Apr-18·15:21·OEBPS/assets/logo.png
20 ?rw-r--r--··6.1·unx······252·bx·defN·25-Apr-18·13:58·META-INF/container.xml20 ?rw-r--r--··6.1·unx······252·bx·defN·25-Apr-18·15:21·META-INF/container.xml
21 ?rw-r--r--··6.1·unx······162·bx·defN·25-Apr-18·13:58·META-INF/com.apple.ibooks.display-options.xml21 ?rw-r--r--··6.1·unx······162·bx·defN·25-Apr-18·15:21·META-INF/com.apple.ibooks.display-options.xml
22 20·files,·572697·bytes·uncompressed,·115306·bytes·compressed:··79.9%22 20·files,·572697·bytes·uncompressed,·115300·bytes·compressed:··79.9%
111 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,·Apr·18·2025·13:58: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,·Apr·18·2025·15:21:02,·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="4937927496-1">(</samp><samp·class="nc">scheduler</samp><samp·class="p">:</samp><samp·class="nf">sample</samp><samp·class="p"·data-group-id="4937927496-2">(</samp><samp·class="p"·data-group-id="4937927496-2">)</samp><samp·class="p"·data-group-id="4937927496-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="9604911979-1">(</samp><samp·class="nc">scheduler</samp><samp·class="p">:</samp><samp·class="nf">sample</samp><samp·class="p"·data-group-id="9604911979-2">(</samp><samp·class="p"·data-group-id="9604911979-2">)</samp><samp·class="p"·data-group-id="9604911979-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.6/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.6/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="0062682616-1">(</span><span·class="nc">scheduler</span><span·class="p">:</span><span·class="nf">sample</span><span·class="p"·data-group-id="0062682616-2">(</span><span·class="p"·data-group-id="0062682616-2">)</span><span·class="p"·data-group-id="0062682616-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="6846981177-1">(</span><span·class="nc">scheduler</span><span·class="p">:</span><span·class="nf">sample</span><span·class="p"·data-group-id="6846981177-2">(</span><span·class="p"·data-group-id="6846981177-2">)</span><span·class="p"·data-group-id="6846981177-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="5340320291-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="5340320291-1">}</span><span·class="w">224 specification·of·a·supervisor.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="4271323774-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="4271323774-1">}</span><span·class="w">
225 </span><span·class="p"·data-group-id="5340320291-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="5340320291-2">}</span><span·class="w">225 </span><span·class="p"·data-group-id="4271323774-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="4271323774-2">}</span><span·class="w">
226 </span><span·class="p"·data-group-id="5340320291-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:·344439578c630b72179a76ce558bd62ac22fcfab34ffff6eeba175fd5bc8203b·...·]-3">}</span><span·class="w">226 </span><span·class="p"·data-group-id="4271323774-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:·21b954e357e08439a4cf66abe0d632d4ebb7d7c3c8d24506302f75380206807c·...·]-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="5340320291-4">(</span><span·class="p"·data-group-id="5340320291-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="4271323774-4">(</span><span·class="p"·data-group-id="4271323774-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="5340320291-5">[</span><span·class="n">Mod</span><span·class="p"·data-group-id="5340320291-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="4271323774-5">[</span><span·class="n">Mod</span><span·class="p"·data-group-id="4271323774-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="0285576084-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="0285576084-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="9242007150-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="9242007150-1">}</span><span·class="w">
232 </span><span·class="p"·data-group-id="0285576084-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="0285576084-2">}</span><span·class="w">232 </span><span·class="p"·data-group-id="9242007150-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="9242007150-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="0285576084-3">(</span><span·class="p"·data-group-id="0285576084-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="9242007150-3">(</span><span·class="p"·data-group-id="9242007150-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="0285576084-4">[</span><span·class="n">Mod</span><span·class="p"·data-group-id="0285576084-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="9242007150-4">[</span><span·class="n">Mod</span><span·class="p"·data-group-id="9242007150-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="2547090452-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="2547090452-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="9225684337-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="9225684337-1">}</span><span·class="w">
237 </span><span·class="p"·data-group-id="2547090452-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="2547090452-2">}</span><span·class="w">237 </span><span·class="p"·data-group-id="9225684337-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="9225684337-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="2547090452-3">(</span><span·class="p"·data-group-id="2547090452-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="9225684337-3">(</span><span·class="p"·data-group-id="9225684337-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="7460623097-1">{</span><span·class="ss">load_object_code</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7460623097-2">{</span><span·class="n">App</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Vsn[·...·truncated·by·diffoscope;·len:·280,·SHA:·47aeaed3f33bc9768e157d364839f4863dd820303c69ede96e36c229a6f6ee39·...·]7-1">}</span><span·class="w">265 <pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="3565364047-1">{</span><span·class="ss">load_object_code</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3565364047-2">{</span><span·class="n">App</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Vsn[·...·truncated·by·diffoscope;·len:·280,·SHA:·f1828264d1776725a5ec6c24c30d09ea0b3cc6e14f0c2a656db42530c34a7d00·...·]7-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="7460623097-4">(</span><span·class="p"·data-group-id="7460623097-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="3565364047-4">(</span><span·class="p"·data-group-id="3565364047-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="7460623097-5">(</span><span·class="p"·data-group-id="7460623097-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="3565364047-5">(</span><span·class="p"·data-group-id="3565364047-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="4302298409-1">{</span><span·class="ss">suspend</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4302298409-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:·ed41c99681f0ad51c75feb89888211a4be6bd10d27279b20b3e00e20e178c4c2·...·]-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="2852028185-1">{</span><span·class="ss">suspend</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2852028185-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:·3419dd80c5d330d275e1e8ed24f41373ecda545e2945d626e07ccb37789bf910·...·]-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="4302298409-4">(</span><span·class="p"·data-group-id="4302298409-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="2852028185-4">(</span><span·class="p"·data-group-id="2852028185-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="4302298409-5">(</span><span·class="p"·data-group-id="4302298409-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="2852028185-5">(</span><span·class="p"·data-group-id="2852028185-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.2/doc/html/sys.html#suspend/1"><code·class="inline">sys:suspend</code></a>·is·used.</p><pre><code·class="text">{resume,·[Mod]}287 value·for·<a·href="../../../../lib/stdlib-6.2.2/doc/html/sys.html#suspend/1"><code·class="inline">sys:suspend</code></a>·is·used.</p><pre><code·class="text">{resume,·[Mod]}
288 ··Mod·=·atom()</code></pre><p>Resumes·all·suspended·processes·using·a·module·<code·class="inline">Mod</code>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="0466000827-1">{</span><span·class="ss">code_change</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0466000827-2">[</span><span·class="p"·data-group-id="0466000827-3">{</span><span·class="n">Mod</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·204,·SHA:·4cb2255525c744e6c5248c946b56b5fc9a5c0d3ac04f61b2e98ef36312092046·...·]-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="5215609730-1">{</span><span·class="ss">code_change</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5215609730-2">[</span><span·class="p"·data-group-id="5215609730-3">{</span><span·class="n">Mod</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·204,·SHA:·17d4f662d6b0de13e9ae40cc6eb785788267540bccd898db141c35f48bf5a14f·...·]-1">}</span><span·class="w">
289 </span><span·class="p"·data-group-id="0466000827-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="0466000827-5">[</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·279,·SHA:·d638493ea885eb25d8c849a764ae456e3e217c2bcf4293b6ce328532a73d6371·...·]-4">}</span><span·class="w">289 </span><span·class="p"·data-group-id="5215609730-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="5215609730-5">[</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·279,·SHA:·0a2e27b8fa830a98680ab54e3a1e5bf9c339c8a713c5a56b4aa011eecb752023·...·]-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="0466000827-7">(</span><span·class="p"·data-group-id="0466000827-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="5215609730-7">(</span><span·class="p"·data-group-id="5215609730-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="0466000827-8">(</span><span·class="p"·data-group-id="0466000827-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="5215609730-8">(</span><span·class="p"·data-group-id="5215609730-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.2/doc/html/sys.html#change_code/4"><code·class="inline">sys:change_code</code></a>,·passing·term294 <code·class="inline">Mod</code>·by·calling·function·<a·href="../../../../lib/stdlib-6.2.2/doc/html/sys.html#change_code/4"><code·class="inline">sys:change_code</code></a>,·passing·term
295 <code·class="inline">Extra</code>·as·argument.</p><pre><code·class="text">{stop,·[Mod]}295 <code·class="inline">Extra</code>·as·argument.</p><pre><code·class="text">{stop,·[Mod]}
296 ··Mod·=·atom()</code></pre><p>Stops·all·processes·using·a·module·<code·class="inline">Mod</code>·by·calling296 ··Mod·=·atom()</code></pre><p>Stops·all·processes·using·a·module·<code·class="inline">Mod</code>·by·calling
297 <a·href="../../../../lib/stdlib-6.2.2/doc/html/supervisor.html#terminate_child/2"><code·class="inline">supervisor:terminate_child/2</code></a>.·This·instruction·is·useful·when·the·simplest·way297 <a·href="../../../../lib/stdlib-6.2.2/doc/html/supervisor.html#terminate_child/2"><code·class="inline">supervisor:terminate_child/2</code></a>.·This·instruction·is·useful·when·the·simplest·way
298 to·change·code·is·to·stop·and·restart·the·processes·that·run·the·code.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="6312454197-1">{</span><span·class="ss">start</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6312454197-2">[</span><span·class="n">Mod</span><span·class="p"·data-group-id="6312454197-2">]</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·111b0457aded2fa0a70641ace894ccafe9ade2f7364e95d9b7f2ca9b648c5bd7·...·]-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="9576116603-1">{</span><span·class="ss">start</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9576116603-2">[</span><span·class="n">Mod</span><span·class="p"·data-group-id="9576116603-2">]</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·3a3903b1010aae66b7662763167a5e850175ebcdce03a77cb9a59152432eac69·...·]-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="6312454197-3">(</span><span·class="p"·data-group-id="6312454197-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="9576116603-3">(</span><span·class="p"·data-group-id="9576116603-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.2/doc/html/supervisor.html#restart_child/2"><code·class="inline">supervisor:restart_child/2</code></a>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="7383263897-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="7383263897-2">[</span><span·class="n">Node</span>[·...·truncated·by·diffoscope;·len:·94,·SHA:·d18c591ea98614646da8be2c9573f2a73332abca8820ae34f992e0d6ab59127a·...·]-1">}</span><span·class="w">300 <a·href="../../../../lib/stdlib-6.2.2/doc/html/supervisor.html#restart_child/2"><code·class="inline">supervisor:restart_child/2</code></a>.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="7520319195-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="7520319195-2">[</span><span·class="n">Node</span>[·...·truncated·by·diffoscope;·len:·94,·SHA:·5c3ba597ef72b07cd6fad302f193b43dc278ffead819ab26f4fe32b425222684·...·]-1">}</span><span·class="w">
301 </span><span·class="p"·data-group-id="7383263897-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="7383263897-4">{</span><span·class="n">M</span><sp[·...·truncated·by·diffoscope;·len:·235,·SHA:·35de8ddcfc87b709299d54dfb2285dec9cd9cadbcea9e21a67af122013c0fb2f·...·]-3">}</span><span·class="w">301 </span><span·class="p"·data-group-id="7520319195-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="7520319195-4">{</span><span·class="n">M</span><sp[·...·truncated·by·diffoscope;·len:·235,·SHA:·09625fd5daff90d6bf017b7e898dfaa236fb24d685c993d90d5b660f29ca682b·...·]-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="7383263897-5">(</span><span·class="p"·data-group-id="7383263897-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="7520319195-5">(</span><span·class="p"·data-group-id="7520319195-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="7383263897-6">(</span><span·class="p"·data-group-id="7383263897-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="7520319195-6">(</span><span·class="p"·data-group-id="7520319195-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="7383263897-7">(</span><span·class="p"·data-group-id="7383263897-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="7520319195-7">(</span><span·class="p"·data-group-id="7520319195-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="7383263897-8">[</span><span·class="nf">term</span><span·class="p"·data-group-id="7383263897-9">(</span><span·class="p"·data-group-id="7383263897-9">)</span><span·class="p"·data-group-id="7383263897-8">]</span></code></pre><p><a·href="../../../../erts-15.2.6/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="7520319195-8">[</span><span·class="nf">term</span><span·class="p"·data-group-id="7520319195-9">(</span><span·class="p"·data-group-id="7520319195-9">)</span><span·class="p"·data-group-id="7520319195-8">]</span></code></pre><p><a·href="../../../../erts-15.2.6/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="2658541316-1">{</span><span·class="nb">apply</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2658541316-2">{</span><span·class="n">M</span><span·class="p">,</span><span·class="w">·</span><span·class="n">F</span><span·cl[·...·truncated·by·diffoscope;·len:·158,·SHA:·7403564b174d934a7079796ee952ec25b5c3edc9af7be1f1152d8ec2aa29ca87·...·]-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="6711562182-1">{</span><span·class="nb">apply</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6711562182-2">{</span><span·class="n">M</span><span·class="p">,</span><span·class="w">·</span><span·class="n">F</span><span·cl[·...·truncated·by·diffoscope;·len:·158,·SHA:·b643a6437bd7c86c39d2edc26349a2d790b6dde0a6702f734c75fc5adbaec6bc·...·]-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="2658541316-3">(</span><span·class="p"·data-group-id="2658541316-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="6711562182-3">(</span><span·class="p"·data-group-id="6711562182-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="2658541316-4">[</span><span·class="nf">term</span><span·class="p"·data-group-id="2658541316-5">(</span><span·class="p"·data-group-id="2658541316-5">)</span><span·class="p"·data-group-id="2658541316-4">]</span></code></pre><p>Evaluates·<a·href="../../../../erts-15.2.6/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="6711562182-4">[</span><span·class="nf">term</span><span·class="p"·data-group-id="6711562182-5">(</span><span·class="p"·data-group-id="6711562182-5">)</span><span·class="p"·data-group-id="6711562182-4">]</span></code></pre><p>Evaluates·<a·href="../../../../erts-15.2.6/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="7599586125-1">(</span><span·class="mi">4</span><span·class="p"·data-group-id="7599586125-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="9169710217-1">(</span><span·class="mi">4</span><span·class="p"·data-group-id="9169710217-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="7599586125-2">{</span><span·class="ss">local</span><span·class="p">,</span><span·class="ss">sasl_sup</span><span·class="p"·data-group-id="7599586125-2">}</span><span·class="w">314 </span><span·class="ss">supervisor</span><span·class="w">·····················································</span><span·class="p"·data-group-id="9169710217-2">{</span><span·class="ss">local</span><span·class="p">,</span><span·class="ss">sasl_sup</span><span·class="p"·data-group-id="9169710217-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="7599586125-3">[</span><span·class="p"·data-group-id="7599586125-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:·e001f4c8dfd93211f0b1956e4e4af23e6730d5299ca811ac5543bb117b27c707·...·]-4">}</span><span·class="p">,</span><span·class="w">316 </span><span·class="p"·data-group-id="9169710217-3">[</span><span·class="p"·data-group-id="9169710217-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:·48d78cf16e7c9a082c8a622060f2216502c2bb53827c0922c9311d4d9c04adab·...·]-4">}</span><span·class="p">,</span><span·class="w">
317 </span><span·class="p"·data-group-id="7599586125-5">{</span><span·class="ss">name</span><span·class="p">,</span><span·class="ss">release_handler</span><span·class="p"·data-group-id="7599586125-5">}</span><span·class="p">,</span><span·class="w">317 </span><span·class="p"·data-group-id="9169710217-5">{</span><span·class="ss">name</span><span·class="p">,</span><span·class="ss">release_handler</span><span·class="p"·data-group-id="9169710217-5">}</span><span·class="p">,</span><span·class="w">
318 </span><span·class="p"·data-group-id="7599586125-6">{</span><span·class="ss">mfa</span><span·class="p">,</span><span·class="p"·data-group-id="7599586125-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:·fe87b8476891ea82e31142b999a974d7f02070713d913fcc829ff7e1919837ef·...·]-6">}</span><span·class="p">,</span><span·class="w">318 </span><span·class="p"·data-group-id="9169710217-6">{</span><span·class="ss">mfa</span><span·class="p">,</span><span·class="p"·data-group-id="9169710217-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:·9f1517af4067dcec5b84250036b989faeccd66481e21c599e6899f28733ff0b4·...·]-6">}</span><span·class="p">,</span><span·class="w">
319 </span><span·class="p"·data-group-id="7599586125-9">{</span><span·class="ss">restart_type</span><span·class="p">,</span><span·class="ss">permanent</span><span·class="p"·data-group-id="7599586125-9">}</span><span·class="p">,</span><span·class="w">319 </span><span·class="p"·data-group-id="9169710217-9">{</span><span·class="ss">restart_type</span><span·class="p">,</span><span·class="ss">permanent</span><span·class="p"·data-group-id="9169710217-9">}</span><span·class="p">,</span><span·class="w">
320 </span><span·class="p"·data-group-id="7599586125-10">{</span><span·class="ss">shutdown</span><span·class="p">,</span><span·class="mi">2000</span><span·class="p"·data-group-id="7599586125-10">}</span><span·class="p">,</span><span·class="w">320 </span><span·class="p"·data-group-id="9169710217-10">{</span><span·class="ss">shutdown</span><span·class="p">,</span><span·class="mi">2000</span><span·class="p"·data-group-id="9169710217-10">}</span><span·class="p">,</span><span·class="w">
321 </span><span·class="p"·data-group-id="7599586125-11">{</span><span·class="ss">child_type</span><span·class="p">,</span><span·class="ss">worker</span><span·class="p"·data-group-id="7599586125-11">}</span><span·class="p"·data-group-id="7599586125-3">]</span><span·class="w">321 </span><span·class="p"·data-group-id="9169710217-11">{</span><span·class="ss">child_type</span><span·class="p">,</span><span·class="ss">worker</span><span·class="p"·data-group-id="9169710217-11">}</span><span·class="p"·data-group-id="9169710217-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="7599586125-12">(</span><span·class="mi">9</span><span·class="p"·data-group-id="7599586125-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="9169710217-12">(</span><span·class="mi">9</span><span·class="p"·data-group-id="9169710217-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="7599586125-13">{</span><span·class="ss">undef</span><span·class="p">,</span><span·class="p"·data-group-id="7599586125-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:·9b06421a01f2771d2b062a6f1e443494091581ee21822d5b0c0326584b093266·...·]-13">}</span><span·class="w">329 </span><span·class="ss">error_info</span><span·class="w">·····························</span><span·class="p"·data-group-id="9169710217-13">{</span><span·class="ss">undef</span><span·class="p">,</span><span·class="p"·data-group-id="9169710217-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:·091c02118fc54b355748a3215ceba45955972a4bf73e72b44f8d038e81a28eb6·...·]-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="7599586125-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="9169710217-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="7599586125-17">[</span><span·class="ss">gen_server</span><span·class="p">,</span><span·class="w">332 </span><span·class="p"·data-group-id="9169710217-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="7599586125-18">{</span><span·class="ss">erlang</span><span·class="p">,</span><span·class="nb">register</span><span·class="p"·data-group-id="7599586125-18">}</span><span·class="p">,</span><span·class="w">335 </span><span·class="p"·data-group-id="9169710217-18">{</span><span·class="ss">erlang</span><span·class="p">,</span><span·class="nb">register</span><span·class="p"·data-group-id="9169710217-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="7599586125-19">[</span><span·class="p"·data-group-id="7599586125-19">]</span><span·class="p">,</span><span·class="w">338 </span><span·class="p"·data-group-id="9169710217-19">[</span><span·class="p"·data-group-id="9169710217-19">]</span><span·class="p">,</span><span·class="w">
339 </span><span·class="p"·data-group-id="7599586125-20">[</span><span·class="p"·data-group-id="7599586125-20">]</span><span·class="p"·data-group-id="7599586125-17">]</span><span·class="p"·data-group-id="7599586125-16">}</span><span·class="w">339 </span><span·class="p"·data-group-id="9169710217-20">[</span><span·class="p"·data-group-id="9169710217-20">]</span><span·class="p"·data-group-id="9169710217-17">]</span><span·class="p"·data-group-id="9169710217-16">}</span><span·class="w">
340 </span><span·class="ss">ancestors</span><span·class="w">················································</span><span·class="p"·data-group-id="7599586125-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="7599586125-21">]</span><span·class="w">340 </span><span·class="ss">ancestors</span><span·class="w">················································</span><span·class="p"·data-group-id="9169710217-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="9169710217-21">]</span><span·class="w">
341 </span><span·class="ss">messages</span><span·class="w">··································································</span><span·class="p"·data-group-id="7599586125-22">[</span><span·class="p"·data-group-id="7599586125-22">]</span><span·class="w">341 </span><span·class="ss">messages</span><span·class="w">··································································</span><span·class="p"·data-group-id="9169710217-22">[</span><span·class="p"·data-group-id="9169710217-22">]</span><span·class="w">
342 </span><span·class="ss">links</span><span·class="w">····················································</span><span·class="p"·data-group-id="7599586125-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:·887baf964831a9ad014078137803bdf8685a4ccafb08b6d8ee18022114baa2ef·...·]-23">]</span><span·class="w">342 </span><span·class="ss">links</span><span·class="w">····················································</span><span·class="p"·data-group-id="9169710217-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:·fb3b84f6b993060ec88879db36261c77f8b568cf6625d139a0cfc9170564c2a0·...·]-23">]</span><span·class="w">
343 </span><span·class="ss">dictionary</span><span·class="w">································································</span><span·class="p"·data-group-id="7599586125-24">[</span><span·class="p"·data-group-id="7599586125-24">]</span><span·class="w">343 </span><span·class="ss">dictionary</span><span·class="w">································································</span><span·class="p"·data-group-id="9169710217-24">[</span><span·class="p"·data-group-id="9169710217-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="0241520964-1">{</span><span·class="ss">release</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0241520964-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:·d2052af3027b1bb61846d9d15374e2bbb68eafe5399fdf2507ab98eb03c13161·...·]-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="1861128667-1">{</span><span·class="ss">release</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1861128667-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:·02812cf814569183ee9b67777b75ab29da40d28f41cd97330b2c1974a9e2ea1b·...·]-3">}</span><span·class="p">,</span><span·class="w">
144 ··</span><span·class="p"·data-group-id="0241520964-4">[</span><span·class="p"·data-group-id="0241520964-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="0241520964-5">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">144 ··</span><span·class="p"·data-group-id="1861128667-4">[</span><span·class="p"·data-group-id="1861128667-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="1861128667-5">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
145 ···</span><span·class="p"·data-group-id="0241520964-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="0241520964-6">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">145 ···</span><span·class="p"·data-group-id="1861128667-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="1861128667-6">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
146 ···</span><span·class="p"·data-group-id="0241520964-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="0241520964-7">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">146 ···</span><span·class="p"·data-group-id="1861128667-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="1861128667-7">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
147 ···</span><span·class="p"·data-group-id="0241520964-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:·db41b798754e0b6c0253eaa68c600e31928d9d305b30f1f7e68c95e2f477dcf5·...·]-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="1861128667-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:·b2fe6b5ef3dcc69b47b41b72b41b656e4ef6d3ecf5e62c12f45f22b3926db160·...·]-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.6/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.6/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="7634056428-1">(</span><span·class="n">RelFile</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7634056428-2">[</span><span·class="p"·data-group-id="7634056428-3">{</span><span·class="ss">myapp</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·353,·SHA:·d30529f6a1bef4042889910d2514cc6bac6013deddb944b3c7e8ff83deedeafa·...·]-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="4143954649-1">(</span><span·class="n">RelFile</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4143954649-2">[</span><span·class="p"·data-group-id="4143954649-3">{</span><span·class="ss">myapp</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·353,·SHA:·8bd9b97400742e575d274639db0eb59ec95059778a1ce12a0c77d3c3b4bee923·...·]-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="7634056428-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">NewVsn</span><span·class="p"·data-group-id="7634056428-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="4143954649-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">NewVsn</span><span·class="p"·data-group-id="4143954649-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.6/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.6/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,
194 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:·92275·bytes,·number·of·entries:·211 Zip·file·size:·92278·bytes,·number·of·entries:·21
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Apr-18·13:57·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Apr-18·15:17·mimetype
3 ?rw-r--r--··6.1·unx······712·bx·defN·25-Apr-18·13:57·OEBPS/title.xhtml3 ?rw-r--r--··6.1·unx······712·bx·defN·25-Apr-18·15:17·OEBPS/title.xhtml
4 ?rw-r--r--··6.1·unx····34842·bx·defN·25-Apr-18·13:57·OEBPS/systools.xhtml4 ?rw-r--r--··6.1·unx····34842·bx·defN·25-Apr-18·15:17·OEBPS/systools.xhtml
5 ?rw-r--r--··6.1·unx····11459·bx·defN·25-Apr-18·13:57·OEBPS/script.xhtml5 ?rw-r--r--··6.1·unx····11459·bx·defN·25-Apr-18·15:17·OEBPS/script.xhtml
6 ?rw-r--r--··6.1·unx·····1680·bx·defN·25-Apr-18·13:57·OEBPS/sasl_intro.xhtml6 ?rw-r--r--··6.1·unx·····1680·bx·defN·25-Apr-18·15:17·OEBPS/sasl_intro.xhtml
7 ?rw-r--r--··6.1·unx····11100·bx·defN·25-Apr-18·13:57·OEBPS/sasl_app.xhtml7 ?rw-r--r--··6.1·unx····11100·bx·defN·25-Apr-18·15:17·OEBPS/sasl_app.xhtml
8 ?rw-r--r--··6.1·unx·····3582·bx·defN·25-Apr-18·13:57·OEBPS/relup.xhtml8 ?rw-r--r--··6.1·unx·····3582·bx·defN·25-Apr-18·15:17·OEBPS/relup.xhtml
9 ?rw-r--r--··6.1·unx····74396·bx·defN·25-Apr-18·13:57·OEBPS/release_handler.xhtml9 ?rw-r--r--··6.1·unx····74396·bx·defN·25-Apr-18·15:17·OEBPS/release_handler.xhtml
10 ?rw-r--r--··6.1·unx·····6210·bx·defN·25-Apr-18·13:57·OEBPS/rel.xhtml10 ?rw-r--r--··6.1·unx·····6210·bx·defN·25-Apr-18·15:17·OEBPS/rel.xhtml
11 ?rw-r--r--··6.1·unx····36502·bx·defN·25-Apr-18·13:57·OEBPS/rb.xhtml11 ?rw-r--r--··6.1·unx····36502·bx·defN·25-Apr-18·15:17·OEBPS/rb.xhtml
12 ?rw-r--r--··6.1·unx····64019·bx·defN·25-Apr-18·13:57·OEBPS/notes.xhtml12 ?rw-r--r--··6.1·unx····64019·bx·defN·25-Apr-18·15:17·OEBPS/notes.xhtml
13 ?rw-r--r--··6.1·unx·····1639·bx·defN·25-Apr-18·13:57·OEBPS/nav.xhtml13 ?rw-r--r--··6.1·unx·····1639·bx·defN·25-Apr-18·15:17·OEBPS/nav.xhtml
14 ?rw-r--r--··6.1·unx····28563·bx·defN·25-Apr-18·13:57·OEBPS/error_logging.xhtml14 ?rw-r--r--··6.1·unx····28563·bx·defN·25-Apr-18·15:17·OEBPS/error_logging.xhtml
15 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Apr-18·13:57·OEBPS/dist/epub-erlang-ESPT6BQV.css15 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Apr-18·15:17·OEBPS/dist/epub-erlang-ESPT6BQV.css
16 ?rw-r--r--··6.1·unx······499·bx·defN·25-Apr-18·13:57·OEBPS/dist/epub-LSJCIYTM.js16 ?rw-r--r--··6.1·unx······499·bx·defN·25-Apr-18·15:17·OEBPS/dist/epub-LSJCIYTM.js
17 ?rw-r--r--··6.1·unx·····2758·bx·defN·25-Apr-18·13:57·OEBPS/content.opf17 ?rw-r--r--··6.1·unx·····2758·bx·defN·25-Apr-18·15:17·OEBPS/content.opf
18 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Apr-18·13:57·OEBPS/assets/logo.png18 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Apr-18·15:17·OEBPS/assets/logo.png
19 ?rw-r--r--··6.1·unx····34558·bx·defN·25-Apr-18·13:57·OEBPS/appup.xhtml19 ?rw-r--r--··6.1·unx····34558·bx·defN·25-Apr-18·15:17·OEBPS/appup.xhtml
20 ?rw-r--r--··6.1·unx·····9998·bx·defN·25-Apr-18·13:57·OEBPS/alarm_handler.xhtml20 ?rw-r--r--··6.1·unx·····9998·bx·defN·25-Apr-18·15:17·OEBPS/alarm_handler.xhtml
21 ?rw-r--r--··6.1·unx······252·bx·defN·25-Apr-18·13:57·META-INF/container.xml21 ?rw-r--r--··6.1·unx······252·bx·defN·25-Apr-18·15:17·META-INF/container.xml
22 ?rw-r--r--··6.1·unx······162·bx·defN·25-Apr-18·13:57·META-INF/com.apple.ibooks.display-options.xml22 ?rw-r--r--··6.1·unx······162·bx·defN·25-Apr-18·15:17·META-INF/com.apple.ibooks.display-options.xml
23 21·files,·343350·bytes·uncompressed,·88677·bytes·compressed:··74.2%23 21·files,·343350·bytes·uncompressed,·88680·bytes·compressed:··74.2%
114 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,·Apr·18·2025·13: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,·Apr·18·2025·15:17:14,·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="4669663091-1">(</samp><samp·class="n">RelFile</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="4669663091-2">[</samp><samp·class="p"·data-group-id="4669663091-3">{</samp><samp·class="ss">myapp</samp><samp·class="p">,</sa[·...·truncated·by·diffoscope;·len:·353,·SHA:·b4587fbef52b341e6ae151d52752caa9fdc5ee13a8fc06ed70926edf682e8df7·...·]-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="1192375646-1">(</samp><samp·class="n">RelFile</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="1192375646-2">[</samp><samp·class="p"·data-group-id="1192375646-3">{</samp><samp·class="ss">myapp</samp><samp·class="p">,</sa[·...·truncated·by·diffoscope;·len:·353,·SHA:·fb744c05867284349f58eacb0a237c132f96b3f0b0fc865284b2b35ce1200b29·...·]-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="4669663091-4">{</samp><samp·class="ss">ok</samp><samp·class="p">,</samp><samp·class="n">NewVsn</samp><samp·class="p"·data-group-id="4669663091-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="1192375646-4">{</samp><samp·class="ss">ok</samp><samp·class="p">,</samp><samp·class="n">NewVsn</samp><samp·class="p"·data-group-id="1192375646-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="4228266314-1">{</span><span·class="ss">release</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4228266314-2">{</span><span·class="n">RelName</span><span·class="p">,</span><span·class="n">Vsn</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·275,·SHA:·4beac74a96a1b36428dbc33adae61ec0c266c7be37cd32171bc8b696408e10b0·...·]-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="4795235865-1">{</span><span·class="ss">release</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4795235865-2">{</span><span·class="n">RelName</span><span·class="p">,</span><span·class="n">Vsn</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·275,·SHA:·5d6ca1f651eba8eff7ecc3eeadbddf583e3d9a220f81dddcd6714da1f81677fd·...·]-3">}</span><span·class="p">,</span><span·class="w">
39 ··</span><span·class="p"·data-group-id="4228266314-4">[</span><span·class="p"·data-group-id="4228266314-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="4228266314-5">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">39 ··</span><span·class="p"·data-group-id="4795235865-4">[</span><span·class="p"·data-group-id="4795235865-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="4795235865-5">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
40 ···</span><span·class="p"·data-group-id="4228266314-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="4228266314-6">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">40 ···</span><span·class="p"·data-group-id="4795235865-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="4795235865-6">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
41 ···</span><span·class="p"·data-group-id="4228266314-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="4228266314-7">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">41 ···</span><span·class="p"·data-group-id="4795235865-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="4795235865-7">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
42 ···</span><span·class="p"·data-group-id="4228266314-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:·176,·SHA:·f921a980ce5867fb2fcee9eec3ed00d19f05ff461c56aa183a577718a5af52c3·...·]-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="4795235865-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:·176,·SHA:·7832e034aa3be0a4e35bbf12295a50949304e97ff6ee94fd2fc6df62b35ee057·...·]-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="4529816254-1">{</span><span·class="ss">script</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4529816254-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:·6c43665d001a501dbf8a527ab340bc5e3b55181cd9827092e6c44253b4e432ec·...·]-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="5868843152-1">{</span><span·class="ss">script</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5868843152-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:·555fd4ae21fc87f8de7f2d1316931670ce32a311a75f50414a4aa4fe915c562d·...·]-2">}</span><span·class="p">,</span><span·class="w">
146 ·</span><span·class="p"·data-group-id="4529816254-3">[</span><span·class="w">146 ·</span><span·class="p"·data-group-id="5868843152-3">[</span><span·class="w">
147 ··</span><span·class="p"·data-group-id="4529816254-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="4529816254-4">}</span><span·class="p">,</span><span·class="w">147 ··</span><span·class="p"·data-group-id="5868843152-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="5868843152-4">}</span><span·class="p">,</span><span·class="w">
148 ··</span><span·class="p"·data-group-id="4529816254-5">{</span><span·class="ss">preLoaded</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4529816254-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:·55f5dfcca316f4a07b729bab124761e8f1b9a908ca43981d38fa1f40fcd36424·...·]-5">}</span><span·class="p">,</span><span·class="w">148 ··</span><span·class="p"·data-group-id="5868843152-5">{</span><span·class="ss">preLoaded</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5868843152-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:·0103f21d929df13660dc6cbd04042bbbfd19937998cbbc69e23d69244d2d0bb0·...·]-5">}</span><span·class="p">,</span><span·class="w">
149 ··</span><span·class="p"·data-group-id="4529816254-7">{</span><span·class="ss">path</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4529816254-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:·3db24aa8c21ffd9828082ac5cac56d55d8a2b2cff735e4378af884c7f2004fe6·...·]-7">}</span><span·class="p">.</span><span·class="w">149 ··</span><span·class="p"·data-group-id="5868843152-7">{</span><span·class="ss">path</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5868843152-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:·976f8da0542042b3e2f9719814a9a8483ebc50d198c24d78095faf352be40f4e·...·]-7">}</span><span·class="p">.</span><span·class="w">
150 ··</span><span·class="p"·data-group-id="4529816254-9">{</span><span·class="ss">primLoad</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4529816254-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:·461b9346a068e6cdf9835c90abe9600ed7e5103c2c9688702ba28bf0880f37f8·...·]-9">}</span><span·class="p">,</span><span·class="w">150 ··</span><span·class="p"·data-group-id="5868843152-9">{</span><span·class="ss">primLoad</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5868843152-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:·aef040472ce161f6fbdae06ded5e6c95886bb7b5c1dadc5e43384e597a399e83·...·]-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="4529816254-11">{</span><span·class="ss">kernel_load_completed</span><span·class="p"·data-group-id="4529816254-11">}</span><span·class="p">,</span><span·class="w">152 ··</span><span·class="p"·data-group-id="5868843152-11">{</span><span·class="ss">kernel_load_completed</span><span·class="p"·data-group-id="5868843152-11">}</span><span·class="p">,</span><span·class="w">
153 ··</span><span·class="p"·data-group-id="4529816254-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="4529816254-12">}</span><span·class="p">,</span><span·class="w">153 ··</span><span·class="p"·data-group-id="5868843152-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="5868843152-12">}</span><span·class="p">,</span><span·class="w">
154 ··</span><span·class="p"·data-group-id="4529816254-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="4529816254-14">{</span><span·class="n">Mod[·...·truncated·by·diffoscope;·len:·252,·SHA:·3e0e7e5af8b06e0f50bf7b91e861ab72962e242d673a89fad80942dbb577ae8f·...·]-13">}</span><span·class="p">,</span><span·class="w">154 ··</span><span·class="p"·data-group-id="5868843152-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="5868843152-14">{</span><span·class="n">Mod[·...·truncated·by·diffoscope;·len:·252,·SHA:·babd9817d977754b27a62f8b3013ac22baf194f7c5fd42ab916014f310628255·...·]-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="4529816254-15">{</span><span·class="nb">apply</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4529816254-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:·3ba901ac8712aefc7096e2bf75ea06958c2149fa90be1946f955d6fc008b2092·...·]-15">}</span><span·class="p">,</span><span·class="w">156 ··</span><span·class="p"·data-group-id="5868843152-15">{</span><span·class="nb">apply</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5868843152-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:·ab920df112a49a40256e859dd9c1f14c87c88c372b1ee1f1d48eda66ae9376b7·...·]-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="4529816254-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="4529816254-17">}</span><span·class="p"·data-group-id="4529816254-3">]</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·9cc0e46e3dbf7dd8e927b27ef90b8db90c3fd06d3d5ef85bcafee37d04c15f2a·...·]-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="5868843152-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="5868843152-17">}</span><span·class="p"·data-group-id="5868843152-3">]</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·f4d5971f5539040f501a41eb77c483ef3d09033a3eb9f47eaaf9be4ec61f0791·...·]-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.6/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.6/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
931 KB
./usr/share/doc/erlang-doc/html/lib/snmp-5.18.2/doc/html/snmp.epub
12.3 KB
zipinfo {}
Max HTML report size reached
409 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,·Apr·18·2025·13:59: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,·Apr·18·2025·15:23:18,·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="8730722587-1">(</samp><samp·class="ss">my_app</samp><samp·class="p"·data-group-id="8730722587-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="5003466698-1">(</samp><samp·class="ss">my_app</samp><samp·class="p"·data-group-id="5003466698-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="8730722587-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="8730722587-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="5003466698-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="5003466698-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="4547044592-1">(</samp><samp·class="ss">my_app</samp><samp·class="p"·data-group-id="4547044592-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="8022570202-1">(</samp><samp·class="ss">my_app</samp><samp·class="p"·data-group-id="8022570202-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="4547044592-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="4547044592-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="8022570202-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="8022570202-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="6125850693-1">[</span><span·class="ss">options</span><span·class="p"·data-group-id="6125850693-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="5186530466-1">[</span><span·class="ss">options</span><span·class="p"·data-group-id="5186530466-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="7746113061-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="7746113061-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="1940731773-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="1940731773-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="7746113061-2">(</samp><samp·class="s">&quot;snmp/include/snmp_types.hrl&quot;</samp><samp·class="p"·data-group-id="7746113061-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="1940731773-2">(</samp><samp·class="s">&quot;snmp/include/snmp_types.hrl&quot;</samp><samp·class="p"·data-group-id="1940731773-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="1249851332-1">(</span><span·class="s">&quot;RFC1213-MIB&quot;</span><span·class="p"·data-group-id="1249851332-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="4057350234-1">(</span><span·class="s">&quot;RFC1213-MIB&quot;</span><span·class="p"·data-group-id="4057350234-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="9203787818-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="3906857406-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="9203787818-2">[</span><span·class="p"·data-group-id="9203787818-3">{</span><span·class="ss">i</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9203787818-4">[</span><span·class="s">&quot;friend_mibs/&quot;</span><span·cl[·...·truncated·by·diffoscope;·len:·292,·SHA:·401677749e34a3360f0d49b82997fd520df69342057605c91f4cefe5a8f0d789·...·]-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="3906857406-2">[</span><span·class="p"·data-group-id="3906857406-3">{</span><span·class="ss">i</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3906857406-4">[</span><span·class="s">&quot;friend_mibs/&quot;</span><span·cl[·...·truncated·by·diffoscope;·len:·292,·SHA:·86c3bf2cbf96caa3f81da6181ccd1962b2b3c69ba18207011c3e2878cb41bb5e·...·]-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="6344243737-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="9820858659-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="6344243737-2">[</span><span·class="p"·data-group-id="6344243737-3">{</span><span·class="ss">il</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6344243737-4">[</span><span·class="s">&quot;snmp/priv/mibs/&quot;</span><spa[·...·truncated·by·diffoscope;·len:·295,·SHA:·1f0fbb7d5282588af948c57e5ce58bdc663e1fc668ae62c72587d8d9a9fcb319·...·]-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="9820858659-2">[</span><span·class="p"·data-group-id="9820858659-3">{</span><span·class="ss">il</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9820858659-4">[</span><span·class="s">&quot;snmp/priv/mibs/&quot;</span><spa[·...·truncated·by·diffoscope;·len:·295,·SHA:·46b01905ff990e8eee6e303c23c1c64b9e2ebc57b82a4264afb9afa5cfdd561c·...·]-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="7674341584-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="7674341584-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="8758630354-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="8758630354-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="7674341584-2">(</samp><samp·class="p"·data-group-id="7674341584-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="8758630354-2">(</samp><samp·class="p"·data-group-id="8758630354-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="7674341584-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="7674341584-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="8758630354-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="8758630354-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="4571077444-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="4571077444-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="6320369568-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="6320369568-1">)</samp><samp·class="w">·</samp><samp·class="p">-&gt;</samp><samp·class="w">
39 ··</samp><samp·class="p"·data-group-id="4571077444-2">{</samp><samp·class="ss">ok</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="4571077444-3">{</samp><samp·class="p">_</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Pid</samp><samp·cla[·...·truncated·by·diffoscope;·len:·459,·SHA:·a73ba976d443416eef3ddc2d3d10d0abb2ae494f1532bb9e3c83c93e54de4079·...·]-4">)</samp><samp·class="p">,</samp><samp·class="w">39 ··</samp><samp·class="p"·data-group-id="6320369568-2">{</samp><samp·class="ss">ok</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="6320369568-3">{</samp><samp·class="p">_</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Pid</samp><samp·cla[·...·truncated·by·diffoscope;·len:·459,·SHA:·a5f5dd1892bbc50a1145d37bcd07f25e15663ecfa344647891fc98ba4bd65f59·...·]-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="9915038738-1">(</span><span·class="s">&quot;snmp/include/SNMPv2-MIB.hrl&quot;</span><span·class="p"·data-group-id="9915038738-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="6082554177-1">(</span><span·class="s">&quot;snmp/include/SNMPv2-MIB.hrl&quot;</span><span·class="p"·data-group-id="6082554177-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="3094019153-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="9599890462-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="3094019153-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:·bdbbda29b45fe0b31a892cea74b5909f8a2425d1a044b4f9e20688d41796e105·...·]-1">)</span><span·class="w">368 ·······················</span><span·class="p"·data-group-id="9599890462-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:·d0161637d18945bed14ce512be3d29517d79ed0c58ccbb8fa6223f360fb19fbe·...·]-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="3094019153-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:·ce186ea5c370f386b30ed8a08b2bc07a7d049f34b1730839f1c9445b679ece19·...·]-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="9599890462-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:·5468ff5569ff261db5933a5513988963cb5a4ff9ef60312da50d44c88fc3ea2c·...·]-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
Max HTML report size reached
3.57 KB
OEBPS/content.opf
3.54 KB
OEBPS/content.opf
Max HTML report size reached
10.3 KB
./usr/share/doc/erlang-doc/html/lib/snmp-5.18.2/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.6/doc/html/erlang.html#t:string/0">string</a>()·|·<a·href="../../../../erts-15.2.6/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.6/doc/html/erlang.html#t:string/0">string</a>()·|·<a·href="../../../../erts-15.2.6/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="9691745224-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="9691745224-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·168,·SHA:·9ab73c0feb266c6afe99b928dc0ce1add0f3a3ab1e05b44b53f77b259a5c1130·...·]-2">)</span><span·class="p">,</span><span·class="w">3199 generated·by·the·<code·class="inline">versions1</code>·function</p><p>This·is·the·same·as·doing,·e.g.:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">···········</span><span·class="p"·data-group-id="3746703443-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="3746703443-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·168,·SHA:·74511e2cc278178c34b9adcff63e235c06635fb81413de2a97b0f33846f47aa0·...·]-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="9691745224-3">(</span><span·class="n">V</span><span·class="p"·data-group-id="9691745224-3">)</span><span·class="p">.</span></code></pre>3200 ···········</span><span·class="nc">snmp</span><span·class="p">:</span><span·class="nf">print_versions</span><span·class="p"·data-group-id="3746703443-3">(</span><span·class="n">V</span><span·class="p"·data-group-id="3746703443-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.6/doc/html/erlang.html#t:string/0">string</a>()·|·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:non_neg_integer/0">non_neg_integer</a>(),3253 ····························Prefix·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:string/0">string</a>()·|·<a·href="../../../../erts-15.2.6/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.6/doc/html/erlang.html#t:term/0">term</a>().</pre>3255 ····························VersionInfo·::·<a·href="../../../../erts-15.2.6/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="1646145122-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="1646145122-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·168,·SHA:·83c443d4d7db228bacce627b3efbd26d0748410e5e768e9efdb0b194b303d4c2·...·]-2">)</span><span·class="p">,</span><span·class="w">3258 by·the·<code·class="inline">versions1</code>·and·<code·class="inline">versions2</code>·functions</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">···········</span><span·class="p"·data-group-id="4074119664-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="4074119664-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·168,·SHA:·2cf6f1e45a25f516c7dcb1e3ec234ac313dc2f0c2e4cf11db87a3da21cf43537·...·]-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="1646145122-3">(</span><span·class="n">V</span><span·class="p"·data-group-id="1646145122-3">)</span><span·class="p">.</span></code></pre>3259 ···········</span><span·class="nc">snmp</span><span·class="p">:</span><span·class="nf">print_versions</span><span·class="p"·data-group-id="4074119664-3">(</span><span·class="n">V</span><span·class="p"·data-group-id="4074119664-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.6/doc/html/erlang.html#t:boolean/0">boolean</a>()}·|·TargetOpt.</pre>3382 ·······················TraceOpt·::·{timestamp,·<a·href="../../../../erts-15.2.6/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="1094056669-1">(</span><span·class="p"·data-group-id="1094056669-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="3539394789-1">(</span><span·class="p"·data-group-id="3539394789-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="1094056669-2">(</span><span·class="p"·data-group-id="1094056669-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="3539394789-2">(</span><span·class="p"·data-group-id="3539394789-3">[</span><span·class="ss">snmp_generic</span><span·class="p">,</span><span·class="w">
3389 ··························</span><span·class="p"·data-group-id="1094056669-4">{</span><span·class="ss">snmp_generic_mnesia</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1094056669-5">[</span><span·class="p"·data-group-id="1094056669-6">{</span><span·class="ss">scope</span><span·cl[·...·truncated·by·diffoscope;·len:·329,·SHA:·135eff783c6bd22b2a6b05acc159848f31d9ddd51cbfe9395dd9d00bdc4db0f7·...·]9-2">)</span><span·class="p">,</span><span·class="w">3389 ··························</span><span·class="p"·data-group-id="3539394789-4">{</span><span·class="ss">snmp_generic_mnesia</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3539394789-5">[</span><span·class="p"·data-group-id="3539394789-6">{</span><span·class="ss">scope</span><span·cl[·...·truncated·by·diffoscope;·len:·329,·SHA:·484027ba8b61dfcae0ec498e90cba7083269aa885a1e9095ebcf009dfe7da818·...·]9-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="1094056669-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="1094056669-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="3539394789-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="3539394789-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="1094056669-8">(</span><span·class="p"·data-group-id="1094056669-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="3539394789-8">(</span><span·class="p"·data-group-id="3539394789-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.2/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="9740715092-1">(</span><span·class="p"·data-group-id="9740715092-2">[</span><span·class="p"·data-group-id="9740715092-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:·f7f2bc5357b68b944c0aa57f1309869945a92639ea297a011ac502b54e9ddd74·...·]-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="1210838011-1">(</span><span·class="p"·data-group-id="1210838011-2">[</span><span·class="p"·data-group-id="1210838011-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:·f4a54e2aebb60c8840e7c099c79a6f0c24050c44ffc18d06f80a451a42c3fdbf·...·]-3">}</span><span·class="p">,</span><span·class="w">
333 ·····················</span><span·class="p"·data-group-id="9740715092-4">{</span><span·class="ss">snmp</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9740715092-5">[</span><span·class="p"·data-group-id="9740715092-6">{</span><span·class="ss">key</span><span·class="p">,</span><[·...·truncated·by·diffoscope;·len:·385,·SHA:·d1abce62b9ed3970006af0565804be5b83a9bd61a203fc93818d8fc28bb75abe·...·]-4">}</span><span·class="p">,</span><span·class="w">333 ·····················</span><span·class="p"·data-group-id="1210838011-4">{</span><span·class="ss">snmp</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1210838011-5">[</span><span·class="p"·data-group-id="1210838011-6">{</span><span·class="ss">key</span><span·class="p">,</span><[·...·truncated·by·diffoscope;·len:·385,·SHA:·7c29485d635517d080bd7543c1954c7e15da1b4885cf74bb92e11f4bdcf2dbb9·...·]-4">}</span><span·class="p">,</span><span·class="w">
334 ·····················</span><span·class="p"·data-group-id="9740715092-8">{</span><span·class="ss">attributes</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9740715092-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:·edc676bfc3015eebc4599071e08152e2254d6d553d40403d107ab36f2551d088·...·]-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="1210838011-8">{</span><span·class="ss">attributes</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1210838011-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:·b06dbaaca1fc0723e3a166b139961ee33b436e12089f6a0035baad6fe7df5f6d·...·]-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="4725322549-1">(</span><span·class="s">&quot;EmpMIB&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4725322549-2">[</span><span·class="p"·data-group-id="4725322549-3">{</span><span·class="ss">db</span><span·class="[·...·truncated·by·diffoscope;·len:·212,·SHA:·34bfa64a0f15dad900ccb1e03047c85e1787fec71413eb464721731b23c85cb7·...·]-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="5104069566-1">(</span><span·class="s">&quot;EmpMIB&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5104069566-2">[</span><span·class="p"·data-group-id="5104069566-3">{</span><span·class="ss">db</span><span·class="[·...·truncated·by·diffoscope;·len:·212,·SHA:·134f288a9be3954e82613c122f1d98af18410ba616fcfe14ac7a35f6a8a2db4e·...·]-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="6293887000-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="6293887000-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="4860712135-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="4860712135-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="6293887000-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="6293887000-2">)</span><span·class="p">,</span><span·class="w">354 ····</span><span·class="nf">notify_internal_resources</span><span·class="p"·data-group-id="4860712135-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="4860712135-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="6293887000-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:·0569bfdb0ef3b69588398a42ee0cafa8330dde4ec8d4cbd9d11ab546a67ac636·...·]-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="4860712135-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:·05ffb8f681b9b35e5136ffd9fc3f409222049839b43b3c223b738c166e8dc483·...·]-3">)</span><span·class="p">;</span><span·class="w">
356 </span><span·class="nf">emp_table</span><span·class="p"·data-group-id="6293887000-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="6293887000-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="4860712135-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="4860712135-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="6293887000-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:·13b6c30768c8bfd2d7e50c10575c6575b382d02d3710503974c4f1fdcac8eb6f·...·]-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="4860712135-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:·c295137f2afe96df1b0a384b58eb40c73b26a6cf5baed317bcca077eb84b2bb4·...·]-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="9652582550-1">(</span><span·class="p"·data-group-id="9652582550-2">[</span><span·class="p"·data-group-id="9652582550-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:·7de9ee1fff8d97176046f900241c9b3b8287a684a33b189a4b58ccbf9acae3a9·...·]-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="4464935625-1">(</span><span·class="p"·data-group-id="4464935625-2">[</span><span·class="p"·data-group-id="4464935625-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:·8cfa51bcd91e04ac0b23d70c712fcc7d9ede116ed6c8e26264ab28cf3306d839·...·]-3">}</span><span·class="p">,</span><span·class="w">
371 ·····················</span><span·class="p"·data-group-id="9652582550-4">{</span><span·class="ss">snmp</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9652582550-5">[</span><span·class="p"·data-group-id="9652582550-6">{</span><span·class="ss">key</span><span·class="p">,</span><[·...·truncated·by·diffoscope;·len:·385,·SHA:·7f9549d2580bebffea338566954ce8d5bb533f483c2de03ceadb6e9c453a120f·...·]-4">}</span><span·class="p">,</span><span·class="w">371 ·····················</span><span·class="p"·data-group-id="4464935625-4">{</span><span·class="ss">snmp</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4464935625-5">[</span><span·class="p"·data-group-id="4464935625-6">{</span><span·class="ss">key</span><span·class="p">,</span><[·...·truncated·by·diffoscope;·len:·385,·SHA:·9a443b7c9399eec2b62f11f23d007fe56f4f01114209fc5ab9150afb32809e11·...·]-4">}</span><span·class="p">,</span><span·class="w">
372 ·····················</span><span·class="p"·data-group-id="9652582550-8">{</span><span·class="ss">attributes</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9652582550-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:·b5ab96f3f48176bfac934c958cb231aeac07d516b2e617f8983d124d68bb43ac·...·]-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="4464935625-8">{</span><span·class="ss">attributes</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4464935625-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:·b0ec0650098ff45aef43dc0128b58ea0bb18dea49f6417bb436aad38a831c756·...·]-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="6620857042-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="6620857042-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="3933414705-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="3933414705-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="6620857042-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="6620857042-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="3933414705-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="3933414705-2">)</span><span·class="p">.</span><span·class="w">
  
376 </span><span·class="nf">emp_table</span><span·class="p"·data-group-id="6620857042-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="6620857042-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="3933414705-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="3933414705-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="6620857042-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="6620857042-4">)</span><span·class="p">,</span><span·class="w">377 ··</span><span·class="nf">notify_internal_resources</span><span·class="p"·data-group-id="3933414705-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="3933414705-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="6620857042-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="6620857042-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="3933414705-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="3933414705-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="6620857042-6">[</span><span·class="p"·data-group-id="6620857042-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="6620857042-7">}</span><span·class=[·...·truncated·by·diffoscope;·len:·29,·SHA:·2a82967fc64076bd9fff5e1840d1b2e1658521e47ac31bf341a4b611e02c949a·...·]-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="3933414705-6">[</span><span·class="p"·data-group-id="3933414705-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="3933414705-7">}</span><span·class=[·...·truncated·by·diffoscope;·len:·29,·SHA:·35e937ea23dd169505ef4d3ee118eba28a5120284d9f0e94464df7c85976d737·...·]-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="6620857042-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:·2b8e645408ced9de7c61ddac2dd42f7b898e62ff56d6dd81126c3c4dd30bd298·...·]-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="3933414705-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:·d6ae5281d602542a5115b7adc05d54c487bcb5900706e5156b50cdbfef16b3e8·...·]-8">)</span><span·class="p">;</span><span·class="w">
384 </span><span·class="nf">emp_table</span><span·class="p"·data-group-id="6620857042-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="6620857042-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="3933414705-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="3933414705-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="6620857042-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:·928bc9e7a0c5e16a86e104da400b9637046d90314e8cd14e637eeb840387f8f5·...·]-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="3933414705-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:·23fcc7a5c27f0bb8c3fc5e1605495c526021e9d1182a4127b997b1a25defc001·...·]-11">)</span><span·class="p">.</span><span·class="w">
  
386 </span><span·class="nf">is_row_created</span><span·class="p"·data-group-id="6620857042-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="6620857042-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="3933414705-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="3933414705-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="6620857042-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="6620857042-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="3933414705-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="3933414705-14">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
388 ····</span><span·class="p"·data-group-id="6620857042-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="6620857042-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="3933414705-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="3933414705-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="6620857042-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="6620857042-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="3933414705-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="3933414705-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.2/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="9466991981-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="9466991981-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="4462143133-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="4462143133-1">}</span><span·class="p">.</span><span·class="w">
154 </span><span·class="p"·data-group-id="9466991981-2">{</span><span·class="ss">intAgentTransports</span><span·class="p">,</span><span·class="w">154 </span><span·class="p"·data-group-id="4462143133-2">{</span><span·class="ss">intAgentTransports</span><span·class="p">,</span><span·class="w">
155 ·</span><span·class="p"·data-group-id="9466991981-3">[</span><span·class="p"·data-group-id="9466991981-4">{</span><span·class="ss">transportDomainUdpIpv4</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9466991981-5">{</span><span·class="mi">141</span><span·c[·...·truncated·by·diffoscope;·len:·238,·SHA:·9e0ce7bf451ce1a8cbe4d123e3aa4ce15ffaf8955080a622e49b3c1e8afa5672·...·]-4">}</span><span·class="p">,</span><span·class="w">155 ·</span><span·class="p"·data-group-id="4462143133-3">[</span><span·class="p"·data-group-id="4462143133-4">{</span><span·class="ss">transportDomainUdpIpv4</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4462143133-5">{</span><span·class="mi">141</span><span·c[·...·truncated·by·diffoscope;·len:·238,·SHA:·001d838a0d7bab88277844b76c982036139c38a47dfece5998d3df2b846d58a3·...·]-4">}</span><span·class="p">,</span><span·class="w">
156 ··</span><span·class="p"·data-group-id="9466991981-6">{</span><span·class="ss">transportDomainUdpIpv6</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9466991981-7">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="[·...·truncated·by·diffoscope;·len:·481,·SHA:·29107f1c2333cdccc5275dc2f56d4004aa66bb9204d81d2984d84bad5b6112ef·...·]-2">}</span><span·class="p">.</span><span·class="w">156 ··</span><span·class="p"·data-group-id="4462143133-6">{</span><span·class="ss">transportDomainUdpIpv6</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4462143133-7">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="[·...·truncated·by·diffoscope;·len:·481,·SHA:·e3a6a6b0ed0928586d1b6a091b85633bac26d2974131c37c7aaeea7b78085c1e·...·]-2">}</span><span·class="p">.</span><span·class="w">
157 </span><span·class="p"·data-group-id="9466991981-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="9466991981-8">}</span><span·class="p">.</span><span·class="w">157 </span><span·class="p"·data-group-id="4462143133-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="4462143133-8">}</span><span·class="p">.</span><span·class="w">
158 </span><span·class="p"·data-group-id="9466991981-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="9466991981-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="4462143133-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="4462143133-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="5702518555-1">[</span><span·class="p"·data-group-id="5702518555-2">{</span><span·class="ss">transportDomainUdpIpv4</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5702518555-3">{</span><span·class="mi">141</span><span·c[·...·truncated·by·diffoscope;·len:·238,·SHA:·d84bdf1ff2a74bb8a7c80ea8e1637bb1abeb67ecaf4c6f3258bee4a9df0a24f3·...·]-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="8170840501-1">[</span><span·class="p"·data-group-id="8170840501-2">{</span><span·class="ss">transportDomainUdpIpv4</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8170840501-3">{</span><span·class="mi">141</span><span·c[·...·truncated·by·diffoscope;·len:·238,·SHA:·0e1ba83f6151474cf7ecc8a6da6b0ead0e042091b8f888459bf298bfd028f16d·...·]-2">}</span><span·class="p">,</span><span·class="w">
161 ···············</span><span·class="p"·data-group-id="5702518555-4">{</span><span·class="ss">transportDomainUdpIpv6</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5702518555-5">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="[·...·truncated·by·diffoscope;·len:·428,·SHA:·b0e0f8d8e7683eea586c2782bbd27dc336b1a33a72020e41dcb6070e4410f20a·...·]-1">]</span><span·class="p">,</span><span·class="w">161 ···············</span><span·class="p"·data-group-id="8170840501-4">{</span><span·class="ss">transportDomainUdpIpv6</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8170840501-5">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="[·...·truncated·by·diffoscope;·len:·428,·SHA:·e230815c0983a4d2e59ded0164c877fd199156f74dc639f2ff79936f3ef422c5·...·]-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="5702518555-6">[</span><span·class="nc">snmpa_conf</span><span·class="p">:</span><span·class="nf">agent_entry</span><span·class="p"·data-group-id="5702518555-7">(</span><span·class="ss">intAgentUDPPort</span><span·class="p">,</span><span·class="w">·········[·...·truncated·by·diffoscope;·len:·81,·SHA:·0829d1cac86d4b90717b7b5fbac991b58ab00f874fbc1699a506ec8c4643ccdd·...·]-7">)</span><span·class="p">,</span><span·class="w">165 ···</span><span·class="p"·data-group-id="8170840501-6">[</span><span·class="nc">snmpa_conf</span><span·class="p">:</span><span·class="nf">agent_entry</span><span·class="p"·data-group-id="8170840501-7">(</span><span·class="ss">intAgentUDPPort</span><span·class="p">,</span><span·class="w">·········[·...·truncated·by·diffoscope;·len:·81,·SHA:·32c37049d7db1d7c4055f959c7c8330e91a13e64aeb131b7890d6ecc211c2c4a·...·]-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="5702518555-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="5702518555-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="8170840501-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="8170840501-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="5702518555-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="5702518555-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="8170840501-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="8170840501-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="5702518555-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="5702518555-10">)</span><span·class="p"·data-group-id="5702518555-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="8170840501-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="8170840501-10">)</span><span·class="p"·data-group-id="8170840501-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="5702518555-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="5702518555-11">)</span><span·class="p">,</span></code></pre><p>These·are·the·supported·en[·...·truncated·by·diffoscope;·len:·435,·SHA:·dda822811130a0329391d16769bd3be567ce61e2242dcc6453a33db99c8f5730·...·]-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="8170840501-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="8170840501-11">)</span><span·class="p">,</span></code></pre><p>These·are·the·supported·en[·...·truncated·by·diffoscope;·len:·435,·SHA:·a932b8b88219f0be84bb822f13a4097e4f626240f928e6855e399229e463497d·...·]-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="9803899530-3">{</span><span·class="ss">snmpEngineMaxMessageSize</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">snmp_framework_mib</span><span·class="p">:</span><span·class="nf">max_message_size</span><span·class="p"·data-group-id="9[·...·truncated·by·diffoscope;·len:·115,·SHA:·e2c0da19111f02b66aeff6cb80da86f2b1a13f782b4dfa4fb34e9f4bdbae570e·...·]-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="8464279699-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="8[·...·truncated·by·diffoscope;·len:·115,·SHA:·fd41e00fbbc155fc281c7e30ed7cd82a99743c33b0cfd429432435f6158453db·...·]-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="9803899530-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="9803899530-6">(</spa[·...·truncated·by·diffoscope;·len:·96,·SHA:·5b3ecaff194180e55a25769ed95b4339236e2e64b6ba07d5d119050c15a3692d·...·]-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="8464279699-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="8464279699-6">(</spa[·...·truncated·by·diffoscope;·len:·96,·SHA:·bd14fd6f26a10dcd7879f398dcb02eb359d2548318e06e9d2f4894f392552a06·...·]-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="9803899530-7">{</span><span·class="ss">intAgentTransports</span><span·class="p">,</span><span·class="w">·······</span><span·class="p"·data-group-id="9803899530-8">[</span><span·class="nc">snmpa_conf</span><span·class="p">:</span><span·class="nf">intAgentTr[·...·truncated·by·diffoscope;·len:·214,·SHA:·7eadeffe24a9680e669be0754cc0a21694ad23eb218bf07b21dfa6639dd15fe1·...·]-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="8464279699-7">{</span><span·class="ss">intAgentTransports</span><span·class="p">,</span><span·class="w">·······</span><span·class="p"·data-group-id="8464279699-8">[</span><span·class="nc">snmpa_conf</span><span·class="p">:</span><span·class="nf">intAgentTr[·...·truncated·by·diffoscope;·len:·214,·SHA:·15051d8ec60c605c8773abba455597b3b3dbc9bdb054d26c0b0cfabf27be2973·...·]-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="9179707289-1">[</span><span·class="p"·data-group-id="9179707289-2">{</span><span·class="ss">transportDomainUdpIpv4</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9179707289-3">{</span><span·class="p"·data-group-id="9179707289-4">{</span><span·class="mi">141</span><span·class="p">,</span><span·class="mi">213</span><span·class="p">,</span><span·class="mi">11</span><span·class="p">,</span><span·class="mi">24</span><span·class="p"·data-group-id="9179707289-4">}</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">4000</span><span·class="p"·data-group-id="9179707289-3">}</span><span·class="p"·data-group-id="9179707289-2">}</span><span·class="p">,</span><span·class="w"> 
176 ··</span><span·class="p"·data-group-id="9179707289-5">{</span><span·class="ss">transportDomainUdpIpv4</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9179707289-6">{</span><span·class="p"·data-group-id="9179707289-7">{<[·...·truncated·by·diffoscope;·len:·665,·SHA:·fbe7db290393bf222da778ee5fea0064b50483924cd98479e783386710ea0152·...·]175 example,·<em>not</em>·allowed:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="p"·data-group-id="6675462124-1">[</span><span·class="p"·data-group-id="6675462124-2">{</span><span·class="ss">transportDomainUdpIpv4</spa[·...·truncated·by·diffoscope;·len:·609,·SHA:·71255dff54bec8046aaf5c6c67e6ca57059cce69d162a70995cefb125033c5e3·...·]
 176 ··</span><span·class="p"·data-group-id="6675462124-5">{</span><span·class="ss">transportDomainUdpIpv4</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6675462124-6">{</span><span·class="p"·data-group-id="6675462124-7">{</span><span·class="mi">141</span><span·class="p">,</span><span·class="mi">213</span><span·class="p">,</span><span·class="mi">11</span><span·class="p">,</span><span·class="mi">24</span><span·class="p"·data-group-id="6675462124-7">}</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">4001</span><span·class="p"·data-group-id="6675462124-6">}</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">trap_sender</span><span·class="p"·data-group-id="6675462124-5">}</span><span·class="p"·data-group-id="6675462124-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="2364162651-1">[</span><span·class="nc">snmpa_conf</span><span·class="p">:</span><span·class="nf">context_entry</span><span·class="p"·data-group-id="2364162651-2">(</span><span·class="s">&quot;foo&quot;</span><span·class="p"·data-group-id="2364162651-2">)</span><span·class="p">,</span><span·class="w">197 ···</span><span·class="p"·data-group-id="9238472116-1">[</span><span·class="nc">snmpa_conf</span><span·class="p">:</span><span·class="nf">context_entry</span><span·class="p"·data-group-id="9238472116-2">(</span><span·class="s">&quot;foo&quot;</span><span·class="p"·data-group-id="9238472116-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="2364162651-3">(</span><span·class="s">&quot;bar&quot;</span><span·class="p"·data-group-id="2364162651-3">)</span><span·class="p"·data-group-id="2364162651-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="9238472116-3">(</span><span·class="s">&quot;bar&quot;</span><span·class="p"·data-group-id="9238472116-3">)</span><span·class="p"·data-group-id="9238472116-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="2364162651-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="2364162651-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="9238472116-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="9238472116-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="5148638585-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="5148638585-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="0044553466-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="0044553466-1">}</span><span·class="p">.</span><span·class="w">
207 </span><span·class="p"·data-group-id="5148638585-2">{</span><span·class="ss">sysObjectID</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5148638585-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:·8d0a857d27a2812dfc8fea9cc4a2e628fc1ca94e12150e3eee89d100c45fad97·...·]-2">}</span><span·class="p">.</span><span·class="w">207 </span><span·class="p"·data-group-id="0044553466-2">{</span><span·class="ss">sysObjectID</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0044553466-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:·c70920e740aedc95ad6190569bd7d7765cacfc493bc49333431b18bdd36ffa3f·...·]-2">}</span><span·class="p">.</span><span·class="w">
208 </span><span·class="p"·data-group-id="5148638585-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="5148638585-4">}</span><span·class="p">.</span><span·class="w">208 </span><span·class="p"·data-group-id="0044553466-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="0044553466-4">}</span><span·class="p">.</span><span·class="w">
209 </span><span·class="p"·data-group-id="5148638585-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="5148638585-5">}</span><span·class="p">.</span><span·class="w">209 </span><span·class="p"·data-group-id="0044553466-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="0044553466-5">}</span><span·class="p">.</span><span·class="w">
210 </span><span·class="p"·data-group-id="5148638585-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="5148638585-6">}</span><span·class="p">.</span><span·class="w">210 </span><span·class="p"·data-group-id="0044553466-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="0044553466-6">}</span><span·class="p">.</span><span·class="w">
211 </span><span·class="p"·data-group-id="5148638585-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="5148638585-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="0044553466-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="0044553466-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="5741232614-1">[</span><span·class="nc">snmpa_conf</span><span·class="p">:</span><span·class="nf">standard_entry</span><span·class="p"·data-group-id="5741232614-2">(</span><span·class="ss">sysDescr</span><span·class="p">,</span><span·class="w">····</span><s[·...·truncated·by·diffoscope;·len:·91,·SHA:·eefc7c4c9c846b97178fa02ed74c8e2a404dfe946b1bc104fc8450a33643f4d3·...·]-2">)</span><span·class="p">,</span><span·class="w">213 ···</span><span·class="p"·data-group-id="9143944137-1">[</span><span·class="nc">snmpa_conf</span><span·class="p">:</span><span·class="nf">standard_entry</span><span·class="p"·data-group-id="9143944137-2">(</span><span·class="ss">sysDescr</span><span·class="p">,</span><span·class="w">····</span><s[·...·truncated·by·diffoscope;·len:·91,·SHA:·528dd8810a97c675cb5cdd9779eb91cde1fc9d56e8fff99567b04fc2237ae55b·...·]-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="5741232614-3">(</span><span·class="ss">sysObjectID</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5741232614-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:·5fce208f14443f7b500b8f1448075f72997c735bdb1bde166e0d7e2ce8a58fda·...·]-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="9143944137-3">(</span><span·class="ss">sysObjectID</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9143944137-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:·7147c805326928adf9e444c48279d53ce31017f4be88346c49ab753802013fc0·...·]-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="5741232614-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="5741232614-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="9143944137-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="9143944137-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="5741232614-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="5741232614-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="9143944137-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="9143944137-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="5741232614-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="5741232614-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="9143944137-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="9143944137-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="5741232614-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="5741232614-8">)</span><span·class="p"·data-group-id="5741232614-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="9143944137-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="9143944137-8">)</span><span·class="p"·data-group-id="9143944137-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="5741232614-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="5741232614-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="9143944137-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="9143944137-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="0266116721-1">[</span><span·class="nc">snmpa_conf</span><span·class="p">:</span><span·class="nf">community_entry</span><span·class="p"·data-group-id="0266116721-2">(</span><span·class="s">&quot;public&quot;</span><span·class="p"·data-group-id="0266116721-2">)</span><span·class="p">,</span><span·class="w">230 ···</span><span·class="p"·data-group-id="3912399042-1">[</span><span·class="nc">snmpa_conf</span><span·class="p">:</span><span·class="nf">community_entry</span><span·class="p"·data-group-id="3912399042-2">(</span><span·class="s">&quot;public&quot;</span><span·class="p"·data-group-id="3912399042-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="0266116721-3">(</span><span·class="s">&quot;all-rights&quot;</span><span·class="p"·data-group-id="0266116721-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="3912399042-3">(</span><span·class="s">&quot;all-rights&quot;</span><span·class="p"·data-group-id="3912399042-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="0266116721-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="3912399042-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="0266116721-4">)</span><span·class="p"·data-group-id="0266116721-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="3912399042-4">)</span><span·class="p"·data-group-id="3912399042-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="0266116721-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="0266116721-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="3912399042-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="3912399042-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="8409273738-1">[</span><span·class="c1">%%························SecModel,·SecName,·GroupName</span><span·class="w">249 ···</span><span·class="p"·data-group-id="4955044546-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="8409273738-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="8409273738-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="4955044546-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="4955044546-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="8409273738-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="4955044546-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="8409273738-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="4955044546-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="8409273738-4">(</span><span·class="s">&quot;restricted&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8409273738-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:·ab36f030023c5ab6c74caa465d81379bf8ba0efb0ff15df2c0d63258ba74d8ba·...·]-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="4955044546-4">(</span><span·class="s">&quot;restricted&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4955044546-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:·bc408f822c0a2f44867673dbbc987511c76c68b2980d22f346b3ee5569af1035·...·]-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="8409273738-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="8409273738-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="4955044546-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="4955044546-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="9862762190-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="9862762190-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="0148747407-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="0148747407-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="9862762190-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="9862762190-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="0148747407-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="0148747407-2">)</span><span·class="p">,</span><span·class="w">
Max diff block lines reached; 24992/82456 bytes (30.31%) of diff not shown.
6.86 KB
./usr/share/doc/erlang-doc/html/lib/snmp-5.18.2/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="2104274055-1">(</span><span·class="s">&quot;snmp/include/SNMPv2-MIB.hrl&quot;</span><span·class="p"·data-group-id="2104274055-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="8814568756-1">(</span><span·class="s">&quot;snmp/include/SNMPv2-MIB.hrl&quot;</span><span·class="p"·data-group-id="8814568756-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="0105864341-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="3390002192-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="0105864341-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:·fa69fbff490c7d01dace3764e5e3853055b053673bbe2a5fe96c0e8b8a5107f6·...·]-1">)</span><span·class="w">473 ·······················</span><span·class="p"·data-group-id="3390002192-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:·06cd727ae445c2104d43bfa79478d2384bb4fd600a8fb3e9707979d61ba4529b·...·]-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="0105864341-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:·051583f0aa4fe3c9a933d07efdd1ce29c2e6e258082921f36668ab6b05250b3d·...·]-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="3390002192-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:·fbb789c79be678788d95d8827d21ff68437f3592c62d31edf1e6218c2000d0f8·...·]-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.2/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="3963997453-1">[</span><span·class="p"·data-group-id="3963997453-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="8796042138-1">[</span><span·class="p"·data-group-id="8796042138-2">{</span><span·class="ss">snmp</span><span·class="p">,</span><span·class="w">
144 ········</span><span·class="p"·data-group-id="3963997453-3">[</span><span·class="p"·data-group-id="3963997453-4">{</span><span·class="ss">agent</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3963997453-5">[</span><span·class="p"·data-group-id="3963997453-6">{</span><span·class="ss">db_dir</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;/tmp/snmp/agent/db&quot;</span><span·class="p"·data-group-id="3963997453-6">}</span><span·class="p">,</span><span·class="w"> 
145 ··················</span><span·class="p"·data-group-id="3963997453-7">{</span><span·class="ss">config</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3963997453-8">[</span><span·class="p"·data-group-id="3963997453-9">{</span><span·class="ss">dir</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;/tmp/snmp/agent/conf&quot;</span><span·class="p"·data-group-id="3963997453-9">}</span><span·class="p"·data-group-id="3963997453-8">]</span><span·class="p"·data-group-id="3963997453-7">}</span><span·class="p"·data-group-id="3963997453-5">]</span><span·class="p"·data-group-id="3963997453-4">}</span><span·class="p">,</span><span·class="w"> 
146 ·········</span><span·class="p"·data-group-id="3963997453-10">{</span><span·class="ss">manager</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3963997453-11">[</span><span·class="p"·data-group-id="3963997453-12">{</span><span·c[·...·truncated·by·diffoscope;·len:·355,·SHA:·e4fa0c7827d41f9a12343dd998f85ca6439f0a73bd6c91d3691dc66ce58661c9·...·]">}</span><span·class="p">,</span><span·class="w">144 ········</span><span·class="p"·data-group-id="8796042138-3">[</span><span·class="p"·data-group-id="8796042138-4">{</span><span·class="ss">agent</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8796042138-5">[</span><span·class="[·...·truncated·by·diffoscope;·len:·214,·SHA:·d49078ac994e056bc85a2ed4b7049edc4502fd73d2afb36d36b47cafd5c45a63·...·]">}</span><span·class="p">,</span><span·class="w">
 145 ··················</span><span·class="p"·data-group-id="8796042138-7">{</span><span·class="ss">config</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8796042138-8">[</span><span·class="p"·data-group-id="8796042138-9">{</span><span·class="ss">dir</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;/tmp/snmp/agent/conf&quot;</span><span·class="p"·data-group-id="8796042138-9">}</span><span·class="p"·data-group-id="8796042138-8">]</span><span·class="p"·data-group-id="8796042138-7">}</span><span·class="p"·data-group-id="8796042138-5">]</span><span·class="p"·data-group-id="8796042138-4">}</span><span·class="p">,</span><span·class="w">
 146 ·········</span><span·class="p"·data-group-id="8796042138-10">{</span><span·class="ss">manager</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8796042138-11">[</span><span·class="p"·data-group-id="8796042138-12">{</span><span·class="ss">config</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8796042138-13">[</span><span·class="p"·data-group-id="8796042138-14">{</span><span·class="ss">dir</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;/tmp/snmp/manager/conf&quot;</span><span·class="p"·data-group-id="8796042138-14">}</span><span·class="p">,</span><span·class="w">
147 ······························</span><span·class="p"·data-group-id="3963997453-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="3963997453-15">}</span><span·class="p"·data-group-id="3963997453-13">[·...·truncated·by·diffoscope;·len:·264,·SHA:·4d76633852f7de682bae7fdfcbbca3f161f541d5a683c1d989a32e90bc4d381f·...·]-2">}</span><span·class="w">147 ······························</span><span·class="p"·data-group-id="8796042138-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="8796042138-15">}</span><span·class="p"·data-group-id="8796042138-13">[·...·truncated·by·diffoscope;·len:·264,·SHA:·82d0d13a3d9110f002380af62a4d17ebd52e5baeedf94c91a5f7727889726031·...·]-2">}</span><span·class="w">
148 ········</span><span·class="p"·data-group-id="3963997453-1">]</span><span·class="w">148 ········</span><span·class="p"·data-group-id="8796042138-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="3664311417-1">(</span><span·class="p"·data-group-id="3664311417-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="3664311417-2">[</span><span·class="nf">snmp_component_config</span><span·class="p"·data-group-id="3664311417-3">(</span><span·class="p"·data-group-id="3664311417-3">)</span><span·class="p"·data-group-id="3664311417-2">]</span><span·class="w"> 
152 ······</span><span·class="nf">snmp_component_config</span><span·class="p"·data-group-id="3664311417-4">(</span><span·class="p"·data-group-id="3664311417-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·705,·SHA:·443d3b15ce10b173d1a2d29b39dae6328e777ad75b583fee9212944cecef0794·...·]</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="6560189287-1">(</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·351,·SHA:·32de52c75ee5c3606b56d6b2801357b72b6f3c8dba8924b947b933da21be0ee9·...·]</span><span·class="w">
 152 ······</span><span·class="nf">snmp_component_config</span><span·class="p"·data-group-id="6560189287-4">(</span><span·class="p"·data-group-id="6560189287-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="6560189287-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="6560189287-6">(</span><span·class="p"·data-group-id="6560189287-6">)</span><span·class="p"·data-group-id="6560189287-5">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="6560189287-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="6560189287-8">(</span><span·class="p"·data-group-id="6560189287-8">)</span><span·class="p"·data-group-id="6560189287-7">}</span><span·class="w">
153 ······</span><span·class="nf">agent_options</span><span·class="p"·data-group-id="3664311417-9">(</span><span·class="p"·data-group-id="3664311417-9">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3664311417-10">[</span><span·class="nf">agent_option</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·129,·SHA:·db41816004120250f49b5ae1456054638a0a2fcce6d4b0b37b39ca14eb068784·...·]7-10">]</span><span·class="w">153 ······</span><span·class="nf">agent_options</span><span·class="p"·data-group-id="6560189287-9">(</span><span·class="p"·data-group-id="6560189287-9">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="6560189287-10">[</span><span·class="nf">agent_option</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·129,·SHA:·f621ad0311d3a64cc319b0b10d11d1ba965abc2e2c57c0f4569ea76db6f5adfa·...·]7-10">]</span><span·class="w">
154 ······</span><span·class="nf">agent_option</span><span·class="p"·data-group-id="3664311417-12">(</span><span·class="p"·data-group-id="3664311417-12">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3664311417-13">{</span><span·class="ss">restart_type</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·219,·SHA:·de3f019e31b069121842cc276b818726ffba4838c22800edb75686bfcbdc2a76·...·]7-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="6560189287-12">(</span><span·class="p"·data-group-id="6560189287-12">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="6560189287-13">{</span><span·class="ss">restart_type</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·219,·SHA:·46e50d9b90e1b3abc7e7747b6baabb0a43af7969e1bc25dcfedc6f5dd155741f·...·]7-13">}</span><span·class="w">·····</span><span·class="p">|</span><span·class="w">
155 ·······················</span><span·class="p"·data-group-id="3664311417-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="3664311417-16">(</span><span·class="p"·data-group-id="3664311417-16">)</span><sp[·...·truncated·by·diffoscope;·len:·37,·SHA:·02a6f839fa1ecd5eb2032e4f6f0027c4fe1578e2de2cfa6bfc2f0d6bf96a0870·...·]7-15">}</span><span·class="w">·······</span><span·class="p">|</span><span·class="w">155 ·······················</span><span·class="p"·data-group-id="6560189287-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="6560189287-16">(</span><span·class="p"·data-group-id="6560189287-16">)</span><sp[·...·truncated·by·diffoscope;·len:·37,·SHA:·07cae9527584c1dbafda77025e42a08d8450184a664d857431e23e0f3369807a·...·]7-15">}</span><span·class="w">·······</span><span·class="p">|</span><span·class="w">
156 ·······················</span><span·class="p"·data-group-id="3664311417-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="3664311417-18">(</span><span·class="p"·data-group-id="3664311417-18">)</span><spa[·...·truncated·by·diffoscope;·len:·36,·SHA:·6f121c66b3eed6aeed34695f5beeb0233e320e63baffc07e66964b94beb475fc·...·]7-17">}</span><span·class="w">········</span><span·class="p">|</span><span·class="w">156 ·······················</span><span·class="p"·data-group-id="6560189287-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="6560189287-18">(</span><span·class="p"·data-group-id="6560189287-18">)</span><spa[·...·truncated·by·diffoscope;·len:·36,·SHA:·864e4ecd410fb0e58669109ac96949b2085745b9849cdcb0b886e9c4a40561be·...·]7-17">}</span><span·class="w">········</span><span·class="p">|</span><span·class="w">
157 ·······················</span><span·class="p"·data-group-id="3664311417-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="3664311417-20">(</span><span·class="p"·data-group-id="3664311417-20">)</spa[·...·truncated·by·diffoscope;·len:·42,·SHA:·df5a3f2103f6a28115f11499e748f03b132947e527306d59bb1d09e5038b8808·...·]7-19">}</span><span·class="w">··</span><span·class="p">|</span><span·class="w">157 ·······················</span><span·class="p"·data-group-id="6560189287-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="6560189287-20">(</span><span·class="p"·data-group-id="6560189287-20">)</spa[·...·truncated·by·diffoscope;·len:·42,·SHA:·61da44d63ddb6c25fb17378590ed1e4d573219be93b5a690989d161f94fc4778·...·]7-19">}</span><span·class="w">··</span><span·class="p">|</span><span·class="w">
158 ·······················</span><span·class="p"·data-group-id="3664311417-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="3664311417-22">(</span><span·class="p"·data-group-id="3664311417-22">)</span><span[·...·truncated·by·diffoscope;·len:·35,·SHA:·741f25674810d9b50822e931154cff21f0bc6be62fad8937796f1ec64ac07195·...·]7-21">}</span><span·class="w">·········</span><span·class="p">|</span><span·class="w">158 ·······················</span><span·class="p"·data-group-id="6560189287-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="6560189287-22">(</span><span·class="p"·data-group-id="6560189287-22">)</span><span[·...·truncated·by·diffoscope;·len:·35,·SHA:·26c89ff8275aaf2c10af4ecf5f3d11a891c2f9bd155068ef5b073962e9b4795e·...·]7-21">}</span><span·class="w">·········</span><span·class="p">|</span><span·class="w">
159 ·······················</span><span·class="p"·data-group-id="3664311417-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="3664311417-24">(</span><span·class="p"·data-group-id="3664311417-24">)</span><sp[·...·truncated·by·diffoscope;·len:·37,·SHA:·02a6f839fa1ecd5eb2032e4f6f0027c4fe1578e2de2cfa6bfc2f0d6bf96a0870·...·]7-23">}</span><span·class="w">·······</span><span·class="p">|</span><span·class="w">159 ·······················</span><span·class="p"·data-group-id="6560189287-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="6560189287-24">(</span><span·class="p"·data-group-id="6560189287-24">)</span><sp[·...·truncated·by·diffoscope;·len:·37,·SHA:·07cae9527584c1dbafda77025e42a08d8450184a664d857431e23e0f3369807a·...·]7-23">}</span><span·class="w">·······</span><span·class="p">|</span><span·class="w">
160 ·······················</span><span·class="p"·data-group-id="3664311417-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="3664311417-26">(</span><span·class="p"·data-group-id="3664311417-26">)</span><span·class="p"·data-group-id="3664311417-25">}</span><span·class="w">·········</span><span·class="p">|</span><span·class="w"> 
161 ·······················</span><span·class="p"·data-group-id="3664311417-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="3664311417-28">(</span><span·class="p"·data-group-id="3664311417-28">)</span[·...·truncated·by·diffoscope;·len:·71,·SHA:·658355f7dee6e392690d455fddb1cfe0ff529e2558db59dc53a5d20c163805c9·...·]···</span><span·class="p">|</span><span·class="w">160 ·······················</span><span·class="p"·data-group-id="6560189287-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="6560189287-26">(</span><span·class="p"·data-group-id="6560189287-26">)</span><span[·...·truncated·by·diffoscope;·len:·71,·SHA:·deb9d7eae5ce83c266de126784fce27c10cc02d14fd8fe1f2a939fff310f764d·...·]···</span><span·class="p">|</span><span·class="w">
 161 ·······················</span><span·class="p"·data-group-id="6560189287-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="6560189287-28">(</span><span·class="p"·data-group-id="6560189287-28">)</span><span·class="p"·data-group-id="6560189287-27">}</span><span·class="w">···</span><span·class="p">|</span><span·class="w">
162 ·······················</span><span·class="p"·data-group-id="3664311417-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="3664311417-30">(</span><span·class="p"·data-group-id="3664311417-30">)</span><span·c[·...·truncated·by·diffoscope;·len:·33,·SHA:·ba3e07c81a1d14645ab65bef7e68944049e914fd657feb148877f2e8516b103b·...·]7-29">}</span><span·class="w">···········</span><span·class="p">|</span><span·class="w">162 ·······················</span><span·class="p"·data-group-id="6560189287-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="6560189287-30">(</span><span·class="p"·data-group-id="6560189287-30">)</span><span·c[·...·truncated·by·diffoscope;·len:·33,·SHA:·1335ffed5c8ca2c13947bf2b62dd43e1accc827545654899ae4282abaeb55dcf·...·]7-29">}</span><span·class="w">···········</span><span·class="p">|</span><span·class="w">
163 ·······················</span><span·class="p"·data-group-id="3664311417-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="3664311417-32">(</span><span·class="p"·data-group-id="3664311417-32">)</span>[·...·truncated·by·diffoscope;·len:·40,·SHA:·499f985d493e154efa64a6e1d70776ebcb76cee2bd442a0ad771a954cbaf1bfe·...·]7-31">}</span><span·class="w">····</span><span·class="p">|</span><span·class="w">163 ·······················</span><span·class="p"·data-group-id="6560189287-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="6560189287-32">(</span><span·class="p"·data-group-id="6560189287-32">)</span>[·...·truncated·by·diffoscope;·len:·40,·SHA:·206774e1f62d45e92345caa5e45a571c30db6889d64e4d5323631b741a07053a·...·]7-31">}</span><span·class="w">····</span><span·class="p">|</span><span·class="w">
164 ·······················</span><span·class="p"·data-group-id="3664311417-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="3664311417-34">(</span><span·class="p"·data-group-id="3664311417-34">)</span><span[·...·truncated·by·diffoscope;·len:·35,·SHA:·741f25674810d9b50822e931154cff21f0bc6be62fad8937796f1ec64ac07195·...·]7-33">}</span><span·class="w">·········</span><span·class="p">|</span><span·class="w">164 ·······················</span><span·class="p"·data-group-id="6560189287-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="6560189287-34">(</span><span·class="p"·data-group-id="6560189287-34">)</span><span[·...·truncated·by·diffoscope;·len:·35,·SHA:·26c89ff8275aaf2c10af4ecf5f3d11a891c2f9bd155068ef5b073962e9b4795e·...·]7-33">}</span><span·class="w">·········</span><span·class="p">|</span><span·class="w">
165 ·······················</span><span·class="p"·data-group-id="3664311417-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="3664311417-36">(</span><span·class="p"·data-group-id="3664311417-36">)</span><[·...·truncated·by·diffoscope;·len:·39,·SHA:·d2e5788f9daf20188d9ecb642a9425e3ddc8d87337416f967ef45b554ac38315·...·]7-35">}</span><span·class="w">·····</span><span·class="p">|</span><span·class="w">165 ·······················</span><span·class="p"·data-group-id="6560189287-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="6560189287-36">(</span><span·class="p"·data-group-id="6560189287-36">)</span><[·...·truncated·by·diffoscope;·len:·39,·SHA:·22159d1125aef85a948bab7c6800d4f6b74e1f7b7bca7b9ff64d9c391c9ad212·...·]7-35">}</span><span·class="w">·····</span><span·class="p">|</span><span·class="w">
166 ·······················</span><span·class="p"·data-group-id="3664311417-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="3664311417-38">(</span><span·class="p"·data-group-id="3664311417-38">)</span><span·cla[·...·truncated·by·diffoscope;·len:·31,·SHA:·e068e3928adc4a229b29efa05d6f6ba92afc7b17f08bbd9a6aff38a24284d053·...·]7-37">}</span><span·class="w">·············</span><span·class="p">|</span><span·class="w">166 ·······················</span><span·class="p"·data-group-id="6560189287-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="6560189287-38">(</span><span·class="p"·data-group-id="6560189287-38">)</span><span·cla[·...·truncated·by·diffoscope;·len:·31,·SHA:·67f0a40339cafe72587f8a71638184b51b582ab6385c70b255249c82fc222d31·...·]7-37">}</span><span·class="w">·············</span><span·class="p">|</span><span·class="w">
167 ·······················</span><span·class="p"·data-group-id="3664311417-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="3664311417-40">(</span><span·class="p"·data-group-id="3664311417-40">)</span><s[·...·truncated·by·diffoscope;·len:·38,·SHA:·23f4f56dafb85dfa0e697e623658c6d2ed6a04d9dc8700dd8e4dc0a93820f354·...·]7-39">}</span><span·class="w">······</span><span·class="p">|</span><span·class="w">167 ·······················</span><span·class="p"·data-group-id="6560189287-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="6560189287-40">(</span><span·class="p"·data-group-id="6560189287-40">)</span><s[·...·truncated·by·diffoscope;·len:·38,·SHA:·5a507c91813fd2a1f758c575d64559a1984d44b31cc681fd24c7b203ef516cb4·...·]7-39">}</span><span·class="w">······</span><span·class="p">|</span><span·class="w">
168 ·······················</span><span·class="p"·data-group-id="3664311417-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="3664311417-42">(</span><span·class="p"·data-group-id="3664311417-42">)</span><sp[·...·truncated·by·diffoscope;·len:·37,·SHA:·02a6f839fa1ecd5eb2032e4f6f0027c4fe1578e2de2cfa6bfc2f0d6bf96a0870·...·]7-41">}</span><span·class="w">·······</span><span·class="p">|</span><span·class="w">168 ·······················</span><span·class="p"·data-group-id="6560189287-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="6560189287-42">(</span><span·class="p"·data-group-id="6560189287-42">)</span><sp[·...·truncated·by·diffoscope;·len:·37,·SHA:·07cae9527584c1dbafda77025e42a08d8450184a664d857431e23e0f3369807a·...·]7-41">}</span><span·class="w">·······</span><span·class="p">|</span><span·class="w">
169 ·······················</span><span·class="p"·data-group-id="3664311417-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="3664311417-44">(</span><span·class="p"·data-group-id="3664311417-44">)</span><span·class="p"·data-group-id="3664311417-43">}</span><span·class="w">··</span><span·class="p">|</span><span·class="w"> 
170 ·······················</span><span·class="p"·data-group-id="3664311417-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="3664311417-46">(</span><span·class="p"·data-group-id="3664311417-46">)</span><span·class="p"·data-group-id="3664311417-45">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w"> 
171 ·······················</span><span·class="p"·data-group-id="3664311417-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="3664311417-48">(</span><span·class="p"·data-group-id="3664311417-48">)</span><span·class="p"·data-group-id="3664311417-47">}</span><span·class="w">·······</span><span·class="p">|</span><span·class="w"> 
172 ·······················</span><span·class="p"·data-group-id="3664311417-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="3664311417-50">(</span><span·class="p"·data-group-id="3664311417-50">)</span[·...·truncated·by·diffoscope;·len:·72,·SHA:·3fcf38349782f2dd004da28dde617c74ab41e1cf94bfc644a0f91aa1e53e039d·...·]··</span><span·class="p">|</span><span·class="w">169 ·······················</span><span·class="p"·data-group-id="6560189287-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="6560189287-44">(</span><span·class="p"·data-group-id="6560189287-44">)</spa[·...·truncated·by·diffoscope;·len:·72,·SHA:·01a4259652dcdbd1c057e958633d06e07598dabb05559a084ce51f10d7c101ff·...·]··</span><span·class="p">|</span><span·class="w">
 170 ·······················</span><span·class="p"·data-group-id="6560189287-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="6560189287-46">(</span><span·class="p"·data-group-id="6560189287-46">)</span><span·class="p"·data-group-id="6560189287-45">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
 171 ·······················</span><span·class="p"·data-group-id="6560189287-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="6560189287-48">(</span><span·class="p"·data-group-id="6560189287-48">)</span><span·class="p"·data-group-id="6560189287-47">}</span><span·class="w">·······</span><span·class="p">|</span><span·class="w">
 172 ·······················</span><span·class="p"·data-group-id="6560189287-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="6560189287-50">(</span><span·class="p"·data-group-id="6560189287-50">)</span><span·class="p"·data-group-id="6560189287-49">}</span><span·class="w">···</span><span·class="p">|</span><span·class="w">
173 ·······················</span><span·class="p"·data-group-id="3664311417-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="3664311417-52">(</span><span·class="p"·data-group-id="3664311417-52">)</span><[·...·truncated·by·diffoscope;·len:·39,·SHA:·d2e5788f9daf20188d9ecb642a9425e3ddc8d87337416f967ef45b554ac38315·...·]7-51">}</span><span·class="w">·····</span><span·class="p">|</span><span·class="w">173 ·······················</span><span·class="p"·data-group-id="6560189287-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="6560189287-52">(</span><span·class="p"·data-group-id="6560189287-52">)</span><[·...·truncated·by·diffoscope;·len:·39,·SHA:·22159d1125aef85a948bab7c6800d4f6b74e1f7b7bca7b9ff64d9c391c9ad212·...·]7-51">}</span><span·class="w">·····</span><span·class="p">|</span><span·class="w">
174 ·······················</span><span·class="p"·data-group-id="3664311417-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="3664311417-54">(</span><span·class="p"·data-group-id="3664311417-54">)</span><span·class="p"·data-group-id="3664311417-53">}</span><span·class="w"> 
175 ······</span><span·class="nf">manager_options</span><span·class="p"·data-group-id="3664311417-55">(</span><span·class="p"·data-group-id="3664311417-55">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3664311417-56">[</span><span·class="nf">manager_option</span><span·class="p"·data-group-id="3664311417-57">(</span><span·class="p"·data-group-id="3664311417-57">)</span><span·class="p"·data-group-id="3664311417-56">]</span><span·class="w"> 
176 ······</span><span·class="nf">manager_option</span><span·class="p"·data-group-id="3664311417-58">(</span><span·class="p"·data-group-id="3664311417-58">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·361,·SHA:·28f48036a755d6b6936badb958e96aec99dfae5b961414770d42f9345caa37b9·...·]</span><span·class="w">174 ·······················</span><span·class="p"·data-group-id="6560189287-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="6560189287-54">(</span>[·...·truncated·by·diffoscope;·len:·101,·SHA:·301a4aceec6a34a85a215ef1cf8b050f36772f20a3749d1d981f591546505d1e·...·]</span><span·class="w">
 175 ······</span><span·class="nf">manager_options</span><span·class="p"·data-group-id="6560189287-55">(</span><span·class="p"·data-group-id="6560189287-55">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="6560189287-56">[</span><span·class="nf">manager_option</span><span·class="p"·data-group-id="6560189287-57">(</span><span·class="p"·data-group-id="6560189287-57">)</span><span·class="p"·data-group-id="6560189287-56">]</span><span·class="w">
 176 ······</span><span·class="nf">manager_option</span><span·class="p"·data-group-id="6560189287-58">(</span><span·class="p"·data-group-id="6560189287-58">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="6560189287-59">{</span><span·class="ss">restart_type</span><span·class="p">,</span><span·class="w">·············</span><span·class="nf">restart_type</span><span·class="p"·data-group-id="6560189287-60">(</span><span·class="p"·data-group-id="6560189287-60">)</span><span·class="p"·data-group-id="6560189287-59">}</span><span·class="w">····</span><span·class="p">|</span><span·class="w">
177 ·························</span><span·class="p"·data-group-id="3664311417-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="3664311417-62">(</span><span·class="p"·data-group-id="3664311417-62"[·...·truncated·by·diffoscope;·len:·49,·SHA:·735a48e531744d32d1fa04d6590cb3ca55b49777ba0bfb22b00ad540d8a5646d·...·]7-61">}</span><span·class="w">··</span><span·class="p">|</span><span·class="w">177 ·························</span><span·class="p"·data-group-id="6560189287-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="6560189287-62">(</span><span·class="p"·data-group-id="6560189287-62"[·...·truncated·by·diffoscope;·len:·49,·SHA:·71124a04e8f8df74e83c40317b21ecf4b40aee3b6a08c527dcc6d2519ab5e51d·...·]7-61">}</span><span·class="w">··</span><span·class="p">|</span><span·class="w">
178 ·························</span><span·class="p"·data-group-id="3664311417-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="3664311417-64">(</span><span·class="p"·data-group-id="3664311417-64">)</span[·...·truncated·by·diffoscope;·len:·41,·SHA:·f4aff2a4847fe614a98de0b48210842cc50d6f220f4535bc94493692f289af8e·...·]7-63">}</span><span·class="w">··········</span><span·class="p">|</span><span·class="w">178 ·························</span><span·class="p"·data-group-id="6560189287-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="6560189287-64">(</span><span·class="p"·data-group-id="6560189287-64">)</span[·...·truncated·by·diffoscope;·len:·41,·SHA:·c7493597471340240a344e54a16db493168825b66febfd0f34e44a98391341ce·...·]7-63">}</span><span·class="w">··········</span><span·class="p">|</span><span·class="w">
179 ·························</span><span·class="p"·data-group-id="3664311417-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="3664311417-66">(</span><span·class="p"·data-group-id="3664311417-66">)</span><span·class="p"·data-group-id="3664311417-65">}</span><span·class="w">······</span><span·class="p">|</span><span·class="w"> 
180 ·························</span><span·class="p"·data-group-id="3664311417-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="3664311417-68">(</span><span·class="p"·data-group-id="3664311417-68">)</span><span·class="p"·data-group-id="3664311417-67">}</span><span·class="w">··</span><span·class="p">|</span><span·class="w"> 
181 ·························</span><span·class="p"·data-group-id="3664311417-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="3664311417-70">(</span><span·class="p"·data-group-id="3664311417-70">)<[·...·truncated·by·diffoscope;·len:·76,·SHA:·8374e578009ca432446dedc2f804bb4c2892d08f6cbad819010ca3dc5d80d9b2·...·]·····</span><span·class="p">|</span><span·class="w">179 ·························</span><span·class="p"·data-group-id="6560189287-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="6560189287-66">(</span><span·class="p"·data-group-id="6560189287-66">)</[·...·truncated·by·diffoscope;·len:·76,·SHA:·984f64f8eaa81f86b92f9f9c22ac6f229f00225f1f73beb46aef762a839a2e9f·...·]·····</span><span·class="p">|</span><span·class="w">
 180 ·························</span><span·class="p"·data-group-id="6560189287-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="6560189287-68">(</span><span·class="p"·data-group-id="6560189287-68">)</span><span·class="p"·data-group-id="6560189287-67">}</span><span·class="w">··</span><span·class="p">|</span><span·class="w">
 181 ·························</span><span·class="p"·data-group-id="6560189287-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="6560189287-70">(</span><span·class="p"·data-group-id="6560189287-70">)</span><span·class="p"·data-group-id="6560189287-69">}</span><span·class="w">·····</span><span·class="p">|</span><span·class="w">
182 ·························</span><span·class="p"·data-group-id="3664311417-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="3664311417-72">(</span><span·class="p"·data-group-id="3664311417-72">)[·...·truncated·by·diffoscope;·len:·47,·SHA:·e9b05cdc230a3905aea7794665ce1a8dbf72e80e990783280926016cfb3a148a·...·]7-71">}</span><span·class="w">····</span><span·class="p">|</span><span·class="w">182 ·························</span><span·class="p"·data-group-id="6560189287-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="6560189287-72">(</span><span·class="p"·data-group-id="6560189287-72">)[·...·truncated·by·diffoscope;·len:·47,·SHA:·21c8052732a0a88aa18cc891ed6ff2a031beba70cc1935f5e7546af42cb8ba63·...·]7-71">}</span><span·class="w">····</span><span·class="p">|</span><span·class="w">
183 ·························</span><span·class="p"·data-group-id="3664311417-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="3664311417-74">(</span><span·class="p"·data-group-id="3664311417-74">)</span><span·class="p"·data-group-id="3664311417-73">}</span><span·class="w">········</span><span·class="p">|</span><span·class="w"> 
184 ·························</span><span·class="p"·data-group-id="3664311417-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="3664311417-76">(</span><span·class="p"·data-group-id="3664311417-76">)</span><span·class="p"·data-group-id="3664311417-75">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w"> 
185 ·························</span><span·class="p"·data-group-id="3664311417-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="3664311417-78">(</span><span·class="p"·data-group-id="3664311417-78">)</sp[·...·truncated·by·diffoscope;·len:·47,·SHA:·0d3f42c064e6562cb6764362201994c85da1b5ec05ed0910afd19813110c23f3·...·]">}</span><span·class="w">········</span><span·class="p">|</span><span·class="w">183 ·························</span><span·class="p"·data-group-id="6560189287-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="6560189287-74">(</span><span·class="p"·data-group-id="6560189287-74">)</sp[·...·truncated·by·diffoscope;·len:·47,·SHA:·55f16c1f0001f8f33cd5a5e96033e1afc32d64c5e5e9dda5226fc0dbc4454d90·...·]">}</span><span·class="w">········</span><span·class="p">|</span><span·class="w">
 184 ·························</span><span·class="p"·data-group-id="6560189287-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="6560189287-76">(</span><span·class="p"·data-group-id="6560189287-76">)</span><span·class="p"·data-group-id="6560189287-75">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
 185 ·························</span><span·class="p"·data-group-id="6560189287-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="6560189287-78">(</span><span·class="p"·data-group-id="6560189287-78">)</span><span·class="p"·data-group-id="6560189287-77">}</span><span·class="w">········</span><span·class="p">|</span><span·class="w">
186 ·························</span><span·class="p"·data-group-id="3664311417-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="3664311417-80">(</span><span·class="p"·data-group-id="3664311417-80">)</span><span·class="w">··</span><span·class="p">|</span><span·class="w">186 ·························</span><span·class="p"·data-group-id="6560189287-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="6560189287-80">(</span><span·class="p"·data-group-id="6560189287-80">)</span><span·class="w">··</span><span·class="p">|</span><span·class="w">
187 ·························</span><span·class="p"·data-group-id="3664311417-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="3664311417-82">(</span><span·class="p"·data-group-id="3664311417-82">[·...·truncated·by·diffoscope;·len:·48,·SHA:·07b829aa364bc11981249a42541997ecce06f16121d2bdf673d06b29c73a5eba·...·]7-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="6560189287-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="6560189287-82">(</span><span·class="p"·data-group-id="6560189287-82">[·...·truncated·by·diffoscope;·len:·48,·SHA:·038aca80ae6f430bfdaa099e7112fbc2de3fdfb8e1994589d84d9a8c2f9515d3·...·]7-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.2/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="8192801008-1">(</span><span·class="p"·data-group-id="8192801008-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="8192801008-2">[</span><span·class="nf">agent_option</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·127,·SHA:·d9c0689422fa82e06595aed5d7957037ab44c0c1ae995b5f99b84fc7b7fe40d7·...·]-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="9214659797-1">(</span><span·class="p"·data-group-id="9214659797-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9214659797-2">[</span><span·class="nf">agent_option</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·127,·SHA:·b58a239b22629148f68b1b6ac18e8ea322e7314fd0013b88670cff6150662a4d·...·]-2">]</span><span·class="w">
149 ······</span><span·class="nf">agent_option</span><span·class="p"·data-group-id="8192801008-4">(</span><span·class="p"·data-group-id="8192801008-4">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="8192801008-5">{</span><span·class="ss">restart_type</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·215,·SHA:·eb3a8e845e8e70862ebd7db50bd09bc528b0f4b9e831461f80ab706b84d9da97·...·]-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="9214659797-4">(</span><span·class="p"·data-group-id="9214659797-4">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9214659797-5">{</span><span·class="ss">restart_type</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·215,·SHA:·2834fe5e0b0ec7e5713dde9b5707dbe4473a87fe93da991eb4fa93dff9a5b825·...·]-5">}</span><span·class="w">·····</span><span·class="p">|</span><span·class="w">
150 ·······················</span><span·class="p"·data-group-id="8192801008-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="8192801008-8">(</span><span·class="p"·data-group-id="8192801008-8">)</span><span·[·...·truncated·by·diffoscope;·len:·35,·SHA:·ac43de71efcddfb6042b9be72f51888109d80585b3f6fb604a306365d69c6001·...·]-7">}</span><span·class="w">·······</span><span·class="p">|</span><span·class="w">150 ·······················</span><span·class="p"·data-group-id="9214659797-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="9214659797-8">(</span><span·class="p"·data-group-id="9214659797-8">)</span><span·[·...·truncated·by·diffoscope;·len:·35,·SHA:·b9bed7561f2095e70ba8c452cc898c0b8dc28ebe0624a243bec3d49988db8a66·...·]-7">}</span><span·class="w">·······</span><span·class="p">|</span><span·class="w">
151 ·······················</span><span·class="p"·data-group-id="8192801008-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="8192801008-10">(</span><span·class="p"·data-group-id="8192801008-10">)</span><span[·...·truncated·by·diffoscope;·len:·36,·SHA:·5aa8633ab17f8fe737197dd7bae6f1b983f3912990362109dbd7b7b5cc91bde3·...·]-9">}</span><span·class="w">········</span><span·class="p">|</span><span·class="w">151 ·······················</span><span·class="p"·data-group-id="9214659797-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="9214659797-10">(</span><span·class="p"·data-group-id="9214659797-10">)</span><span[·...·truncated·by·diffoscope;·len:·36,·SHA:·460872983c8c63ee6cd6ecc42573b17e058bf404ea8e0fafc3aaa2e0809ce657·...·]-9">}</span><span·class="w">········</span><span·class="p">|</span><span·class="w">
152 ·······················</span><span·class="p"·data-group-id="8192801008-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="8192801008-12">(</span><span·class="p"·data-group-id="8192801008-12">)</span><span[·...·truncated·by·diffoscope;·len:·36,·SHA:·5aa8633ab17f8fe737197dd7bae6f1b983f3912990362109dbd7b7b5cc91bde3·...·]-11">}</span><span·class="w">·········</span><span·class="p">|</span><span·class="w">152 ·······················</span><span·class="p"·data-group-id="9214659797-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="9214659797-12">(</span><span·class="p"·data-group-id="9214659797-12">)</span><span[·...·truncated·by·diffoscope;·len:·36,·SHA:·460872983c8c63ee6cd6ecc42573b17e058bf404ea8e0fafc3aaa2e0809ce657·...·]-11">}</span><span·class="w">·········</span><span·class="p">|</span><span·class="w">
153 ·······················</span><span·class="p"·data-group-id="8192801008-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="8192801008-14">(</span><span·class="p"·data-group-id="8192801008-14">)</spa[·...·truncated·by·diffoscope;·len:·43,·SHA:·b32074d5f181924092267b90fa9285d980d4704023ff76f4d138c14734e2375f·...·]-13">}</span><span·class="w">··</span><span·class="p">|</span><span·class="w">153 ·······················</span><span·class="p"·data-group-id="9214659797-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="9214659797-14">(</span><span·class="p"·data-group-id="9214659797-14">)</spa[·...·truncated·by·diffoscope;·len:·43,·SHA:·90632ffc474d8b1150b30c40fa47536305a9b5014bc15c9e8784e4422be31d82·...·]-13">}</span><span·class="w">··</span><span·class="p">|</span><span·class="w">
154 ·······················</span><span·class="p"·data-group-id="8192801008-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="8192801008-16">(</span><span·class="p"·data-group-id="8192801008-16">)</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·d2630226c5c5acd24eb68dec55c2f9f6ff6a93e9d0e0a1b5ac1da13848535732·...·]-15">}</span><span·class="w">·······</span><span·class="p">|</span><span·class="w">154 ·······················</span><span·class="p"·data-group-id="9214659797-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="9214659797-16">(</span><span·class="p"·data-group-id="9214659797-16">)</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·abe7b271161186e8b73de81011b5817771ebdd4d7f1e267e6808ab5080706d8c·...·]-15">}</span><span·class="w">·······</span><span·class="p">|</span><span·class="w">
155 ·······················</span><span·class="p"·data-group-id="8192801008-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="8192801008-18">(</span><span·class="p"·data-group-id="8192801008-18">)</span><span·class="p"·data-group-id="8192801008-17">}</span><span·class="w">·········</span><span·class="p">|</span><span·class="w"> 
156 ·······················</span><span·class="p"·data-group-id="8192801008-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="8192801008-20">(</span><span·class="p"·data-group-id="8192801008-20">)</span[·...·truncated·by·diffoscope;·len:·71,·SHA:·842f994260661e8c6566450178cbc9e276837218ac7a44420aa0ab0efc37c5a6·...·]···</span><span·class="p">|</span><span·class="w">155 ·······················</span><span·class="p"·data-group-id="9214659797-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="9214659797-18">(</span><span·class="p"·data-group-id="9214659797-18">)</span><span[·...·truncated·by·diffoscope;·len:·71,·SHA:·e6e63c67860efae386a33a0a11a48f0a4d5c1bb1275ec070e5e790470632f44b·...·]···</span><span·class="p">|</span><span·class="w">
 156 ·······················</span><span·class="p"·data-group-id="9214659797-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="9214659797-20">(</span><span·class="p"·data-group-id="9214659797-20">)</span><span·class="p"·data-group-id="9214659797-19">}</span><span·class="w">···</span><span·class="p">|</span><span·class="w">
157 ·······················</span><span·class="p"·data-group-id="8192801008-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="8192801008-22">(</span><span·class="p"·data-group-id="8192801008-22">)</span><span·c[·...·truncated·by·diffoscope;·len:·34,·SHA:·5bbc8498976eb424a3915a263d052ed3eeaebc6d89ab3d0953015ef5b62caec9·...·]-21">}</span><span·class="w">···········</span><span·class="p">|</span><span·class="w">157 ·······················</span><span·class="p"·data-group-id="9214659797-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="9214659797-22">(</span><span·class="p"·data-group-id="9214659797-22">)</span><span·c[·...·truncated·by·diffoscope;·len:·34,·SHA:·f2557879fc7f027ed6a0c25b5496718a068e42e664a638e8d49bd6232de65cb2·...·]-21">}</span><span·class="w">···········</span><span·class="p">|</span><span·class="w">
158 ·······················</span><span·class="p"·data-group-id="8192801008-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="8192801008-24">(</span><span·class="p"·data-group-id="8192801008-24">)</span>[·...·truncated·by·diffoscope;·len:·41,·SHA:·8d47fbbe612f3f23b5afd769c4d7a256c534d60ae748e1e91cc4d7eed06ae894·...·]-23">}</span><span·class="w">····</span><span·class="p">|</span><span·class="w">158 ·······················</span><span·class="p"·data-group-id="9214659797-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="9214659797-24">(</span><span·class="p"·data-group-id="9214659797-24">)</span>[·...·truncated·by·diffoscope;·len:·41,·SHA:·19f1ef6f95742291e74098e699f2c61c0a422ce8ecb9b372adc6e9ce523b6a2e·...·]-23">}</span><span·class="w">····</span><span·class="p">|</span><span·class="w">
159 ·······················</span><span·class="p"·data-group-id="8192801008-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="8192801008-26">(</span><span·class="p"·data-group-id="8192801008-26">)</span><span[·...·truncated·by·diffoscope;·len:·36,·SHA:·5aa8633ab17f8fe737197dd7bae6f1b983f3912990362109dbd7b7b5cc91bde3·...·]-25">}</span><span·class="w">·········</span><span·class="p">|</span><span·class="w">159 ·······················</span><span·class="p"·data-group-id="9214659797-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="9214659797-26">(</span><span·class="p"·data-group-id="9214659797-26">)</span><span[·...·truncated·by·diffoscope;·len:·36,·SHA:·460872983c8c63ee6cd6ecc42573b17e058bf404ea8e0fafc3aaa2e0809ce657·...·]-25">}</span><span·class="w">·········</span><span·class="p">|</span><span·class="w">
160 ·······················</span><span·class="p"·data-group-id="8192801008-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="8192801008-28">(</span><span·class="p"·data-group-id="8192801008-28">)</span><[·...·truncated·by·diffoscope;·len:·40,·SHA:·c4ee8bf0bcc35c45c57c2756c4d7d66d01a5c213ef6ac8e981ecda3b564aa4f0·...·]-27">}</span><span·class="w">·····</span><span·class="p">|</span><span·class="w">160 ·······················</span><span·class="p"·data-group-id="9214659797-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="9214659797-28">(</span><span·class="p"·data-group-id="9214659797-28">)</span><[·...·truncated·by·diffoscope;·len:·40,·SHA:·b9093eeb47af6c61a2143444d15d912db5050a874c0f5f4b487dc84c418f479d·...·]-27">}</span><span·class="w">·····</span><span·class="p">|</span><span·class="w">
161 ·······················</span><span·class="p"·data-group-id="8192801008-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="8192801008-30">(</span><span·class="p"·data-group-id="8192801008-30">)</span><span·cla[·...·truncated·by·diffoscope;·len:·32,·SHA:·f33440a1014108e5aaeb1dd75ab09a090da939ee9a4f7d4eacee8526990d8c6e·...·]-29">}</span><span·class="w">·············</span><span·class="p">|</span><span·class="w">161 ·······················</span><span·class="p"·data-group-id="9214659797-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="9214659797-30">(</span><span·class="p"·data-group-id="9214659797-30">)</span><span·cla[·...·truncated·by·diffoscope;·len:·32,·SHA:·d661a78c03b6367d6d6b676a0094907c1ac893ad3c7e1c8d3a768a6a019ef304·...·]-29">}</span><span·class="w">·············</span><span·class="p">|</span><span·class="w">
162 ·······················</span><span·class="p"·data-group-id="8192801008-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="8192801008-32">(</span><span·class="p"·data-group-id="8192801008-32">)</span><s[·...·truncated·by·diffoscope;·len:·39,·SHA:·110edf9bef42a57dd521428e6e984ecf8b8bfe52add60c9634d5c3a275e58953·...·]-31">}</span><span·class="w">······</span><span·class="p">|</span><span·class="w">162 ·······················</span><span·class="p"·data-group-id="9214659797-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="9214659797-32">(</span><span·class="p"·data-group-id="9214659797-32">)</span><s[·...·truncated·by·diffoscope;·len:·39,·SHA:·ea2302e1f05db978160beaa958c95033c6eebcd52a8c21b54f4c094ea27eccc9·...·]-31">}</span><span·class="w">······</span><span·class="p">|</span><span·class="w">
163 ·······················</span><span·class="p"·data-group-id="8192801008-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="8192801008-34">(</span><span·class="p"·data-group-id="8192801008-34">)</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·d2630226c5c5acd24eb68dec55c2f9f6ff6a93e9d0e0a1b5ac1da13848535732·...·]-33">}</span><span·class="w">·······</span><span·class="p">|</span><span·class="w">163 ·······················</span><span·class="p"·data-group-id="9214659797-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="9214659797-34">(</span><span·class="p"·data-group-id="9214659797-34">)</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·abe7b271161186e8b73de81011b5817771ebdd4d7f1e267e6808ab5080706d8c·...·]-33">}</span><span·class="w">·······</span><span·class="p">|</span><span·class="w">
164 ·······················</span><span·class="p"·data-group-id="8192801008-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="8192801008-36">(</span><span·class="p"·data-group-id="8192801008-36">)</spa[·...·truncated·by·diffoscope;·len:·43,·SHA:·b32074d5f181924092267b90fa9285d980d4704023ff76f4d138c14734e2375f·...·]-35">}</span><span·class="w">··</span><span·class="p">|</span><span·class="w">164 ·······················</span><span·class="p"·data-group-id="9214659797-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="9214659797-36">(</span><span·class="p"·data-group-id="9214659797-36">)</spa[·...·truncated·by·diffoscope;·len:·43,·SHA:·90632ffc474d8b1150b30c40fa47536305a9b5014bc15c9e8784e4422be31d82·...·]-35">}</span><span·class="w">··</span><span·class="p">|</span><span·class="w">
165 ·······················</span><span·class="p"·data-group-id="8192801008-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="8192801008-38">(</span><span·class="p"·data-group-id="8192801008-38">)</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·7204e9e0f1984c02d33f70336329241c876f72dca7a455b01a9833d508caa68c·...·]-37">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">165 ·······················</span><span·class="p"·data-group-id="9214659797-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="9214659797-38">(</span><span·class="p"·data-group-id="9214659797-38">)</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·82a39b1828e1168bc1124b165403a79f36f186fa7f737d8e1a775f70ee08ebc2·...·]-37">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
166 ·······················</span><span·class="p"·data-group-id="8192801008-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="8192801008-40">(</span><span·class="p"·data-group-id="8192801008-40">)</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·d2630226c5c5acd24eb68dec55c2f9f6ff6a93e9d0e0a1b5ac1da13848535732·...·]-39">}</span><span·class="w">·······</span><span·class="p">|</span><span·class="w">166 ·······················</span><span·class="p"·data-group-id="9214659797-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="9214659797-40">(</span><span·class="p"·data-group-id="9214659797-40">)</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·abe7b271161186e8b73de81011b5817771ebdd4d7f1e267e6808ab5080706d8c·...·]-39">}</span><span·class="w">·······</span><span·class="p">|</span><span·class="w">
167 ·······················</span><span·class="p"·data-group-id="8192801008-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="8192801008-42">(</span><span·class="p"·data-group-id="8192801008-42">)</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·53317b68718babf4946419d8bc5d30c1199d4d404274b47a53b089d117678e83·...·]-41">}</span><span·class="w">···</span><span·class="p">|</span><span·class="w">167 ·······················</span><span·class="p"·data-group-id="9214659797-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="9214659797-42">(</span><span·class="p"·data-group-id="9214659797-42">)</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·4e8d8b0bf0bb3de8251550bd5e38ac280a1552395b22fdaa7d449e5124fb00e8·...·]-41">}</span><span·class="w">···</span><span·class="p">|</span><span·class="w">
168 ·······················</span><span·class="p"·data-group-id="8192801008-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="8192801008-44">(</span><span·class="p"·data-group-id="8192801008-44">)</span><[·...·truncated·by·diffoscope;·len:·40,·SHA:·c4ee8bf0bcc35c45c57c2756c4d7d66d01a5c213ef6ac8e981ecda3b564aa4f0·...·]-43">}</span><span·class="w">·····</span><span·class="p">|</span><span·class="w">168 ·······················</span><span·class="p"·data-group-id="9214659797-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="9214659797-44">(</span><span·class="p"·data-group-id="9214659797-44">)</span><[·...·truncated·by·diffoscope;·len:·40,·SHA:·b9093eeb47af6c61a2143444d15d912db5050a874c0f5f4b487dc84c418f479d·...·]-43">}</span><span·class="w">·····</span><span·class="p">|</span><span·class="w">
169 ·······················</span><span·class="p"·data-group-id="8192801008-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="8192801008-46">(</span><span·class="p"·data-group-id="8192801008-46">)</span><span·class="p"·data-group-id="8192801008-45">}</span><span·class="w"> 
170 ······</span><span·class="nf">manager_options</span><span·class="p"·data-group-id="8192801008-47">(</span><span·class="p"·data-group-id="8192801008-47">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="8192801008-48">[</span><span·class="nf">manager_option</span><span·class="p"·data-group-id="8192801008-49">(</span><span·class="p"·data-group-id="8192801008-49">)</span><span·class="p"·data-group-id="8192801008-48">]</span><span·class="w"> 
171 ······</span><span·class="nf">manager_option</span><span·class="p"·data-group-id="8192801008-50">(</span><span·class="p"·data-group-id="8192801008-50">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·361,·SHA:·da77fba47f4355dc1f97ef5737ddab67d8941be7da8af1d0eda5edf00b9149d0·...·]</span><span·class="w">169 ·······················</span><span·class="p"·data-group-id="9214659797-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="9214659797-46">(</span>[·...·truncated·by·diffoscope;·len:·101,·SHA:·4a333c9759abe34fd79c6a3ebded5fe487a1f1ba04ae74a381cbd655e92d7680·...·]</span><span·class="w">
 170 ······</span><span·class="nf">manager_options</span><span·class="p"·data-group-id="9214659797-47">(</span><span·class="p"·data-group-id="9214659797-47">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9214659797-48">[</span><span·class="nf">manager_option</span><span·class="p"·data-group-id="9214659797-49">(</span><span·class="p"·data-group-id="9214659797-49">)</span><span·class="p"·data-group-id="9214659797-48">]</span><span·class="w">
 171 ······</span><span·class="nf">manager_option</span><span·class="p"·data-group-id="9214659797-50">(</span><span·class="p"·data-group-id="9214659797-50">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9214659797-51">{</span><span·class="ss">restart_type</span><span·class="p">,</span><span·class="w">·············</span><span·class="nf">restart_type</span><span·class="p"·data-group-id="9214659797-52">(</span><span·class="p"·data-group-id="9214659797-52">)</span><span·class="p"·data-group-id="9214659797-51">}</span><span·class="w">····</span><span·class="p">|</span><span·class="w">
172 ·························</span><span·class="p"·data-group-id="8192801008-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="8192801008-54">(</span><span·class="p"·data-group-id="8192801008-54"[·...·truncated·by·diffoscope;·len:·50,·SHA:·047e11faa697445dcacda6cf0094607b9e4601f9add790f9cd3c73058a72fa32·...·]-53">}</span><span·class="w">··</span><span·class="p">|</span><span·class="w">172 ·························</span><span·class="p"·data-group-id="9214659797-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="9214659797-54">(</span><span·class="p"·data-group-id="9214659797-54"[·...·truncated·by·diffoscope;·len:·50,·SHA:·569a778bbf4c533e1f0e324575cc9b8aeedd2aafccc2fcb71890c67dd87adcf2·...·]-53">}</span><span·class="w">··</span><span·class="p">|</span><span·class="w">
173 ·························</span><span·class="p"·data-group-id="8192801008-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="8192801008-56">(</span><span·class="p"·data-group-id="8192801008-56">)</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·53317b68718babf4946419d8bc5d30c1199d4d404274b47a53b089d117678e83·...·]-55">}</span><span·class="w">··········</span><span·class="p">|</span><span·class="w">173 ·························</span><span·class="p"·data-group-id="9214659797-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="9214659797-56">(</span><span·class="p"·data-group-id="9214659797-56">)</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·4e8d8b0bf0bb3de8251550bd5e38ac280a1552395b22fdaa7d449e5124fb00e8·...·]-55">}</span><span·class="w">··········</span><span·class="p">|</span><span·class="w">
174 ·························</span><span·class="p"·data-group-id="8192801008-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="8192801008-58">(</span><span·class="p"·data-group-id="8192801008-58">)</span><span·class="p"·data-group-id="8192801008-57">}</span><span·class="w">······</span><span·class="p">|</span><span·class="w"> 
175 ·························</span><span·class="p"·data-group-id="8192801008-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="8192801008-60">(</span><span·class="p"·data-group-id="8192801008-60"[·...·truncated·by·diffoscope;·len:·79,·SHA:·8140f579d74ad2f0a1127d5700f279c37afe042016b735c0010461dd1a9d686f·...·]··</span><span·class="p">|</span><span·class="w">174 ·························</span><span·class="p"·data-group-id="9214659797-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="9214659797-58">(</span><span·class="p"·data-group-id="9214659797-58">)</[·...·truncated·by·diffoscope;·len:·79,·SHA:·0756749d8e08234da7eb4074e14f883cd4017aa3929927241fac8c57085bcae8·...·]··</span><span·class="p">|</span><span·class="w">
 175 ·························</span><span·class="p"·data-group-id="9214659797-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="9214659797-60">(</span><span·class="p"·data-group-id="9214659797-60">)</span><span·class="p"·data-group-id="9214659797-59">}</span><span·class="w">··</span><span·class="p">|</span><span·class="w">
176 ·························</span><span·class="p"·data-group-id="8192801008-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="8192801008-62">(</span><span·class="p"·data-group-id="8192801008-62">)<[·...·truncated·by·diffoscope;·len:·47,·SHA:·1273dfb8a0f7996070d6d36c9593fa72c3c441c203f78c7a510a6d5ba5eccda9·...·]-61">}</span><span·class="w">·····</span><span·class="p">|</span><span·class="w">176 ·························</span><span·class="p"·data-group-id="9214659797-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="9214659797-62">(</span><span·class="p"·data-group-id="9214659797-62">)<[·...·truncated·by·diffoscope;·len:·47,·SHA:·9b5e68b2b09442c7f4416f2c8f0fef37da54fc1322e5c11df9f16895979c0f93·...·]-61">}</span><span·class="w">·····</span><span·class="p">|</span><span·class="w">
177 ·························</span><span·class="p"·data-group-id="8192801008-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="8192801008-64">(</span><span·class="p"·data-group-id="8192801008-64">)[·...·truncated·by·diffoscope;·len:·48,·SHA:·0df20a69913135896863b40e6dc94413562b1776767fe9996a6bcf2c7f512905·...·]-63">}</span><span·class="w">····</span><span·class="p">|</span><span·class="w">177 ·························</span><span·class="p"·data-group-id="9214659797-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="9214659797-64">(</span><span·class="p"·data-group-id="9214659797-64">)[·...·truncated·by·diffoscope;·len:·48,·SHA:·9d4d510cb138bb552f9d85646354bbe0638091188648c4fa9e65a5583b58122a·...·]-63">}</span><span·class="w">····</span><span·class="p">|</span><span·class="w">
178 ·························</span><span·class="p"·data-group-id="8192801008-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="8192801008-66">(</span><span·class="p"·data-group-id="8192801008-66">)</span><span·class="p"·data-group-id="8192801008-65">}</span><span·class="w">········</span><span·class="p">|</span><span·class="w"> 
179 ·························</span><span·class="p"·data-group-id="8192801008-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="8192801008-68">(</span><span·class="p"·data-group-id="8192801008-68">)</span><span·class="p"·data-group-id="8192801008-67">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w"> 
180 ·························</span><span·class="p"·data-group-id="8192801008-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="8192801008-70">(</span><span·class="p"·data-group-id="8192801008-70">)</sp[·...·truncated·by·diffoscope;·len:·47,·SHA:·b639473a75ccf39a94a2d283d981b3735d466828425d55c1df5928432c219376·...·]">}</span><span·class="w">········</span><span·class="p">|</span><span·class="w">178 ·························</span><span·class="p"·data-group-id="9214659797-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="9214659797-66">(</span><span·class="p"·data-group-id="9214659797-66">)</sp[·...·truncated·by·diffoscope;·len:·47,·SHA:·8019cd3227bf6980c0ba3d29c1c1d799a276c7e8732b00e7eabd73cfb78f7c50·...·]">}</span><span·class="w">········</span><span·class="p">|</span><span·class="w">
 179 ·························</span><span·class="p"·data-group-id="9214659797-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="9214659797-68">(</span><span·class="p"·data-group-id="9214659797-68">)</span><span·class="p"·data-group-id="9214659797-67">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
 180 ·························</span><span·class="p"·data-group-id="9214659797-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="9214659797-70">(</span><span·class="p"·data-group-id="9214659797-70">)</span><span·class="p"·data-group-id="9214659797-69">}</span><span·class="w">········</span><span·class="p">|</span><span·class="w">
181 ·························</span><span·class="p"·data-group-id="8192801008-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="8192801008-72">(</span><span·class="p"·data-group-id="8192801008-72">)</span><span·class="w">··</span><span·class="p">|</span><span·class="w">181 ·························</span><span·class="p"·data-group-id="9214659797-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="9214659797-72">(</span><span·class="p"·data-group-id="9214659797-72">)</span><span·class="w">··</span><span·class="p">|</span><span·class="w">
182 ·························</span><span·class="p"·data-group-id="8192801008-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="8192801008-74">(</span><span·class="p"·data-group-id="8192801008-74">[·...·truncated·by·diffoscope;·len:·49,·SHA:·fd96fd041e1b44a42b4dc547124c5dea0cc8301bd8fa76db12a518a73f0bd0b1·...·]-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="9214659797-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="9214659797-74">(</span><span·class="p"·data-group-id="9214659797-74">[·...·truncated·by·diffoscope;·len:·49,·SHA:·c86583f3e701fab3a692f51227a9020ed8c03a8335c182ae74d5a50c5c8fc961·...·]-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.2/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="1005646067-1">{</span><span·class="ss">myVar</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1005646067-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:·78e30d5f59977246412a5b9c00116b9196b6ed0f1da221bff45c17990b9eab79·...·]-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="2237047265-1">{</span><span·class="ss">myVar</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2237047265-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:·f8de1ad5171f401242a3d66b838f97906e4e2fb2f38573cc9546737303077d41·...·]-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="7034493685-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="7034493685-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="4726691392-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="4726691392-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="7034493685-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="7034493685-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="4726691392-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="4726691392-2">)</span><span·class="p">.</span><span·class="w">
  
174 </span><span·class="nf">myTable_func</span><span·class="p"·data-group-id="7034493685-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="7034493685-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="4726691392-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="4726691392-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="7034493685-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="7034493685-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="4726691392-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="4726691392-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="7034493685-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:·71,·SHA:·71ca8256c823851d9579729011708b35922c41d8f3f96677433d775de1136fc3·...·]-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="4726691392-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:·71,·SHA:·00fb03dba13aa951622d32ef7c1fcc0e220cbad19c3db3253c6f549dab494a1d·...·]-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="7034493685-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="4726691392-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="7034493685-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="4726691392-6">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
180 ····</span><span·class="p"·data-group-id="7034493685-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="7034493685-7">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">180 ····</span><span·class="p"·data-group-id="4726691392-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="4726691392-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="7034493685-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="7034493685-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="4726691392-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="4726691392-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="7034493685-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:·65,·SHA:·c41398bda582a33e75048eb45c2792bca3928f4486684a3e560bfd3932a7ab16·...·]-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="4726691392-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:·65,·SHA:·883bd3039d0062751a8e92ea749cb2967959b7a86a33f1b0243f30f8b6c036e2·...·]-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="7034493685-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="4726691392-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="7034493685-10">)</span><span·class="p">,</span><span·class="w">187 ·······························</span><span·class="n">NameDb</span><span·class="p"·data-group-id="4726691392-10">)</span><span·class="p">,</span><span·class="w">
188 ····</span><span·class="p"·data-group-id="7034493685-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="7034493685-11">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">188 ····</span><span·class="p"·data-group-id="4726691392-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="4726691392-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="7034493685-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="7034493685-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="4726691392-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="4726691392-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="7034493685-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·[·...·truncated·by·diffoscope;·len:·64,·SHA:·da537712d9a591889cf8f19787809042ead87e681c7319de7e1d04554b165fdc·...·]-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="4726691392-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·[·...·truncated·by·diffoscope;·len:·64,·SHA:·a296b2701b87cd34f40f61ca41449c257e86ef8188f8c5f75c333ee2c978d26e·...·]-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="7034493685-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·[·...·truncated·by·diffoscope;·len:·993,·SHA:·67ca5dab905186c85d5b2d650fb9f05f187a024d262539847a2de24d3873978f·...·]-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="4726691392-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·[·...·truncated·by·diffoscope;·len:·993,·SHA:·300fe09e5f6b2b8d2d25683f128e92a01f064fb072b9180f93733675532ba1c1·...·]-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.2/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="7846505767-1">(</span><span·class="ss">snmp</span><span·class="p"·data-group-id="7846505767-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="5142704097-1">(</span><span·class="ss">snmp</span><span·class="p"·data-group-id="5142704097-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="7846505767-2">(</span><span·class="s">&quot;EX1-MIB&quot;</span><span·class="p"·data-group-id="7846505767-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="5142704097-2">(</span><span·class="s">&quot;EX1-MIB&quot;</span><span·class="p"·data-group-id="5142704097-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="7846505767-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="7846505767-3">}</span><span·class="gp·unselectable">238 </span><span·class="p"·data-group-id="5142704097-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="5142704097-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="7846505767-4">(</span><span·class="ss">snmp_master_agent</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7846505767-5">[</span><span·class="s">&quot;EX1-MIB&quot;</span><span·class="p"·data-group-id="7846505767-5">]</sp[·...·truncated·by·diffoscope;·len:·43,·SHA:·3b764d6de890904380bd279f52276d6ad65281c9f06c34eaf189351394ab5c04·...·]7-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="5142704097-4">(</span><span·class="ss">snmp_master_agent</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5142704097-5">[</span><span·class="s">&quot;EX1-MIB&quot;</span><span·class="p"·data-group-id="5142704097-5">]</sp[·...·truncated·by·diffoscope;·len:·43,·SHA:·9b8ac3a330454450893239742f6ce026cf9d22c9cae2c3c6b85d49a915ebf565·...·]7-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="6468713622-1">(</span><span·class="p"·data-group-id="6468713622-2">[</span><span·class="p"·data-group-id="6468713622-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:·7575622c20943e46b0238ee48bf44dae546aa7a581241f1a26bceea3cd2e402c·...·]-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="8487796640-1">(</span><span·class="p"·data-group-id="8487796640-2">[</span><span·class="p"·data-group-id="8487796640-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:·86ea9430e3e10de3f015a64c118df930c6ed9aebf40b2422af708ba554bf8a4a·...·]-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="6468713622-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:·e87f7c63deaafebc204e93d45603040a55751cf3b2ca24682f403abcf519442d·...·]-5">}</span><span·class="w">244 </span><span·class="p"·data-group-id="8487796640-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:·e9d138477cfe7e0c909abe2cf9f55161c0c120e6bb6c53afee2c7e14958438ad·...·]-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="6468713622-6">(</span><span·class="p"·data-group-id="6468713622-7">[</span><span·class="p"·data-group-id="6468713622-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:·51db24256651eb57e3a9a5b3470ef7065ee1c497f71a47f3ac0fb7f377f5eb25·...·]-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="8487796640-6">(</span><span·class="p"·data-group-id="8487796640-7">[</span><span·class="p"·data-group-id="8487796640-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:·58269356e6fe4a786777ae11cb600c86a792cf5b02d56297f6a31687a90ad26a·...·]-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="6468713622-9">[</span><span·class="ss">myName</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="6468713622-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:·f39ef8699aa236ba927bfccf7cd85bbfd61e7c1aa067123b81698410fb8c6dec·...·]-10">]</span><span·class="w">249 </span><span·class="p"·data-group-id="8487796640-9">[</span><span·class="ss">myName</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="8487796640-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:·b784c4496d6bd19166b3b1e44ad1fce61d33a31b0ff9d904f232c5b917a78a8b·...·]-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="6468713622-11">(</span><span·class="p"·data-group-id="6468713622-12">[</span><span·class="p"·data-group-id="6468713622-13">{</span><span·class="p"·data-group-id="6468713622-14">[</span><span·class="ss">myName</span><span·class="p">,</span><span·class="mi">[·...·truncated·by·diffoscope;·len:·300,·SHA:·7258cdfafbee81b583829ab40da812fac33e770a910419ac5b4ac2ff90c63823·...·]-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="8487796640-11">(</span><span·class="p"·data-group-id="8487796640-12">[</span><span·class="p"·data-group-id="8487796640-13">{</span><span·class="p"·data-group-id="8487796640-14">[</span><span·class="ss">myName</span><span·class="p">,</span><span·class="mi">[·...·truncated·by·diffoscope;·len:·300,·SHA:·6e4459c0209d3b6e421b85205cd5c9cd3640fc0ff889b01df700622b3297a9d0·...·]-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="6468713622-15">[</span><span·class="ss">myName</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="6468713622-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="8487796640-15">[</span><span·class="ss">myName</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="8487796640-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="6468713622-16">(</span><span·class="p"·data-group-id="6468713622-17">[</span><span·class="p"·data-group-id="6468713622-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:·65f35544b27e74a0af4bd527fe536225a082c100d08dfc73bfc03c004ee6ae7d·...·]-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="8487796640-16">(</span><span·class="p"·data-group-id="8487796640-17">[</span><span·class="p"·data-group-id="8487796640-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:·7247dba10e9bbaba0bf538f020aac04af12ffb4011c66db74261c0d6ae803505·...·]-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="6468713622-19">[</span><span·class="ss">myName</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="6468713622-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="8487796640-19">[</span><span·class="ss">myName</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="8487796640-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="6468713622-20">(</span><span·class="p"·data-group-id="6468713622-21">[</span><span·class="p"·data-group-id="6468713622-22">{</span><span·class="p"·data-group-id="6468713622-23">[</span><span·class="ss">fName</span><span·class="p">,</span><span·class="mi">0[·...·truncated·by·diffoscope;·len:·1100,·SHA:·df8b1535acadfe8692a69e9e08587f1a37056340de85d18333cfa219987b3ab5·...·]-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="8487796640-20">(</span><span·class="p"·data-group-id="8487796640-21">[</span><span·class="p"·data-group-id="8487796640-22">{</span><span·class="p"·data-group-id="8487796640-23">[</span><span·class="ss">fName</span><span·class="p">,</span><span·class="mi">0[·...·truncated·by·diffoscope;·len:·1100,·SHA:·70591aa859fb986e6b5f2b6ac905bf0fdf45a8d33b68e2582d7fee566abca76d·...·]-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="6468713622-28">[</span><span·class="ss">fName</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="6468713622-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="8487796640-28">[</span><span·class="ss">fName</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="8487796640-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="6468713622-29">[</span><span·class="ss">fAddress</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="6468713622-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="8487796640-29">[</span><span·class="ss">fAddress</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="8487796640-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="6468713622-30">[</span><span·class="ss">fStatus</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="6468713622-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="8487796640-30">[</span><span·class="ss">fStatus</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="8487796640-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="6468713622-31">(</span><span·class="p"·data-group-id="6468713622-32">[</span><span·class="p"·data-group-id="6468713622-33">[</span><span·class="ss">myName</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="6468713622-33">[·...·truncated·by·diffoscope;·len:·103,·SHA:·8431af8083e23a998b22c6f30bbdf4bd89851eec939f85ffea3e6ce319f10c4a·...·]-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="8487796640-31">(</span><span·class="p"·data-group-id="8487796640-32">[</span><span·class="p"·data-group-id="8487796640-33">[</span><span·class="ss">myName</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="8487796640-33">[·...·truncated·by·diffoscope;·len:·103,·SHA:·6e70b26e13dcee8400bc846785ad74c283bd6e6b42942dfbc9c9099e00190111·...·]-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="6468713622-34">[</span><span·class="ss">fName</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="6468713622-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="8487796640-34">[</span><span·class="ss">fName</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="8487796640-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="6468713622-35">(</span><span·class="p"·data-group-id="6468713622-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="8487796640-35">(</span><span·class="p"·data-group-id="8487796640-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="6468713622-36">[</span><span·class="ss">fAddress</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="6468713622-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="8487796640-36">[</span><span·class="ss">fAddress</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="8487796640-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="6468713622-37">(</span><span·class="p"·data-group-id="6468713622-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="8487796640-37">(</span><span·class="p"·data-group-id="8487796640-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="6468713622-38">[</span><span·class="ss">fStatus</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="6468713622-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="8487796640-38">[</span><span·class="ss">fStatus</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="8487796640-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="4933269638-1">(</span><span·class="ss">ex1</span><span·class="p"·data-group-id="4933269638-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="4902142022-1">(</span><span·class="ss">ex1</span><span·class="p"·data-group-id="4902142022-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="4933269638-2">(</span><span·class="ss">&#39;dummy@flop.org&#39;</span><span·class="p"·data-group-id="4933269638-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="4902142022-2">(</span><span·class="ss">&#39;dummy@flop.org&#39;</span><span·class="p"·data-group-id="4902142022-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="4933269638-3">(</span><span·class="p"·data-group-id="4933269638-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><s[·...·truncated·by·diffoscope;·len:·379,·SHA:·1ed0d611f59172a4583f0417cbb331648840651ee3467c23f9dba6732eac8e91·...·]-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="4902142022-3">(</span><span·class="p"·data-group-id="4902142022-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><s[·...·truncated·by·diffoscope;·len:·379,·SHA:·2dc52d094196fa2416a60f0a5bdb90d4e0567244ae86d4af1d583c3ed03d9a58·...·]-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="4933269638-5">(</span><span·class="p"·data-group-id="4933269638-6">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="4933269638-6">]</span><span·class="p"·data-group-id="4933269638-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="4902142022-5">(</span><span·class="p"·data-group-id="4902142022-6">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="4902142022-6">]</span><span·class="p"·data-group-id="4902142022-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="4933269638-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="4933269638-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="4902142022-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="4902142022-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="4933269638-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="4933269638-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="4902142022-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="4902142022-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="4933269638-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="4933269638-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="4902142022-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="4902142022-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="4933269638-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="4933269638-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="4902142022-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="4902142022-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="4933269638-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="4933269638-11">)</span><span·class="p">.</span><span·class="w">···</span><span·class="c1">%·Action;·written,·not·read</span><span·class="w">308 </span><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="4902142022-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="4902142022-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="4933269638-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="4933269638-12">)</span><span·class="p">.</span><span·class="w">·</span><span·class="c1">%·Action;·written,·not·read</span><span·class="w">309 </span><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="4902142022-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="4902142022-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="4933269638-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="4933269638-13">)</span><span·class="p">.</span><span·class="w">·······</span><span·class="c1">%·Action;·written,·not·read</span><span·class="w">310 </span><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="4902142022-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="4902142022-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="4933269638-14">(</span><span·class="p"·data-group-id="4933269638-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="4902142022-14">(</span><span·class="p"·data-group-id="4902142022-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="4933269638-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="4933269638-16">[</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·65,·SHA:·d148f256c494145a1d7ff740c197268fb2b143e2d2689a804ae6cbf77a2aed50·...·]-15">)</span><span·class="p">.</span><span·class="w">312 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="4902142022-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="4902142022-16">[</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·65,·SHA:·a86c744574afdda5311b5b45623353ee41149266e9584568484a983de35b3a19·...·]-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="4933269638-17">(</span><span·class="nb">get</span><span·class="p"·data-group-id="4933269638-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="4902142022-17">(</span><span·class="nb">get</span><span·class="p"·data-group-id="4902142022-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="4933269638-18">{</span><span·class="nf">self</span><span·class="p"·data-group-id="4933269638-19">(</span><span·class="p"·data-group-id="4933269638-19">)</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">get_my_name</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·25,·SHA:·76b1085c345088397eb24dacf01a16ee9b96efa55bc4536f7522e713b3d69268·...·]-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="4902142022-18">{</span><span·class="nf">self</span><span·class="p"·data-group-id="4902142022-19">(</span><span·class="p"·data-group-id="4902142022-19">)</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">get_my_name</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·25,·SHA:·0a9bdc2e0d4c2745499e3b39858af7773f1091d8c53aeb08fedf16c137a371aa·...·]-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="4933269638-20">(</span><span·class="p"·data-group-id="4933269638-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="4902142022-20">(</span><span·class="p"·data-group-id="4902142022-20">)</span><span·class="p">,</span><span·class="w">
321 ····</span><span·class="p"·data-group-id="4933269638-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="4933269638-21">}</span><span·class="p">.</span><span·class="w">321 ····</span><span·class="p"·data-group-id="4902142022-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="4902142022-21">}</span><span·class="p">.</span><span·class="w">
322 </span><span·class="nf">my_name</span><span·class="p"·data-group-id="4933269638-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="4933269638-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="4902142022-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="4902142022-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="4933269638-23">{</span><span·class="nf">self</span><span·class="p"·data-group-id="4933269638-24">(</span><span·class="p"·data-group-id="4933269638-24">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4933269638-25">{</sp[·...·truncated·by·diffoscope;·len:·211,·SHA:·5bb559fbdbe8c49053d8ef58825426932155e26ff4e2278da55b562e98d6e1e7·...·]-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="4902142022-23">{</span><span·class="nf">self</span><span·class="p"·data-group-id="4902142022-24">(</span><span·class="p"·data-group-id="4902142022-24">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4902142022-25">{</sp[·...·truncated·by·diffoscope;·len:·211,·SHA:·0fcf9ada330ff31630cdf70f7c8bc30b98a79ced09c68ded71d2f3c120b8064a·...·]-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="4933269638-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="4933269638-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="4902142022-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="4902142022-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="4933269638-27">(</span><span·class="n">RowIndex</span><span·class="p"·data-group-id="4933269638-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="4902142022-27">(</span><span·class="n">RowIndex</span><span·class="p"·data-group-id="4902142022-27">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
330 ···</span><span·class="p"·data-group-id="4933269638-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="4933269638-28">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">330 ···</span><span·class="p"·data-group-id="4902142022-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="4902142022-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="4933269638-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="4933269638-29">)</span><span·class="p">;</span><span·class="w">331 ········</span><span·class="nf">get_cols</span><span·class="p"·data-group-id="4902142022-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="4902142022-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="4933269638-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="4933269638-30">}</span><span·class="w">333 ········</span><span·class="p"·data-group-id="4902142022-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="4902142022-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="4933269638-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="4933269638-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="4902142022-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="4902142022-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="4933269638-32">(</span><span·class="n">RowIndex</span><span·class="p"·data-group-id="4933269638-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="4902142022-32">(</span><span·class="n">RowIndex</span><span·class="p"·data-group-id="4902142022-32">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
337 ···</span><span·class="p"·data-group-id="4933269638-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="4933269638-33">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">337 ···</span><span·class="p"·data-group-id="4902142022-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="4902142022-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="4933269638-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="4933269638-34">)</span><span·class="p">;</span><span·class="w">338 ········</span><span·class="nf">get_next_cols</span><span·class="p"·data-group-id="4902142022-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="4902142022-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="4933269638-35">(</span><span·class="p"·data-group-id="4933269638-36">[</span><span·class="p"·data-group-id="4933269638-36">]</span><span·class="p"·data-group-id="4933269638-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="4902142022-35">(</span><span·class="p"·data-group-id="4902142022-36">[</span><span·class="p"·data-group-id="4902142022-36">]</span><span·class="p"·data-group-id="4902142022-35">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
341 ·····</span><span·class="p"·data-group-id="4933269638-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="4933269638-37">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">341 ·····</span><span·class="p"·data-group-id="4902142022-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="4902142022-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="4933269638-38">(</span><span·class="n">Cols</span><span·class="p"·data-group-id="4933269638-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="4902142022-38">(</span><span·class="n">Cols</span><span·class="p"·data-group-id="4902142022-38">)</span><span·class="p">,</span><span·class="w">
344 ·········</span><span·class="nf">get_next_cols</span><span·class="p"·data-group-id="4933269638-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="4933269638-39">)</span><span·class="p">;</span><span·class="w">344 ·········</span><span·class="nf">get_next_cols</span><span·class="p"·data-group-id="4902142022-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="4902142022-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="4933269638-40">(</span><span·class="n">Cols</span><span·class="p"·data-group-id="4933269638-40">)</span><span·class="w">346 ········</span><span·class="nf">end_of_table</span><span·class="p"·data-group-id="4902142022-40">(</span><span·class="n">Cols</span><span·class="p"·data-group-id="4902142022-40">)</span><span·class="w">
347 ········</span><span·class="k">end</span><span·class="w">347 ········</span><span·class="k">end</span><span·class="w">
348 ····</span><span·class="k">end</span><span·class="p">;</span><span·class="w">348 ····</span><span·class="k">end</span><span·class="p">;</span><span·class="w">
349 </span><span·class="c1">%%----------------------------------------------------------------</span><span·class="w">349 </span><span·class="c1">%%----------------------------------------------------------------</span><span·class="w">
350 </span><span·class="c1">%%·If·RowStatus·is·set,·then:</span><span·class="w">350 </span><span·class="c1">%%·If·RowStatus·is·set,·then:</span><span·class="w">
351 </span><span·class="c1">%%····*)·If·set·to·destroy,·check·that·row·does·exist</span><span·class="w">351 </span><span·class="c1">%%····*)·If·set·to·destroy,·check·that·row·does·exist</span><span·class="w">
352 </span><span·class="c1">%%····*)·If·set·to·createAndGo,·check·that·row·does·not·exist·AND</span><span·class="w">352 </span><span·class="c1">%%····*)·If·set·to·createAndGo,·check·that·row·does·not·exist·AND</span><span·class="w">
353 </span><span·class="c1">%%·········that·all·columns·are·given·values.</span><span·class="w">353 </span><span·class="c1">%%·········that·all·columns·are·given·values.</span><span·class="w">
354 </span><span·class="c1">%%····*)·Otherwise,·error·(for·simplicity).</span><span·class="w">354 </span><span·class="c1">%%····*)·Otherwise,·error·(for·simplicity).</span><span·class="w">
Max diff block lines reached; 127865/177824 bytes (71.91%) of diff not shown.
6.65 KB
./usr/share/doc/erlang-doc/html/lib/snmp-5.18.2/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="8972986465-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="8972986465-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="5886178698-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="5886178698-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="8972986465-2">(</span><span·class="p"·data-group-id="8972986465-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="5886178698-2">(</span><span·class="p"·data-group-id="5886178698-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="8972986465-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="8972986465-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="5886178698-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="5886178698-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="1932419682-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="1932419682-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="3983041933-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="3983041933-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
144 ··</span><span·class="p"·data-group-id="1932419682-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1932419682-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:·b5e28a10cf23951846f7dd0f3f2b6c558e45fd79bad6fe3503c7f66a01a85eec·...·]-4">)</span><span·class="p">,</span><span·class="w">144 ··</span><span·class="p"·data-group-id="3983041933-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3983041933-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:·2b871f66a24f9cdade767987c05814515763cf6f8e948c70751ef72b252adc2f·...·]-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.2/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="4580218266-1">[</span><span·class="p"·data-group-id="4580218266-2">{</span><span·class="p"·data-group-id="4580218266-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="4580218266-3">]</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">g</span><span·class="p"·data-group-id="4580218266-2">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4580218266-4">{</span><span·class="p"·data-group-id="4580218266-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="4580218266-5">]</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">c</span><span·class="p"·data-group-id="4580218266-4">}</span><span·class="p"·data-group-id="4580218266-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="8957148537-1">(</span><span·class="ss">get_next</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8957148537-2">[</span><span·class="p"·data-group-id="8957148537-2">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8957148537-3">[</span><span·class="mi">0</span><span·class="p"·data-group-id="8957148537-3">]</span><span·class="p"·data-group-id="8957148537-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="8957148537-4">(</span><span·class="ss">get_next</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8957148537-5">[</span><span·class="mi">3</span><span·[·...·truncated·by·diffoscope;·len:·447,·SHA:·97edcfb46a9ef9bfbede0cd7e8387707979643b71eec5818abfba3a8ae2b7855·...·]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:·69031bec49bb9fddf6288355e3bfc14b1bd8b7868f69e033cc0674af84290f11·...·]
 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="1941587947-1">(</span><span·class="ss">get_next</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1941587947-2">[</span><span·class="p"·data-group-id="1941587947-2">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1941587947-3">[</span><span·class="mi">0</span><span·class="p"·data-group-id="1941587947-3">]</span><span·class="p"·data-group-id="1941587947-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="1941587947-4">(</span><span·class="ss">get_next</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1941587947-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="1941587947-5">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1941587947-6">[</span><span·class="mi">1</span><span·class="p"·data-group-id="1941587947-6">]</span><span·class="p"·data-group-id="1941587947-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="7126119833-1">{</span><span·class="ss">ipAdr</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7126119833-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:·6087ef36e17e8dd61b2e609af2f796623de9706d120ecc67b9340ae17f2fe758·...·]-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="2201645849-1">{</span><span·class="ss">ipAdr</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2201645849-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:·95b3d3f9c1c199e4e7543fcea2b45601f8b20d6d60366bddab311e3864e3fb72·...·]-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="7126119833-4">{</span><span·class="p"·data-group-id="7126119833-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="7126119833-5">]</span><span[·...·truncated·by·diffoscope;·len:·460,·SHA:·11a49adc5925649baad8300b689ae0ec23bbf58989588a98729a794e535909ff·...·]-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="2201645849-4">{</span><span·class="p"·data-group-id="2201645849-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="2201645849-5">]</span><span[·...·truncated·by·diffoscope;·len:·460,·SHA:·df07e45abe2c25a98b733cef918f21f55f6332ba745e0bec9154e3eb1ba395cf·...·]-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="9508802232-1">{</span><span·class="ss">ipAdr</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9508802232-2">{</span><span·class="ss">my_module</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">generi[·...·truncated·by·diffoscope;·len:·302,·SHA:·697f0aa1ed4086bc43148945b20e58c58e2a5fb4f4cd3d37f0fc47e85dd899a0·...·]-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="6703715766-1">{</span><span·class="ss">ipAdr</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6703715766-2">{</span><span·class="ss">my_module</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">generi[·...·truncated·by·diffoscope;·len:·302,·SHA:·129b217b32e05c39ab70692237cb5bcc6e957a0f5c1b9f28928a6d7529a86c75·...·]-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="9508802232-4">{</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9508802232-5">{</span><span·class="ss">my_module</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">generic_access</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9508802232-6">[</span><span·class="ss">&#39;NAME&#39;</span><span·class="p"·data-group-id="9508802232-6">]</span><span·class="p"·data-group-id="9508802232-5">}</span><span·class="p"·data-group-id="9508802232-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="1641154308-1">{</span><sp[·...·truncated·by·diffoscope;·len:·577,·SHA:·973ed358399297fe0509e6ed1ff23bc4ff4ef1b77c1d92082fcc1418598412f6·...·]244 </span><span·class="p"·data-group-id="6703715766-4">{</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6703715766-5">{</span><span·class="ss">my_module</span><span·class="p">,</span><span·class[·...·truncated·by·diffoscope;·len:·466,·SHA:·ddc8000f4e233d05b57febacd7a052fc2360abe051f904a6d3549082a5718ef4·...·]
 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="7727592524-1">{</span><span·class="ss">ipAdr</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7727592524-2">{</span><span·class="ss">my_module</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">generic_access</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7727592524-3">[</span><span·class="mi">16#2543</span><span·class="p"·data-group-id="7727592524-3">]</span><span·class="p"·data-group-id="7727592524-2">}</span><span·class="p"·data-group-id="7727592524-1">}</span><span·class="p">.</span><span·class="w">
246 </span><span·class="p"·data-group-id="1641154308-4">{</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1641154308-5">{</span><span·class="ss">my_module</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">generic[·...·truncated·by·diffoscope;·len:·293,·SHA:·263c9ceab9a0be76a717eed343aa9d5c54ebcd01848327b4ae2799860b19cd7d·...·]-4">}</span><span·class="p">.</span></code></pre><h2·id="default-instrumentation"·class="section-heading">246 </span><span·class="p"·data-group-id="7727592524-4">{</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7727592524-5">{</span><span·class="ss">my_module</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">generic[·...·truncated·by·diffoscope;·len:·293,·SHA:·906bea1ffea6b1796a07f04ab85e0bf2157f25412a5219c77a5aa9d57db27588·...·]-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.2/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="9351686386-1">{</span><span·class="ss">transports</span><span·class="p">,</span><span·class="w">·······</span><span·class="p"·data-group-id="9351686386-2">[</span><span·class="p"·data-group-id="9351686386-3">{</span><span·class="ss">transportDomainUdpIpv4<[·...·truncated·by·diffoscope;·len:·561,·SHA:·deba3fa2a52625b7c79cd3a6e9d327db4da78058690c52c3ce9e7e42d70ac5a0·...·]-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="6546039408-1">{</span><span·class="ss">transports</span><span·class="p">,</span><span·class="w">·······</span><span·class="p"·data-group-id="6546039408-2">[</span><span·class="p"·data-group-id="6546039408-3">{</span><span·class="ss">transportDomainUdpIpv4<[·...·truncated·by·diffoscope;·len:·561,·SHA:·62c9b7512a95f4523f8ff88965ba5cbefadc86ca135c17fdceb6279078e58ed6·...·]-3">}</span><span·class="p">,</span><span·class="w">
153 ····················</span><span·class="p"·data-group-id="9351686386-6">{</span><span·class="ss">transportDomainUdpIpv6</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9351686386-7">{</span><span·class="p"·data-group-id="9351686386-8">{</span><span·class="mi">0</span><span·cla[·...·truncated·by·diffoscope;·len:·663,·SHA:·242a7bd958267609120c4878628581a6c78be911925fa2dbd77aca273e741357·...·]-1">}</span><span·class="p">.</span><span·class="w">153 ····················</span><span·class="p"·data-group-id="6546039408-6">{</span><span·class="ss">transportDomainUdpIpv6</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6546039408-7">{</span><span·class="p"·data-group-id="6546039408-8">{</span><span·class="mi">0</span><span·cla[·...·truncated·by·diffoscope;·len:·663,·SHA:·412811424a3883967a539b80fd7907f78aaa8084dcdee3ca7a3b91bfa72e0c2b·...·]-1">}</span><span·class="p">.</span><span·class="w">
154 </span><span·class="p"·data-group-id="9351686386-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="9351686386-9">}</span><span·class="p">.</span><span·class="w">154 </span><span·class="p"·data-group-id="6546039408-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="6546039408-9">}</span><span·class="p">.</span><span·class="w">
155 </span><span·class="p"·data-group-id="9351686386-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="9351686386-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="6546039408-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="6546039408-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="2479902007-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="2479902007-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="6915857573-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="6915857573-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="2479902007-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:·e39147831ed6caadbfbbbaef2bcb8756b2018468042f4f5db9670d2c2520e7a8·...·]-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="6915857573-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:·1e897846c7bf4963e298556a3292b4f5336bc4229f418f2cf4c487b03cbf4d5d·...·]-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="2479902007-3">[</span><span·class="p"·data-group-id="2479902007-4">{</span><span·class="ss">transportDomainUdpIpv4</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2479902007-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="2479902007-5">}</span><span·class="p"·data-group-id="2479902007-4">}</span><span·class="p">,</span><span·class="w"> 
161 ·················</span><span·class="p"·data-group-id="2479902007-6">{</span><span·class="ss">transportDomainUdpIpv6</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2479902007-7">{</span><span·class="n">Addr6</span><spa[·...·truncated·by·diffoscope;·len:·223,·SHA:·0a3939b94af1e89349d57339b9dfc563f542e8919229ae2bb936e8e07271c83b·...·]</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="6915857573-3">[</span><span·class="p"·data-group-id="6915857573-4">{</span><span·class="ss">transportDomainUdp[·...·truncated·by·diffoscope;·len:·314,·SHA:·aa50588709d8f64bdc45618d2a71eb0d10f9348a13676ab0a39e4070bf8e19a3·...·]</span><span·class="p">,</span><span·class="w">
 161 ·················</span><span·class="p"·data-group-id="6915857573-6">{</span><span·class="ss">transportDomainUdpIpv6</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6915857573-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="6915857573-7">}</span><span·class="p"·data-group-id="6915857573-6">}</span><span·class="p"·data-group-id="6915857573-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="2479902007-8">[</span><span·class="nc">snmpm_conf</span><span·class="p">:</span><span·class="nf">manager_entry</span><span·class="p"·data-group-id="2479902007-9">(</span><span·class="ss">transports</span><span·class="p">,</span><span·class="w">·······</spa[·...·truncated·by·diffoscope;·len:·76,·SHA:·6f0e601aa94ed391ebbb05b9c9889121b629b8b17fbca6c6075b0429d6928ec5·...·]-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="6915857573-8">[</span><span·class="nc">snmpm_conf</span><span·class="p">:</span><span·class="nf">manager_entry</span><span·class="p"·data-group-id="6915857573-9">(</span><span·class="ss">transports</span><span·class="p">,</span><span·class="w">·······</spa[·...·truncated·by·diffoscope;·len:·76,·SHA:·a665f08289a489c835cd0ba67261b873bf2cc257f429755d8542340cbd8fb360·...·]-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="2479902007-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="2479902007-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="6915857573-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="6915857573-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="2479902007-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="2479902007-11">)</span><span·class="p"·data-group-id="2479902007-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="6915857573-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="6915857573-11">)</span><span·class="p"·data-group-id="6915857573-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="2479902007-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="2479902007-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="6915857573-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="6915857573-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="6913812896-1">(</span><span·class="p"·data-group-id="6913812896-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="1390243550-1">(</span><span·class="p"·data-group-id="1390243550-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="6913812896-2">(</span><span·class="p"·data-group-id="6913812896-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="1390243550-2">(</span><span·class="p"·data-group-id="1390243550-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="6913812896-3">[</span><span·class="p"·data-group-id="6913812896-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="6913812896-4">}</span><span·class="p">,</span[·...·truncated·by·diffoscope;·len:·548,·SHA:·e0e3637f3c73ceac6acbd16eec53ab6189d2883d64a047fd2edcdb5dfe4545dc·...·]-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="1390243550-3">[</span><span·class="p"·data-group-id="1390243550-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="1390243550-4">}</span><span·class="p">,</span[·...·truncated·by·diffoscope;·len:·548,·SHA:·4dac823891addb53446a63986208ee47f1335c033b7bf77de09f1bc11e015625·...·]-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="6913812896-7">[</span><span·class="nc">snmpm_conf</span><span·class="p">:</span><span·class="nf">users_entry</span><span·class="p"·data-group-id="6913812896-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="1390243550-7">[</span><span·class="nc">snmpm_conf</span><span·class="p">:</span><span·class="nf">users_entry</span><span·class="p"·data-group-id="1390243550-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="6913812896-8">)</span><span·class="p"·data-group-id="6913812896-7">]</span><span·class="p">,</span><span·class="w">182 ······································</span><span·class="n">DefaultAgentConfig</span><span·class="p"·data-group-id="1390243550-8">)</span><span·class="p"·data-group-id="1390243550-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="6913812896-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="6913812896-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="1390243550-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="1390243550-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.6/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.6/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="3977561372-1">[</span><span·class="nc">snmpm_conf</span><span·class="p">:</span><span·class="nf">agents_entry</span><span·class="p"·data-group-id="3977561372-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="7164284851-1">[</span><span·class="nc">snmpm_conf</span><span·class="p">:</span><span·class="nf">agents_entry</span><span·class="p"·data-group-id="7164284851-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="3977561372-3">{</span><span·class="p"·data-group-id="3977561372-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:·503c66497554b9757a2ee0057e6b8934c7f03f1dfe96b55cfa8ea3711261f4c5·...·]-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="7164284851-3">{</span><span·class="p"·data-group-id="7164284851-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:·2a38480d2446d74ac5e35fcd8bc2828b1b098a60e2c4418513b0727db4371cd5·...·]-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="3977561372-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="7164284851-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="3977561372-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="7164284851-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="3977561372-6">{</span><span·class="p"·data-group-id="3977561372-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:·bc7fad8a2b00ede288e8eae9eaeb2847f2d4268bee41159b551ddae72c767cef·...·]-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="7164284851-6">{</span><span·class="p"·data-group-id="7164284851-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:·c50b4715376765a78a1abb3c18b26238066e6c1b0ff78b1c31debb2e6a55b692·...·]-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="3977561372-5">)</span><span·class="p"·data-group-id="3977561372-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="7164284851-5">)</span><span·class="p"·data-group-id="7164284851-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="3977561372-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="3977561372-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="7164284851-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="7164284851-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="2581918987-1">[</span><span·class="nc">snmpm_conf</span><span·class="p">:</span><span·class="nf">usm_entry</span><span·class="p"·data-group-id="2581918987-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="7899159655-1">[</span><span·class="nc">snmpm_conf</span><span·class="p">:</span><span·class="nf">usm_entry</span><span·class="p"·data-group-id="7899159655-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="2581918987-3">[</span><span·class="p"·data-group-id="2581918987-3">]</span><span·class="p">,</span><span·class="w">239 »       ·»       »       »       ···</span><span·class="p"·data-group-id="7899159655-3">[</span><span·class="p"·data-group-id="7899159655-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="2581918987-4">[</span><span·class="p"·data-group-id="2581918987-4">]</span><span·class="p"·data-group-id="2581918987-2">)</span><span·class="p"·data-group-id="2581918987-1">]</span><span·class="p">,</span><span·class="w">241 »       ·»       »       »       ···</span><span·class="p"·data-group-id="7899159655-4">[</span><span·class="p"·data-group-id="7899159655-4">]</span><span·class="p"·data-group-id="7899159655-2">)</span><span·class="p"·data-group-id="7899159655-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="2581918987-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="2581918987-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="7899159655-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="7899159655-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.2/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="0855494377-1">(</span><span·class="s">&quot;RFC1213-MIB&quot;</span><span·class="p"·data-group-id="0855494377-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="0329173545-1">(</span><span·class="s">&quot;RFC1213-MIB&quot;</span><span·class="p"·data-group-id="0329173545-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="1206446717-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="3186084243-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="1206446717-2">[</span><span·class="p"·data-group-id="1206446717-3">{</span><span·class="ss">i</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1206446717-4">[</span><span·class="s">&quot;friend_mibs/&quot;</span><span·cl[·...·truncated·by·diffoscope;·len:·292,·SHA:·f0e9c901ef49276ed38e2ffd3f97d63c87f6115fbe03c15db9caf79c783d9ea8·...·]-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="3186084243-2">[</span><span·class="p"·data-group-id="3186084243-3">{</span><span·class="ss">i</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3186084243-4">[</span><span·class="s">&quot;friend_mibs/&quot;</span><span·cl[·...·truncated·by·diffoscope;·len:·292,·SHA:·1b8e406baba034312d6df3f61c159c511fec6ebafb9347aa368ff8503af9a192·...·]-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="5210178132-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="9908900347-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="5210178132-2">[</span><span·class="p"·data-group-id="5210178132-3">{</span><span·class="ss">il</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5210178132-4">[</span><span·class="s">&quot;snmp/priv/mibs/&quot;</span><spa[·...·truncated·by·diffoscope;·len:·295,·SHA:·218b249648823e133dda811a6ea0a57025bc2ac55c1218353a5c8c8f252e024b·...·]-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="9908900347-2">[</span><span·class="p"·data-group-id="9908900347-3">{</span><span·class="ss">il</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9908900347-4">[</span><span·class="s">&quot;snmp/priv/mibs/&quot;</span><spa[·...·truncated·by·diffoscope;·len:·295,·SHA:·bff15e7c8f6984f4c2a383a9b50f65f2f499fd0547237d3fa3cde05126c03745·...·]-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.2/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="0117823679-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="0117823679-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="2212668400-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="2212668400-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="0117823679-2">(</span><span·class="s">&quot;snmp/include/snmp_types.hrl&quot;</span><span·class="p"·data-group-id="0117823679-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="2212668400-2">(</span><span·class="s">&quot;snmp/include/snmp_types.hrl&quot;</span><span·class="p"·data-group-id="2212668400-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.2/doc/html/snmpa.html
    
Offset 3215, 16 lines modifiedOffset 3215, 16 lines modified
3215 ······················AgentName·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:atom/0">atom</a>(),3215 ······················AgentName·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:atom/0">atom</a>(),
3216 ······················Mib·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:string/0">string</a>(),3216 ······················Mib·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:string/0">string</a>(),
3217 ······················Reason·::·already_loaded·|·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:term/0">term</a>().</pre>3217 ······················Reason·::·already_loaded·|·<a·href="../../../../erts-15.2.6/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="0338367125-1">(</span><span·class="ss">my_app</span><span·class="p"·data-group-id="0338367125-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="8750352145-1">(</span><span·class="ss">my_app</span><span·class="p"·data-group-id="8750352145-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="0338367125-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:·35,·SHA:·11c5a5e02a6e05f58c29fa2334200b729d21f98a81710e690f4e48bbbe4a24f0·...·]5-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="8750352145-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:·35,·SHA:·d89a8c6eb4fb853ecb466822dac568b912dc471a8aba21a1276085d5f84a97ff·...·]5-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.6/doc/html/erlang.html#t:term/0">term</a>().</pre>3326 ·······················InternalReason·::·already_loaded·|·<a·href="../../../../erts-15.2.6/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="0557268250-1">(</span><span·class="ss">my_app</span><span·class="p"·data-group-id="0557268250-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="9974970085-1">(</span><span·class="ss">my_app</span><span·class="p"·data-group-id="9974970085-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="0557268250-2">(</span><span·class="ss">snmp_master_agent</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0557268250-3">[</span><span·class="n">Dir</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·[·...·truncated·by·diffoscope;·len:·142,·SHA:·0312a38db91becf3e81547fcd5a206739f594b06ec7db7033db04b5a2c4939b9·...·]-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="9974970085-2">(</span><span·class="ss">snmp_master_agent</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9974970085-3">[</span><span·class="n">Dir</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·[·...·truncated·by·diffoscope;·len:·142,·SHA:·06af2d4d6504dce0e3a1a5dfc7ee0bbea513d30a474e149787e75e62e1c866fd·...·]-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.6/doc/html/erlang.html#t:module/0">module</a>(),4297 ··········································Mod·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:module/0">module</a>(),
4298 ··········································Data·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:term/0">term</a>(),4298 ··········································Data·::·<a·href="../../../../erts-15.2.6/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.6/doc/html/erlang.html#t:term/0">term</a>().</pre>4300 ··········································Reason·::·<a·href="../../../../erts-15.2.6/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="5566064221-1">(</span><span·class="n">Agent</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Id</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Mod</span><span·class="p">,</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·443,·SHA:·6922fb38ebe6977d10aea8b0dede2c8320aec42a81b4717f90674ea643e93295·...·]-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="2906275142-1">(</span><span·class="n">Agent</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Id</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Mod</span><span·class="p">,</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·443,·SHA:·b99c5ab4d1d861be70fe979e14f770836f2f9ee9816bdea87e2e07feb08d7aa7·...·]-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="5566064221-3">(</span><span·class="n">Id</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Mod</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p">,</span><span·class="w">·</span><span·class=[·...·truncated·by·diffoscope;·len:·443,·SHA:·d110aa26ea36538582bd14817a556f7891893c5764f97eabf74294acab625180·...·]-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="2906275142-3">(</span><span·class="n">Id</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Mod</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p">,</span><span·class="w">·</span><span·class=[·...·truncated·by·diffoscope;·len:·443,·SHA:·34f59f77b56714f44e7a8b60ec410f870af7476a0796795771b2f57aa040d499·...·]-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.6/doc/html/erlang.html#t:pid/0">pid</a>(),4367 ·······························SubAgent·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:pid/0">pid</a>(),
4368 ·······························Reason·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:term/0">term</a>().</pre>4368 ·······························Reason·::·<a·href="../../../../erts-15.2.6/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="2705977704-1">(</span><span·class="n">MAPid</span><span·class="p">,</span><span·class="p"·data-group-id="2705977704-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·[·...·truncated·by·diffoscope;·len:·187,·SHA:·9e3b7bb1ae1da94b803192e2009f2fef313bed82b49048ae2f93cb1f510ed663·...·]-1">)</span><span·class="p">,</span><span·class="w">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="8255056260-1">(</span><span·class="n">MAPid</span><span·class="p">,</span><span·class="p"·data-group-id="8255056260-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·[·...·truncated·by·diffoscope;·len:·187,·SHA:·32fabe2d482992994a90ac8db87e27e9b9d30eb247b6903ca70bc64826338049·...·]-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="2705977704-3">(</span><span·class="n">SA1</span><span·class="p">,</span><span·class="p"·data-group-id="2705977704-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·cl[·...·truncated·by·diffoscope;·len:·160,·SHA:·25395b4f32145779e0d46473f2220682ff332cc6d891efa690270b2ce646e887·...·]-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>·since4373 </span><span·class="nc">snmp_agent</span><span·class="p">:</span><span·class="nf">register_subagent</span><span·class="p"·data-group-id="8255056260-3">(</span><span·class="n">SA1</span><span·class="p">,</span><span·class="p"·data-group-id="8255056260-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·cl[·...·truncated·by·diffoscope;·len:·160,·SHA:·3b3ce32dfd1be9b249f4e771eac92e02583f07cdbb6687c163b809648a479a02·...·]-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="2745414615-1">[</span><span·class="nf">address</span><span·class="p"·data-group-id="2745414615-2">(</span><span·class="p"·data-group-id="2745414615-2">)</span><span·class="p"·data-group-id="2745414615-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="5733539862-1">[</span><span·class="nf">address</span><span·class="p"·data-group-id="5733539862-2">(</span><span·class="p"·data-group-id="5733539862-2">)</span><span·class="p"·data-group-id="5733539862-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="2745414615-3">(</span><span·class="p"·data-group-id="2745414615-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="5733539862-3">(</span><span·class="p"·data-group-id="5733539862-3">)</span><span·class="w">
4802 ········</span><span·class="nf">address</span><span·class="p"·data-group-id="2745414615-4">(</span><span·class="p"·data-group-id="2745414615-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="2745414615-5">(</span><span·class="p"·data-group-id="2745414615-5">)</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="nf">v3_address</span><span·class="p"·data-group-id="2745414615-6">(</span><span·class="p"·data-group-id="2745414615-6">)</span><span·class="w"> 
4803 ········</span><span·class="nf">v1_address</span><span·class="p"·data-group-id="2745414615-7">(</span><span·class="p"·data-group-id="2745414615-7">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="2745414615-8">{</span><span·class="n">TDomain</span><span·class="p">,</span><span·class="w">·</span><span·class="n">TAddress</span><span·class="p"·data-group-id="2745414615-8">}</span><span·class="w"> 
4804 ········</span><span·class="nf">v3_address</span><span·class="p"·data-group-id="2745414615-9">(</span><span·class="p"·data-group-id="2745414615-9">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="2745414615-10">{</span><span·c[·...·truncated·by·diffoscope;·len:·337,·SHA:·9914e3ff8e5437b892a69d4cbc97a9e406502fcaba7b22d8f8e20f6447189048·...·]</span><span·class="w">4802 ········</span><span·class="nf">address</span><span·class="p"·data-group-id="5733539862-4">(</span><span·class="p"·data-group-id="5733539862-4">)</span><span·class="w">··</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">v1_address</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·282,·SHA:·a4931f598f8bcff0606834f6049cb58bd1066e4c2388c9196337dc7c6324e530·...·]</span><span·class="w">
 4803 ········</span><span·class="nf">v1_address</span><span·class="p"·data-group-id="5733539862-7">(</span><span·class="p"·data-group-id="5733539862-7">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="5733539862-8">{</span><span·class="n">TDomain</span><span·class="p">,</span><span·class="w">·</span><span·class="n">TAddress</span><span·class="p"·data-group-id="5733539862-8">}</span><span·class="w">
 4804 ········</span><span·class="nf">v3_address</span><span·class="p"·data-group-id="5733539862-9">(</span><span·class="p"·data-group-id="5733539862-9">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="5733539862-10">{</span><span·class="p"·data-group-id="5733539862-11">{</span><span·class="n">TDomain</span><span·class="p">,</span><span·class="w">·</span><span·class="n">TAddress</span><span·class="p"·data-group-id="5733539862-11">}</span><span·class="p">,</span><span·class="w">·</span><span·class="n">V3MsgData</span><span·class="p"·data-group-id="5733539862-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="2745414615-12">(</span><span·class="p"·data-group-id="2745414615-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="5733539862-12">(</span><span·class="p"·data-group-id="5733539862-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="2745414615-13">(</span><span·class="p"·data-group-id="2745414615-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="5733539862-13">(</span><span·class="p"·data-group-id="5733539862-13">)</span><span·class="w">
4807 ········</span><span·class="nf">tdomain</span><span·class="p"·data-group-id="2745414615-14">(</span><span·class="p"·data-group-id="2745414615-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="5733539862-14">(</span><span·class="p"·data-group-id="5733539862-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="2745414615-15">(</span><span·class="p"·data-group-id="2745414615-15">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="2745414615-16">[</span><span·class="n">A1</span><span·class="p">,</span><spa[·...·truncated·by·diffoscope;·len:·378,·SHA:·8e3d69b5714822b3f65a0332d2149ec288c626d5ade54825f1ffb3fc3e65bf65·...·]-16">]</span><span·class="w">4809 ········</span><span·class="nf">taddress</span><span·class="p"·data-group-id="5733539862-15">(</span><span·class="p"·data-group-id="5733539862-15">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="5733539862-16">[</span><span·class="n">A1</span><span·class="p">,</span><spa[·...·truncated·by·diffoscope;·len:·378,·SHA:·280471e7165da6336727ed304dfe343c62541a8e0eb4fb92aa81b74465d25d64·...·]-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="2745414615-17">(</span><span·class="p"·data-group-id="2745414615-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="5733539862-17">(</span><span·class="p"·data-group-id="5733539862-17">)</span><span·class="w">
4813 ········</span><span·class="nf">v3_msg_data</span><span·class="p"·data-group-id="2745414615-18">(</span><span·class="p"·data-group-id="2745414615-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="2745414615-19">(</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·682e24070910b96a3527cf60e09bd6d5c6f861fd9d5b1ff0f2bc14a7e4e98aef·...·]-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="5733539862-18">(</span><span·class="p"·data-group-id="5733539862-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="5733539862-19">(</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·cc6b1ea7e72e1970926439bdcb504340077aa3074564845951944370d84e20a9·...·]-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.2/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="1137687828-1">[</span><span·class="ss">options</span><span·class="p"·data-group-id="1137687828-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="7370313048-1">[</span><span·class="ss">options</span><span·class="p"·data-group-id="7370313048-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.2/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.6/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.6/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="3622824123-1">(</span><span·class="ss">my_app</span><span·class="p"·data-group-id="3622824123-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="2621157470-1">(</span><span·class="ss">my_app</span><span·class="p"·data-group-id="2621157470-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="3622824123-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="3622824123-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="2621157470-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="2621157470-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.6/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.6/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="4376686182-1">(</span><span·class="ss">my_app</span><span·class="p"·data-group-id="4376686182-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="0294830038-1">(</span><span·class="ss">my_app</span><span·class="p"·data-group-id="0294830038-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="4376686182-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="4376686182-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="0294830038-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="0294830038-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>
619 B
./usr/share/doc/erlang-doc/html/lib/ssh-5.2.10/doc/html/.build
    
Offset 18, 15 lines modifiedOffset 18, 15 lines modified
18 dist/lato-latin-300-normal-YUMVEFOL.woff218 dist/lato-latin-300-normal-YUMVEFOL.woff2
19 dist/lato-latin-400-normal-W7754I4D.woff219 dist/lato-latin-400-normal-W7754I4D.woff2
20 dist/lato-latin-700-normal-2XVSBPG4.woff220 dist/lato-latin-700-normal-2XVSBPG4.woff2
21 dist/lato-latin-ext-300-normal-VPGGJKJL.woff221 dist/lato-latin-ext-300-normal-VPGGJKJL.woff2
22 dist/lato-latin-ext-400-normal-N27NCBWW.woff222 dist/lato-latin-ext-400-normal-N27NCBWW.woff2
23 dist/lato-latin-ext-700-normal-Q2L5DVMW.woff223 dist/lato-latin-ext-700-normal-Q2L5DVMW.woff2
24 dist/remixicon-NKANDIL5.woff224 dist/remixicon-NKANDIL5.woff2
25 dist/search_data-CD892B8D.js25 dist/search_data-71DCECE2.js
26 dist/sidebar_items-DE29533C.js26 dist/sidebar_items-DE29533C.js
27 hardening.html27 hardening.html
28 index.html28 index.html
29 introduction.html29 introduction.html
30 notes.html30 notes.html
31 search.html31 search.html
32 ssh.html32 ssh.html
61.3 KB
./usr/share/doc/erlang-doc/html/lib/ssh-5.2.10/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="0480841897-1">(</span><span·class="mi">22</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0480841897-2">[</span><span·class="p"·data-group-id="0480841897-3">{</span><span·class="ss">user</span><span·class="p">,</span><s[·...·truncated·by·diffoscope;·len:·625,·SHA:·ff24858385099a6a6d46395a6e981b40d1a898ab4801354d5de646e29ccebdcf·...·]-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="9149565316-1">(</span><span·class="mi">22</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9149565316-2">[</span><span·class="p"·data-group-id="9149565316-3">{</span><span·class="ss">user</span><span·class="p">,</span><s[·...·truncated·by·diffoscope;·len:·625,·SHA:·635c34a307bcec4e07e7f94f4d5cc239cd742a0fdf11496450b4737516d08d27·...·]-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="4610202517-2">[</span><span·class="p"·data-group-id="4610202517-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="4610202517-3">}</span><span·class="p">,</span><span·class="w">146 ·</span><span·class="p"·data-group-id="7366726792-2">[</span><span·class="p"·data-group-id="7366726792-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="7366726792-3">}</span><span·class="p">,</span><span·class="w">
147 ··</span><span·class="p"·data-group-id="4610202517-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="4610202517-4">}</span><span·class="p">,</span><span·class="w">147 ··</span><span·class="p"·data-group-id="7366726792-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="7366726792-4">}</span><span·class="p">,</span><span·class="w">
148 ··</span><span·class="p"·data-group-id="4610202517-5">{</span><span·class="ss">modules</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4610202517-6">[</span><span·class="ss">ssh</span><span·class="p">,</span><span·class="w">148 ··</span><span·class="p"·data-group-id="7366726792-5">{</span><span·class="ss">modules</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7366726792-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="4610202517-6">]</span><span·class="p"·data-group-id="4610202517-5">}</span><span·class="p">,</span><span·class="w">150 ·········</span><span·class="ss">ssh_xfer</span><span·class="p"·data-group-id="7366726792-6">]</span><span·class="p"·data-group-id="7366726792-5">}</span><span·class="p">,</span><span·class="w">
151 ··</span><span·class="p"·data-group-id="4610202517-7">{</span><span·class="ss">registered</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4610202517-8">[</span><span·class="p"·data-group-id="4610202517-8">]</span><span·class="p"·data-group-id="4610202517-7">}</span><span·class="p">,</span><span·class="w">151 ··</span><span·class="p"·data-group-id="7366726792-7">{</span><span·class="ss">registered</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7366726792-8">[</span><span·class="p"·data-group-id="7366726792-8">]</span><span·class="p"·data-group-id="7366726792-7">}</span><span·class="p">,</span><span·class="w">
152 ··</span><span·class="p"·data-group-id="4610202517-9">{</span><span·class="ss">applications</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4610202517-10">[</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">s[·...·truncated·by·diffoscope;·len:·267,·SHA:·2d92be6381913f498bc6e720bd5094076fac3933c605b3ec53df939856e96783·...·]-9">}</span><span·class="p">,</span><span·class="w">152 ··</span><span·class="p"·data-group-id="7366726792-9">{</span><span·class="ss">applications</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7366726792-10">[</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">s[·...·truncated·by·diffoscope;·len:·267,·SHA:·da1da18489e7226b670782b03ec26eb3bb1362c5da62b6f877f5590b0f4521ea·...·]-9">}</span><span·class="p">,</span><span·class="w">
153 ··</span><span·class="p"·data-group-id="4610202517-11">{</span><span·class="ss">env</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4610202517-12">[</span><span·class="p"·data-group-id="4610202517-13">{</span><span·class="ss">user</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·129,·SHA:·e28048a31183c1dcfee063d473b3d7b6f9f484b6f8cf2f2eeca9699338e1a2a1·...·]-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="7366726792-11">{</span><span·class="ss">env</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7366726792-12">[</span><span·class="p"·data-group-id="7366726792-13">{</span><span·class="ss">user</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·129,·SHA:·4ee84cedd7bbd64340745a1c280998745332fc826ed2b1ffb3d5fcad297fe9a1·...·]-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="4610202517-14">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4610202517-15">{</span><span·class="ss">ssh_app</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·178,·SHA:·9ed048fe77a1fd05e07a2104196a33c0ae19009570f68b90cf72d2d50a929b3b·...·]-14">}</span><span·class="p">,</span><span·class="w">154 ··</span><span·class="p"·data-group-id="7366726792-14">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7366726792-15">{</span><span·class="ss">ssh_app</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·178,·SHA:·2e85dfa1794e9b1a717c0dc095fdcda18f697a51f1ca51a64927e2f52a2d2616·...·]-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="0965354905-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="8258577483-1">[</span><span·class="w">
156 </span><span·class="p"·data-group-id="0965354905-2">{</span><span·class="ss">ssh</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0965354905-3">[</span><span·class="p"·data-group-id="0965354905-4">{</span><span·class="ss">user</span><span·class="p">,</span><[·...·truncated·by·diffoscope;·len:·208,·SHA:·eb8fbbc705636d094beb07ecaf5ba9247833eee69b3a5403d781d901bbbfb055·...·]-2">}</span><span·class="w">156 </span><span·class="p"·data-group-id="8258577483-2">{</span><span·class="ss">ssh</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8258577483-3">[</span><span·class="p"·data-group-id="8258577483-4">{</span><span·class="ss">user</span><span·class="p">,</span><[·...·truncated·by·diffoscope;·len:·208,·SHA:·8dbde128df5ec19f99964f58b5cf08d7381f763895d117c419dce98fb688a529·...·]-2">}</span><span·class="w">
157 </span><span·class="p"·data-group-id="0965354905-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="8258577483-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="7860574895-1">[</span><span·class="w">158 this·way:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="0829572282-1">[</span><span·class="w">
159 </span><span·class="p"·data-group-id="7860574895-2">{</span><span·class="ss">ssh</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7860574895-3">[</span><span·class="p"·data-group-id="7860574895-4">{</span><span·class="ss">server_options</span><span·class="p">,</span><span·class="p"·data-group-id="7860574895-5">[</span><span·class="p"·data-group-id="7860574895-6">{</span><span·class="ss">user</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;foo&quot;</span><span·class="p"·data-group-id="7860574895-6">}</span><span·class="p"·data-group-id="7860574895-5">]</span><span·class="p"·data-group-id="7860574895-4">}</span><span·class="p">,</span><span·class="w"> 
160 ·······</span><span·class="p"·data-group-id="7860574895-7">{</span><span·class="ss">client_options</span><span·class="p">,</span><span·class="p"·data-group-id="7860574895-8">[</span><span·class="p"·data-group-id="7860574895-9">{</span><span·class="ss">user[·...·truncated·by·diffoscope;·len:·245,·SHA:·57ffaec51d4328c601d45598898a6e0fe23a288114baf9eccee0028abd0a487f·...·]</span><span·class="w">159 </span><span·class="p"·data-group-id="0829572282-2">{</span><span·class="ss">ssh</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0829572282-3">[</span><span·class="p"·data-group-id="0829572282-4">{</span><span·class="ss[·...·truncated·by·diffoscope;·len:·443,·SHA:·ae7c254c16f480049a97ac55757dd3d2c1ecdb936794fe3d31750f6d9a90741c·...·]</span><span·class="w">
 160 ·······</span><span·class="p"·data-group-id="0829572282-7">{</span><span·class="ss">client_options</span><span·class="p">,</span><span·class="p"·data-group-id="0829572282-8">[</span><span·class="p"·data-group-id="0829572282-9">{</span><span·class="ss">user</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;bar&quot;</span><span·class="p"·data-group-id="0829572282-9">}</span><span·class="p"·data-group-id="0829572282-8">]</span><span·class="p"·data-group-id="0829572282-7">}</span><span·class="w">
161 </span><span·class="p"·data-group-id="7860574895-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="0829572282-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.6/doc/html/config.html">OTP·Configuration·Parameters</a></li><li>Level·2:·Options·in·the·<a·href="../../../../lib/kernel-10.2.6/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.6/doc/html/config.html">OTP·Configuration·Parameters</a></li><li>Level·2:·Options·in·the·<a·href="../../../../lib/kernel-10.2.6/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="8800675385-1">(</span><span·class="p"·data-group-id="8800675385-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="6741740802-1">(</span><span·class="p"·data-group-id="6741740802-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="8800675385-2">(</span><span·class="p"·data-group-id="8800675385-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="6741740802-2">(</span><span·class="p"·data-group-id="6741740802-2">)</span><span·class="p">.</span><span·class="w">
235 </span><span·class="p"·data-group-id="8800675385-3">[</span><span·class="p"·data-group-id="8800675385-4">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="p"·data-group-id="8800675385-5">[</span><span·class="ss">&#39;ecdh-sha2-nistp384&#39;</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·69,·SHA:·098f47b45ebf1a046ad94e39cd04e931d09ba0bb98e99ee7de77d183479c512f·...·]-4">}</span><span·class="p">,</span><span·class="w">235 </span><span·class="p"·data-group-id="6741740802-3">[</span><span·class="p"·data-group-id="6741740802-4">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="p"·data-group-id="6741740802-5">[</span><span·class="ss">&#39;ecdh-sha2-nistp384&#39;</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·69,·SHA:·f4224eca7b37dbbd3102a5b2bf297e18ac26e95f6f017979fe73282b3249eb85·...·]-4">}</span><span·class="p">,</span><span·class="w">
236 ·</span><span·class="p"·data-group-id="8800675385-6">{</span><span·class="ss">public_key</span><span·class="p">,</span><span·class="p"·data-group-id="8800675385-7">[</span><span·class="ss">&#39;ssh-rsa&#39;</span><span·class="p"·data-group-id="8800675385-7">]</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·12,·SHA:·835a75409fa5b257885dcdd7028f2f2fcdd2f74508ac52bbfb82af165aec4f4e·...·]-6">}</span><span·class="p">,</span><span·class="w">236 ·</span><span·class="p"·data-group-id="6741740802-6">{</span><span·class="ss">public_key</span><span·class="p">,</span><span·class="p"·data-group-id="6741740802-7">[</span><span·class="ss">&#39;ssh-rsa&#39;</span><span·class="p"·data-group-id="6741740802-7">]</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·12,·SHA:·6307aeebd31161c8efae206ad5f65d750e20cf6a17b1a2a6e7991647c949eaeb·...·]-6">}</span><span·class="p">,</span><span·class="w">
237 ·</span><span·class="p"·data-group-id="8800675385-8">{</span><span·class="ss">cipher</span><span·class="p">,</span><span·class="p"·data-group-id="8800675385-9">[</span><span·class="p"·data-group-id="8800675385-10">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·class=[·...·truncated·by·diffoscope;·len:·181,·SHA:·e1ec6a3ca2f748cd32d5e829824521bdb471d1f2201c39b977687bb54cf80cce·...·]-10">}</span><span·class="p">,</span><span·class="w">237 ·</span><span·class="p"·data-group-id="6741740802-8">{</span><span·class="ss">cipher</span><span·class="p">,</span><span·class="p"·data-group-id="6741740802-9">[</span><span·class="p"·data-group-id="6741740802-10">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·class=[·...·truncated·by·diffoscope;·len:·181,·SHA:·6b807cf9100a65ccc233c98c5ccfac9b251e6bf564c7b5da19d34f3abe0e8bfb·...·]-10">}</span><span·class="p">,</span><span·class="w">
238 ··········</span><span·class="p"·data-group-id="8800675385-12">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="8800675385-13">[</span><span·class="ss">&#39;aes192-ctr&#39;</span><span·class="p"·data-group-id="8800675385-13">]</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·128,·SHA:·e501536d68dfbcb2dff2c13e56ecfc096cfb0eb23586ef2446ac11a26ce790b2·...·]-8">}</span><span·class="p">,</span><span·class="w">238 ··········</span><span·class="p"·data-group-id="6741740802-12">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="6741740802-13">[</span><span·class="ss">&#39;aes192-ctr&#39;</span><span·class="p"·data-group-id="6741740802-13">]</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·128,·SHA:·2d06ad3d755e8e914d31d4e82b1e4e6230165452b5d8380f141bb48268472431·...·]-8">}</span><span·class="p">,</span><span·class="w">
239 ·</span><span·class="p"·data-group-id="8800675385-14">{</span><span·class="ss">mac</span><span·class="p">,</span><span·class="p"·data-group-id="8800675385-15">[</span><span·class="p"·data-group-id="8800675385-16">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·179,·SHA:·64bc49358dbb5fae5445cce3d5ce2f8e2703f4d356584bd7e0a63f8c378128cf·...·]-16">}</span><span·class="p">,</span><span·class="w">239 ·</span><span·class="p"·data-group-id="6741740802-14">{</span><span·class="ss">mac</span><span·class="p">,</span><span·class="p"·data-group-id="6741740802-15">[</span><span·class="p"·data-group-id="6741740802-16">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·179,·SHA:·f99498fc97810d47c07990020e2b9b47e3c5e5c656f51e71bbffa095b1f671f8·...·]-16">}</span><span·class="p">,</span><span·class="w">
240 ·······</span><span·class="p"·data-group-id="8800675385-18">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="8800675385-19">[</span><span·class="ss">&#39;hmac-sha1&#39;</span><span·class="p"·data-group-id="8800675385-19">]</span><span·class="p"·data-group-id="8800675385-18">}</span><span·class="p"·data-group-id="8800675385-15">]</span><span·class="p"·data-group-id="8800675385-14">}</span><span·class="p">,</span><span·class="w"> 
241 ·</span><span·class="p"·data-group-id="8800675385-20">{</span><span·class="ss">compression</span><span·class="p">,</span><span·class="p"·data-group-id="8800675385-21">[</span><span·class="p"·data-group-id="8800675385-22">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·class="p"·data-group-id="8800675385-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="8800675385-23">]</span><span·class="p"·data-group-id="8800675385-22">}</span><span·class="p">,</span><span·class="w"> 
242 ···············</span><span·class="p"·data-group-id="8800675385-24">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="8800675385-25">[</span><span·class="ss">none</span><span·class="p">,</span><span·class="ss">&#3[·...·truncated·by·diffoscope;·len:·344,·SHA:·77618a4edde23efbaddf5b189c0e19776fc0b58901ff2dc219b95aa3ff1c5bde·...·]</span><span·class="w">240 ·······</span><span·class="p"·data-group-id="6741740802-18">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="6741740802-19">[</span><span·class="ss">&#39;hmac-sha1&#39;</span><span·class="p"·data-group-id="674174[·...·truncated·by·diffoscope;·len:·196,·SHA:·06d46d247cf61f172f78625e0415bcbd431b898d36d5dd1dc728779a12b4516e·...·]</span><span·class="w">
 241 ·</span><span·class="p"·data-group-id="6741740802-20">{</span><span·class="ss">compression</span><span·class="p">,</span><span·class="p"·data-group-id="6741740802-21">[</span><span·class="p"·data-group-id="6741740802-22">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·class="p"·data-group-id="6741740802-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="6741740802-23">]</span><span·class="p"·data-group-id="6741740802-22">}</span><span·class="p">,</span><span·class="w">
 242 ···············</span><span·class="p"·data-group-id="6741740802-24">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="6741740802-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="6741740802-25">]</span><span·class="p"·data-group-id="6741740802-24">}</span><span·class="p"·data-group-id="6741740802-21">]</span><span·class="p"·data-group-id="6741740802-20">}</span><span·class="p"·data-group-id="6741740802-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="7366743049-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">C</span><span·class="p"·data-group-id="7366743049-1">}</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:·6c30c9e97e144098526574b3970a33234be0d28ead3932dcc21b38fe81d77c1e·...·]-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="7540020404-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">C</span><span·class="p"·data-group-id="7540020404-1">}</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:·1ebae5cbefa809a5c29843d8ad159ef95b354c4e64a057d248086c103d44d623·...·]-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="7366743049-3">[</span><span·class="p"·data-group-id="7366743049-4">{</span><span·class="ss">modify_algorithms</span><span·class="p">,</span><span·class="w">256 ························</span><span·class="p"·data-group-id="7540020404-3">[</span><span·class="p"·data-group-id="7540020404-4">{</span><span·class="ss">modify_algorithms</span><span·class="p">,</span><span·class="w">
257 ·································</span><span·class="p"·data-group-id="7366743049-5">[</span><span·class="p"·data-group-id="7366743049-6">{</span><span·class="ss">rm</span><span·class="p">,</span><span·class="w">257 ·································</span><span·class="p"·data-group-id="7540020404-5">[</span><span·class="p"·data-group-id="7540020404-6">{</span><span·class="ss">rm</span><span·class="p">,</span><span·class="w">
258 ·····································</span><span·class="p"·data-group-id="7366743049-7">[</span><span·class="w">·</span><span·class="p"·data-group-id="7366743049-8">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="p"·data-group-id="7366743049-9">[</span><span·class="ss">&#39;ecdh-sha2-nistp384&#39;</span><s[·...·truncated·by·diffoscope;·len:·169,·SHA:·9f54ff622e07afe817d6070b315e9279a8bce58f6c6bd3dc62bcb5f9760f35a2·...·]-7">]</span><span·class="w">258 ·····································</span><span·class="p"·data-group-id="7540020404-7">[</span><span·class="w">·</span><span·class="p"·data-group-id="7540020404-8">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="p"·data-group-id="7540020404-9">[</span><span·class="ss">&#39;ecdh-sha2-nistp384&#39;</span><s[·...·truncated·by·diffoscope;·len:·169,·SHA:·005f5c1ad7686b894d770319af4d006764a9b82baa312fad835e40f550add4ad·...·]-7">]</span><span·class="w">
259 »       »       »       »       ··</span><span·class="p"·data-group-id="7366743049-6">}</span><span·class="p">,</span><span·class="w">259 »       »       »       »       ··</span><span·class="p"·data-group-id="7540020404-6">}</span><span·class="p">,</span><span·class="w">
260 ··································</span><span·class="p"·data-group-id="7366743049-10">{</span><span·class="ss">append</span><span·class="p">,</span><span·class="w">260 ··································</span><span·class="p"·data-group-id="7540020404-10">{</span><span·class="ss">append</span><span·class="p">,</span><span·class="w">
261 »       »       »       ·············</span><span·class="p"·data-group-id="7366743049-11">[</span><span·class="w">·</span><span·class="p"·data-group-id="7366743049-12">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="p"·data-group-id="7366743049-13">[</span><span·class="ss">&#39;curve25519-sha256@libssh.org&[·...·truncated·by·diffoscope;·len:·184,·SHA:·2b1a22130bc09ce7404f2e67e412979633b6980b6e3554eb310f9b6aa61488f1·...·]-11">]</span><span·class="w">261 »       »       »       ·············</span><span·class="p"·data-group-id="7540020404-11">[</span><span·class="w">·</span><span·class="p"·data-group-id="7540020404-12">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="p"·data-group-id="7540020404-13">[</span><span·class="ss">&#39;curve25519-sha256@libssh.org&[·...·truncated·by·diffoscope;·len:·184,·SHA:·762c5ffaf1b8c57b8d7bf6f1f8be04e50fcbbe519a0ed30a73ef7b10f56e1a32·...·]-11">]</span><span·class="w">
262 »       »       »       »       ··</span><span·class="p"·data-group-id="7366743049-10">}</span><span·class="w">262 »       »       »       »       ··</span><span·class="p"·data-group-id="7540020404-10">}</span><span·class="w">
263 »       »       »       »       ·</span><span·class="p"·data-group-id="7366743049-5">]</span><span·class="w">263 »       »       »       »       ·</span><span·class="p"·data-group-id="7540020404-5">]</span><span·class="w">
264 »       ·················</span><span·class="p"·data-group-id="7366743049-4">}</span><span·class="w">264 »       ·················</span><span·class="p"·data-group-id="7540020404-4">}</span><span·class="w">
265 ························</span><span·class="p"·data-group-id="7366743049-3">]</span><span·class="p"·data-group-id="7366743049-2">)</span><span·class="p">.</span><span·class="w">265 ························</span><span·class="p"·data-group-id="7540020404-3">]</span><span·class="p"·data-group-id="7540020404-2">)</span><span·class="p">.</span><span·class="w">
266 </span><span·class="p"·data-group-id="7366743049-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="7366743049-14">}</span></code></pre><p>We·check·which·algorithms·are·negotiated·by·the·client·and·the·server,·and·note266 </span><span·class="p"·data-group-id="7540020404-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="7540020404-14">}</span></code></pre><p>We·check·which·algorithms·are·negotiated·by·the·client·and·the·server,·and·note
267 that·the·(only)·<code·class="inline">kex</code>·algorithm·<code·class="inline">'curve25519-sha256@libssh.org'</code>·was·selected:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">5&gt;·</span><span·class="nc">ssh</span><span·class="p">:</span><span·class="nf">connection_info</span><span·class="p"·data-group-id="6387346912-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="6387346912-1">)</span><span·class="p">.</span><span·class="w">267 that·the·(only)·<code·class="inline">kex</code>·algorithm·<code·class="inline">'curve25519-sha256@libssh.org'</code>·was·selected:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">5&gt;·</span><span·class="nc">ssh</span><span·class="p">:</span><span·class="nf">connection_info</span><span·class="p"·data-group-id="4645263411-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="4645263411-1">)</span><span·class="p">.</span><span·class="w">
268 </span><span·class="p"·data-group-id="6387346912-2">{</span><span·class="ss">algorithms</span><span·class="p">,</span><span·class="p"·data-group-id="6387346912-3">[</span><span·class="p"·data-group-id="6387346912-4">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="ss">&#[·...·truncated·by·diffoscope;·len:·84,·SHA:·cd6bf771e85a9fdc07feac6a6542174f5744e86df33c456658ed532df4163a2f·...·]-4">}</span><span·class="p">,</span><span·class="w">268 </span><span·class="p"·data-group-id="4645263411-2">{</span><span·class="ss">algorithms</span><span·class="p">,</span><span·class="p"·data-group-id="4645263411-3">[</span><span·class="p"·data-group-id="4645263411-4">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="ss">&#[·...·truncated·by·diffoscope;·len:·84,·SHA:·d15de4e2ef480e57ee6b470762f6a4386ab15144728f08ddc7488892ba15034b·...·]-4">}</span><span·class="p">,</span><span·class="w">
269 ·············</span><span·class="p"·data-group-id="6387346912-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="6387346912-5">}</span><span·class="p">,</span><span·class="w">269 ·············</span><span·class="p"·data-group-id="4645263411-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="4645263411-5">}</span><span·class="p">,</span><span·class="w">
270 ·············</span><span·class="p"·data-group-id="6387346912-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="6387346912-6">}</span><span·class="p">,</span><span·class="w">270 ·············</span><span·class="p"·data-group-id="4645263411-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="4645263411-6">}</span><span·class="p">,</span><span·class="w">
271 ·············</span><span·class="p"·data-group-id="6387346912-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="6387346912-7">}</span><span·class="p">,</span><span·class="w">271 ·············</span><span·class="p"·data-group-id="4645263411-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="4645263411-7">}</span><span·class="p">,</span><span·class="w">
272 ·············</span><span·class="p"·data-group-id="6387346912-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="6387346912-8">}</span><span·class="p">,</span><span·class="w">272 ·············</span><span·class="p"·data-group-id="4645263411-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="4645263411-8">}</span><span·class="p">,</span><span·class="w">
273 ·············</span><span·class="p"·data-group-id="6387346912-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="6387346912-9">}</span><span·class="p">,</span><span·class="w">273 ·············</span><span·class="p"·data-group-id="4645263411-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="4645263411-9">}</span><span·class="p">,</span><span·class="w">
274 ·············</span><span·class="p"·data-group-id="6387346912-10">{</span><span·class="ss">compress</span><span·class="p">,</span><span·class="ss">none</span><span·class="p"·data-group-id="6387346912-10">}</span><span·class="p">,</span><span·class="w">274 ·············</span><span·class="p"·data-group-id="4645263411-10">{</span><span·class="ss">compress</span><span·class="p">,</span><span·class="ss">none</span><span·class="p"·data-group-id="4645263411-10">}</span><span·class="p">,</span><span·class="w">
275 ·············</span><span·class="p"·data-group-id="6387346912-11">{</span><span·class="ss">decompress</span><span·class="p">,</span><span·class="ss">none</span><span·class="p"·data-group-id="6387346912-11">}</span><span·class="p">,</span><span·class="w">275 ·············</span><span·class="p"·data-group-id="4645263411-11">{</span><span·class="ss">decompress</span><span·class="p">,</span><span·class="ss">none</span><span·class="p"·data-group-id="4645263411-11">}</span><span·class="p">,</span><span·class="w">
276 ·············</span><span·class="p"·data-group-id="6387346912-12">{</span><span·class="ss">send_ext_info</span><span·class="p">,</span><span·class="ss">false</span><span·class="p"·data-group-id="6387346912-12">}</span><span·class="p">,</span><span·class="w">276 ·············</span><span·class="p"·data-group-id="4645263411-12">{</span><span·class="ss">send_ext_info</span><span·class="p">,</span><span·class="ss">false</span><span·class="p"·data-group-id="4645263411-12">}</span><span·class="p">,</span><span·class="w">
277 ·············</span><span·class="p"·data-group-id="6387346912-13">{</span><span·class="ss">recv_ext_info</span><span·class="p">,</span><span·class="ss">true</span><span·class="p"·data-group-id="6387346912-13">}</span><span·class="p"·data-group-id="6387346912-3">]</span><span·class="p"·data-group-id="638734[·...·truncated·by·diffoscope;·len:·4,·SHA:·153de641ea0557acad28b609f949ec7ad909c0168b9af1d810fcf26e45e7e428·...·]-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="4645263411-13">{</span><span·class="ss">recv_ext_info</span><span·class="p">,</span><span·class="ss">true</span><span·class="p"·data-group-id="4645263411-13">}</span><span·class="p"·data-group-id="4645263411-3">]</span><span·class="p"·data-group-id="464526[·...·truncated·by·diffoscope;·len:·4,·SHA:·9c7be863c0a75745a635934eb151344d20aad306b25f07d4d85c30fa68abf339·...·]-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="1096646817-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="1308221246-1">[</span><span·class="w">
283 ·</span><span·class="p"·data-group-id="1096646817-2">{</span><span·class="ss">ssh</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1096646817-3">[</span><span·class="p"·data-group-id="1096646817-4">{</span><span·class="ss">modify_algorithms</span><span·class="p">,</span><span·class="w">283 ·</span><span·class="p"·data-group-id="1308221246-2">{</span><span·class="ss">ssh</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1308221246-3">[</span><span·class="p"·data-group-id="1308221246-4">{</span><span·class="ss">modify_algorithms</span><span·class="p">,</span><span·class="w">
284 ·········</span><span·class="p"·data-group-id="1096646817-5">[</span><span·class="w">·</span><span·class="p"·data-group-id="1096646817-6">{</span><span·class="ss">prepend</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1096646817-7">[</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·480,·SHA:·bfbc5dfc550399ea622cae78c7db60b84a798ed612fe2099ed96bcad48440443·...·]-5">]</span><span·class="w">284 ·········</span><span·class="p"·data-group-id="1308221246-5">[</span><span·class="w">·</span><span·class="p"·data-group-id="1308221246-6">{</span><span·class="ss">prepend</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1308221246-7">[</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·480,·SHA:·ca72972391e7b6d2cd9ded76cefaf9691903a09c1cbaf88c42031b181654f2d8·...·]-5">]</span><span·class="w">
285 ········</span><span·class="p"·data-group-id="1096646817-4">}</span><span·class="p"·data-group-id="1096646817-3">]</span><span·class="p"·data-group-id="1096646817-2">}</span><span·class="w">285 ········</span><span·class="p"·data-group-id="1308221246-4">}</span><span·class="p"·data-group-id="1308221246-3">]</span><span·class="p"·data-group-id="1308221246-2">}</span><span·class="w">
286 </span><span·class="p"·data-group-id="1096646817-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="1308221246-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="9076250332-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="9076250332-2">(</span><span·[·...·truncated·by·diffoscope;·len:·88,·SHA:·3d744179aeb7cf4c20d200e6f3092d88c705907b6cb6aa9f3e386dab2d932569·...·]-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="0215727954-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="0215727954-2">(</span><span·[·...·truncated·by·diffoscope;·len:·88,·SHA:·1604c778e672c0c1648b74a0e57fb2e07eb5d349b6121a63a79a8ed13b4abe12·...·]-1">)</span><span·class="p">.</span><span·class="w">
288 </span><span·class="p"·data-group-id="9076250332-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="0215727954-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="9076250332-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="0215727954-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="6678289709-1">(</span><span·class="p"·data-group-id="6678289709-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="0229491992-1">(</span><span·class="p"·data-group-id="0229491992-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="6678289709-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">C</span><span·class="p"·data-group-id="6678289709-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ssh</span><span·cl[·...·truncated·by·diffoscope;·len:·88,·SHA:·e987a6edfa713847a7d628aa9541404f9740985852681db00c7358aded8660d9·...·]-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="0229491992-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">C</span><span·class="p"·data-group-id="0229491992-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ssh</span><span·cl[·...·truncated·by·diffoscope;·len:·88,·SHA:·aea417d6c6d46941050624f7a1e5fd191951a491eee62d0ffa3dd71867d785cf·...·]-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="6678289709-4">[</span><span·class="p"·data-group-id="6678289709-5">{</span><span·class="ss">preferred_algorithms</span><span·class="p">,</span><span·class="w">294 ························</span><span·class="p"·data-group-id="0229491992-4">[</span><span·class="p"·data-group-id="0229491992-5">{</span><span·class="ss">preferred_algorithms</span><span·class="p">,</span><span·class="w">
295 ·························</span><span·class="p"·data-group-id="6678289709-6">[</span><span·class="p"·data-group-id="6678289709-7">{</span><span·class="ss">public_key</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6678289709-8">[</span><span·class="ss">&#39;ecdsa-sha2-nistp256&#39;[·...·truncated·by·diffoscope;·len:·101,·SHA:·b843703f863844696b8b20df3cdcf0a49ce7d54e4eeddc476ecb1388707a87c3·...·]-7">}</span><span·class="p">,</span><span·class="w">295 ·························</span><span·class="p"·data-group-id="0229491992-6">[</span><span·class="p"·data-group-id="0229491992-7">{</span><span·class="ss">public_key</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0229491992-8">[</span><span·class="ss">&#39;ecdsa-sha2-nistp256&#39;[·...·truncated·by·diffoscope;·len:·101,·SHA:·f62d09a6f2f9df457a7baa8c851fe13ebdf763e47736ce8350adfa5573aafcca·...·]-7">}</span><span·class="p">,</span><span·class="w">
296 »       »       »       ··</span><span·class="p"·data-group-id="6678289709-9">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6678289709-10">[</span><span·class="ss">&#39;ecdh-sha2-nistp256&#39;</span><span·class="p"·data-group-id="6678289709-10">]</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·00a10c209a61cc8ebe8b040481a8067845d8033755dfe284ecced3dc8ea5e581·...·]-9">}</span><span·class="p">,</span><span·class="w">296 »       »       »       ··</span><span·class="p"·data-group-id="0229491992-9">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0229491992-10">[</span><span·class="ss">&#39;ecdh-sha2-nistp256&#39;</span><span·class="p"·data-group-id="0229491992-10">]</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·340e22ada50a1cecc81f2e5ed61fe43e75ff2123d366aeff54b6d35102077bf7·...·]-9">}</span><span·class="p">,</span><span·class="w">
297 »       »       ··········</span><span·class="p"·data-group-id="6678289709-11">{</span><span·class="ss">cipher</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6678289709-12">[</span><span·class="ss">&#39;chacha20-poly1305@openssh.com&#39;</span><span·class="p"·data-group-id="6678289[·...·truncated·by·diffoscope;·len:·57,·SHA:·ff7e3594159e652da2b908fc1e3307fa3199ddab44561fb75cb1eba491115d0a·...·]-11">}</span><span·class="p">,</span><span·class="w">297 »       »       ··········</span><span·class="p"·data-group-id="0229491992-11">{</span><span·class="ss">cipher</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0229491992-12">[</span><span·class="ss">&#39;chacha20-poly1305@openssh.com&#39;</span><span·class="p"·data-group-id="0229491[·...·truncated·by·diffoscope;·len:·57,·SHA:·19699e92c3fd3d0268280ba79db422b61d141439d1044b06f8e2570ef88467f6·...·]-11">}</span><span·class="p">,</span><span·class="w">
298 »       »       »       ··</span><span·class="p"·data-group-id="6678289709-13">{</span><span·class="ss">mac</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6678289709-14">[</span><span·class="ss">&#39;hmac-sha2-256&#39;</span><span·class="p"·data-group-id="6678289709-14">]</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·d544f1fef4c8b9f40f6e5b049736855d683e301da369b3c5263ac11e990999f0·...·]-13">}</span><span·class="p">,</span><span·class="w">298 »       »       »       ··</span><span·class="p"·data-group-id="0229491992-13">{</span><span·class="ss">mac</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0229491992-14">[</span><span·class="ss">&#39;hmac-sha2-256&#39;</span><span·class="p"·data-group-id="0229491992-14">]</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·2a7cd9e7f498f8311fdde5d268bc6912d3148211521a13983fba41724b1c37fa·...·]-13">}</span><span·class="p">,</span><span·class="w">
299 »       »       »       ··</span><span·class="p"·data-group-id="6678289709-15">{</span><span·class="ss">compression</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6678289709-16">[</span><span·class="ss">none</span><span·class="p"·data-group-id="6678289709-16">]</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·ad4e192194a102c0c0ca0ccd508f14c78b1b5ced19c3aff04d66d09b557607e7·...·]-15">}</span><span·class="w">299 »       »       »       ··</span><span·class="p"·data-group-id="0229491992-15">{</span><span·class="ss">compression</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0229491992-16">[</span><span·class="ss">none</span><span·class="p"·data-group-id="0229491992-16">]</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·149dda2b903ad82ac54bebc6c471924935fce317cad205d83fcc1c6e44d4f4fe·...·]-15">}</span><span·class="w">
300 »       »       »       ··</span><span·class="p"·data-group-id="6678289709-6">]</span><span·class="p"·data-group-id="6678289709-5">}</span><span·class="w">300 »       »       »       ··</span><span·class="p"·data-group-id="0229491992-6">]</span><span·class="p"·data-group-id="0229491992-5">}</span><span·class="w">
301 »       »       »       ·</span><span·class="p"·data-group-id="6678289709-4">]</span><span·class="p"·data-group-id="6678289709-3">)</span><span·class="p">.</span><span·class="w">301 »       »       »       ·</span><span·class="p"·data-group-id="0229491992-4">]</span><span·class="p"·data-group-id="0229491992-3">)</span><span·class="p">.</span><span·class="w">
302 </span><span·class="p"·data-group-id="6678289709-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="6678289709-17">}</span><span·class="gp·unselectable">302 </span><span·class="p"·data-group-id="0229491992-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="0229491992-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="6678289709-18">(</span><span·class="n">C</span><span·class="p">,</span><span·class="ss">algorithms</span><span·class="p"·data-group-id="6678289709-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="0229491992-18">(</span><span·class="n">C</span><span·class="p">,</span><span·class="ss">algorithms</span><span·class="p"·data-group-id="0229491992-18">)</span><span·class="p">.</span><span·class="w">
304 </span><span·class="p"·data-group-id="6678289709-19">{</span><span·class="ss">algorithms</span><span·class="p">,</span><span·class="p"·data-group-id="6678289709-20">[</span><span·class="p"·data-group-id="6678289709-21">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="ss"[·...·truncated·by·diffoscope;·len:·77,·SHA:·1e68f72178e171fd9fac3df6517d4e46acdd7ea4c1c04f198063a4e2765e8fcb·...·]-21">}</span><span·class="p">,</span><span·class="w">304 </span><span·class="p"·data-group-id="0229491992-19">{</span><span·class="ss">algorithms</span><span·class="p">,</span><span·class="p"·data-group-id="0229491992-20">[</span><span·class="p"·data-group-id="0229491992-21">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="ss"[·...·truncated·by·diffoscope;·len:·77,·SHA:·a91bb787f769df8c835f6d87ae5a0f6ed9b42fcafa3e1b6f787b8c0e7e675862·...·]-21">}</span><span·class="p">,</span><span·class="w">
305 ·············</span><span·class="p"·data-group-id="6678289709-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="6678289709-22">}</span><span·class="p">,</span><span·class="w">305 ·············</span><span·class="p"·data-group-id="0229491992-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="0229491992-22">}</span><span·class="p">,</span><span·class="w">
306 ·············</span><span·class="p"·data-group-id="6678289709-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="6678289709-23">}</span><span·class="p">,</span><span·class="w">306 ·············</span><span·class="p"·data-group-id="0229491992-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="0229491992-23">}</span><span·class="p">,</span><span·class="w">
307 ·············</span><span·class="p"·data-group-id="6678289709-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="6678289709-24">}</span><span·class="p">,</span><span·class="w">307 ·············</span><span·class="p"·data-group-id="0229491992-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="0229491992-24">}</span><span·class="p">,</span><span·class="w">
308 ·············</span><span·class="p"·data-group-id="6678289709-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="6678289709-25">}</span><span·class="p">,</span><span·class="w">308 ·············</span><span·class="p"·data-group-id="0229491992-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="0229491992-25">}</span><span·class="p">,</span><span·class="w">
309 ·············</span><span·class="p"·data-group-id="6678289709-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="6678289709-26">}</span><span·class="p">,</span><span·class="w">309 ·············</span><span·class="p"·data-group-id="0229491992-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="0229491992-26">}</span><span·class="p">,</span><span·class="w">
310 ·············</span><span·class="p"·data-group-id="6678289709-27">{</span><span·class="ss">compress</span><span·class="p">,</span><span·class="ss">none</span><span·class="p"·data-group-id="6678289709-27">}</span><span·class="p">,</span><span·class="w">310 ·············</span><span·class="p"·data-group-id="0229491992-27">{</span><span·class="ss">compress</span><span·class="p">,</span><span·class="ss">none</span><span·class="p"·data-group-id="0229491992-27">}</span><span·class="p">,</span><span·class="w">
311 ·············</span><span·class="p"·data-group-id="6678289709-28">{</span><span·class="ss">decompress</span><span·class="p">,</span><span·class="ss">none</span><span·class="p"·data-group-id="6678289709-28">}</span><span·class="p">,</span><span·class="w">311 ·············</span><span·class="p"·data-group-id="0229491992-28">{</span><span·class="ss">decompress</span><span·class="p">,</span><span·class="ss">none</span><span·class="p"·data-group-id="0229491992-28">}</span><span·class="p">,</span><span·class="w">
312 ·············</span><span·class="p"·data-group-id="6678289709-29">{</span><span·class="ss">send_ext_info</span><span·class="p">,</span><span·class="ss">false</span><span·class="p"·data-group-id="6678289709-29">}</span><span·class="p">,</span><span·class="w">312 ·············</span><span·class="p"·data-group-id="0229491992-29">{</span><span·class="ss">send_ext_info</span><span·class="p">,</span><span·class="ss">false</span><span·class="p"·data-group-id="0229491992-29">}</span><span·class="p">,</span><span·class="w">
313 ·············</span><span·class="p"·data-group-id="6678289709-30">{</span><span·class="ss">recv_ext_info</span><span·class="p">,</span><span·class="ss">true</span><span·class="p"·data-group-id="6678289709-30">}</span><span·class="p"·data-group-id="6678289709-20">]</span><span·class="p"·data-group-id="66782[·...·truncated·by·diffoscope;·len:·5,·SHA:·1100fdbbcaf48a9aec3652bb315e14e7b14118ebe8e1592c98d30c5bc47c98a9·...·]-19">}</span><span·class="w">313 ·············</span><span·class="p"·data-group-id="0229491992-30">{</span><span·class="ss">recv_ext_info</span><span·class="p">,</span><span·class="ss">true</span><span·class="p"·data-group-id="0229491992-30">}</span><span·class="p"·data-group-id="0229491992-20">]</span><span·class="p"·data-group-id="02294[·...·truncated·by·diffoscope;·len:·5,·SHA:·a3127f175bd8e77eba5ed39c58eff6017003d63b4c9275eceb4fab59519a2877·...·]-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
Max diff block lines reached; 148/62603 bytes (0.24%) of diff not shown.
124 KB
./usr/share/doc/erlang-doc/html/lib/ssh-5.2.10/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="6852984047-1">(</span><span·class="p"·data-group-id="6852984047-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="4462669529-1">(</span><span·class="p"·data-group-id="4462669529-1">)</span><span·class="p">.</span><span·class="w">
174 </span><span·class="p"·data-group-id="6852984047-2">[</span><span·class="p"·data-group-id="6852984047-3">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="p"·data-group-id="6852984047-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="4462669529-2">[</span><span·class="p"·data-group-id="4462669529-3">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="p"·data-group-id="4462669529-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="6852984047-4">]</span><span·class="p"·data-group-id="6852984047-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="4462669529-4">]</span><span·class="p"·data-group-id="4462669529-3">}</span><span·class="p">,</span><span·class="w">
181 ·</span><span·class="p"·data-group-id="6852984047-5">{</span><span·class="ss">public_key</span><span·class="p">,</span><span·class="p"·data-group-id="6852984047-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="4462669529-5">{</span><span·class="ss">public_key</span><span·class="p">,</span><span·class="p"·data-group-id="4462669529-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="6852984047-6">]</span><span·class="p"·data-group-id="6852984047-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="4462669529-6">]</span><span·class="p"·data-group-id="4462669529-5">}</span><span·class="p">,</span><span·class="w">
184 ·</span><span·class="p"·data-group-id="6852984047-7">{</span><span·class="ss">cipher</span><span·class="p">,</span><span·class="p"·data-group-id="6852984047-8">[</span><span·class="p"·data-group-id="6852984047-9">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·8e5b9194be7239dcef067a1f65feb57d8333d721e3e224f9d67d683d6465c247·...·]-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="4462669529-7">{</span><span·class="ss">cipher</span><span·class="p">,</span><span·class="p"·data-group-id="4462669529-8">[</span><span·class="p"·data-group-id="4462669529-9">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·de1218d900cf76c7ce465885ba14057956513f8636d068e178227cac49b0a68d·...·]-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="6852984047-10">]</span><span·class="p"·data-group-id="6852984047-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="4462669529-10">]</span><span·class="p"·data-group-id="4462669529-9">}</span><span·class="p">,</span><span·class="w">
187 ··········</span><span·class="p"·data-group-id="6852984047-11">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="6852984047-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="4462669529-11">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="4462669529-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="6852984047-12">]</span><span·class="p"·data-group-id="6852984047-11">}</span><span·class="p"·data-group-id="6852984047-8">]</span><span·class="p"·data-group-id="6852984047-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="4462669529-12">]</span><span·class="p"·data-group-id="4462669529-11">}</span><span·class="p"·data-group-id="4462669529-8">]</span><span·class="p"·data-group-id="4462669529-7">}</span><span·class="p">,</span><span·class="w">
190 ·</span><span·class="p"·data-group-id="6852984047-13">{</span><span·class="ss">mac</span><span·class="p">,</span><span·class="p"·data-group-id="6852984047-14">[</span><span·class="p"·data-group-id="6852984047-15">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·8e5b9194be7239dcef067a1f65feb57d8333d721e3e224f9d67d683d6465c247·...·]-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="4462669529-13">{</span><span·class="ss">mac</span><span·class="p">,</span><span·class="p"·data-group-id="4462669529-14">[</span><span·class="p"·data-group-id="4462669529-15">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·de1218d900cf76c7ce465885ba14057956513f8636d068e178227cac49b0a68d·...·]-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="6852984047-16">]</span><span·class="p"·data-group-id="6852984047-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="4462669529-16">]</span><span·class="p"·data-group-id="4462669529-15">}</span><span·class="p">,</span><span·class="w">
192 ·······</span><span·class="p"·data-group-id="6852984047-17">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="6852984047-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="4462669529-17">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="4462669529-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="6852984047-18">]</span><span·class="p"·data-group-id="6852984047-17">}</span><span·class="p"·data-group-id="6852984047-14">]</span><span·class="p"·data-group-id="6852984047-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="4462669529-18">]</span><span·class="p"·data-group-id="4462669529-17">}</span><span·class="p"·data-group-id="4462669529-14">]</span><span·class="p"·data-group-id="4462669529-13">}</span><span·class="p">,</span><span·class="w">
194 ·</span><span·class="p"·data-group-id="6852984047-19">{</span><span·class="ss">compression</span><span·class="p">,</span><span·class="p"·data-group-id="6852984047-20">[</span><span·class="p"·data-group-id="6852984047-21">{</span><span·class="ss">client2server</span><span·class="p">,</span><span[·...·truncated·by·diffoscope;·len:·298,·SHA:·a39229e6bb3533160bf0f7e4289648e70c83f7d0706b9a0aa0ff6e7c9a8cbbce·...·]-21">}</span><span·class="p">,</span><span·class="w">194 ·</span><span·class="p"·data-group-id="4462669529-19">{</span><span·class="ss">compression</span><span·class="p">,</span><span·class="p"·data-group-id="4462669529-20">[</span><span·class="p"·data-group-id="4462669529-21">{</span><span·class="ss">client2server</span><span·class="p">,</span><span[·...·truncated·by·diffoscope;·len:·298,·SHA:·023b2ce78c915d563023735f714399557875461e9d0554ba51fa7ea31cfa4e5d·...·]-21">}</span><span·class="p">,</span><span·class="w">
195 ···············</span><span·class="p"·data-group-id="6852984047-23">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="6852984047-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:·9b515b0426a793ca5e476df61f969ff6dada49697c031303e8c49a8fc9b03b50·...·]-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="4462669529-23">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="4462669529-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:·e0eb917a5ed8d8467ab90185042b3ea2fd6dc7b1c36428aaa916206d696e3856·...·]-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="5166251708-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="5642302405-1">(</span><span·class="w">
219 ···············</span><span·class="p"·data-group-id="5166251708-2">[</span><span·class="p"·data-group-id="5166251708-3">{</span><span·class="ss">preferred_algorithms</span><span·class="p">,</span><span·class="w">219 ···············</span><span·class="p"·data-group-id="5642302405-2">[</span><span·class="p"·data-group-id="5642302405-3">{</span><span·class="ss">preferred_algorithms</span><span·class="p">,</span><span·class="w">
220 ·····················</span><span·class="p"·data-group-id="5166251708-4">[</span><span·class="p"·data-group-id="5166251708-5">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5166251708-6">[</span><span·class="ss">&#39;diffie-hellman-group14-sha256&#3[·...·truncated·by·diffoscope;·len:·103,·SHA:·b724ca6db20857b6c4d054f8dd33811ae4b9cb8deb24b45e30767a9bf10dfd80·...·]-5">}</span><span·class="w">220 ·····················</span><span·class="p"·data-group-id="5642302405-4">[</span><span·class="p"·data-group-id="5642302405-5">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5642302405-6">[</span><span·class="ss">&#39;diffie-hellman-group14-sha256&#3[·...·truncated·by·diffoscope;·len:·103,·SHA:·6ba4c8aebbae6372dbe4d5945f85fab78fbfdf97cf62fffaa1b2bd21cf4b49b2·...·]-5">}</span><span·class="w">
221 ·····················</span><span·class="p"·data-group-id="5166251708-4">]</span><span·class="w">221 ·····················</span><span·class="p"·data-group-id="5642302405-4">]</span><span·class="w">
222 ················</span><span·class="p"·data-group-id="5166251708-3">}</span><span·class="w">222 ················</span><span·class="p"·data-group-id="5642302405-3">}</span><span·class="w">
223 ··············</span><span·class="p"·data-group-id="5166251708-2">]</span><span·class="p"·data-group-id="5166251708-1">)</span><span·class="p">.</span><span·class="w">223 ··············</span><span·class="p"·data-group-id="5642302405-2">]</span><span·class="p"·data-group-id="5642302405-1">)</span><span·class="p">.</span><span·class="w">
224 </span><span·class="p"·data-group-id="5166251708-7">[</span><span·class="p"·data-group-id="5166251708-8">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="p"·data-group-id="5166251708-9">[</span><span·class="ss">&#39;diffie-hellman-group14-sha256&#39;</span><span·class="p"[·...·truncated·by·diffoscope;·len:·79,·SHA:·17cf557985e92bb200b072c21a64ec0b04e9c4535822c4ea3b7997b4fbf847b6·...·]-8">}</span><span·class="p">,</span><span·class="w">224 </span><span·class="p"·data-group-id="5642302405-7">[</span><span·class="p"·data-group-id="5642302405-8">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="p"·data-group-id="5642302405-9">[</span><span·class="ss">&#39;diffie-hellman-group14-sha256&#39;</span><span·class="p"[·...·truncated·by·diffoscope;·len:·79,·SHA:·afd25b6dac308778f51be90f0b6b9e133127eb4e5b698816fea9220c7bedb6ff·...·]-8">}</span><span·class="p">,</span><span·class="w">
225 ·</span><span·class="p"·data-group-id="5166251708-10">{</span><span·class="ss">public_key</span><span·class="p">,</span><span·class="p"·data-group-id="5166251708-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="5642302405-10">{</span><span·class="ss">public_key</span><span·class="p">,</span><span·class="p"·data-group-id="5642302405-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="5166251708-11">]</span><span·class="p"·data-group-id="5166251708-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="5642302405-11">]</span><span·class="p"·data-group-id="5642302405-10">}</span><span·class="p">,</span><span·class="w">
228 ·</span><span·class="p"·data-group-id="5166251708-12">{</span><span·class="ss">cipher</span><span·class="p">,</span><span·class="p"·data-group-id="5166251708-13">[</span><span·class="p"·data-group-id="5166251708-14">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·class[·...·truncated·by·diffoscope;·len:·30,·SHA:·131372c165fc30e34b0939462f8ee05ab1a691675a57f4fe61dd9f7472bc82d6·...·]-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="5642302405-12">{</span><span·class="ss">cipher</span><span·class="p">,</span><span·class="p"·data-group-id="5642302405-13">[</span><span·class="p"·data-group-id="5642302405-14">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·class[·...·truncated·by·diffoscope;·len:·30,·SHA:·c1dd5bbaac131d9fd0af63c8f20eabe1833fd53594c8e95ff9d9c40c913470d7·...·]-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="5166251708-15">]</span><span·class="p"·data-group-id="5166251708-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="5642302405-15">]</span><span·class="p"·data-group-id="5642302405-14">}</span><span·class="p">,</span><span·class="w">
231 ··········</span><span·class="p"·data-group-id="5166251708-16">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="5166251708-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="5642302405-16">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="5642302405-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="5166251708-17">]</span><span·class="p"·data-group-id="5166251708-16">}</span><span·class="p"·data-group-id="5166251708-13">]</span><span·class="p"·data-group-id="5166251708-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="5642302405-17">]</span><span·class="p"·data-group-id="5642302405-16">}</span><span·class="p"·data-group-id="5642302405-13">]</span><span·class="p"·data-group-id="5642302405-12">}</span><span·class="p">,</span><span·class="w">
234 ·</span><span·class="p"·data-group-id="5166251708-18">{</span><span·class="ss">mac</span><span·class="p">,</span><span·class="p"·data-group-id="5166251708-19">[</span><span·class="p"·data-group-id="5166251708-20">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·3948f09293f6c4f8984eb81d28c26b14e950e44447573eea927fee54da53e1c2·...·]-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="5642302405-18">{</span><span·class="ss">mac</span><span·class="p">,</span><span·class="p"·data-group-id="5642302405-19">[</span><span·class="p"·data-group-id="5642302405-20">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·61c1af95db436b722347dd045c34504c196af676205d5e933c844fa51a129a66·...·]-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="5166251708-21">]</span><span·class="p"·data-group-id="5166251708-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="5642302405-21">]</span><span·class="p"·data-group-id="5642302405-20">}</span><span·class="p">,</span><span·class="w">
236 ·······</span><span·class="p"·data-group-id="5166251708-22">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="5166251708-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="5642302405-22">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="5642302405-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="5166251708-23">]</span><span·class="p"·data-group-id="5166251708-22">}</span><span·class="p"·data-group-id="5166251708-19">]</span><span·class="p"·data-group-id="5166251708-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="5642302405-23">]</span><span·class="p"·data-group-id="5642302405-22">}</span><span·class="p"·data-group-id="5642302405-19">]</span><span·class="p"·data-group-id="5642302405-18">}</span><span·class="p">,</span><span·class="w">
238 ·</span><span·class="p"·data-group-id="5166251708-24">{</span><span·class="ss">compression</span><span·class="p">,</span><span·class="p"·data-group-id="5166251708-25">[</span><span·class="p"·data-group-id="5166251708-26">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·[·...·truncated·by·diffoscope;·len:·297,·SHA:·71c80ded5f0df3b0accd18655a41db859694591759ae51e2deebb028887aa349·...·]-26">}</span><span·class="p">,</span><span·class="w">238 ·</span><span·class="p"·data-group-id="5642302405-24">{</span><span·class="ss">compression</span><span·class="p">,</span><span·class="p"·data-group-id="5642302405-25">[</span><span·class="p"·data-group-id="5642302405-26">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·[·...·truncated·by·diffoscope;·len:·297,·SHA:·9efcb4c3c261bead3e554e6f8a868a806060373c9c4ba27ffcb56d215c13c6b3·...·]-26">}</span><span·class="p">,</span><span·class="w">
239 ···············</span><span·class="p"·data-group-id="5166251708-28">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="5166251708-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:·292,·SHA:·2625366041a776a81d7cb96a758dc2852c556ccf3794b8ffe60829a87df6040f·...·]-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="5642302405-28">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="5642302405-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:·292,·SHA:·4f767b38c18bac32791f4e45225f4f0ef7687b4c4838c569090b5965d72af875·...·]-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="3100552526-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="9362808932-1">(</span><span·class="w">
248 ···············</span><span·class="p"·data-group-id="3100552526-2">[</span><span·class="p"·data-group-id="3100552526-3">{</span><span·class="ss">preferred_algorithms</span><span·class="p">,</span><span·class="w">248 ···············</span><span·class="p"·data-group-id="9362808932-2">[</span><span·class="p"·data-group-id="9362808932-3">{</span><span·class="ss">preferred_algorithms</span><span·class="p">,</span><span·class="w">
249 ·····················</span><span·class="p"·data-group-id="3100552526-4">[</span><span·class="p"·data-group-id="3100552526-5">{</span><span·class="ss">cipher</span><span·class="p">,</span><span·class="p"·data-group-id="3100552526-6">[</span><span·class="ss">&#39;aes128-ctr&#39;</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·64,·SHA:·2763960f0fed9fc63fe60162cd2534191db3c2564328025138c855660c3a7e10·...·]-5">}</span><span·class="w">249 ·····················</span><span·class="p"·data-group-id="9362808932-4">[</span><span·class="p"·data-group-id="9362808932-5">{</span><span·class="ss">cipher</span><span·class="p">,</span><span·class="p"·data-group-id="9362808932-6">[</span><span·class="ss">&#39;aes128-ctr&#39;</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·64,·SHA:·fd6ccb071176ce346caf88696f02bf67af79fdaa7166debaf390d073bee6c386·...·]-5">}</span><span·class="w">
250 ·····················</span><span·class="p"·data-group-id="3100552526-4">]</span><span·class="w">250 ·····················</span><span·class="p"·data-group-id="9362808932-4">]</span><span·class="w">
251 ················</span><span·class="p"·data-group-id="3100552526-3">}</span><span·class="w">251 ················</span><span·class="p"·data-group-id="9362808932-3">}</span><span·class="w">
252 ··············</span><span·class="p"·data-group-id="3100552526-2">]</span><span·class="p"·data-group-id="3100552526-1">)</span><span·class="p">.</span><span·class="w">252 ··············</span><span·class="p"·data-group-id="9362808932-2">]</span><span·class="p"·data-group-id="9362808932-1">)</span><span·class="p">.</span><span·class="w">
253 </span><span·class="p"·data-group-id="3100552526-7">[</span><span·class="p"·data-group-id="3100552526-8">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="p"·data-group-id="3100552526-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="9362808932-7">[</span><span·class="p"·data-group-id="9362808932-8">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="p"·data-group-id="9362808932-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="3100552526-9">]</span><span·class="p"·data-group-id="3100552526-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="9362808932-9">]</span><span·class="p"·data-group-id="9362808932-8">}</span><span·class="p">,</span><span·class="w">
260 ·</span><span·class="p"·data-group-id="3100552526-10">{</span><span·class="ss">public_key</span><span·class="p">,</span><span·class="p"·data-group-id="3100552526-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="9362808932-10">{</span><span·class="ss">public_key</span><span·class="p">,</span><span·class="p"·data-group-id="9362808932-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="3100552526-11">]</span><span·class="p"·data-group-id="3100552526-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="9362808932-11">]</span><span·class="p"·data-group-id="9362808932-10">}</span><span·class="p">,</span><span·class="w">
263 ·</span><span·class="p"·data-group-id="3100552526-12">{</span><span·class="ss">cipher</span><span·class="p">,</span><span·class="p"·data-group-id="3100552526-13">[</span><span·class="p"·data-group-id="3100552526-14">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·clas[·...·truncated·by·diffoscope;·len:·183,·SHA:·a69d6bc5c63509a715f143e449c7724b2a11c23029269b89f11c37e35ec74795·...·]-14">}</span><span·class="p">,</span><span·class="w">263 ·</span><span·class="p"·data-group-id="9362808932-12">{</span><span·class="ss">cipher</span><span·class="p">,</span><span·class="p"·data-group-id="9362808932-13">[</span><span·class="p"·data-group-id="9362808932-14">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·clas[·...·truncated·by·diffoscope;·len:·183,·SHA:·39d11e9a855d4597d6aa2b8101da9c291d6142a6b06f69eaafdfa6fc84c38c0f·...·]-14">}</span><span·class="p">,</span><span·class="w">
264 ··········</span><span·class="p"·data-group-id="3100552526-16">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="3100552526-17">[</span><span·class="ss">&#39;aes128-ctr&#39;</span><span·class="p"·data-group-id="3100552526-17">]</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·129,·SHA:·ca8081f327912a76f786f9537fb061979e6e78c18bfa23c35d4fee29168d727d·...·]-12">}</span><span·class="p">,</span><span·class="w">264 ··········</span><span·class="p"·data-group-id="9362808932-16">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="9362808932-17">[</span><span·class="ss">&#39;aes128-ctr&#39;</span><span·class="p"·data-group-id="9362808932-17">]</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·129,·SHA:·085f6be8ece58a6353815760ef0db84c586d38a06815d6c2bdfd0246a7ed64d4·...·]-12">}</span><span·class="p">,</span><span·class="w">
265 ·</span><span·class="p"·data-group-id="3100552526-18">{</span><span·class="ss">mac</span><span·class="p">,</span><span·class="p"·data-group-id="3100552526-19">[</span><span·class="p"·data-group-id="3100552526-20">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·f25ce52688d779dd01d2e215b9be91f9b38a317d2c15514549ef010a13c31059·...·]-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="9362808932-18">{</span><span·class="ss">mac</span><span·class="p">,</span><span·class="p"·data-group-id="9362808932-19">[</span><span·class="p"·data-group-id="9362808932-20">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·0e66f68672c8138169bda549bee75d092e319d548c2a6788d91b2070e367f0a4·...·]-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="3100552526-21">]</span><span·class="p"·data-group-id="3100552526-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="9362808932-21">]</span><span·class="p"·data-group-id="9362808932-20">}</span><span·class="p">,</span><span·class="w">
267 ·······</span><span·class="p"·data-group-id="3100552526-22">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="3100552526-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="9362808932-22">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="9362808932-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="3100552526-23">]</span><span·class="p"·data-group-id="3100552526-22">}</span><span·class="p"·data-group-id="3100552526-19">]</span><span·class="p"·data-group-id="3100552526-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="9362808932-23">]</span><span·class="p"·data-group-id="9362808932-22">}</span><span·class="p"·data-group-id="9362808932-19">]</span><span·class="p"·data-group-id="9362808932-18">}</span><span·class="p">,</span><span·class="w">
269 ·</span><span·class="p"·data-group-id="3100552526-24">{</span><span·class="ss">compression</span><span·class="p">,</span><span·class="p"·data-group-id="3100552526-25">[</span><span·class="p"·data-group-id="3100552526-26">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·class="p"·data-group-id="3100552526-27">[</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="3100552526-27">]</span><span·class="p"·data-group-id="3100552526-26">}</span><span·class="p">,</span><span·class="w"> 
270 ···············</span><span·class="p"·data-group-id="3100552526-28">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="3100552526-29">[</span><span·class="ss">none</span><span·class="p">,</span><span·class="s[·...·truncated·by·diffoscope;·len:·470,·SHA:·73b262be31a84ebcb1ae97bd6735387272f9e09345c63f92bc659a60053ef902·...·]269 ·</span><span·class="p"·data-group-id="9362808932-24">{</span><span·class="ss">compression</span><span·class="p">,</span><span·class="p"·data-group-id="9362808932-25">[</span><span·class="p"·data-group-id="9362808932-26">{</span><span·class="ss">client2serv[·...·truncated·by·diffoscope;·len:·389,·SHA:·e502b12948f56c6795c157537954a63bb1048f69b42fac843c3a446e607e3976·...·]
 270 ···············</span><span·class="p"·data-group-id="9362808932-28">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="9362808932-29">[</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="9362808932-29">]</span><span·class="p"·data-group-id="9362808932-28">}</span><span·class="p"·data-group-id="9362808932-25">]</span><span·class="p"·data-group-id="9362808932-24">}</span><span·class="p"·data-group-id="9362808932-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="1703123625-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="9227041907-1">(</span><span·class="w">
279 ···············</span><span·class="p"·data-group-id="1703123625-2">[</span><span·class="p"·data-group-id="1703123625-3">{</span><span·class="ss">preferred_algorithms</span><span·class="p">,</span><span·class="w">279 ···············</span><span·class="p"·data-group-id="9227041907-2">[</span><span·class="p"·data-group-id="9227041907-3">{</span><span·class="ss">preferred_algorithms</span><span·class="p">,</span><span·class="w">
280 ·····················</span><span·class="p"·data-group-id="1703123625-4">[</span><span·class="p"·data-group-id="1703123625-5">{</span><span·class="ss">cipher</span><span·class="p">,</span><span·class="p"·data-group-id="1703123625-6">[</span><span·class="p"·data-group-id="1703123625-7">{</span><span·class="ss">clie[·...·truncated·by·diffoscope;·len:·337,·SHA:·51d7711ca97dbe62e5ff5bf1e713ede1d87dcf7ac705be796ead3bc46b15dd5b·...·]-5">}</span><span·class="w">280 ·····················</span><span·class="p"·data-group-id="9227041907-4">[</span><span·class="p"·data-group-id="9227041907-5">{</span><span·class="ss">cipher</span><span·class="p">,</span><span·class="p"·data-group-id="9227041907-6">[</span><span·class="p"·data-group-id="9227041907-7">{</span><span·class="ss">clie[·...·truncated·by·diffoscope;·len:·337,·SHA:·af05cde99f2fc430db418ef3d47baa2ce7ee19bad74563542e80b6d7593c5f16·...·]-5">}</span><span·class="w">
281 ·····················</span><span·class="p"·data-group-id="1703123625-4">]</span><span·class="w">281 ·····················</span><span·class="p"·data-group-id="9227041907-4">]</span><span·class="w">
282 ················</span><span·class="p"·data-group-id="1703123625-3">}</span><span·class="w">282 ················</span><span·class="p"·data-group-id="9227041907-3">}</span><span·class="w">
283 ··············</span><span·class="p"·data-group-id="1703123625-2">]</span><span·class="p"·data-group-id="1703123625-1">)</span><span·class="p">.</span><span·class="w">283 ··············</span><span·class="p"·data-group-id="9227041907-2">]</span><span·class="p"·data-group-id="9227041907-1">)</span><span·class="p">.</span><span·class="w">
284 </span><span·class="p"·data-group-id="1703123625-9">[</span><span·class="p"·data-group-id="1703123625-10">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="p"·data-group-id="1703123625-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="9227041907-9">[</span><span·class="p"·data-group-id="9227041907-10">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="p"·data-group-id="9227041907-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="1703123625-11">]</span><span·class="p"·data-group-id="1703123625-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="9227041907-11">]</span><span·class="p"·data-group-id="9227041907-10">}</span><span·class="p">,</span><span·class="w">
291 ·</span><span·class="p"·data-group-id="1703123625-12">{</span><span·class="ss">public_key</span><span·class="p">,</span><span·class="p"·data-group-id="1703123625-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="9227041907-12">{</span><span·class="ss">public_key</span><span·class="p">,</span><span·class="p"·data-group-id="9227041907-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="1703123625-13">]</span><span·class="p"·data-group-id="1703123625-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="9227041907-13">]</span><span·class="p"·data-group-id="9227041907-12">}</span><span·class="p">,</span><span·class="w">
294 ·</span><span·class="p"·data-group-id="1703123625-14">{</span><span·class="ss">cipher</span><span·class="p">,</span><span·class="p"·data-group-id="1703123625-15">[</span><span·class="p"·data-group-id="1703123625-16">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·clas[·...·truncated·by·diffoscope;·len:·183,·SHA:·f6475b81887f3ddfdf031985e39347c269b59ffec3ac757912f14a28ce205825·...·]-16">}</span><span·class="p">,</span><span·class="w">294 ·</span><span·class="p"·data-group-id="9227041907-14">{</span><span·class="ss">cipher</span><span·class="p">,</span><span·class="p"·data-group-id="9227041907-15">[</span><span·class="p"·data-group-id="9227041907-16">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·clas[·...·truncated·by·diffoscope;·len:·183,·SHA:·e214f7de3b59ca2cd1b3c5b3e787243f8ed3c60d0886a429b07964456603a227·...·]-16">}</span><span·class="p">,</span><span·class="w">
295 ··········</span><span·class="p"·data-group-id="1703123625-18">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="1703123625-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="9227041907-18">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="9227041907-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="1703123625-19">]</span><span·class="p"·data-group-id="1703123625-18">}</span><span·class="p"·data-group-id="1703123625-15">]</span><span·class="p"·data-group-id="1703123625-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="9227041907-19">]</span><span·class="p"·data-group-id="9227041907-18">}</span><span·class="p"·data-group-id="9227041907-15">]</span><span·class="p"·data-group-id="9227041907-14">}</span><span·class="p">,</span><span·class="w">
298 ·</span><span·class="p"·data-group-id="1703123625-20">{</span><span·class="ss">mac</span><span·class="p">,</span><span·class="p"·data-group-id="1703123625-21">[</span><span·class="p"·data-group-id="1703123625-22">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·0ae968226118166e59af840a4e2d9facf727fe9a5332892afde95c322bec6ffb·...·]-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="9227041907-20">{</span><span·class="ss">mac</span><span·class="p">,</span><span·class="p"·data-group-id="9227041907-21">[</span><span·class="p"·data-group-id="9227041907-22">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·49f1f5776ff9671fc5ed9faca374bb3c97c6e36aabb4d7f20f6e2b357ebc7113·...·]-23">[</span><span·class="ss">&#39;hmac-sha2-256&#39;</span><span·class="p">,</span><span·class="ss">&#39;hmac-sha2-512&#39;</span><span·class="p">,</span><span·class="w">
Max diff block lines reached; 68817/127317 bytes (54.05%) of diff not shown.
11.2 KB
./usr/share/doc/erlang-doc/html/lib/ssh-5.2.10/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="8735781960-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:·94,·SHA:·b7b2fea1412571ffabcd1a031a02f1a315d362cf8a3c5919691307b5ae189c5d·...·]0-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="9572642770-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:·94,·SHA:·7e7e92633705a920434d71fa3c9661368e7f46e8b3a33ec659a4821631a439f2·...·]0-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="8735781960-2">(</span><span·class="p"·data-group-id="8735781960-3">{</span><span·class="n">User</span><span·class="p">,</span><span·class="n">Password</span><span·class="p"·data-group-id="8735781960-3">}</span><span·class="p">,</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·184,·SHA:·cd2e33e778f1eba309dcd7fac52980df3874884a657a7bdc1087aea86238a344·...·]0-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="9572642770-2">(</span><span·class="p"·data-group-id="9572642770-3">{</span><span·class="n">User</span><span·class="p">,</span><span·class="n">Password</span><span·class="p"·data-group-id="9572642770-3">}</span><span·class="p">,</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·184,·SHA:·d77709ddef3a153b5808d02170ed60136bd44babcecf860a16c1f3ae9e10b5ad·...·]0-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="8735781960-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="8735781960-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="9572642770-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="9572642770-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="8735781960-6">(</span><span·class="mi">1000</span><span·class="p"·data-group-id="8735781960-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="9572642770-6">(</span><span·class="mi">1000</span><span·class="p"·data-group-id="9572642770-6">)</span><span·class="p">,</span><span·class="w">
223 ················</span><span·class="p"·data-group-id="8735781960-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="8735781960-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="9572642770-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="9572642770-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="8735781960-8">(</span><span·class="n">State</span><span·class="p"·data-group-id="8735781960-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="9572642770-8">(</span><span·class="n">State</span><span·class="p"·data-group-id="9572642770-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="8735781960-9">(</span><span·class="n">State</span><span·class="p"·data-group-id="8735781960-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="9572642770-9">(</span><span·class="n">State</span><span·class="p"·data-group-id="9572642770-9">)</span><span·class="p">,</span><span·class="w">
226 ················</span><span·class="p"·data-group-id="8735781960-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="8735781960-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="9572642770-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="9572642770-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="9411704570-1">(</span><span·class="mi">1234</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9411704570-2">[</span><span·class="p"·data-group-id="9411704570-3">{</span><span·class="ss">id_string</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·339,·SHA:·693c1311ab5c8b1e6423477907de23cd467889b0ade8a8126880ab979e3b4c43·...·]-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="2817372946-1">(</span><span·class="mi">1234</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2817372946-2">[</span><span·class="p"·data-group-id="2817372946-3">{</span><span·class="ss">id_string</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·339,·SHA:·748e303ba4e1900017eebf15c5313fbf62362574c44c834dfc168eab0edc2ab6·...·]-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>
626 B
./usr/share/doc/erlang-doc/html/lib/ssh-5.2.10/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-CD892B8D.js"></script>124 <script·src="dist/search_data-71DCECE2.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>
588 KB
./usr/share/doc/erlang-doc/html/lib/ssh-5.2.10/doc/html/ssh.epub
4.57 KB
zipinfo {}
    
Offset 1, 30 lines modifiedOffset 1, 30 lines modified
1 Zip·file·size:·271137·bytes,·number·of·entries:·281 Zip·file·size:·271143·bytes,·number·of·entries:·28
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Apr-18·14:02·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Apr-18·15:31·mimetype
3 ?rw-r--r--··6.1·unx···115973·bx·defN·25-Apr-18·14:02·OEBPS/using_ssh.xhtml3 ?rw-r--r--··6.1·unx···115973·bx·defN·25-Apr-18·15:31·OEBPS/using_ssh.xhtml
4 ?rw-r--r--··6.1·unx······712·bx·defN·25-Apr-18·14:02·OEBPS/title.xhtml4 ?rw-r--r--··6.1·unx······712·bx·defN·25-Apr-18·15:31·OEBPS/title.xhtml
5 ?rw-r--r--··6.1·unx·····7854·bx·defN·25-Apr-18·14:02·OEBPS/terminology.xhtml5 ?rw-r--r--··6.1·unx·····7854·bx·defN·25-Apr-18·15:31·OEBPS/terminology.xhtml
6 ?rw-r--r--··6.1·unx·····5271·bx·defN·25-Apr-18·14:02·OEBPS/ssh_sftpd.xhtml6 ?rw-r--r--··6.1·unx·····5271·bx·defN·25-Apr-18·15:31·OEBPS/ssh_sftpd.xhtml
7 ?rw-r--r--··6.1·unx···116567·bx·defN·25-Apr-18·14:02·OEBPS/ssh_sftp.xhtml7 ?rw-r--r--··6.1·unx···116567·bx·defN·25-Apr-18·15:31·OEBPS/ssh_sftp.xhtml
8 ?rw-r--r--··6.1·unx·····6496·bx·defN·25-Apr-18·14:02·OEBPS/ssh_server_key_api.xhtml8 ?rw-r--r--··6.1·unx·····6496·bx·defN·25-Apr-18·15:31·OEBPS/ssh_server_key_api.xhtml
9 ?rw-r--r--··6.1·unx····11495·bx·defN·25-Apr-18·14:02·OEBPS/ssh_server_channel.xhtml9 ?rw-r--r--··6.1·unx····11495·bx·defN·25-Apr-18·15:31·OEBPS/ssh_server_channel.xhtml
10 ?rw-r--r--··6.1·unx····42908·bx·defN·25-Apr-18·14:02·OEBPS/ssh_file.xhtml10 ?rw-r--r--··6.1·unx····42908·bx·defN·25-Apr-18·15:31·OEBPS/ssh_file.xhtml
11 ?rw-r--r--··6.1·unx····71208·bx·defN·25-Apr-18·14:02·OEBPS/ssh_connection.xhtml11 ?rw-r--r--··6.1·unx····71208·bx·defN·25-Apr-18·15:31·OEBPS/ssh_connection.xhtml
12 ?rw-r--r--··6.1·unx····17280·bx·defN·25-Apr-18·14:02·OEBPS/ssh_client_key_api.xhtml12 ?rw-r--r--··6.1·unx····17280·bx·defN·25-Apr-18·15:31·OEBPS/ssh_client_key_api.xhtml
13 ?rw-r--r--··6.1·unx····38220·bx·defN·25-Apr-18·14:02·OEBPS/ssh_client_channel.xhtml13 ?rw-r--r--··6.1·unx····38220·bx·defN·25-Apr-18·15:31·OEBPS/ssh_client_channel.xhtml
14 ?rw-r--r--··6.1·unx····19444·bx·defN·25-Apr-18·14:02·OEBPS/ssh_app.xhtml14 ?rw-r--r--··6.1·unx····19444·bx·defN·25-Apr-18·15:31·OEBPS/ssh_app.xhtml
15 ?rw-r--r--··6.1·unx····18836·bx·defN·25-Apr-18·14:02·OEBPS/ssh_agent.xhtml15 ?rw-r--r--··6.1·unx····18836·bx·defN·25-Apr-18·15:31·OEBPS/ssh_agent.xhtml
16 ?rw-r--r--··6.1·unx···243132·bx·defN·25-Apr-18·14:02·OEBPS/ssh.xhtml16 ?rw-r--r--··6.1·unx···243132·bx·defN·25-Apr-18·15:31·OEBPS/ssh.xhtml
17 ?rw-r--r--··6.1·unx···220559·bx·defN·25-Apr-18·14:02·OEBPS/notes.xhtml17 ?rw-r--r--··6.1·unx···220559·bx·defN·25-Apr-18·15:31·OEBPS/notes.xhtml
18 ?rw-r--r--··6.1·unx·····2044·bx·defN·25-Apr-18·14:02·OEBPS/nav.xhtml18 ?rw-r--r--··6.1·unx·····2044·bx·defN·25-Apr-18·15:31·OEBPS/nav.xhtml
19 ?rw-r--r--··6.1·unx·····8196·bx·defN·25-Apr-18·14:02·OEBPS/introduction.xhtml19 ?rw-r--r--··6.1·unx·····8196·bx·defN·25-Apr-18·15:31·OEBPS/introduction.xhtml
20 ?rw-r--r--··6.1·unx····18131·bx·defN·25-Apr-18·14:02·OEBPS/hardening.xhtml20 ?rw-r--r--··6.1·unx····18131·bx·defN·25-Apr-18·15:31·OEBPS/hardening.xhtml
21 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Apr-18·14:02·OEBPS/dist/epub-erlang-ESPT6BQV.css21 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Apr-18·15:31·OEBPS/dist/epub-erlang-ESPT6BQV.css
22 ?rw-r--r--··6.1·unx······499·bx·defN·25-Apr-18·14:02·OEBPS/dist/epub-LSJCIYTM.js22 ?rw-r--r--··6.1·unx······499·bx·defN·25-Apr-18·15:31·OEBPS/dist/epub-LSJCIYTM.js
23 ?rw-r--r--··6.1·unx·····3898·bx·defN·25-Apr-18·14:02·OEBPS/content.opf23 ?rw-r--r--··6.1·unx·····3898·bx·defN·25-Apr-18·15:31·OEBPS/content.opf
24 ?rw-r--r--··6.1·unx····74881·bx·defN·25-Apr-18·14:02·OEBPS/configure_algos.xhtml24 ?rw-r--r--··6.1·unx····74881·bx·defN·25-Apr-18·15:31·OEBPS/configure_algos.xhtml
25 ?rw-r--r--··6.1·unx····38892·bx·defN·25-Apr-18·14:02·OEBPS/configurations.xhtml25 ?rw-r--r--··6.1·unx····38892·bx·defN·25-Apr-18·15:31·OEBPS/configurations.xhtml
26 ?rw-r--r--··6.1·unx····40281·bx·defN·25-Apr-18·14:02·OEBPS/assets/ssh_timeouts.jpg26 ?rw-r--r--··6.1·unx····40281·bx·defN·25-Apr-18·15:31·OEBPS/assets/ssh_timeouts.jpg
27 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Apr-18·14:02·OEBPS/assets/logo.png27 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Apr-18·15:31·OEBPS/assets/logo.png
28 ?rw-r--r--··6.1·unx······252·bx·defN·25-Apr-18·14:02·META-INF/container.xml28 ?rw-r--r--··6.1·unx······252·bx·defN·25-Apr-18·15:31·META-INF/container.xml
29 ?rw-r--r--··6.1·unx······162·bx·defN·25-Apr-18·14:02·META-INF/com.apple.ibooks.display-options.xml29 ?rw-r--r--··6.1·unx······162·bx·defN·25-Apr-18·15:31·META-INF/com.apple.ibooks.display-options.xml
30 28·files,·1143610·bytes·uncompressed,·266217·bytes·compressed:··76.7%30 28·files,·1143610·bytes·uncompressed,·266223·bytes·compressed:··76.7%
162 KB
zipdetails --redact --scan --utc {}
Max HTML report size reached
370 B
filetype from file(1)
    
Offset 1, 1 lines modifiedOffset 1, 1 lines modified
1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Apr·18·2025·14:02: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,·Apr·18·2025·15:31:48,·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="2619747168-1">{</samp><samp·class="ss">key_cb</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="2619747168-2">{</samp><samp·class="ss">ssh_agent</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·177,·SHA:·0c056006ead2fe47aa0227de489b30bb52b898464e08de540637ede26d649785·...·]-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="2192424054-1">{</samp><samp·class="ss">key_cb</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="2192424054-2">{</samp><samp·class="ss">ssh_agent</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·177,·SHA:·f27e4ded05fbeb92eea365810084c7f7101b46ed80fb7bd59edbc1c1d222e488·...·]-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="8468612995-1">{</samp><samp·class="ss">key_cb</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="8468612995-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:·bec195873106d5fdc8bd779184ea4f3cb3b1070e218c11fe6a123ef556eb5ecf·...·]-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="7959391947-1">{</samp><samp·class="ss">key_cb</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="7959391947-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:·8f386fa0e0b6f8c1f3dbecd2dc6c72633a66cb0494639eab74acf81c2655a7ef·...·]-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.10/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="8426669286-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="6038516094-1">{</span><span·class="ss">preferred_algorithms</span><span·class="p">,</span><span·class="w">
3374 »       ··</span><span·class="p"·data-group-id="8426669286-2">[</span><span·class="p"·data-group-id="8426669286-3">{</span><span·class="ss">public_key</span><span·class="p">,</span><span·class="p"·data-group-id="8426669286-4">[</span><span·class="ss">&#39;ssh-rsa&#39;</span><span·class="p">,</span><span[·...·truncated·by·diffoscope;·len:·130,·SHA:·0c2830ed7546323c080a4adf48c9bf2f52669208574dc24d0aa3b568dab38316·...·]-3">}</span><span·class="p">,</span><span·class="w">3374 »       ··</span><span·class="p"·data-group-id="6038516094-2">[</span><span·class="p"·data-group-id="6038516094-3">{</span><span·class="ss">public_key</span><span·class="p">,</span><span·class="p"·data-group-id="6038516094-4">[</span><span·class="ss">&#39;ssh-rsa&#39;</span><span·class="p">,</span><span[·...·truncated·by·diffoscope;·len:·130,·SHA:·301e537498e272b368aa906584334a5a06812448f2e63bbc4b5e93f0dc9dd4f2·...·]-3">}</span><span·class="p">,</span><span·class="w">
3375 »       ··</span><span·class="p"·data-group-id="8426669286-5">{</span><span·class="ss">cipher</span><span·class="p">,</span><span·class="p"·data-group-id="8426669286-6">[</span><span·class="p"·data-group-id="8426669286-7">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·178,·SHA:·210f62ef0ddfb4ce827bf2ca035724e659685b39e8b9dc4ebfb89ea18c23cd86·...·]-7">}</span><span·class="p">,</span><span·class="w">3375 »       ··</span><span·class="p"·data-group-id="6038516094-5">{</span><span·class="ss">cipher</span><span·class="p">,</span><span·class="p"·data-group-id="6038516094-6">[</span><span·class="p"·data-group-id="6038516094-7">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·178,·SHA:·6cf5a6f4a293485e50ab7e9ccd23a2d893b3dd9583db46ac029f8071d1a80191·...·]-7">}</span><span·class="p">,</span><span·class="w">
3376 ··········</span><span·class="p"·data-group-id="8426669286-9">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="8426669286-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:·bc72a3464a91de9df2d2e3fd0969baf507dd0d9457ec06fa25214070db350005·...·]-5">}</span><span·class="p">,</span><span·class="w">3376 ··········</span><span·class="p"·data-group-id="6038516094-9">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="6038516094-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:·c5d25e7914a4bb1e07a2d2e202e4cfe76578813d0637061bf48a2514576f0366·...·]-5">}</span><span·class="p">,</span><span·class="w">
3377 »       ··</span><span·class="p"·data-group-id="8426669286-11">{</span><span·class="ss">mac</span><span·class="p">,</span><span·class="p"·data-group-id="8426669286-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:·46e7e8b0060b5cd0e1d156d05843311a6eb0908f107013fd94a25f999e599381·...·]-11">}</span><span·class="p">,</span><span·class="w">3377 »       ··</span><span·class="p"·data-group-id="6038516094-11">{</span><span·class="ss">mac</span><span·class="p">,</span><span·class="p"·data-group-id="6038516094-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:·1cfb63041eff42a381763edd3afe8a5ab3664fac4432db2b3fc8c9b4e8ac7091·...·]-11">}</span><span·class="p">,</span><span·class="w">
3378 »       ··</span><span·class="p"·data-group-id="8426669286-13">{</span><span·class="ss">compression</span><span·class="p">,</span><span·class="p"·data-group-id="8426669286-14">[</span><span·class="ss">none</span><span·class="p">,</span><span·class="ss">zlib</span><span·class="p"·data-group-id="842666928[·...·truncated·by·diffoscope;·len:·55,·SHA:·9a598e5971826a5e76936740ca7f5430ddbbc4b5f84b97d5a98209bdad3e4678·...·]-13">}</span><span·class="w">3378 »       ··</span><span·class="p"·data-group-id="6038516094-13">{</span><span·class="ss">compression</span><span·class="p">,</span><span·class="p"·data-group-id="6038516094-14">[</span><span·class="ss">none</span><span·class="p">,</span><span·class="ss">zlib</span><span·class="p"·data-group-id="603851609[·...·truncated·by·diffoscope;·len:·55,·SHA:·af4d028ddace7858186481dbe05218f4438202a48088ad070be8da1915a89dc9·...·]-13">}</span><span·class="w">
3379 »       ··</span><span·class="p"·data-group-id="8426669286-2">]</span><span·class="w">3379 »       ··</span><span·class="p"·data-group-id="6038516094-2">]</span><span·class="w">
3380 »       ··</span><span·class="p"·data-group-id="8426669286-1">}</span></code></pre><p>The·example·specifies·different·algorithms·in·the·two·directions·(client2server3380 »       ··</span><span·class="p"·data-group-id="6038516094-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.6/doc/html/erlang.html#t:string/0">string</a>()·|·[<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:string/0">string</a>()].</pre>5105 ·································StringOrString·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:string/0">string</a>()·|·[<a·href="../../../../erts-15.2.6/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="9273152398-1">(</span><span·class="n">Key</span><span·class="p"·data-group-id="9273152398-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="3371731331-1">(</span><span·class="n">Key</span><span·class="p"·data-group-id="3371731331-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="9273152398-2">(</span><span·class="nb">md5</span><span·class="p">,</span><span·class="n">Key</span><span·class="p"·data-group-id="9273152398-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="3371731331-2">(</span><span·class="nb">md5</span><span·class="p">,</span><span·class="n">Key</span><span·class="p"·data-group-id="3371731331-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="9273152398-3">(</span><span·class="ss">sha</span><span·class="p">,</span><span·class="n">Key</span><span·class="p"·data-group-id="9273152398-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="3371731331-3">(</span><span·class="ss">sha</span><span·class="p">,</span><span·class="n">Key</span><span·class="p"·data-group-id="3371731331-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="9273152398-4">(</span><span·class="ss">sha256</span><span·class="p">,</span><span·class="n">Key</span><span·class="p"·data-group-id="9273152398-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="3371731331-4">(</span><span·class="ss">sha256</span><span·class="p">,</span><span·class="n">Key</span><span·class="p"·data-group-id="3371731331-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="9273152398-5">(</span><span·class="p"·data-group-id="9273152398-6">[</span><span·class="ss">sha</span><span·class="p">,</span><span·class="ss">sha256</span><span·class="p"·data-group-id="9273152398-6">]</span><span·class="p">,</span><span·class="n">Key</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·d99e82145ef2274d0ab3c933ad765259b471df45fa8b5540c9c74ca1bab6332c·...·]-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="3371731331-5">(</span><span·class="p"·data-group-id="3371731331-6">[</span><span·class="ss">sha</span><span·class="p">,</span><span·class="ss">sha256</span><span·class="p"·data-group-id="3371731331-6">]</span><span·class="p">,</span><span·class="n">Key</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·88fef73e02bf37197937248d3c49d9084226a5a2d89a653da90fbf95d1ede882·...·]-5">)</span><span·class="p">.</span><span·class="w">
5119 ·</span><span·class="p"·data-group-id="9273152398-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="3371731331-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="9273152398-7">]</span></code></pre>5120 ··</span><span·class="s">&quot;SHA256:aZGXhabfbf4oxglxltItWeHU7ub3Dc31NcNw2cMJePQ&quot;</span><span·class="p"·data-group-id="3371731331-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.10/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="9269639383-1">{</span><span·class="ss">key_cb</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9269639383-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:·3c8ed827e722325371bc2a99ef97c10ccec9bd22b361ed0ac48ff8f75d735ba4·...·]-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="0380408698-1">{</span><span·class="ss">key_cb</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0380408698-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:·a3f7b373e2e8f1752c1669f1da77c0f5d04a01b0338733b24ab994105e7537aa·...·]-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="8691957721-1">{</span><span·class="ss">key_cb</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8691957721-2">{</span><span·class="ss">ssh_agent</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·400,·SHA:·d71882e9e90d72e6d115aa209c2e7aca7a72fafb792833c1e6f0f2eb08821abc·...·]-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="9807930415-1">{</span><span·class="ss">key_cb</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9807930415-2">{</span><span·class="ss">ssh_agent</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·400,·SHA:·e5f74ff84e6aed03ca0f4b54ad1b4be7213589ac59adcab204b55eb04c5449e5·...·]-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.10/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="8101215955-1">(</span><span·class="p"·data-group-id="8101215955-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="8481801617-1">(</span><span·class="p"·data-group-id="8481801617-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="8101215955-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="8101215955-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class=[·...·truncated·by·diffoscope;·len:·212,·SHA:·9487559f41d25c72deac0b20666a70a0b75ea66037c899363fff58f4fb5284f8·...·]-3">)</span><span·class="p">.</span><span·class="w">145 2&gt;·</span><span·class="p"·data-group-id="8481801617-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="8481801617-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class=[·...·truncated·by·diffoscope;·len:·212,·SHA:·ea52a4e8956a797acd78098c7053369f12e32667f36750066a3c0effc5fb6b74·...·]-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="8781290984-1">(</span><span·class="p"·data-group-id="8781290984-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="0600437334-1">(</span><span·class="p"·data-group-id="0600437334-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="8781290984-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="8781290984-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·480,·SHA:·de1e9d84d430c8b587cdbe550c848625857a5c006dace6cc4752c8864cf30ca5·...·]4-5">}</span><span·class="p">,</span><span·class="w">166 2&gt;·</span><span·class="p"·data-group-id="0600437334-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="0600437334-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·480,·SHA:·6631cd0620ffc8fe9f31dec0fffbf73e480eb1351ef597bab5be4c32f31de23a·...·]4-5">}</span><span·class="p">,</span><span·class="w">
167 ··································</span><span·class="p"·data-group-id="8781290984-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="8781290984-6">}</span><span·class="p"·data-group-id="8781290984-4"[·...·truncated·by·diffoscope;·len:·49,·SHA:·6b59fb71f28eaa38573a4863eca8e20f536990192968584ab18bab278b301f2e·...·]4-3">)</span><span·class="p">.</span><span·class="w">167 ··································</span><span·class="p"·data-group-id="0600437334-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="0600437334-6">}</span><span·class="p"·data-group-id="0600437334-4"[·...·truncated·by·diffoscope;·len:·49,·SHA:·8591a2e3726bf5cfc74e446932b1fd09fd8b3c7d538a3f1751bdc4ddce2d8e89·...·]4-3">)</span><span·class="p">.</span><span·class="w">
168 </span><span·class="p"·data-group-id="8781290984-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="8781290984-7">}</span><span·class="w">168 </span><span·class="p"·data-group-id="0600437334-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="0600437334-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="1448391801-1">(</span><span·class="n">Sshd</span><span·class="p"·data-group-id="1448391801-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="6123626458-1">(</span><span·class="n">Sshd</span><span·class="p"·data-group-id="6123626458-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="0552858683-1">(</span><span·class="n">Sshd</span><span·class="p"·data-group-id="0552858683-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="6302807945-1">(</span><span·class="n">Sshd</span><span·class="p"·data-group-id="6302807945-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="6280998766-1">(</span><span·class="p"·data-group-id="6280998766-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="9093879470-1">(</span><span·class="p"·data-group-id="9093879470-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="6280998766-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="6280998766-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·455,·SHA:·1cb277143bc0ca3da3dd4524faf7e50a3638fc45eae5da3b3fe8ee5372c07fac·...·]-3">)</span><span·class="p">.</span><span·class="w">200 2&gt;·</span><span·class="p"·data-group-id="9093879470-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="9093879470-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·455,·SHA:·ab43b30dac2d6284e86882fb8be4c4a5efb5db137e4b794a762199c89b2ff1c7·...·]-3">)</span><span·class="p">.</span><span·class="w">
201 </span><span·class="p"·data-group-id="6280998766-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="6280998766-5">}</span><span·class="gp·unselectable">201 </span><span·class="p"·data-group-id="9093879470-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="9093879470-5">}</span><span·class="gp·unselectable">
202 3&gt;·</span><span·class="p"·data-group-id="6280998766-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="6280998766-6">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·308,·SHA:·3fe881212ec41affd3191f3018ee7f686ef09a0132e4fa10ac9d6d432464e60f·...·]-7">)</span><span·class="p">.</span><span·class="w">202 3&gt;·</span><span·class="p"·data-group-id="9093879470-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="9093879470-6">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·308,·SHA:·0c4af6e216974199fea1e7dd05da9e61fe47d63555a53de2ede68074bf94707b·...·]-7">)</span><span·class="p">.</span><span·class="w">
203 </span><span·class="p"·data-group-id="6280998766-8">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="6280998766-8">}</span><span·class="gp·unselectable">203 </span><span·class="p"·data-group-id="9093879470-8">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="9093879470-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="6280998766-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:·0581c2a321e1c9f9346e4f3a0874a9db60b438d3d55bc910fc874f57452a36dc·...·]-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="9093879470-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:·a4d9f7d59899238faeb5bf6e218276dcab1e4d9e69a6d817f8e8d85bdabc61b6·...·]-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="6280998766-10">(</span><span·class="p"·data-group-id="6280998766-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="9093879470-10">(</span><span·class="p"·data-group-id="9093879470-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="6280998766-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:·288537330a2cfb9a9601146c65ecffd5a5be77318e859f731e5f6ecb0d2551d4·...·]-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="9093879470-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:·a80ef51b25805634bb5da8924e79b6689448b87c7311c8d9c698416d9859c014·...·]-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="6280998766-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:·d8428f87a5e587cd04c8850b85c738b4f9e42cb9d232836eaef6a2f6573f0806·...·]-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="9093879470-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:·e3b2affa445646fbe39fb08ce78ad9fe6824fcda121ee87899fe920a140bb9b3·...·]-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="6280998766-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:·5681624c2bef86e1f8e1c69a2744711397349c4bc89a0cf8604edd2b0150cde1·...·]-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="9093879470-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:·24bd2dac44495fea014805eae2b15a5d01cfe87bdb610d0e4d2f869068d772e4·...·]-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="6280998766-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:·564d755b2d00a6449e530d8926c6fddc8b2d50a5261a6636ffab3e7c74bc9b7c·...·]-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="9093879470-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:·a847dbbc2b89be687ad4dac83d3707e38c474d013a99b41ea418f31258dacc20·...·]-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="6280998766-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="6280998766-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="9093879470-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="9093879470-20">)</span><span·class="p">.</span><span·class="w">
212 </span><span·class="p"·data-group-id="6280998766-21">{</span><span·class="ss">channels</span><span·class="p">,</span><span·class="p"·data-group-id="6280998766-22">[</span><span·class="p"·data-group-id="6280998766-22">]</span><span·class="p"·data-group-id="6280998766-21">}</span><span·class="w">212 </span><span·class="p"·data-group-id="9093879470-21">{</span><span·class="ss">channels</span><span·class="p">,</span><span·class="p"·data-group-id="9093879470-22">[</span><span·class="p"·data-group-id="9093879470-22">]</span><span·class="p"·data-group-id="9093879470-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="7506549141-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="7506549141-2">{</span><span·class="ss">da[·...·truncated·by·diffoscope;·len:·335,·SHA:·fa497873ec5a0b07b27d057b708a4d681a2d1a4c5ba2db719592384612a27ee5·...·]-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="2934665514-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="2934665514-2">{</span><span·class="ss">da[·...·truncated·by·diffoscope;·len:·335,·SHA:·4eb8bb5847d9cfebdcc72e8f480618212da349257fd19ccbf50257d5e6bcf535·...·]-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="7506549141-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Result</span><span·class="p"·data-group-id="7506549141-3">}</span><span·class="gp·unselectable">217 5&gt;·</span><span·class="w">········</span><span·class="p"·data-group-id="2934665514-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Result</span><span·class="p"·data-group-id="2934665514-3">}</span><span·class="gp·unselectable">
218 5&gt;·</span><span·class="w">····</span><span·class="p"·data-group-id="7506549141-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="7506549141-5">{</span><span·class="ss">da[·...·truncated·by·diffoscope;·len:·335,·SHA:·832b4693a17accc75543e3a41253b33e04c173b0c1f839d59fb27b0d613ec0f1·...·]-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="2934665514-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="2934665514-5">{</span><span·class="ss">da[·...·truncated·by·diffoscope;·len:·335,·SHA:·3fbec19a05607d104987f19cee100dd5cbe3e21bd914c674dc6124691bd34cc6·...·]-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="7506549141-6">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="n">Result</span><span·class="p"·data-group-id="7506549141-6">}</span><span·class="gp·unselectable">219 5&gt;·</span><span·class="w">········</span><span·class="p"·data-group-id="2934665514-6">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="n">Result</span><span·class="p"·data-group-id="2934665514-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="7506549141-7">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="7506549141-8">&lt;&lt;</span><span·class="s">&quot;/home/otptest\n&quot;</span><span·class="p"·data-group-id="7506549141-8">&gt;&gt;</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·943e948b5171a74dd3134e5ff893338a2d9b39fd170d7bd88852b21560961e7a·...·]-7">}</span><span·class="w">221 </span><span·class="p"·data-group-id="2934665514-7">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2934665514-8">&lt;&lt;</span><span·class="s">&quot;/home/otptest\n&quot;</span><span·class="p"·data-group-id="2934665514-8">&gt;&gt;</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·ef604868670cc3859d41d0a6dadc0ce312d2c587c83c81879c4865f80bcf746b·...·]-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="9327384157-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="9327384157-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·310,·SHA:·bfb63f729d60017a392fca1b5300fb768cb7f087243faadd72d2dc0abbf7cc09·...·]7-2">)</span><span·class="p">.</span><span·class="w">225 7&gt;·</span><span·class="p"·data-group-id="7561049187-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="7561049187-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·310,·SHA:·6484c8e520a6f6f7f0feac6f847560ab0891d450bd49c7c4b5342aa4c8ef3a92·...·]7-2">)</span><span·class="p">.</span><span·class="w">
226 </span><span·class="p"·data-group-id="9327384157-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="9327384157-3">}</span><span·class="w">226 </span><span·class="p"·data-group-id="7561049187-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="7561049187-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="8263746244-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="8263746244-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="1250480267-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="1250480267-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="6210145390-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="6210145390-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·457,·SHA:·33efd77d54c3e53385b8fb24ed895cf9e91e844828a7f3c83549363e8063581f·...·]-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="3325127612-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="3325127612-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·457,·SHA:·f88c3a5e319facfff15f4cbce5b34125e6f6b6de73f211b7c04aebf269e13559·...·]-2">)</span><span·class="p">.</span><span·class="w">
246 </span><span·class="p"·data-group-id="6210145390-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="6210145390-4">}</span><span·class="gp·unselectable">246 </span><span·class="p"·data-group-id="3325127612-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="3325127612-4">}</span><span·class="gp·unselectable">
247 2&gt;·</span><span·class="p"·data-group-id="6210145390-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="6210145390-5">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·308,·SHA:·3dd6d1b09d557b752da796ba581b8da66a64f66e9f4e2427b55fad3ed45bdbda·...·]-6">)</span><span·class="p">.</span><span·class="w">247 2&gt;·</span><span·class="p"·data-group-id="3325127612-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="3325127612-5">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·308,·SHA:·99337a3097d00a4cad277a8074b0648589ff909e2f43f0c8d04509ee7130147a·...·]-6">)</span><span·class="p">.</span><span·class="w">
248 </span><span·class="p"·data-group-id="6210145390-7">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="6210145390-7">}</span><span·class="gp·unselectable">248 </span><span·class="p"·data-group-id="3325127612-7">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="3325127612-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="6210145390-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="3325127612-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="6210145390-8">)</span><span·class="p">.</span><span·class="w">251 ·································</span><span·class="ss">infinity</span><span·class="p"·data-group-id="3325127612-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="6210145390-9">(</span><span·class="p"·data-group-id="6210145390-9">)</span><span·class="p">.</span><span·class="w">253 4&gt;·</span><span·class="nf">flush</span><span·class="p"·data-group-id="3325127612-9">(</span><span·class="p"·data-group-id="3325127612-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="6210145390-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:·0dffa7067c3444a11163400658899a29cd90beee420bf401501bd1fdd3057bca·...·]-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="3325127612-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:·b5ab3e0c8b8cbd4a3193ca6b60e785a8dcb1369e84be4acb32d62aaf11017b8d·...·]-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="6210145390-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:·38846ef88f40a695d51a4a6717e2d3f0ae4a1a9be294b3c97336c25ef37db017·...·]-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="3325127612-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:·c89320415b74226e25797dacf6483b16c6f65d09ada41fe90eb9d34a413a7307·...·]-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="6210145390-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:·d5098e118a1f4e36f86b047b4ec34ba98dde6ae115a202044628d6ce135c7036·...·]-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="3325127612-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:·5e2b1c6f90c6d191905edb9e1174000ecf2621514fdcbc2680c3f1f0d0840a28·...·]-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="6210145390-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:·caada49f7089d1c78347d7fe968883708534b92a25c15cce32e4a8966edca72c·...·]-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="3325127612-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:·69ccb49737102cfcf19166270e53d4c0c4305c6a6cc9c79330b37d84e39ccf0b·...·]-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.
620 B
./usr/share/doc/erlang-doc/html/lib/ssl-11.2.12/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-2827F83F.js21 dist/search_data-47476728.js
22 dist/sidebar_items-2B88611C.js22 dist/sidebar_items-2B88611C.js
23 index.html23 index.html
24 notes.html24 notes.html
25 search.html25 search.html
26 ssl.html26 ssl.html
27 ssl_app.html27 ssl_app.html
28 ssl_crl_cache.html28 ssl_crl_cache.html
628 B
./usr/share/doc/erlang-doc/html/lib/ssl-11.2.12/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-2827F83F.js"></script>124 <script·src="dist/search_data-47476728.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>
605 KB
./usr/share/doc/erlang-doc/html/lib/ssl-11.2.12/doc/html/ssl.epub
3.2 KB
zipinfo {}
    
Offset 1, 21 lines modifiedOffset 1, 21 lines modified
1 Zip·file·size:·208029·bytes,·number·of·entries:·191 Zip·file·size:·208025·bytes,·number·of·entries:·19
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Apr-18·14:02·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Apr-18·15:29·mimetype
3 ?rw-r--r--··6.1·unx···170154·bx·defN·25-Apr-18·14:02·OEBPS/using_ssl.xhtml3 ?rw-r--r--··6.1·unx···170154·bx·defN·25-Apr-18·15:29·OEBPS/using_ssl.xhtml
4 ?rw-r--r--··6.1·unx······714·bx·defN·25-Apr-18·14:02·OEBPS/title.xhtml4 ?rw-r--r--··6.1·unx······714·bx·defN·25-Apr-18·15:30·OEBPS/title.xhtml
5 ?rw-r--r--··6.1·unx····72662·bx·defN·25-Apr-18·14:02·OEBPS/standards_compliance.xhtml5 ?rw-r--r--··6.1·unx····72662·bx·defN·25-Apr-18·15:30·OEBPS/standards_compliance.xhtml
6 ?rw-r--r--··6.1·unx····19958·bx·defN·25-Apr-18·14:02·OEBPS/ssl_session_cache_api.xhtml6 ?rw-r--r--··6.1·unx····19958·bx·defN·25-Apr-18·15:30·OEBPS/ssl_session_cache_api.xhtml
7 ?rw-r--r--··6.1·unx·····8193·bx·defN·25-Apr-18·14:02·OEBPS/ssl_protocol.xhtml7 ?rw-r--r--··6.1·unx·····8193·bx·defN·25-Apr-18·15:30·OEBPS/ssl_protocol.xhtml
8 ?rw-r--r--··6.1·unx····24575·bx·defN·25-Apr-18·14:02·OEBPS/ssl_distribution.xhtml8 ?rw-r--r--··6.1·unx····24575·bx·defN·25-Apr-18·15:30·OEBPS/ssl_distribution.xhtml
9 ?rw-r--r--··6.1·unx····15731·bx·defN·25-Apr-18·14:02·OEBPS/ssl_crl_cache_api.xhtml9 ?rw-r--r--··6.1·unx····15731·bx·defN·25-Apr-18·15:30·OEBPS/ssl_crl_cache_api.xhtml
10 ?rw-r--r--··6.1·unx·····6973·bx·defN·25-Apr-18·14:02·OEBPS/ssl_crl_cache.xhtml10 ?rw-r--r--··6.1·unx·····6973·bx·defN·25-Apr-18·15:30·OEBPS/ssl_crl_cache.xhtml
11 ?rw-r--r--··6.1·unx····11324·bx·defN·25-Apr-18·14:02·OEBPS/ssl_app.xhtml11 ?rw-r--r--··6.1·unx····11324·bx·defN·25-Apr-18·15:30·OEBPS/ssl_app.xhtml
12 ?rw-r--r--··6.1·unx···307887·bx·defN·25-Apr-18·14:02·OEBPS/ssl.xhtml12 ?rw-r--r--··6.1·unx···307887·bx·defN·25-Apr-18·15:30·OEBPS/ssl.xhtml
13 ?rw-r--r--··6.1·unx···243974·bx·defN·25-Apr-18·14:02·OEBPS/notes.xhtml13 ?rw-r--r--··6.1·unx···243974·bx·defN·25-Apr-18·15:30·OEBPS/notes.xhtml
14 ?rw-r--r--··6.1·unx·····1570·bx·defN·25-Apr-18·14:02·OEBPS/nav.xhtml14 ?rw-r--r--··6.1·unx·····1570·bx·defN·25-Apr-18·15:30·OEBPS/nav.xhtml
15 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Apr-18·14:02·OEBPS/dist/epub-erlang-ESPT6BQV.css15 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Apr-18·15:30·OEBPS/dist/epub-erlang-ESPT6BQV.css
16 ?rw-r--r--··6.1·unx······499·bx·defN·25-Apr-18·14:02·OEBPS/dist/epub-LSJCIYTM.js16 ?rw-r--r--··6.1·unx······499·bx·defN·25-Apr-18·15:30·OEBPS/dist/epub-LSJCIYTM.js
17 ?rw-r--r--··6.1·unx·····2609·bx·defN·25-Apr-18·14:02·OEBPS/content.opf17 ?rw-r--r--··6.1·unx·····2609·bx·defN·25-Apr-18·15:30·OEBPS/content.opf
18 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Apr-18·14:02·OEBPS/assets/logo.png18 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Apr-18·15:30·OEBPS/assets/logo.png
19 ?rw-r--r--··6.1·unx······252·bx·defN·25-Apr-18·14:02·META-INF/container.xml19 ?rw-r--r--··6.1·unx······252·bx·defN·25-Apr-18·15:30·META-INF/container.xml
20 ?rw-r--r--··6.1·unx······162·bx·defN·25-Apr-18·14:02·META-INF/com.apple.ibooks.display-options.xml20 ?rw-r--r--··6.1·unx······162·bx·defN·25-Apr-18·15:30·META-INF/com.apple.ibooks.display-options.xml
21 19·files,·907656·bytes·uncompressed,·204675·bytes·compressed:··77.5%21 19·files,·907656·bytes·uncompressed,·204671·bytes·compressed:··77.5%
109 KB
zipdetails --redact --scan --utc {}
Max HTML report size reached
370 B
filetype from file(1)
    
Offset 1, 1 lines modifiedOffset 1, 1 lines modified
1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Apr·18·2025·14:02: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,·Apr·18·2025·15:29:58,·uncompressed·size·20,·method=store
298 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.12/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="6814473143-1">(</span><span·class="p"·data-group-id="6814473143-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="6814473143-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="6814473143-3">[</span><span·class="p"·data-group-id="6814473143-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="6814473143-4">}</span><span·class="p">,</span><span·class="w"> 
133 ····</span><span·class="p"·data-group-id="6814473143-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="6814473143-6">(</span><span·class="p"·data-group-id="6814473143-6">)</span><span·class="p"·data-group-id="6814473143-5">}</span><span·class="p"·data-group-id="6814473143-3">]</span><span·class="p"·data-group-id="6814473143-2">)</span><span·class="p">.</span><span·class="w"> 
134 </span><span·class="p"·data-group-id="6814473143-7">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="6814473143-8">{</span><span·class="ss">sslsocket</span><span·class="p">,</span><span·class="w">·</span><span·class=[·...·truncated·by·diffoscope;·len:·369,·SHA:·3b51e0076a4bc0e67757a0f31d6f527ef8a2945b2d585b1e42e9f5f611fd7b3d·...·]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:·6c544223190b87fe9725bcf668eb112724c1091264b59ed1405ce14ef0e2fdab·...·]
 133 ····</span><span·class="p"·data-group-id="3423969706-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="3423969706-6">(</span><span·class="p"·data-group-id="3423969706-6">)</span><span·class="p"·data-group-id="3423969706-5">}</span><span·class="p"·data-group-id="3423969706-3">]</span><span·class="p"·data-group-id="3423969706-2">)</span><span·class="p">.</span><span·class="w">
 134 </span><span·class="p"·data-group-id="3423969706-7">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="3423969706-8">{</span><span·class="ss">sslsocket</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3423969706-9">[</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="3423969706-9">]</span><span·class="p"·data-group-id="3423969706-8">}</span><span·class="p"·data-group-id="3423969706-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 2487, 34 lines modifiedOffset 2487, 34 lines modified
2487 from·the·cipher·suite.</p><p>In·TLS-1.2·a·somewhat·more·explicit·negotiation·is·made·possible·using·a·list·of2487 from·the·cipher·suite.</p><p>In·TLS-1.2·a·somewhat·more·explicit·negotiation·is·made·possible·using·a·list·of
2488 <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">signature2488 <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
2489 schemes</a>·that·are·completely·decoupled·from·the2489 schemes</a>·that·are·completely·decoupled·from·the
2490 cipher·suite.</p><p>Signature·algorithms·used·for·certificates·can·be·overridden·by·the2490 cipher·suite.</p><p>Signature·algorithms·used·for·certificates·can·be·overridden·by·the
2491 <a·href="#t:sign_scheme/0">signature·schemes</a>·supplied·by·the2491 <a·href="#t:sign_scheme/0">signature·schemes</a>·supplied·by·the
2492 <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·with2492 <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
2493 <code·class="inline">rsa_pss_schemes</code>·since·ssl-11.0·(Erlang/OTP·25).·<code·class="inline">pss_pss</code>·is2493 <code·class="inline">rsa_pss_schemes</code>·since·ssl-11.0·(Erlang/OTP·25).·<code·class="inline">pss_pss</code>·is
2494 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="2258206707-1">[</span><span·class="w">2494 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="9362786303-1">[</span><span·class="w">
2495 </span><span·class="p"·data-group-id="2258206707-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="2258206707-2">}</span><span·class="p">,</span><span·class="w">2495 </span><span·class="p"·data-group-id="9362786303-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="9362786303-2">}</span><span·class="p">,</span><span·class="w">
2496 </span><span·class="p"·data-group-id="2258206707-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="2258206707-3">}</span><span·class="p">,</span><span·class="w">2496 </span><span·class="p"·data-group-id="9362786303-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="9362786303-3">}</span><span·class="p">,</span><span·class="w">
2497 </span><span·class="p"·data-group-id="2258206707-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="2258206707-4">}</span><span·class="p">,</span><span·class="w">2497 </span><span·class="p"·data-group-id="9362786303-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="9362786303-4">}</span><span·class="p">,</span><span·class="w">
2498 </span><span·class="p"·data-group-id="2258206707-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="2258206707-5">}</span><span·class="p">,</span><span·class="w">2498 </span><span·class="p"·data-group-id="9362786303-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="9362786303-5">}</span><span·class="p">,</span><span·class="w">
2499 </span><span·class="p"·data-group-id="2258206707-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="2258206707-6">}</span><span·class="p">,</span><span·class="w">2499 </span><span·class="p"·data-group-id="9362786303-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="9362786303-6">}</span><span·class="p">,</span><span·class="w">
2500 </span><span·class="p"·data-group-id="2258206707-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="2258206707-7">}</span><span·class="w">2500 </span><span·class="p"·data-group-id="9362786303-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="9362786303-7">}</span><span·class="w">
2501 </span><span·class="p"·data-group-id="2258206707-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·in2501 </span><span·class="p"·data-group-id="9362786303-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
2502 ssl-8.0·(Erlang/OTP·22).</li><li>Support·for·<code·class="inline">{sha,·_}</code>·(SHA1)·and·<code·class="inline">{sha224,·_}</code>·was·removed2502 ssl-8.0·(Erlang/OTP·22).</li><li>Support·for·<code·class="inline">{sha,·_}</code>·(SHA1)·and·<code·class="inline">{sha224,·_}</code>·was·removed
2503 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="8427440785-1">[</span><span·class="ss">rsa_pss_pss_sha512</span><span·class="p">,</span><span·class="w">2503 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="6713314198-1">[</span><span·class="ss">rsa_pss_pss_sha512</span><span·class="p">,</span><span·class="w">
2504 </span><span·class="ss">rsa_pss_pss_sha384</span><span·class="p">,</span><span·class="w">2504 </span><span·class="ss">rsa_pss_pss_sha384</span><span·class="p">,</span><span·class="w">
2505 </span><span·class="ss">rsa_pss_pss_sha256</span><span·class="p">,</span><span·class="w">2505 </span><span·class="ss">rsa_pss_pss_sha256</span><span·class="p">,</span><span·class="w">
2506 </span><span·class="ss">rsa_pss_rsae_sha512</span><span·class="p">,</span><span·class="w">2506 </span><span·class="ss">rsa_pss_rsae_sha512</span><span·class="p">,</span><span·class="w">
2507 </span><span·class="ss">rsa_pss_rsae_sha384</span><span·class="p">,</span><span·class="w">2507 </span><span·class="ss">rsa_pss_rsae_sha384</span><span·class="p">,</span><span·class="w">
2508 </span><span·class="ss">rsa_pss_rsae_sha256</span><span·class="p"·data-group-id="8427440785-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="4759363487-1">[</span><span·class="w">2508 </span><span·class="ss">rsa_pss_rsae_sha256</span><span·class="p"·data-group-id="6713314198-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="7124013777-1">[</span><span·class="w">
2509 </span><span·class="c1">%%·Legacy·algorithms·only·applicable·to·certificate·signatures</span><span·class="w">2509 </span><span·class="c1">%%·Legacy·algorithms·only·applicable·to·certificate·signatures</span><span·class="w">
2510 </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">2510 </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">
2511 </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">2511 </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">
2512 </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">2512 </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">
2513 </span><span·class="p"·data-group-id="4759363487-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">[2513 </span><span·class="p"·data-group-id="7124013777-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">[
2514 %%·EDDSA2514 %%·EDDSA
2515 eddsa_ed25519,2515 eddsa_ed25519,
2516 eddsa_ed4482516 eddsa_ed448
  
2517 %%·ECDSA2517 %%·ECDSA
2518 ecdsa_secp521r1_sha512,2518 ecdsa_secp521r1_sha512,
2519 ecdsa_secp384r1_sha384,2519 ecdsa_secp384r1_sha384,
Offset 2592, 16 lines modifiedOffset 2592, 16 lines modified
  
2592 ······<div·class="specs">2592 ······<div·class="specs">
  
2593 ··········<pre·translate="no"><span·class="attribute">-type</span>·anchor_fun()·::·fun().</pre>2593 ··········<pre·translate="no"><span·class="attribute">-type</span>·anchor_fun()·::·fun().</pre>
  
2594 ······</div>2594 ······</div>
  
2595 <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="9359883802-1">(</span><span·class="n">Chain</span><span·class="p">:</span><span·class="p">:</span><span·class="p"·data-group-id="9359883802-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:·7ec18f62a64bb076e77d80eb1881d8c6eae9303713f3a7759ac969943930753f·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">2595 <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="3412035938-1">(</span><span·class="n">Chain</span><span·class="p">:</span><span·class="p">:</span><span·class="p"·data-group-id="3412035938-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:·5d245e110e1cbb0e906f859c071207dae41d58b8b767e919698d348896945e2b·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
2596 ······</span><span·class="p"·data-group-id="9359883802-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:·011daaad364567cc6f2c1a25a72f5a0cff14cc1551c47ff56edabba6d1ae48e2·...·]-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·CA2596 ······</span><span·class="p"·data-group-id="3412035938-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:·af76c2ad264965ea44d436bade6f45dd35646b428fa6be80f076fc47ed49daf5·...·]-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
2597 as·the·trusted·anchor·and·verifies·the·rest·of·the·chain.</p>2597 as·the·trusted·anchor·and·verifies·the·rest·of·the·chain.</p>
2598 ··</section>2598 ··</section>
2599 </section>2599 </section>
2600 <section·class="detail"·id="t:cert_key_conf/0">2600 <section·class="detail"·id="t:cert_key_conf/0">
  
2601 ··<div·class="detail-header">2601 ··<div·class="detail-header">
2602 ····<a·href="#t:cert_key_conf/0"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·type">2602 ····<a·href="#t:cert_key_conf/0"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·type">
Offset 3023, 15 lines modifiedOffset 3023, 15 lines modified
3023 <a·href="#connect/3">connect/3,4</a>·unless·it·is·of·type·<a·href="../../../../lib/kernel-10.2.6/doc/html/inet.html#t:ip_address/0"><code·class="inline">inet:ip_address()</code></a>.3023 <a·href="#connect/3">connect/3,4</a>·unless·it·is·of·type·<a·href="../../../../lib/kernel-10.2.6/doc/html/inet.html#t:ip_address/0"><code·class="inline">inet:ip_address()</code></a>.
3024 The·hostname·will·also·be·used·in·the·hostname·verification·of·the·peer3024 The·hostname·will·also·be·used·in·the·hostname·verification·of·the·peer
3025 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>.3025 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>.
3026 The·special·value·<code·class="inline">disable</code>·prevents·the·Server·Name·Indication·extension·from3026 The·special·value·<code·class="inline">disable</code>·prevents·the·Server·Name·Indication·extension·from
3027 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·various3027 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
3028 protocols·that·use·TLS,·such·as·HTTP·or·LDAP,·may·require·different·approaches.·For3028 protocols·that·use·TLS,·such·as·HTTP·or·LDAP,·may·require·different·approaches.·For
3029 example,·here·is·how·to·use·standard·hostname·checking·for·HTTPS·implemented·in3029 example,·here·is·how·to·use·standard·hostname·checking·for·HTTPS·implemented·in
3030 <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="3235597996-1">{</span><span·class="ss">customize_hostname_check</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3235597996-2">[</span><span·class="p"·data-group-id="3235597996-3">{</span><span·class="ss">match_fun</span[·...·truncated·by·diffoscope;·len:·443,·SHA:·947425a8d5179436d5462b130d878355be388a71519936bcf75aa82f40313cd8·...·]-1">}</span></code></pre><p>For·futher·description·of·the·customize·options,·see3030 <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="7123607137-1">{</span><span·class="ss">customize_hostname_check</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7123607137-2">[</span><span·class="p"·data-group-id="7123607137-3">{</span><span·class="ss">match_fun</span[·...·truncated·by·diffoscope;·len:·443,·SHA:·773f44c4c922d4c814afcaf8217a255eb70589a90c01dfd2c227a8b92bb3845c·...·]-1">}</span></code></pre><p>For·futher·description·of·the·customize·options,·see
3031 <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·authorities3031 <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
3032 extension·in·the·TLS-1.3·client·hello.·The·default·is·<code·class="inline">false</code>.·Note3032 extension·in·the·TLS-1.3·client·hello.·The·default·is·<code·class="inline">false</code>.·Note
3033 that·setting·<code·class="inline">UseCertAuth</code>·to·<code·class="inline">true</code>·can·result·in·a·significant3033 that·setting·<code·class="inline">UseCertAuth</code>·to·<code·class="inline">true</code>·can·result·in·a·significant
3034 overhead·if·there·exists·many·trusted·CA·certificates.·(Since3034 overhead·if·there·exists·many·trusted·CA·certificates.·(Since
3035 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·be3035 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
3036 enabled,·meaning·that·an·extension·of·type·&quot;status_request&quot;·will·be3036 enabled,·meaning·that·an·extension·of·type·&quot;status_request&quot;·will·be
3037 included·in·the·client·hello·to·indicate·the·desire·to·receive3037 included·in·the·client·hello·to·indicate·the·desire·to·receive
Offset 3161, 25 lines modifiedOffset 3161, 25 lines modified
3161 ··········{early_data,·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:binary/0">binary</a>()}·|3161 ··········{early_data,·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:binary/0">binary</a>()}·|
3162 ··········{middlebox_comp_mode,·MiddleBoxMode·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:boolean/0">boolean</a>()}.</pre>3162 ··········{middlebox_comp_mode,·MiddleBoxMode·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:boolean/0">boolean</a>()}.</pre>
  
3163 ······</div>3163 ······</div>
  
3164 <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>,3164 <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>,
3165 <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·ticket3165 <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
3166 information·to·user·process·in·a·3-tuple:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="9131304223-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="9131304223-2">{</span><span·class="n">SNI<[·...·truncated·by·diffoscope;·len:·181,·SHA:·0adeee8a58deddf5f0aa30989e224eee4d9c4768ad141bdd58a99ebda1e5a18a·...·]-1">}</span></code></pre><p>where·<code·class="inline">SNI</code>·is·the·ServerNameIndication·and·<code·class="inline">TicketData</code>·is·the·extended·ticket3166 information·to·user·process·in·a·3-tuple:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="1358294110-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="1358294110-2">{</span><span·class="n">SNI<[·...·truncated·by·diffoscope;·len:·181,·SHA:·86d2caa5b8a217cb52635de5e7025972a585381d94bd1baf62604b34e3354e8d·...·]-1">}</span></code></pre><p>where·<code·class="inline">SNI</code>·is·the·ServerNameIndication·and·<code·class="inline">TicketData</code>·is·the·extended·ticket
3167 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·and3167 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
3168 tries·to·use·them·when·making·new·TLS·connections·(session·resumption·with3168 tries·to·use·them·when·making·new·TLS·connections·(session·resumption·with
3169 pre-shared·keys).</p><p>Ticket·lifetime,·the·number·of·tickets·sent·by·the·server,·and·the3169 pre-shared·keys).</p><p>Ticket·lifetime,·the·number·of·tickets·sent·by·the·server,·and·the
3170 maximum·number·of·tickets·stored·by·the·server·in·stateful·mode·are·configured3170 maximum·number·of·tickets·stored·by·the·server·in·stateful·mode·are·configured
3171 by·<a·href="ssl_app.html#configuration">application·variables</a>.</p><p>See·also3171 by·<a·href="ssl_app.html#configuration">application·variables</a>.</p><p>See·also
3172 <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·a3172 <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
3173 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·to3173 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
3174 <code·class="inline">manual</code></p><p>This·option·is·supported·by·TLS-1.3.·See·also3174 <code·class="inline">manual</code></p><p>This·option·is·supported·by·TLS-1.3.·See·also
3175 <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·early3175 <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
3176 data,·the·following·tuple·is·sent·to·the·user·process:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="1097131060-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="1097131060-2">{</span><span·class="ss">early_dat[·...·truncated·by·diffoscope;·len:·179,·SHA:·b2363091f63abb7c9701acad7d9defb6d6cb30959f40a62ad98bca60e60feeb8·...·]-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·to3176 data,·the·following·tuple·is·sent·to·the·user·process:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="6252505667-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="6252505667-2">{</span><span·class="ss">early_dat[·...·truncated·by·diffoscope;·len:·179,·SHA:·ed75bae23e8b9c27f214a2f5661e11d13685126f6a57ae536132f66174b01b0e·...·]-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
3177 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.33177 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
3178 connection·is·negotiated.·Implementations·can·increase·the·chance·of3178 connection·is·negotiated.·Implementations·can·increase·the·chance·of
3179 making·connections·through·those·middleboxes·by·adapting·the·TLS-1.33179 making·connections·through·those·middleboxes·by·adapting·the·TLS-1.3
3180 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>3180 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>
3181 ··</section>3181 ··</section>
3182 </section>3182 </section>
  
Offset 3606, 28 lines modifiedOffset 3606, 28 lines modified
3606 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>3606 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>
3607 certificates.·<code·class="inline">rsa_pss_pss</code>·(RSA·certificates·using·Probabilistic·Signature3607 certificates.·<code·class="inline">rsa_pss_pss</code>·(RSA·certificates·using·Probabilistic·Signature
3608 Scheme)·are·supported·in·TLS-1.2·and·TLS-1.3,·but·some·TLS-1.2·implementations3608 Scheme)·are·supported·in·TLS-1.2·and·TLS-1.3,·but·some·TLS-1.2·implementations
3609 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·the3609 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
3610 peer·certificate·in·a·valid·certification·path.·So,·if·depth·is·0·the·PEER·must3610 peer·certificate·in·a·valid·certification·path.·So,·if·depth·is·0·the·PEER·must
3611 be·signed·by·the·trusted·ROOT-CA·directly;·if·1·the·path·can·be·PEER,·CA,3611 be·signed·by·the·trusted·ROOT-CA·directly;·if·1·the·path·can·be·PEER,·CA,
3612 ROOT-CA;·if·2·the·path·can·be·PEER,·CA,·CA,·ROOT-CA,·and·so·on.·The·default3612 ROOT-CA;·if·2·the·path·can·be·PEER,·CA,·CA,·ROOT-CA,·and·so·on.·The·default
3613 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="9748938659-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="97489[·...·truncated·by·diffoscope;·len:·58,·SHA:·b73454cadb66c5a27ad573d3f7c820db6f3e0d5cae506b7012bc2a70f960db79·...·]-2">}</span><span·class="p">,</span><span·class="w">3613 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="4003756696-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="40037[·...·truncated·by·diffoscope;·len:·58,·SHA:·72fb143eff6a33e21d4006745407f64495b2718bd1a82ef2351aed909a51eaa8·...·]-2">}</span><span·class="p">,</span><span·class="w">
3614 ····</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="9748938659-3">(</span><span·class="p"·data-group-id="9748938659-3">)</span><span·class="p"·data-group-id="9748938659-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">3614 ····</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="4003756696-3">(</span><span·class="p"·data-group-id="4003756696-3">)</span><span·class="p"·data-group-id="4003756696-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
3615 ··</span><span·class="p"·data-group-id="9748938659-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:·4eeda6c7a914b40d30b40706968034cb386db85aecb54c9def0cab84a2644347·...·]-4">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">3615 ··</span><span·class="p"·data-group-id="4003756696-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:·92b7f0e4b37aaa3b757dd754fb36f16c22e50a6329f7fc4678b1fb87f4e55af1·...·]-4">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
3616 ··</span><span·class="p"·data-group-id="9748938659-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:·fa1ba3a449b5be3a340967e71e65b64329ebc66375b838a1afa8e18674989e74·...·]-8">}</span><span·class="p">.</span><span·class="w">3616 ··</span><span·class="p"·data-group-id="4003756696-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:·7396e215acc6bdcaba9936e332cd20df2619ac3439d5ba91074fbcaa6711e9c6·...·]-8">}</span><span·class="p">.</span><span·class="w">
  
3617 </span><span·class="nf">fun</span><span·class="p"·data-group-id="9748938659-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="9748[·...·truncated·by·diffoscope;·len:·435,·SHA:·57a3ceee7310b754834c778ae2dabd13ac49c689f477e581107b0159a785fa11·...·]-12">)</span><span·class="p">,</span><span·class="w">3617 </span><span·class="nf">fun</span><span·class="p"·data-group-id="4003756696-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="4003[·...·truncated·by·diffoscope;·len:·435,·SHA:·9a25416f893a5e33c486814a47460b90481ecec5d14ae30b1f941cc24b798390·...·]-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.12/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="5404122332-1">{</span><span·class="ss">release</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5404122332-2">{</span><span·class="s">&quot;OTP··APN·181·01&quot;</span><span·class="p">,</span><span·class="s">&quot;R15A&qu[·...·truncated·by·diffoscope;·len:·319,·SHA:·c2c087401218748b9ed2cb1d428b5e4ba15f3a05f850d1ff475080e78c211147·...·]-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="5263145694-1">{</span><span·class="ss">release</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5263145694-2">{</span><span·class="s">&quot;OTP··APN·181·01&quot;</span><span·class="p">,</span><span·class="s">&quot;R15A&qu[·...·truncated·by·diffoscope;·len:·319,·SHA:·22aa19e413786c36e497302d991f74c211f29bb8631f9349155d0ac2cad695e1·...·]-3">}</span><span·class="p">,</span><span·class="w">
151 ······</span><span·class="p"·data-group-id="5404122332-4">[</span><span·class="p"·data-group-id="5404122332-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="5404122332-5">}</span><span·class="p">,</span><span·class="w">151 ······</span><span·class="p"·data-group-id="5263145694-4">[</span><span·class="p"·data-group-id="5263145694-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="5263145694-5">}</span><span·class="p">,</span><span·class="w">
152 ······</span><span·class="p"·data-group-id="5404122332-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="5404122332-6">}</span><span·class="p">,</span><span·class="w">152 ······</span><span·class="p"·data-group-id="5263145694-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="5263145694-6">}</span><span·class="p">,</span><span·class="w">
153 ······</span><span·class="p"·data-group-id="5404122332-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="5404122332-7">}</span><span·class="p">,</span><span·class="w">153 ······</span><span·class="p"·data-group-id="5263145694-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="5263145694-7">}</span><span·class="p">,</span><span·class="w">
154 ······</span><span·class="p"·data-group-id="5404122332-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="5404122332-8">}</span><span·class="p">,</span><span·class="w">154 ······</span><span·class="p"·data-group-id="5263145694-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="5263145694-8">}</span><span·class="p">,</span><span·class="w">
155 ······</span><span·class="p"·data-group-id="5404122332-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="5404122332-9">}</span><span·class="p">,</span><span·class="w">155 ······</span><span·class="p"·data-group-id="5263145694-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="5263145694-9">}</span><span·class="p">,</span><span·class="w">
156 ······</span><span·class="p"·data-group-id="5404122332-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="5404122332-10">}</span><span·class="w">156 ······</span><span·class="p"·data-group-id="5263145694-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="5263145694-10">}</span><span·class="w">
157 ······</span><span·class="p"·data-group-id="5404122332-4">]</span><span·class="p"·data-group-id="5404122332-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="5263145694-4">]</span><span·class="p"·data-group-id="5263145694-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.2/doc/html/epp.html"><code·class="inline">epp</code></a>.</p></section><section·role="note"·class="admonition·warning"><h4·class="admonition-title·warning">Warning</h4><p>Do·not·tamper·with·the·socket·options·<code·class="inline">list</code>,·<code·class="inline">binary</code>,·<code·class="inline">active</code>,·<code·class="inline">packet</code>,198 of·the·file·can·be·specified·as·defined·by·module·<a·href="../../../../lib/stdlib-6.2.2/doc/html/epp.html"><code·class="inline">epp</code></a>.</p></section><section·role="note"·class="admonition·warning"><h4·class="admonition-title·warning">Warning</h4><p>Do·not·tamper·with·the·socket·options·<code·class="inline">list</code>,·<code·class="inline">binary</code>,·<code·class="inline">active</code>,·<code·class="inline">packet</code>,
199 <code·class="inline">nodelay</code>·and·<code·class="inline">deliver</code>·since·they·are·used·by·the·distribution·protocol·handler199 <code·class="inline">nodelay</code>·and·<code·class="inline">deliver</code>·since·they·are·used·by·the·distribution·protocol·handler
200 itself.·Other·raw·socket·options·such·as·<code·class="inline">packet_size</code>·may·interfere·severely,200 itself.·Other·raw·socket·options·such·as·<code·class="inline">packet_size</code>·may·interfere·severely,
201 so·beware!</p></section><p>For·TLS·to·work,·at·least·a·public·key·and·a·certificate·must·be·specified·for201 so·beware!</p></section><p>For·TLS·to·work,·at·least·a·public·key·and·a·certificate·must·be·specified·for
202 the·server·side·and·the·client·needs·to·specify·CAs·that·it·trusts·(client·certification202 the·server·side·and·the·client·needs·to·specify·CAs·that·it·trusts·(client·certification
203 is·optional·and·requires·more·configuration).</p><p>In·the·following·example·(to·keep·it·simple),·the·PEM·file·<code·class="inline">&quot;/home/me/ssl/erlserver.pem&quot;</code>203 is·optional·and·requires·more·configuration).</p><p>In·the·following·example·(to·keep·it·simple),·the·PEM·file·<code·class="inline">&quot;/home/me/ssl/erlserver.pem&quot;</code>
204 contains·both·the·server·certificate·and·its·private·key·.</p><p>Create·a·file·named·for·example·<code·class="inline">&quot;/home/me/ssl/ssl_test@myhost.conf&quot;</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="8312188154-1">[</span><span·class="p"·data-group-id="8312188154-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="6937056245-1">[</span><span·class="p"·data-group-id="6937056245-2">{</span><span·class="ss">server</span><span·class="p">,</span><span·class="w">
205 ··</span><span·class="p"·data-group-id="8312188154-3">[</span><span·class="p"·data-group-id="8312188154-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="831218815[·...·truncated·by·diffoscope;·len:·107,·SHA:·cd4c91de8620ba3171b0621b86daba3c50ce374f8d1e5182b94704f94c3757b2·...·]-2">}</span><span·class="p">,</span><span·class="w">205 ··</span><span·class="p"·data-group-id="6937056245-3">[</span><span·class="p"·data-group-id="6937056245-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="693705624[·...·truncated·by·diffoscope;·len:·107,·SHA:·69676f078bc97e23eb5faf5ccb7f6cd8fef5a8d2b20b6ba04c989006d69a2583·...·]-2">}</span><span·class="p">,</span><span·class="w">
206 ·</span><span·class="p"·data-group-id="8312188154-5">{</span><span·class="ss">client</span><span·class="p">,</span><span·class="w">206 ·</span><span·class="p"·data-group-id="6937056245-5">{</span><span·class="ss">client</span><span·class="p">,</span><span·class="w">
207 ··</span><span·class="p"·data-group-id="8312188154-6">[</span><span·class="p"·data-group-id="8312188154-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="83[·...·truncated·by·diffoscope;·len:·167,·SHA:·429e4fe53c12006e4d43375b16c5b1aef5ba0c671de6681e4e35c588c567467e·...·]-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="6937056245-6">[</span><span·class="p"·data-group-id="6937056245-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="69[·...·truncated·by·diffoscope;·len:·167,·SHA:·17d380f7cbe5742d75559cbb4952b441a03fc4eff09d2e72edd5adbbebc3925a·...·]-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="1258207782-1">(</span><span·class="n">BEAM</span><span·class="p"·data-group-id="1258207782-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:·1fbcef6012e5b32a6d2c13c7a98b58eb7dcada0f25dd7e9f61ecac86ba5ead62·...·]-2">]</span><span·class="w">277 </span><span·class="n">Erlang</span><span·class="w">·</span><span·class="p"·data-group-id="7549780576-1">(</span><span·class="n">BEAM</span><span·class="p"·data-group-id="7549780576-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:·37d9d94b1ea2fac903a1336eee791890d77c91f8351f748ca8b1377a8c7d2ee2·...·]-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="1258207782-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="1258207782-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="7549780576-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="7549780576-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="1258207782-4">(</span><span·class="p"·data-group-id="1258207782-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="7549780576-4">(</span><span·class="p"·data-group-id="7549780576-4">)</span><span·class="p">.</span><span·class="w">
280 </span><span·class="p"·data-group-id="1258207782-5">[</span><span·class="p"·data-group-id="1258207782-6">{</span><span·class="ss">root</span><span·class="p">,</span><span·class="p"·data-group-id="1258207782-7">[</span><span·class="s">&quot;/usr/local/erlang&quot;</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·70,·SHA:·8e3612676b1e45fa57bf2bc9995f49e3f1dc928878a4db07fb4622838cec2de9·...·]-6">}</span><span·class="p">,</span><span·class="w">280 </span><span·class="p"·data-group-id="7549780576-5">[</span><span·class="p"·data-group-id="7549780576-6">{</span><span·class="ss">root</span><span·class="p">,</span><span·class="p"·data-group-id="7549780576-7">[</span><span·class="s">&quot;/usr/local/erlang&quot;</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·70,·SHA:·12ce78e5d12a53fbf007a458cefbe6d9349454066bdbebd0f17fe64ccd6f2365·...·]-6">}</span><span·class="p">,</span><span·class="w">
281 ·</span><span·class="p"·data-group-id="1258207782-8">{</span><span·class="ss">progname</span><span·class="p">,</span><span·class="p"·data-group-id="1258207782-9">[</span><span·class="s">&quot;erl·&quot;</span><span·class="p"·data-group-id="1258207782-9">]</span><span·class="p"·data-group-id="12[·...·truncated·by·diffoscope;·len:·8,·SHA:·ae79dda0b83fb97415e424cdf5df2b31fc18376bbde4fe878f0be9d7db93363d·...·]-8">}</span><span·class="p">,</span><span·class="w">281 ·</span><span·class="p"·data-group-id="7549780576-8">{</span><span·class="ss">progname</span><span·class="p">,</span><span·class="p"·data-group-id="7549780576-9">[</span><span·class="s">&quot;erl·&quot;</span><span·class="p"·data-group-id="7549780576-9">]</span><span·class="p"·data-group-id="75[·...·truncated·by·diffoscope;·len:·8,·SHA:·afecb2f3ee46d8e112a0782f317162bd4f3b04e703963b1685fc41fe5f207ec7·...·]-8">}</span><span·class="p">,</span><span·class="w">
282 ·</span><span·class="p"·data-group-id="1258207782-10">{</span><span·class="ss">sname</span><span·class="p">,</span><span·class="p"·data-group-id="1258207782-11">[</span><span·class="s">&quot;ssl_test&quot;</span><span·class="p"·data-group-id="1258207782-11">]</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·12,·SHA:·722631e0be6f0e039e74c1149d97b4e0c051854c1ced015100204a3a23ca0945·...·]-10">}</span><span·class="p">,</span><span·class="w">282 ·</span><span·class="p"·data-group-id="7549780576-10">{</span><span·class="ss">sname</span><span·class="p">,</span><span·class="p"·data-group-id="7549780576-11">[</span><span·class="s">&quot;ssl_test&quot;</span><span·class="p"·data-group-id="7549780576-11">]</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·12,·SHA:·2f7c97ae0ef728754a781d43ce15837d2fd5e7c8eabe66be0bda52428a2b2a2b·...·]-10">}</span><span·class="p">,</span><span·class="w">
283 ·</span><span·class="p"·data-group-id="1258207782-12">{</span><span·class="ss">boot</span><span·class="p">,</span><span·class="p"·data-group-id="1258207782-13">[</span><span·class="s">&quot;/home/me/ssl/start_ssl&quot;</span><span·class="p"·data-group-id="1258207782-13">]</span><span·class="p"·data-group-id="1258207782-12">}</span><span·class="p">,</span><span·class="w"> 
284 ·</span><span·class="p"·data-group-id="1258207782-14">{</span><span·class="ss">proto_dist</span><span·class="p">,</span><span·class="p"·data-group-id="1258207782-15">[</span><span·class="s">&quot;inet_tls&quot;</span><span·class="p"·data-group-id="1258207782-15">]</span><span·class="p"·data-group-id="1258207782-14">}</span><span·class="p">,</span><span·class="w"> 
285 ·</span><span·class="p"·data-group-id="1258207782-16">{</span><span·class="ss">ssl_dist_opt</span><span·class="p">,</span><span·class="p"·data-group-id="1258207782-17">[</span><span·class="s">&quot;server_certfile&quot;</span><span·class="p">,</span><span·class="s">&quot;/home/me/ssl/erlserver.[·...·truncated·by·diffoscope;·len:·114,·SHA:·ae72f8adabf3e93d8490fac13fedb475e84afd92812810edf6fe75941836cdb3·...·]">}</span><span·class="p">,</span><span·class="w">283 ·</span><span·class="p"·data-group-id="7549780576-12">{</span><span·class="ss">boot</span><span·class="p">,</span><span·class="p"·data-group-id="7549780576-13">[</span><span·class="s">&quot;/home/me/ssl/start_ssl&quot;</span><span·class="p"·data-group-id="7549780576-13">]</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·28,·SHA:·0c993e429b9d7b2eafc10a16ea5333cdd37f7680340c1fcc5e6676c9aedd113d·...·]">}</span><span·class="p">,</span><span·class="w">
 284 ·</span><span·class="p"·data-group-id="7549780576-14">{</span><span·class="ss">proto_dist</span><span·class="p">,</span><span·class="p"·data-group-id="7549780576-15">[</span><span·class="s">&quot;inet_tls&quot;</span><span·class="p"·data-group-id="7549780576-15">]</span><span·class="p"·data-group-id="7549780576-14">}</span><span·class="p">,</span><span·class="w">
 285 ·</span><span·class="p"·data-group-id="7549780576-16">{</span><span·class="ss">ssl_dist_opt</span><span·class="p">,</span><span·class="p"·data-group-id="7549780576-17">[</span><span·class="s">&quot;server_certfile&quot;</span><span·class="p">,</span><span·class="s">&quot;/home/me/ssl/erlserver.pem&quot;</span><span·class="p"·data-group-id="7549780576-17">]</span><span·class="p"·data-group-id="7549780576-16">}</span><span·class="p">,</span><span·class="w">
286 ·</span><span·class="p"·data-group-id="1258207782-18">{</span><span·class="ss">ssl_dist_opt</span><span·class="p">,</span><span·class="p"·data-group-id="1258207782-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="7549780576-18">{</span><span·class="ss">ssl_dist_opt</span><span·class="p">,</span><span·class="p"·data-group-id="7549780576-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="1258207782-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="7549780576-19">]</span><span·class="w">
288 ·</span><span·class="p"·data-group-id="1258207782-20">{</span><span·class="ss">home</span><span·class="p">,</span><span·class="p"·data-group-id="1258207782-21">[</span><span·class="s">&quot;/home/me&quot;</span><span·class="p"·data-group-id="1258207782-21">]</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·11,·SHA:·d4292294ce8dd37286283f79d3506f72fa002a5543f5cbfaf659f1db68cbc189·...·]-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="7549780576-20">{</span><span·class="ss">home</span><span·class="p">,</span><span·class="p"·data-group-id="7549780576-21">[</span><span·class="s">&quot;/home/me&quot;</span><span·class="p"·data-group-id="7549780576-21">]</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·11,·SHA:·91bf94da0f549dc96f0e89303d48fcc86ad5f2ea8dad91359e190f4f111144ab·...·]-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">
298 KB
./usr/share/doc/erlang-doc/html/lib/ssl-11.2.12/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="5015311055-1">(</span><span·class="p"·data-group-id="5015311055-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="5015311055-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="5015311055-3">[</span><span·class="p"·data-group-id="5015311055-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="5015311055-4">}</span><span·class="p">,</span><span·class="w"> 
153 ·················································</span><span·class="p"·data-group-id="5015311055-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="5015311055-6">(</span><span·class="p"·data-group-id="5015311055-6">)</span><span·class="p"·data-group-id="5015311055-5">}</span><span·class="p"·data-group-id="5015311055-3">]</span><span·class="p"·data-group-id="5015311055-2">)</span><span·class="p">.</span><span·class="w"> 
154 ···</span><span·class="p"·data-group-id="5015311055-7">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="5015311055-8">{</span><span·class="ss">sslsocket</span><span·class="p">,</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·336,·SHA:·ee0baa9ae8464e466424846e0c826f2bcc9f1ec102a55fa201042b595db84d8f·...·]">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><spa[·...·truncated·by·diffoscope;·len:·763,·SHA:·b56c7e3865440b78d213a4020d5d279719c464faa81527415d1d23d0d0b0780a·...·]">
 153 ·················································</span><span·class="p"·data-group-id="6014440578-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="6014440578-6">(</span><span·class="p"·data-group-id="6014440578-6">)</span><span·class="p"·data-group-id="6014440578-5">}</span><span·class="p"·data-group-id="6014440578-3">]</span><span·class="p"·data-group-id="6014440578-2">)</span><span·class="p">.</span><span·class="w">
 154 ···</span><span·class="p"·data-group-id="6014440578-7">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="6014440578-8">{</span><span·class="ss">sslsocket</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6014440578-9">[</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="6014440578-9">]</span><span·class="p"·data-group-id="6014440578-8">}</span><span·class="p"·data-group-id="6014440578-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="6938843948-1">(</span><span·class="p"·data-group-id="6938843948-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="6477599563-1">(</span><span·class="p"·data-group-id="6477599563-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="8946914773-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="8946914773-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="6692126177-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="6692126177-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="8946914773-2">(</span><span·class="mi">9999</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8946914773-3">[</span><span·class="p"·data-group-id="8946914773-4">{</span><span·class="ss">certs_keys</span><span·class="p">,<[·...·truncated·by·diffoscope;·len:·124,·SHA:·bf0906eefdba7cc3a89c366d5d1590e01a0e61ada07ffa772a333ee594f24b8b·...·]-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="6692126177-2">(</span><span·class="mi">9999</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6692126177-3">[</span><span·class="p"·data-group-id="6692126177-4">{</span><span·class="ss">certs_keys</span><span·class="p">,<[·...·truncated·by·diffoscope;·len:·124,·SHA:·f17212a260aa51c81ef3d33f2168e88d0db094c809981da44ed7f333691c9634·...·]-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="8946914773-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="6692126177-6">}</span><span·class="p">,</span><span·class="w">
166 ································</span><span·class="p"·data-group-id="8946914773-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="6692126177-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="8946914773-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="6692126177-7">}</span><span·class="w">
169 ·······························</span><span·class="p"·data-group-id="8946914773-5">]</span><span·class="p"·data-group-id="8946914773-4">}</span><span·class="p">,</span><span·class="p"·data-group-id="8946914773-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="8946914773-8">}</span><span·class="p"·data-group-id="8946914773-3">]</span><span·class="p"·data-group-id="8946914773-2">)</span><span·class="p">.</span><span·class="w"> 
170 </span><span·class="p"·data-group-id="8946914773-9">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="8946914773-10">{</span><span·class="ss">sslsocket</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8946914773-11">[</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="8946914773-11">]</span><span·class="p"·data-group-id="8946914773-10">}</span><span·class="p"·data-group-id="8946914773-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="2905429986-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="2905429986-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="2905429986-2">(</span><span·class="n">ListenSocket</span><span·class="p"·data-group-id="2905429986-2">)</span><span·class="p">.</span><span·class="w"> 
171 </span><span·class="p"·data-group-id="2905429986-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2905429986-4">{</span><span·class="ss">sslsocket</span><span·class="p">,</span><span·class="w">·</span><span·class=[·...·truncated·by·diffoscope;·len:·453,·SHA:·ce3e429d753aed6acd0f79b2e1c67612b09052010b5936cfefb75a95ebd41d1e·...·]169 ·······························</span><span·class="p"·data-group-id="6692126177-5">]</span><span·class="p"·data-group-id="6692126177-4">}</span><span·class="p">,</span><span·class="p"·data-group-id="6692126177-8">{</span><span·class="ss">reuseaddr</span><s[·...·truncated·by·diffoscope;·len:·273,·SHA:·8d379af6dda5a39d2ca22e776e02261d1c383645bb2e1c7c63d222cd50fe8da2·...·]
 170 </span><span·class="p"·data-group-id="6692126177-9">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="6692126177-10">{</span><span·class="ss">sslsocket</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6692126177-11">[</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="6692126177-11">]</span><span·class="p"·data-group-id="6692126177-10">}</span><span·class="p"·data-group-id="6692126177-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="8740741521-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="8740741521-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="8740741521-2">(</span><span·class="n">ListenSocket</span><span·class="p"·data-group-id="8740741521-2">)</span><span·class="p">.</span><span·class="w">
 171 </span><span·class="p"·data-group-id="8740741521-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="8740741521-4">{</span><span·class="ss">sslsocket</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8740741521-5">[</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="8740741521-5">]</span><span·class="p"·data-group-id="8740741521-4">}</span><span·class="p"·data-group-id="8740741521-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="2660275857-1">(</span><span·class="p"·data-group-id="2660275857-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="4054373830-1">(</span><span·class="p"·data-group-id="4054373830-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="4820964225-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="4820964225-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·117,·SHA:·1b1e8d856241c032e900f6b2806727ab2f83865440728a763e214c78dbaa68ef·...·]-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="5798691639-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="5798691639-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·117,·SHA:·b4eb797857806e016c869599809de2f319fdecb3db2ea50deef6efe94fff8e59·...·]-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="4820964225-3">[</span><span·class="p"·data-group-id="4820964225-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="4820964225-4">}</span><span·class="p">,</span><span·class="w">176 ······</span><span·class="p"·data-group-id="5798691639-3">[</span><span·class="p"·data-group-id="5798691639-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="5798691639-4">}</span><span·class="p">,</span><span·class="w">
177 ······</span><span·class="p"·data-group-id="4820964225-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="4820964225-5">}</span><span·class="p">,</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·381,·SHA:·f62ad3855b69549e65d3d32ddde01da23006a6a98fd894baed93635d369f8179·...·]-2">)</span><span·class="p">.</span><span·class="w">177 ······</span><span·class="p"·data-group-id="5798691639-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="5798691639-5">}</span><span·class="p">,</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·381,·SHA:·8350a42d93faa6129caf9d148e6e11f5487042b3429f1f8162aedf0d7e2a5f82·...·]-2">)</span><span·class="p">.</span><span·class="w">
178 </span><span·class="p"·data-group-id="4820964225-7">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="4820964225-8">{</span><span·class="ss">sslsocket</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4820964225-9">[</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="4820964225-9">]</span><span·class="p"·data-group-id="4820964225-8">}</span><span·class="p"·data-group-id="4820964225-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="9406240023-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="9406240023-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="9406240023-2">(</span><span·class="n">TLSTransportSocket</span><span·class="p"·data-group-id="9406240023-2">)</span><span·class="p">.</span><span·class="w"> 
179 </span><span·class="p"·data-group-id="9406240023-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9406240023-4">{</span><span·class="ss">sslsocket</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9406240023-5">[</sp[·...·truncated·by·diffoscope;·len:·410,·SHA:·9c1f18650ac90d509ea86c39a4dde3644748ebf546b0a0d97d4a34e3660d56f8·...·]178 </span><span·class="p"·data-group-id="5798691639-7">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="5798691639-8">{</span><span·class="ss">sslsocket</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5798691639-9">[</sp[·...·truncated·by·diffoscope;·len:·1022,·SHA:·d2c19973394327bab7c00f36f607aac2dfa8a0710ae46d2045407b084b562ab9·...·]
 179 </span><span·class="p"·data-group-id="4572454479-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="4572454479-4">{</span><span·class="ss">sslsocket</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4572454479-5">[</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="4572454479-5">]</span><span·class="p"·data-group-id="4572454479-4">}</span><span·class="p"·data-group-id="4572454479-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="7343321015-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="7343321015-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="1113112216-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="1113112216-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="2798723818-1">(</span><span·class="p"·data-group-id="2798723818-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="8245408364-1">(</span><span·class="p"·data-group-id="8245408364-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="2798723818-2">{</span><span·class="ss">ssl</span><span·class="p">,</span><span·class="p"·data-group-id="2798723818-3">{</span><span·class="ss">sslsocket</span><span·class="p">,</span><span·class="p"·data-group-id="2798723818-4">[</span><span·class="p">.</s[·...·truncated·by·diffoscope;·len:·261,·SHA:·ecef0825c9b54091413060044879d8011f2630297d60afb0dbf5ee561407eca6·...·]-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="8245408364-2">{</span><span·class="ss">ssl</span><span·class="p">,</span><span·class="p"·data-group-id="8245408364-3">{</span><span·class="ss">sslsocket</span><span·class="p">,</span><span·class="p"·data-group-id="8245408364-4">[</span><span·class="p">.</s[·...·truncated·by·diffoscope;·len:·261,·SHA:·cf6e6a7e84eda94b73ef7362c64114f5672d3ecac32ed4cbced3da3be615bfb2·...·]-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="4146912341-1">(</span><span·class="p"·data-group-id="4146912341-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="6010758205-1">(</span><span·class="p"·data-group-id="6010758205-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="3335835468-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="3335835468-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·470,·SHA:·827489f588e64fc487125ca907fbf6c3cd22d90b1e31df2c15dbe5b66f2ccd48·...·]-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="4054249535-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="4054249535-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·470,·SHA:·dccabda1726cf0322985fe4ab7c1511c79fca53c89bb337f069e097a2d59808f·...·]-4">}</span><span·class="p">,</span><span·class="w">
199 ··</span><span·class="p"·data-group-id="3335835468-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="3335835468-5">}</span><span·class="p"·data-group-id="3335835468-3">]</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·63923d1316e2195a8a8b4379b18c5235188fb30905f6e57d05ff1e15d296d1a6·...·]-2">)</span><span·class="p">.</span><span·class="w">199 ··</span><span·class="p"·data-group-id="4054249535-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="4054249535-5">}</span><span·class="p"·data-group-id="4054249535-3">]</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·c2d61e532aa13109bf1e64cb255a0ed7a15b4ed621fa8add187ff265e1fb6dad·...·]-2">)</span><span·class="p">.</span><span·class="w">
200 ··</span><span·class="p"·data-group-id="3335835468-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-id="3335835468-6">}</span></code></pre><p><em>Step·3:</em>·Accept·client·connection:</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="0667808224-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="0667808224-1">}</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">accept</span><span·class="p"·data-group-id="0667808224-2">(</span><span·class="n">ListenSocket</span><span·class="p"·data-group-id="0667808224-2">)</span><span·class="p">.</span><span·class="w"> 
201 ··</span><span·class="p"·data-group-id="0667808224-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-id="0667808224-3">}</span></code></pre><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="9180002934-1">(</span><span·class="p"·data-group-id="9180002934-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="3323347833-1">{</span[·...·truncated·by·diffoscope;·len:·1823,·SHA:·eb9e619dd6c78d2c161a8176d19476f162134a2b38073a16fe82467e80a9153b·...·]</span><span·class="w">200 ··</span><span·class="p"·data-group-id="4054249535-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·cl[·...·truncated·by·diffoscope;·len:·809,·SHA:·4444a6adb967731170acf026c21c3a891a11c4b2b5268292b11c4e0b6c6fbfbc·...·]</span><span·class="w">
 201 ··</span><span·class="p"·data-group-id="0960774723-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-id="0960774723-3">}</span></code></pre><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="5280133792-1">(</span><span·class="p"·data-group-id="5280133792-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="4390804269-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="4390804269-1">}</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">connect</span><span·class="p"·data-group-id="4390804269-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">··</span><span·class="p"·data-group-id="4390804269-3">[</span><span·class="p"·data-group-id="4390804269-3">]</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">infinity</span><span·class="p"·data-group-id="4390804269-2">)</span><span·class="p">.</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="0009365707-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="0009365707-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="0009365707-2">(</span><span·class="n">Socket</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0009365707-3">[</span><span·class="p"·data-group-id="0009365707-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="0009365707-4">}</span><span·class="p">,</span><span·class="w">
203 ··</span><span·class="p"·data-group-id="9648099694-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="9648099694-5">}</span><span·class="p">,</span><span·class="w">203 ··</span><span·class="p"·data-group-id="0009365707-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="0009365707-5">}</span><span·class="p">,</span><span·class="w">
204 ··</span><span·class="p"·data-group-id="9648099694-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="9648099694-6">}</span><span·class="p">,</span><span·class="w">204 ··</span><span·class="p"·data-group-id="0009365707-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="0009365707-6">}</span><span·class="p">,</span><span·class="w">
205 ··</span><span·class="p"·data-group-id="9648099694-7">{</span><span·class="ss">certs_keys</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9648099694-8">[</span><span·class="p"·data-group-id="9648099694-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="9648099694-9">}</span><span·class="p"·data-group-id="9648099694-8">]</span><span·class="p"·data-group-id="9648099694-7">}</span><span·class="p"·data-group-id="9648099694-3">]</span><span·class="p"·data-group-id="9648099694-2">)</span><span·class="p">.</span><span·class="w"> 
206 ··</span><span·class="p"·data-group-id="9648099694-10">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9648099694-11">{</span><span·class="ss">sslsocket</span><span·class="p">,</span><span·class="p"·data-group-id="9648099694-12">[</span><span·class="p">.<[·...·truncated·by·diffoscope;·len:·319,·SHA:·7d63f5565708063263fd2338d9b234dea095d098eb5eb047fd8f3255ef16458f·...·]205 ··</span><span·class="p"·data-group-id="0009365707-7">{</span><span·class="ss">certs_keys</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0009365707-8">[</span><span·class="p"·data-group-id="0009365707-9">#{</span><span·class="ss">certfile</span><span·class="[·...·truncated·by·diffoscope;·len:·608,·SHA:·fc3a6f6fb3ba564aaefadaa1abcdaa484bb591b662911ae3e3d60a302a755ecf·...·]
 206 ··</span><span·class="p"·data-group-id="0009365707-10">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="0009365707-11">{</span><span·class="ss">sslsocket</span><span·class="p">,</span><span·class="p"·data-group-id="0009365707-12">[</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="0009365707-12">]</span><span·class="p"·data-group-id="0009365707-11">}</span><span·class="p"·data-group-id="0009365707-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="6639478788-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="6639478788-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·469,·SHA:·2a7331ad23076a8a236eb878de70c533e3c675784fe17384fab1e76c36258ebe·...·]-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="8663055832-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="8663055832-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·469,·SHA:·d4aaa46da0620031b20576f4225a3d3ad0efd7f67869cba814dfaee8d2db804c·...·]-4">}</span><span·class="p">,</span><span·class="w">
209 ··</span><span·class="p"·data-group-id="6639478788-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="6639478788-5">}</span><span·class="p">,</span><span·class="w">209 ··</span><span·class="p"·data-group-id="8663055832-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="8663055832-5">}</span><span·class="p">,</span><span·class="w">
210 ··</span><span·class="p"·data-group-id="6639478788-6">{</span><span·class="ss">certs_keys</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6639478788-7">[</span><span·class="p"·data-group-id="6639478788-8">#{</span><span·class="ss">certfile</span><span·class="[·...·truncated·by·diffoscope;·len:·636,·SHA:·0f13036d1bd948076be40ee31d1c3d90b3fcdcedda226c42614d5899088dde9c·...·]-2">)</span><span·class="p">.</span><span·class="w">210 ··</span><span·class="p"·data-group-id="8663055832-6">{</span><span·class="ss">certs_keys</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8663055832-7">[</span><span·class="p"·data-group-id="8663055832-8">#{</span><span·class="ss">certfile</span><span·class="[·...·truncated·by·diffoscope;·len:·636,·SHA:·868aa76062b5bb1cf92dbd070d4a641d3e94e5b581a4b20b76023d743d5a4a25·...·]-2">)</span><span·class="p">.</span><span·class="w">
211 </span><span·class="p"·data-group-id="6639478788-9">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="6639478788-10">{</span><span·class="ss">sslsocket</span><span·class="p">,</span><span·class="p"·data-group-id="6639478788-11">[</span><span·class="p">.</[·...·truncated·by·diffoscope;·len:·744,·SHA:·60c547460e9cea7cec7c911f30cd8bb5957796e4247e6aacd3786450ff787481·...·]-1">)</span><span·class="p">.</span><span·class="w">211 </span><span·class="p"·data-group-id="8663055832-9">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="8663055832-10">{</span><span·class="ss">sslsocket</span><span·class="p">,</span><span·class="p"·data-group-id="8663055832-11">[</span><span·class="p">.</[·...·truncated·by·diffoscope;·len:·744,·SHA:·7b3fe55e21aafdf414c0f2b80626c6d6114e82f30d31f44777bf37b98b263e60·...·]-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="7223858318-1">(</span><span·class="n">TLSSocket</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7223858318-2">[</span><span·class="p"·data-group-id="7223858318-3">{</span><span·class="ss">active</span><span·class="p">,<[·...·truncated·by·diffoscope;·len:·205,·SHA:·b0144943c4673a8a8239db2877a8e4c1be3de0bbab4b74069288f37f132b05dd·...·]-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="8381099980-1">(</span><span·class="n">TLSSocket</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8381099980-2">[</span><span·class="p"·data-group-id="8381099980-3">{</span><span·class="ss">active</span><span·class="p">,<[·...·truncated·by·diffoscope;·len:·205,·SHA:·7697cc321380dcb1b91194f37a0656bdecdb2cff7066fcdf6a0104f30ca76c6b·...·]-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="6429388417-1">(</span><span·class="p"·data-group-id="6429388417-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="6911633554-1">(</span><span·class="p"·data-group-id="6911633554-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="6429388417-2">{</span><span·class="ss">ssl</span><span·class="p">,</span><span·class="p"·data-group-id="6429388417-3">{</span><span·class="ss">sslsocket</span><span·class="p">,</span><span·class="p"·data-group-id="6429388417-4">[</span><span·class="p">.</sp[·...·truncated·by·diffoscope;·len:·260,·SHA:·0960e2a913b513d5299752a3dd5cb6c0a956fe306f89812b369056947cc016dc·...·]-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="6911633554-2">{</span><span·class="ss">ssl</span><span·class="p">,</span><span·class="p"·data-group-id="6911633554-3">{</span><span·class="ss">sslsocket</span><span·class="p">,</span><span·class="p"·data-group-id="6911633554-4">[</span><span·class="p">.</sp[·...·truncated·by·diffoscope;·len:·260,·SHA:·48f077ca78ec2e42ff40cd457bbec25e39051fe77bf730278f8d656fc3ede465·...·]-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="0620168204-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="0620168204-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="9219720512-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="9219720512-1">)</span><span·class="p">.</span><span·class="w">
224 ····</span><span·class="p"·data-group-id="0620168204-2">[</span><span·class="p"·data-group-id="0620168204-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="9219720512-2">[</span><span·class="p"·data-group-id="9219720512-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="0620168204-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="0620168204-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="9219720512-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="9219720512-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="8822569328-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="8905784481-1">(</span><span·class="n">Default</span><span·class="p">,</span><span·class="w">
228 ·····························</span><span·class="p"·data-group-id="8822569328-2">[</span><span·class="p"·data-group-id="8822569328-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="8822569328-4">(</span><span·class="ss">r[·...·truncated·by·diffoscope;·len:·50,·SHA:·ecdec89d11ca7d266ec536cd26f1bbee93800775525e500e8e8f2ad9d3d64856·...·]-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="8905784481-2">[</span><span·class="p"·data-group-id="8905784481-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="8905784481-4">(</span><span·class="ss">r[·...·truncated·by·diffoscope;·len:·50,·SHA:·ee4af9132ba5f48802e6c0d0a8da88fec6dfad898712b79cab939f72de7fa4a8·...·]-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="8822569328-5">(</span><span·class="p">_</span><span·class="p"·data-group-id="8822569328-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="8905784481-5">(</span><span·class="p">_</span><span·class="p"·data-group-id="8905784481-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="8822569328-3">}</span><span·class="p"·data-group-id="8822569328-2">]</span><span·class="p"·data-group-id="8822569328-1">)</span><span·class="p">.</span><span·class="w">230 ·············································</span><span·class="k">end</span><span·class="p"·data-group-id="8905784481-3">}</span><span·class="p"·data-group-id="8905784481-2">]</span><span·class="p"·data-group-id="8905784481-1">)</span><span·class="p">.</span><span·class="w">
231 ····</span><span·class="p"·data-group-id="8822569328-6">[</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="8822569328-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="8905784481-6">[</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="8905784481-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="7942258590-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="8915130645-1">(</span><span·class="n">Default</span><span·class="p">,</span><span·class="w">
233 ·····························</span><span·class="p"·data-group-id="7942258590-2">[</span><span·class="p"·data-group-id="7942258590-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="7942258590-4">(</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·58,·SHA:·f3001f10d71c209b772077e9866fa4e8e785a9241de9b91ac0d458df3b1322d0·...·]-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="8915130645-2">[</span><span·class="p"·data-group-id="8915130645-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="8915130645-4">(</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·58,·SHA:·6030ebc6f5459b1eb7337fc30a1e6996da199618f93b48b7848730cb70739607·...·]-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="7942258590-5">(</span><span·class="p">_</span><span·class="p"·data-group-id="7942258590-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="8915130645-5">(</span><span·class="p">_</span><span·class="p"·data-group-id="8915130645-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="7942258590-3">}</span><span·class="p">,</span><span·class="w">235 ·············································</span><span·class="k">end</span><span·class="p"·data-group-id="8915130645-3">}</span><span·class="p">,</span><span·class="w">
236 ······························</span><span·class="p"·data-group-id="7942258590-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="7942258590-7">(</span><span·class="ss">aes_128_cbc</span><span·class="p"·data-group-id="7942258590-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="8915130645-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="8915130645-7">(</span><span·class="ss">aes_128_cbc</span><span·class="p"·data-group-id="8915130645-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="7942258590-8">(</span><span·class="p">_</span><span·class="p"·data-group-id="7942258590-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="8915130645-8">(</span><span·class="p">_</span><span·class="p"·data-group-id="8915130645-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="7942258590-6">}</span><span·class="p"·data-group-id="7942258590-2">]</span><span·class="p"·data-group-id="7942258590-1">)</span><span·class="p">.</span><span·class="w">238 ·······································</span><span·class="k">end</span><span·class="p"·data-group-id="8915130645-6">}</span><span·class="p"·data-group-id="8915130645-2">]</span><span·class="p"·data-group-id="8915130645-1">)</span><span·class="p">.</span><span·class="w">
  
239 </span><span·class="p"·data-group-id="7942258590-9">[</span><span·class="p"·data-group-id="7942258590-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="8915130645-9">[</span><span·class="p"·data-group-id="8915130645-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="7942258590-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="8915130645-10">}</span><span·class="p">,</span><span·class="w">
241 ·</span><span·class="p"·data-group-id="7942258590-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="8915130645-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="7942258590-11">}</span><span·class="p"·data-group-id="7942258590-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="8915130645-11">}</span><span·class="p"·data-group-id="8915130645-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="8957383494-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="8957383494-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="8440151564-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="8440151564-1">)</span><span·class="p">.</span><span·class="w">
244 ··</span><span·class="p"·data-group-id="8957383494-2">[</span><span·class="p"·data-group-id="8957383494-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="8440151564-2">[</span><span·class="p"·data-group-id="8440151564-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="8957383494-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="8440151564-3">}</span><span·class="p">,</span><span·class="w">
246 ···</span><span·class="p"·data-group-id="8957383494-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="8440151564-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="8957383494-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="8440151564-4">}</span><span·class="p">,</span><span·class="w">
248 ···</span><span·class="p"·data-group-id="8957383494-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="8440151564-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="8957383494-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="8957383494-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="8440151564-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="8440151564-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, 77 lines modifiedOffset 261, 77 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
Max diff block lines reached; 224763/304839 bytes (73.73%) of diff not shown.
125 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2.2/doc/html/argparse.html
    
Offset 143, 60 lines modifiedOffset 143, 60 lines modified
143 ··</a>143 ··</a>
144 ··<span·class="text">Quick·start</span>144 ··<span·class="text">Quick·start</span>
145 </h2>145 </h2>
146 <p><code·class="inline">argparse</code>·is·designed·to·work·with·<a·href="../../../../erts-15.2.6/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.6/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="1548835250-1">(</span><span·class="n">Args</span><span·class="p"·data-group-id="1548835250-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="9092804300-1">(</span><span·class="n">Args</span><span·class="p"·data-group-id="9092804300-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="1548835250-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="1548835250-3">(</span><span·class="p"·data-group-id="1548835250-3">)</span><span·class="p">,</span><s[·...·truncated·by·diffoscope;·len:·304,·SHA:·71835c6aef7544558cd133fef360e691944cb51ad215f16f60c9f8ce06a08720·...·]0-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="9092804300-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="9092804300-3">(</span><span·class="p"·data-group-id="9092804300-3">)</span><span·class="p">,</span><s[·...·truncated·by·diffoscope;·len:·304,·SHA:·538b1b1670a096da087db1e33283b99b4b53aba835c267ace89c76b1c751ec9f·...·]0-2">)</span><span·class="p">.</span><span·class="w">
  
152 </span><span·class="nf">cli</span><span·class="p"·data-group-id="1548835250-5">(</span><span·class="p"·data-group-id="1548835250-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="9092804300-5">(</span><span·class="p"·data-group-id="9092804300-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
153 ····</span><span·class="p"·data-group-id="1548835250-6">#{</span><span·class="w">153 ····</span><span·class="p"·data-group-id="9092804300-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="1548835250-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="9092804300-7">[</span><span·class="w">
155 ············</span><span·class="p"·data-group-id="1548835250-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:·122,·SHA:·cb3c02876cf8c79888faea49e068d4b0d86969ee7359fa2295f3cdfcb3a3ae66·...·]0-8">}</span><span·class="p">,</span><span·class="w">155 ············</span><span·class="p"·data-group-id="9092804300-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:·122,·SHA:·24dc330d73f414f68a7729001cd03478c5d977b4bc3c137c29cd16e6bbadccf1·...·]0-8">}</span><span·class="p">,</span><span·class="w">
156 ············</span><span·class="p"·data-group-id="1548835250-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:·123,·SHA:·c17ea82866c8011ee82733da3d50111671c782f5cc44e3b46e89ccc57f0eec4d·...·]0-9">}</span><span·class="w">156 ············</span><span·class="p"·data-group-id="9092804300-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:·123,·SHA:·e2771d9ed3afc964b62ce776b119312c9f6589e263685e8b38aabfa3bc9ea96c·...·]0-9">}</span><span·class="w">
157 ········</span><span·class="p"·data-group-id="1548835250-7">]</span><span·class="p">,</span><span·class="w">157 ········</span><span·class="p"·data-group-id="9092804300-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="1548835250-10">(</span><span·class="p"·data-group-id="1548835250-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:·222,·SHA:·e272be02d3cde00705e905044182e25016f6dbb9dff38b5d7711635574d1fc45·...·]0-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="9092804300-10">(</span><span·class="p"·data-group-id="9092804300-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:·222,·SHA:·79f339d5b5cfc96a72783104bf9a0117e5986e072e2ae0ef55b2e6841f1de152·...·]0-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="1548835250-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="1548835250-13">[</span><span·class="n">Left<[·...·truncated·by·diffoscope;·len:·200,·SHA:·631779b0c571c676380fe1b14893d0f22de84ce27ee53985b388304b645d0367·...·]0-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="9092804300-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="9092804300-13">[</span><span·class="n">Left<[·...·truncated·by·diffoscope;·len:·200,·SHA:·5a5047ed978d8b541089777c8a0829e752182c8d6ba39c11e78e7dc5960ceaa4·...·]0-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="1548835250-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="9092804300-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="4254958680-1">(</span><span·class="p"·data-group-id="4254958680-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="6520785124-1">(</span><span·class="p"·data-group-id="6520785124-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
177 ··</span><span·class="p"·data-group-id="4254958680-2">#{</span><span·class="w">177 ··</span><span·class="p"·data-group-id="6520785124-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="4254958680-3">[</span><span·class="p"·data-group-id="4254958680-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="4254958680-4">}</s[·...·truncated·by·diffoscope;·len:·45,·SHA:·ef314cd310bc6da0f970c5f35e2e52195a3db88582ec69480248cf880ccafc53·...·]-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="6520785124-3">[</span><span·class="p"·data-group-id="6520785124-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="6520785124-4">}</s[·...·truncated·by·diffoscope;·len:·45,·SHA:·8792c07407f1fccb405a87ca640a7b76560111600565a36dce7536cef68a59b9·...·]-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="4254958680-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="6520785124-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="4254958680-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="6520785124-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="4254958680-7">[</span><span·class="p"·data-group-id="4254958680-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="4254958680-8">}</s[·...·truncated·by·diffoscope;·len:·45,·SHA:·ef314cd310bc6da0f970c5f35e2e52195a3db88582ec69480248cf880ccafc53·...·]-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="6520785124-7">[</span><span·class="p"·data-group-id="6520785124-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="6520785124-8">}</s[·...·truncated·by·diffoscope;·len:·45,·SHA:·8792c07407f1fccb405a87ca640a7b76560111600565a36dce7536cef68a59b9·...·]-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="4254958680-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="6520785124-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="4254958680-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="6520785124-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="4254958680-11">[</span><span·class="p"·data-group-id="4254958680-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="4254958680-12[·...·truncated·by·diffoscope;·len:·51,·SHA:·e48bf278767baebba51e26206e525a7c7ec9d68b1e28fc257c2aefcef0bde986·...·]-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="6520785124-11">[</span><span·class="p"·data-group-id="6520785124-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="6520785124-12[·...·truncated·by·diffoscope;·len:·51,·SHA:·577d8e0b0bf4b1fd71fb3451b9c94289e2efbefe5f91153c44f8a488f0e24098·...·]-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="4254958680-13">(</span><span·class="n">A</span><span·class="p"·data-group-id="4254958680-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:·acb1f63a93255c297a9825cc687f6544775aa9f41260fd0e531509754c9f9706·...·]-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="6520785124-13">(</span><span·class="n">A</span><span·class="p"·data-group-id="6520785124-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:·771a1166e5d42dcf6647700b4305a932cbbab3d88d08351cd644258bc0992812·...·]-14">)</span><span·class="w">·</span><span·class="k">end</span><span·class="w">
190 ··········</span><span·class="p"·data-group-id="4254958680-10">}</span><span·class="w">190 ··········</span><span·class="p"·data-group-id="6520785124-10">}</span><span·class="w">
191 ········</span><span·class="p"·data-group-id="4254958680-9">}</span><span·class="w">191 ········</span><span·class="p"·data-group-id="6520785124-9">}</span><span·class="w">
192 ······</span><span·class="p"·data-group-id="4254958680-6">}</span><span·class="w">192 ······</span><span·class="p"·data-group-id="6520785124-6">}</span><span·class="w">
193 ····</span><span·class="p"·data-group-id="4254958680-5">}</span><span·class="w">193 ····</span><span·class="p"·data-group-id="6520785124-5">}</span><span·class="w">
194 ··</span><span·class="p"·data-group-id="4254958680-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="6520785124-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="2559147012-1">(</span><span·class="p"·data-group-id="2559147012-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="6107830408-1">(</span><span·class="p"·data-group-id="6107830408-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
214 ··</span><span·class="p"·data-group-id="2559147012-2">#{</span><span·class="w">214 ··</span><span·class="p"·data-group-id="6107830408-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="2559147012-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="6107830408-3">[</span><span·class="w">
216 ······</span><span·class="p"·data-group-id="2559147012-4">#{</span><span·class="ss">name</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">long</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">long</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·132,·SHA:·b576b3c33baabee5c838d46674521689d4553cc0c1ee1b5324d1ff4502b5d8ab·...·]-4">}</span><span·class="p">,</span><span·class="w">216 ······</span><span·class="p"·data-group-id="6107830408-4">#{</span><span·class="ss">name</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">long</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">long</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·132,·SHA:·2560229f8ef7b7d15c649514d93a17255fa307f4926c6a10293de848dccd677a·...·]-4">}</span><span·class="p">,</span><span·class="w">
217 ······</span><span·class="p"·data-group-id="2559147012-5">#{</span><span·class="ss">name</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">short</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">short</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·120,·SHA:·f9e6c9133b62da7ac1d418f2e1fe3297a15541d41fad923767c64f7bbe595cb6·...·]-5">}</span><span·class="w">217 ······</span><span·class="p"·data-group-id="6107830408-5">#{</span><span·class="ss">name</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">short</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">short</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·120,·SHA:·ce6c0092b7aae078683acd977bcf0706762db8a1b99e5e5386e8d90a4b261d02·...·]-5">}</span><span·class="w">
218 ····</span><span·class="p"·data-group-id="2559147012-3">]</span><span·class="p">,</span><span·class="w">218 ····</span><span·class="p"·data-group-id="6107830408-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="2559147012-6">(</span><span·class="n">Args</span><span·class="p"·data-group-id="2559147012-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</spa[·...·truncated·by·diffoscope;·len:·387,·SHA:·eca6f9c1a74fd61365911c9e58109102fb0ed69eaabffff02f453e42d150b327·...·]-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="6107830408-6">(</span><span·class="n">Args</span><span·class="p"·data-group-id="6107830408-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</spa[·...·truncated·by·diffoscope;·len:·387,·SHA:·96b66c5f00918e37a8b0ca709e0b2def47b5232cee1b8f82ceba32555a79dd01·...·]-7">)</span><span·class="w">·</span><span·class="k">end</span><span·class="w">
220 ··</span><span·class="p"·data-group-id="2559147012-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="6107830408-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="2148156776-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="2148156776-2">[</span><span·class="p"·data-group-id="2148156776-3">#{</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·442,·SHA:·d3ae8865b0a122d16688d8e7b4f32ea80bcdabef4d74bc4c9e51c228f1839920·...·]-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="4997254967-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="4997254967-2">[</span><span·class="p"·data-group-id="4997254967-3">#{</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·442,·SHA:·6d318c0f3f583ef59f5b25ebccf25ca2fca79c777a0cb16252ffb208baa37cdf·...·]-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="2148156776-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:·5c2dfe82cb852d59eb827dca9189b9b9375538ebfb277f8f766b06cd57eae08a·...·]-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="4997254967-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:·6b2950c9298aae98d4004d09f2e459299c1ddaf1578c0ffdb311ce523e6c6b30·...·]-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="2148156776-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="2148156776-7">}</span><span·class="w">608 </span><span·class="p"·data-group-id="4997254967-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="4997254967-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="2148156776-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:·f2784161466558587b9dbec16ba98c2cad92fd5232d00fae57a4d405aed67965·...·]-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="4997254967-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:·37cf53c8ffc2eaa5fbde4e4e744ce9d664ea99cbc87becb1ff645937a44ee577·...·]-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="2148156776-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="2148156776-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="4997254967-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="4997254967-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="0523220420-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="0523220420-2">[</span><span·class="p"·data-group-id="0523220420-3">#{</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·454,·SHA:·3dd113906b691aaa1115dafc3e2cdc52b514211eeee77353322f96515d702c0d·...·]-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="7364577289-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="7364577289-2">[</span><span·class="p"·data-group-id="7364577289-3">#{</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·454,·SHA:·43de101e38ae8d3898d5ad7e620e2a04df01b5b24167d88f127c407cf11737e8·...·]-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="0523220420-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:·319130cd6d7adc152d9d763b27cf19625b442d52a0483cbc085ad032bc35c2a9·...·]-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="7364577289-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:·87f2581e0b3b1f4366c46671c171c7ccf920b55003d4da7cc663af35e3b74bec·...·]-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="0523220420-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="0523220420-7">}</span><span·class="w">615 </span><span·class="p"·data-group-id="7364577289-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="7364577289-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="0523220420-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:·2e5c5941e8351c07035adcf021bc5026b5fbc502fe209c69b9b5c465f542b9c8·...·]-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="7364577289-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:·628e41db3be633c776c6fcfae2a56e58a330537ecf84a4be3da83bbe500eb704·...·]-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="0523220420-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="0523220420-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="7364577289-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="7364577289-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="9937783849-1">(</span><span·class="p"·data-group-id="9937783849-2">[</span><span·class="p"·data-group-id="9937783849-2">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9937783849-3">#{</span><span·class="ss">arguments[·...·truncated·by·diffoscope;·len:·702,·SHA:·d45200f9ac3e4237d48fa55006b50310c0921bb651a37c965576b16c10cda9d0·...·]-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="4452441624-1">(</span><span·class="p"·data-group-id="4452441624-2">[</span><span·class="p"·data-group-id="4452441624-2">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4452441624-3">#{</span><span·class="ss">arguments[·...·truncated·by·diffoscope;·len:·702,·SHA:·0633b36879010c77556281f1bfecfbe658e190447b76e5b6706caf6282828806·...·]-1">)</span><span·class="p">.</span><span·class="w">
  
623 </span><span·class="p"·data-group-id="9937783849-6">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9937783849-7">#{</span><span·class="p"·data-group-id="9937783849-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="4452441624-6">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="4452441624-7">#{</span><span·class="p"·data-group-id="4452441624-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="9937783849-8">(</span><span·class="p"·data-group-id="9937783849-9">[</span><span·class="p"·data-group-id="9937783849-9">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9937783849-10">#{</span><span·class="ss">argument[·...·truncated·by·diffoscope;·len:·901,·SHA:·696a7dec3237b14ea47e708b885d21c4c9a7182a0e57768b7ce8f98e6d6cb227·...·]-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="4452441624-8">(</span><span·class="p"·data-group-id="4452441624-9">[</span><span·class="p"·data-group-id="4452441624-9">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4452441624-10">#{</span><span·class="ss">argument[·...·truncated·by·diffoscope;·len:·901,·SHA:·85044542e6345d4ac64a3e7d67dd7bd8affaf15fdc13308b01ce4d64ec5e9e41·...·]-8">)</span><span·class="p">.</span><span·class="w">
  
625 </span><span·class="p"·data-group-id="9937783849-13">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9937783849-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:·be303edf94d9d57ac4776d679e3122894febcd16b08902d95f76cd15fd0f86ea·...·]-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="4452441624-13">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="4452441624-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:·eb24bc01f450b6a89a39e871e3617928407555da1f1a9b26b0fe945e8b4b6d32·...·]-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.6/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.6/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="6942548283-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="6942548283-2">[</span><span·class="p"·data-group-id="6942548283-3">#{</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·623,·SHA:·857ed22ffecbdbfc8b7f4dc92a01fee3a6965178dda34fce480b4ceb592eddc1·...·]-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="5962693988-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="5962693988-2">[</span><span·class="p"·data-group-id="5962693988-3">#{</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·623,·SHA:·1b73c7cb1ce8e0b48aa1697b80e0ccf1420ace111775e13bba7ccf1e017a2923·...·]-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="6942548283-4">(</span><span·class="p"·data-group-id="6942548283-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:·cab39c284ef08f1a4406638307f79cc5d7568de0b0a20d9d4847158cc4733c89·...·]-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="5962693988-4">(</span><span·class="p"·data-group-id="5962693988-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:·dfbf2a1f4e5f345c3c551e7c8013e7e1b374497669f2da9d73abf6a880901870·...·]-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.2/doc/html/array.html
    
Offset 132, 22 lines modifiedOffset 132, 22 lines modified
132 is·used·for·entries·that·have·not·been·explicitly·set.</p><p>Arrays·uses·<em>zero</em>-based·indexing.·This·is·a·deliberate·design·choice·and132 is·used·for·entries·that·have·not·been·explicitly·set.</p><p>Arrays·uses·<em>zero</em>-based·indexing.·This·is·a·deliberate·design·choice·and
133 differs·from·other·Erlang·data·structures,·for·example,·tuples.</p><p>Unless·specified·by·the·user·when·the·array·is·created,·the·default·value·is·the133 differs·from·other·Erlang·data·structures,·for·example,·tuples.</p><p>Unless·specified·by·the·user·when·the·array·is·created,·the·default·value·is·the
134 atom·<code·class="inline">undefined</code>.·There·is·no·difference·between·an·unset·entry·and·an·entry134 atom·<code·class="inline">undefined</code>.·There·is·no·difference·between·an·unset·entry·and·an·entry
135 that·has·been·explicitly·set·to·the·same·value·as·the·default·one·(compare135 that·has·been·explicitly·set·to·the·same·value·as·the·default·one·(compare
136 <a·href="#reset/2"><code·class="inline">reset/2</code></a>).·If·you·need·to·differentiate·between·unset·and·set·entries,·ensure136 <a·href="#reset/2"><code·class="inline">reset/2</code></a>).·If·you·need·to·differentiate·between·unset·and·set·entries,·ensure
137 that·the·default·value·cannot·be·confused·with·the·values·of·set·entries.</p><p>The·array·never·shrinks·automatically.·If·an·index·<code·class="inline">I</code>·has·been·used·to·set·an137 that·the·default·value·cannot·be·confused·with·the·values·of·set·entries.</p><p>The·array·never·shrinks·automatically.·If·an·index·<code·class="inline">I</code>·has·been·used·to·set·an
138 entry·successfully,·all·indices·in·the·range·<code·class="inline">[0,I]</code>·stay·accessible·unless·the138 entry·successfully,·all·indices·in·the·range·<code·class="inline">[0,I]</code>·stay·accessible·unless·the
139 array·size·is·explicitly·changed·by·calling·<a·href="#resize/2"><code·class="inline">resize/2</code></a>.</p><p><em>Examples:</em></p><p>Create·a·fixed-size·array·with·entries·0-9·set·to·<code·class="inline">undefined</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">A0</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">array</span><span·class="p">:</span><span·class="nf">new</span><span·class="p"·data-group-id="0482846049-1">(</span><span·class="mi">10</span><span·class="p"·data-group-id="0482846049-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="7948730874-1">(</span><span·class="mi">10</span><span·class="p"·data-group-id="7948730874-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="0482846049-2">(</span><span·class="n">A0</span><span·class="p"·data-group-id="0482846049-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="7948730874-2">(</span><span·class="n">A0</span><span·class="p"·data-group-id="7948730874-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="1283931783-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:·2f7b23053e60c9612839d986c0c6554034d60c783a0da4687df773bfdb008532·...·]-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="8922842229-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:·9a848738bef1fabcf1a0bbd85e0822ea8c631f1e104ebcc1f9dd7a8faa13fc64·...·]-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="1283931783-3">(</span><span·class="n">A1</span><span·class="p"·data-group-id="1283931783-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:·e0569001520d48574d660964e29bc3efeebdb6d7b358d8fac7e73e77c0fb6f4d·...·]-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="8922842229-3">(</span><span·class="n">A1</span><span·class="p"·data-group-id="8922842229-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:·65a6139f6afcc6beb4960ecb3daa5e0306a54f2674b7b48a227176b3a0b31bc0·...·]-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="5910290317-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="5910290317-1">)</span><span·class="p">.</span></code></pre><p>&quot;Sparse&quot;·functions·ignore·defaul[·...·truncated·by·diffoscope;·len:·515,·SHA:·74376588d51659fb0330d77e6fc52e3d0646285a3b24522f0fb5c1d30f776e3b·...·]-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="1261729023-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="1261729023-1">)</span><span·class="p">.</span></code></pre><p>&quot;Sparse&quot;·functions·ignore·defaul[·...·truncated·by·diffoscope;·len:·515,·SHA:·1ad8842eb7ff1f9a8034e7b0a050c7052839d17b4f078c5d8d0f1d923eda870e·...·]-1">)</span><span·class="p">.</span><span·class="w">
144 </span><span·class="p"·data-group-id="0317315680-2">[</span><span·class="p"·data-group-id="0317315680-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="0317315680-3">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0317315680-4">{</span><span·class="mi">17</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">true</span><span·class="p"·data-group-id="0317315680-4">}</span><span·class="p"·data-group-id="0317315680-2">]</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">array</span><span·class="p">:</span><span·class="nf">sparse_to_orddict</span><span·class="p"·data-group-id="0317315680-5">(</span><span·class="n">A2</span><span·class="p"·data-group-id="0317315680-5">)</span><span·class="p">.</span></code></pre><p>An·extendible·array·can·be·made·fixed-size·later:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">A3</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">array</span><span·class="p">:</span><span·class="nf">fix</span><span·class="p"·data-group-id="9649250317-1">(</span><span·class="n">A2</span><span·class="p"·data-group-id="9649250317-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="6265353346-1">{</span><span·class="ss">&#39;EXIT&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="6265353346-2">{</span><span·clas[·...·truncated·by·diffoscope;·len:·805,·SHA:·bb2b39e974ec98397c4ebd429409b916187f0f24774963eb67ed301de1dfca43·...·]144 </span><span·class="p"·data-group-id="0421315664-2">[</span><span·class="p"·data-group-id="0421315664-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="0421315664[·...·truncated·by·diffoscope;·len:·1181,·SHA:·5157d4b866adaa21af3f076ad68a2a55cd8b624a9a4990c81c94b8a2c34bf8fc·...·]
 145 beyond·the·last·set·entry:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="7751177009-1">{</span><span·class="ss">&#39;EXIT&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="7751177009-2">{</span><span·class="ss">badarg</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id="7751177009-2">}</span><span·class="p"·data-group-id="7751177009-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="7751177009-3">(</span><span·class="k">catch</span><span·class="w">·</span><span·class="nc">array</span><span·class="p">:</span><span·class="nf">set</span><span·class="p"·data-group-id="7751177009-4">(</span><span·class="mi">18</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">true</span><span·class="p">,</span><span·class="w">·</span><span·class="n">A3</span><span·class="p"·data-group-id="7751177009-4">)</span><span·class="p"·data-group-id="7751177009-3">)</span><span·class="p">.</span><span·class="w">
146 </span><span·class="p"·data-group-id="6265353346-5">{</span><span·class="ss">&#39;EXIT&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="6265353346-6">{</span><span·class="ss">badarg</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id="6265353346[·...·truncated·by·diffoscope;·len:·568,·SHA:·617d9111d88b816818d86ac8918da4cc6463229740767ac5a77c5ae8a8d6ce6f·...·]-7">)</span><span·class="p">.</span></code></pre>146 </span><span·class="p"·data-group-id="7751177009-5">{</span><span·class="ss">&#39;EXIT&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="7751177009-6">{</span><span·class="ss">badarg</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id="7751177009[·...·truncated·by·diffoscope;·len:·568,·SHA:·32595d9d80a64e551366cdadeb6f613468674d00c1e8c16d04bb43ee9bec0a53·...·]-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="5538185228-1">(</span><span·class="mi">100</span><span·class="p"·data-group-id="5538185228-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:·1a6ed4871b5f59b92b37dd7625464f370fceb5b42365a95d703f94195fd68c4e·...·]-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="3079076577-1">(</span><span·class="mi">100</span><span·class="p"·data-group-id="3079076577-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:·cdd0a21609b7eae56e911aaacbff048bf992c5202197d1f779c0c8e3fe3be3c0·...·]-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="0591310861-1">(</span><span·class="mi">100</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0591310861-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:·67,·SHA:·84b2020917c0c1f89d53d8b917aebe76e8362a2f9d8d0d1ce84b7da10ed2b86b·...·]-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="0047553502-1">(</span><span·class="mi">100</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0047553502-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:·67,·SHA:·ec05aea7becf4ac9bc68553c7ccd0367c8c28a85aa7f5cac4ebc0ed99ab50130·...·]-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.2/doc/html/assert_hrl.html
    
Offset 128, 15 lines modifiedOffset 128, 15 lines modified
128 <p>Assert·macros.</p><h2·id="description"·class="section-heading">128 <p>Assert·macros.</p><h2·id="description"·class="section-heading">
129 ··<a·href="#description"·class="hover-link">129 ··<a·href="#description"·class="hover-link">
130 ····<i·class="ri-link-m"·aria-hidden="true"></i>130 ····<i·class="ri-link-m"·aria-hidden="true"></i>
131 ··</a>131 ··</a>
132 ··<span·class="text">Description</span>132 ··<span·class="text">Description</span>
133 </h2>133 </h2>
134 <p>The·include·file·<code·class="inline">assert.hrl</code>·provides·macros·for·inserting·assertions·in·your134 <p>The·include·file·<code·class="inline">assert.hrl</code>·provides·macros·for·inserting·assertions·in·your
135 program·code.</p><p>Include·the·following·directive·in·the·module·from·which·the·function·is·called:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="1832534023-1">(</span><span·class="s">&quot;stdlib/include/assert.hrl&quot;</span><span·class="p"·data-group-id="1832534023-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="4663988153-1">(</span><span·class="s">&quot;stdlib/include/assert.hrl&quot;</span><span·class="p"·data-group-id="4663988153-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="4069880786-1">(</span><span·class="p"·data-group-id="4069880786-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="4069880786-2">}</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·389,·SHA:·227377bbb86591b90ba8b927cde0b01993b859fa94a70f66e414a8b79245721f·...·]6-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="4644543846-1">(</span><span·class="p"·data-group-id="4644543846-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="4644543846-2">}</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·389,·SHA:·0a72685d0fc883c4d1a8a85e1e61afce50902f3e428267e6d5068cfdfb2ef46f·...·]6-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.2/doc/html/base64.html
    
Offset 649, 24 lines modifiedOffset 649, 24 lines modified
649 ····················Data·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:binary/0">binary</a>().</pre>649 ····················Data·::·<a·href="../../../../erts-15.2.6/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="0728863335-1">(</span><span·class="s">&quot;AQIDBA==&quot;</span><span·class="p"·data-group-id="0728863335-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="3754246155-1">(</span><span·class="s">&quot;AQIDBA==&quot;</span><span·class="p"·data-group-id="3754246155-1">)</span><span·class="p">.</span><span·class="w">
655 </span><span·class="p"·data-group-id="0728863335-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="0728863335-2">&gt;&gt;</span><span·class="gp·unselectable">655 </span><span·class="p"·data-group-id="3754246155-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="3754246155-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="0728863335-3">(</span><span·class="s">&quot;AQ·ID·BA==&quot;</span><span·class="p"·data-group-id="0728863335-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="3754246155-3">(</span><span·class="s">&quot;AQ·ID·BA==&quot;</span><span·class="p"·data-group-id="3754246155-3">)</span><span·class="p">.</span><span·class="w">
657 </span><span·class="p"·data-group-id="0728863335-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="0728863335-4">&gt;&gt;</span><span·class="gp·unselectable">657 </span><span·class="p"·data-group-id="3754246155-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="3754246155-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="0728863335-5">(</span><span·class="s">&quot;AQIDBA=&quot;</span><span·class="p"·data-group-id="0728863335-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="3754246155-5">(</span><span·class="s">&quot;AQIDBA=&quot;</span><span·class="p"·data-group-id="3754246155-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="0728863335-6">(</span><span·class="s">&quot;AQIDBA=&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0728863335-7">#{</span><span·class="w">·</span><span·class="ss">padding</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·187,·SHA:·2709e04308e46cd452a2d430795eb12857c81ec13a52d331ba25a7f20690564b·...·]5-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="3754246155-6">(</span><span·class="s">&quot;AQIDBA=&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3754246155-7">#{</span><span·class="w">·</span><span·class="ss">padding</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·187,·SHA:·5cca88e5224711ef75ee3b8fb636cd179c043eb129bd481afe5c9bb766e25619·...·]5-6">)</span><span·class="p">.</span><span·class="w">
663 </span><span·class="p"·data-group-id="0728863335-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="0728863335-8">&gt;&gt;</span></code></pre>663 </span><span·class="p"·data-group-id="3754246155-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="3754246155-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.6/doc/html/erlang.html#t:binary/0">binary</a>().</pre>896 ·························Data·::·<a·href="../../../../erts-15.2.6/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="8337093968-1">(</span><span·class="s">&quot;AQIDBA==&quot;</span><span·class="p"·data-group-id="8337093968-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="7949969804-1">(</span><span·class="s">&quot;AQIDBA==&quot;</span><span·class="p"·data-group-id="7949969804-1">)</span><span·class="p">.</span><span·class="w">
902 </span><span·class="p"·data-group-id="8337093968-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="8337093968-2">&gt;&gt;</span><span·class="gp·unselectable">902 </span><span·class="p"·data-group-id="7949969804-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="7949969804-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="8337093968-3">(</span><span·class="s">&quot;AQIDB=A=&quot;</span><span·class="p"·data-group-id="8337093968-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="7949969804-3">(</span><span·class="s">&quot;AQIDB=A=&quot;</span><span·class="p"·data-group-id="7949969804-3">)</span><span·class="p">.</span><span·class="w">
904 </span><span·class="p"·data-group-id="8337093968-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="8337093968-4">&gt;&gt;</span></code></pre>904 </span><span·class="p"·data-group-id="7949969804-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="7949969804-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.2/doc/html/beam_lib.html
    
Offset 147, 16 lines modifiedOffset 147, 16 lines modified
147 <a·href="#strip_files/1"><code·class="inline">strip_files/1</code></a>,·and/or·<a·href="#strip_release/1"><code·class="inline">strip_release/1</code></a>.</p><h2·id="module-reconstruct-source-code"·class="section-heading">147 <a·href="#strip_files/1"><code·class="inline">strip_files/1</code></a>,·and/or·<a·href="#strip_release/1"><code·class="inline">strip_release/1</code></a>.</p><h2·id="module-reconstruct-source-code"·class="section-heading">
148 ··<a·href="#module-reconstruct-source-code"·class="hover-link">148 ··<a·href="#module-reconstruct-source-code"·class="hover-link">
149 ····<i·class="ri-link-m"·aria-hidden="true"></i>149 ····<i·class="ri-link-m"·aria-hidden="true"></i>
150 ··</a>150 ··</a>
151 ··<span·class="text">Reconstruct·Source·Code</span>151 ··<span·class="text">Reconstruct·Source·Code</span>
152 </h2>152 </h2>
153 <p>The·following·example·shows·how·to·reconstruct·Erlang·source·code·from·the·debug153 <p>The·following·example·shows·how·to·reconstruct·Erlang·source·code·from·the·debug
154 information·in·a·BEAM·file·<code·class="inline">Beam</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="5884989250-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="5884989250-2">{</span><span·class="p">_</span><span·class="p">,</span><span·class="p"·data-group-id="5884989250-3">[</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·921,·SHA:·e517c08b17beb7d531204c2c34f25dc8c4aaf55057c37f7f8e36e5d73795d8b1·...·]-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="9338844823-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9338844823-2">{</span><span·class="p">_</span><span·class="p">,</span><span·class="p"·data-group-id="9338844823-3">[</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·921,·SHA:·e2129778875db461ece6d0a0ccb4aca61656bf6130c00fd7509f058e65026200·...·]-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="5884989250-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="5884989250-9">[</span><span·class="nc">erl_pr[·...·truncated·by·diffoscope;·len:·493,·SHA:·136b7bcda4ede6084239644445d877378b6b1f6134af179bd1ee40152806b842·...·]-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="9338844823-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="9338844823-9">[</span><span·class="nc">erl_pr[·...·truncated·by·diffoscope;·len:·493,·SHA:·7388fc96fe1c2ab6fb4c46b0e71b5606b3eb97eae3e35bb0d0eb66acddbe4c2d·...·]-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.6/doc/html/init.html#home">user's·home·directory</a>·and·then182 <a·href="../../../../erts-15.2.6/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="4817463377-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:·d7c78b1c3f528df9026e29bccd2051e4d3199b1aa69cf23ed0e1807d23e66412·...·]-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="0586707545-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:·0a7369f6ec399ba16b03eec4dd14f4cd3c0aca785f129bea263b9edc90fdf6aa·...·]-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="5580527110-1">[</span><span·class="p"·data-group-id="5580527110-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:·f5267de533f8f467aafed2f1324c420f8ac0ba2e319f54efa230448806fc13d9·...·]-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="8042939435-1">[</span><span·class="p"·data-group-id="8042939435-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:·0cce5c355055e3dd59eb2de6abc60c4a5780750ff92bacd2519f238d5d4e510e·...·]-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="1288031954-1">[</span><span·class="p"·data-group-id="1288031954-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:·98ed5971ce04085643f91330c0d83869798c4cca4fbe8f08ddfb529d16dca21a·...·]-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="9108878259-1">[</span><span·class="p"·data-group-id="9108878259-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:·f4c5384481496cada71d7b00ff9144a0d95f2abca3775d7afc8dbcfa07186d21·...·]-2">}</span><span·class="p">,</span><span·class="w">
191 ·</span><span·class="p"·data-group-id="1288031954-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="1288031954-4">[</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·250,·SHA:·127588fbf662a3ac93ed7b26649002ce17acae55ebd57491e5b74ae53d6a4f10·...·]-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="9108878259-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="9108878259-4">[</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·250,·SHA:·ddf7c9634e19aac4661df9553b69f6895c810017af093741bd27d75052e7adaa·...·]-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.6/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.6/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="2360901393-1">(</span><span·class="ss">init</span><span·class="p"·data-group-id="2360901393-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:·b8292364e3e1d5a24e2f1b2af053e5e0b6e888e193692ecddc329f4dc07368f9·...·]-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="8029910517-1">(</span><span·class="ss">init</span><span·class="p"·data-group-id="8029910517-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:·e337dbca6eb252d8a60f64fe1de2b1d0cf71076bfad257cbd1a7eaeef5387fc3·...·]-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="4319736694-1">(</span><span·class="p"·data-group-id="4319736694-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</sp[·...·truncated·by·diffoscope;·len:·176,·SHA:·d40b8498dbab9ea07c1185a9ca0e0374c7275a289cbd43b661e8594c4eb4f55a·...·]-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="4324020021-1">(</span><span·class="p"·data-group-id="4324020021-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</sp[·...·truncated·by·diffoscope;·len:·176,·SHA:·57c8d854cafafac14ac17640220cef22d838377e2d035c87324a2d81c481e6ba·...·]-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="3536978462-1">(</span><span·class="ss">a</span><span·class="p"·data-group-id="3536978462-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="5394870572-1">(</span><span·class="ss">a</span><span·class="p"·data-group-id="5394870572-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="3536978462-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="3536978462-3">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="p"·data-group-id="3536978462-4">[</span><span·class="mi">1</span><spa[·...·truncated·by·diffoscope;·len:·142,·SHA:·154a8ebaf520f0ca95e5358a20b4695bf3c564f55a69ae36548d354a5ba8682c·...·]2-2">}</span><span·class="gp·unselectable">1849 </span><span·class="p"·data-group-id="5394870572-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="5394870572-3">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="p"·data-group-id="5394870572-4">[</span><span·class="mi">1</span><spa[·...·truncated·by·diffoscope;·len:·142,·SHA:·014d1c12cbda4a5e76cbbca572f7b749f88598cb941c51582230cf3a5bb76954·...·]2-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="3536978462-5">(</span><span·class="ss">b</span><span·class="p"·data-group-id="3536978462-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="5394870572-5">(</span><span·class="ss">b</span><span·class="p"·data-group-id="5394870572-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="3536978462-6">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="3536978462-7">{</span><span·class="ss">b</span><span·class="p">,</span><span·class="p"·data-group-id="3536978462-8">[</span><span·class="mi">1</span><spa[·...·truncated·by·diffoscope;·len:·142,·SHA:·ec76b6ec6427d267df65a52cb1487a6b51281d4f5182af899d8c130be6ebcedd·...·]2-6">}</span><span·class="gp·unselectable">1851 </span><span·class="p"·data-group-id="5394870572-6">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="5394870572-7">{</span><span·class="ss">b</span><span·class="p">,</span><span·class="p"·data-group-id="5394870572-8">[</span><span·class="mi">1</span><spa[·...·truncated·by·diffoscope;·len:·142,·SHA:·2bbf36ec9f9ccf48098e01f8539fae10ca0aa4cf0e18f599e888fe20c63595c9·...·]2-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="3536978462-9">(</span><span·class="ss">c</span><span·class="p"·data-group-id="3536978462-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="5394870572-9">(</span><span·class="ss">c</span><span·class="p"·data-group-id="5394870572-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="3536978462-10">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="3536978462-11">{</span><span·class="ss">c</span><span·class="p">,</span><span·class="p"·data-group-id="3536978462-12">[</span><span·class="mi">1</span><[·...·truncated·by·diffoscope;·len:·196,·SHA:·2e5bc0a92c1f4200652e37140037f8fc0ca73a1792969cbcefafa71a17f4e77c·...·]2-10">}</span><span·class="gp·unselectable">1853 </span><span·class="p"·data-group-id="5394870572-10">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="5394870572-11">{</span><span·class="ss">c</span><span·class="p">,</span><span·class="p"·data-group-id="5394870572-12">[</span><span·class="mi">1</span><[·...·truncated·by·diffoscope;·len:·196,·SHA:·6388da981f904d0ff8f88bb6be0be66e8f15141de05721496c950ce044d6d250·...·]2-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="3536978462-13">(</span><span·class="ss">d</span><span·class="p"·data-group-id="3536978462-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="5394870572-13">(</span><span·class="ss">d</span><span·class="p"·data-group-id="5394870572-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="3536978462-14">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="3536978462-15">{</span><span·class="ss">d</span><span·class="p">,</span><span·class="p"·data-group-id="3536978462-16">[</span><span·class="mi">275613208[·...·truncated·by·diffoscope;·len:·185,·SHA:·d98bec37242042dd7e1e8ae0f829e53809a8e25a6c66199605a1dce30d4f09bf·...·]2-14">}</span></code></pre>1855 </span><span·class="p"·data-group-id="5394870572-14">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="5394870572-15">{</span><span·class="ss">d</span><span·class="p">,</span><span·class="p"·data-group-id="5394870572-16">[</span><span·class="mi">275613208[·...·truncated·by·diffoscope;·len:·185,·SHA:·e0b7a83a444798465a29e92ca127710ab28260a6e1cc0a9aad813f567d2f53ba·...·]2-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.2/doc/html/binary.html
    
Offset 631, 15 lines modifiedOffset 631, 15 lines modified
  
631 ······<div·class="specs">631 ······<div·class="specs">
  
632 ··········<pre·translate="no"><span·class="attribute">-spec</span>·bin_to_list(Subject)·->·[<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:byte/0">byte</a>()]·when·Subject·::·<a·href="../../../../erts-15.2.6/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.6/doc/html/erlang.html#t:byte/0">byte</a>()]·when·Subject·::·<a·href="../../../../erts-15.2.6/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.6/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="3587022406-1">(</span><span·class="p"·data-group-id="3587022406-2">&lt;&lt;</span><span·class="s">&quot;erlang&quot;</span><span·class="p"·data-group-id="3587022406-2">&gt;&gt;</span><span·class="p"·data-group-id="3587022406-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.6/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="5621499751-1">(</span><span·class="p"·data-group-id="5621499751-2">&lt;&lt;</span><span·class="s">&quot;erlang&quot;</span><span·class="p"·data-group-id="5621499751-2">&gt;&gt;</span><span·class="p"·data-group-id="5621499751-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.6/doc/html/erlang.html#t:binary/0">binary</a>(),·Pos·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:non_neg_integer/0">non_neg_integer</a>(),·Len·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:integer/0">integer</a>().</pre>693 ·····················when·Subject·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:binary/0">binary</a>(),·Pos·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:non_neg_integer/0">non_neg_integer</a>(),·Len·::·<a·href="../../../../erts-15.2.6/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.6/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.6/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="3532242806-1">(</span><span·class="p"·data-group-id="3532242806-2">&lt;&lt;</span><span·class="s">&quot;erlang&quot;</span><span·class="p"·data-group-id="3532242806-2">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·196,·SHA:·58afc4a9241a1730ff26dfc9600f077f067c6eaead3c9ff8a85aa402a2236d71·...·]-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="8808051891-1">(</span><span·class="p"·data-group-id="8808051891-2">&lt;&lt;</span><span·class="s">&quot;erlang&quot;</span><span·class="p"·data-group-id="8808051891-2">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·196,·SHA:·d5b7d97c707b0a58b8d6d31348362d88ff4b3ce2b6041de22b0c9684734991fb·...·]-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.6/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.6/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="9600531545-1">(</span><span·class="p"·data-group-id="9600531545-2">&lt;&lt;</span><span·class="s">&quot;66&quot;</span><span·class="p"·data-group-id="9600531545-2">&gt;&gt;</span><span·class="p"·data-group-id="9600531545-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="9864290765-1">(</span><span·class="p"·data-group-id="9864290765-2">&lt;&lt;</span><span·class="s">&quot;66&quot;</span><span·class="p"·data-group-id="9864290765-2">&gt;&gt;</span><span·class="p"·data-group-id="9864290765-1">)</span><span·class="p">.</span><span·class="w">
831 </span><span·class="p"·data-group-id="9600531545-3">&lt;&lt;</span><span·class="s">&quot;f&quot;</span><span·class="p"·data-group-id="9600531545-3">&gt;&gt;</span></code></pre>831 </span><span·class="p"·data-group-id="9864290765-3">&lt;&lt;</span><span·class="s">&quot;f&quot;</span><span·class="p"·data-group-id="9864290765-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.6/doc/html/erlang.html#t:binary/0">binary</a>(),889 ·····························Subject·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:binary/0">binary</a>(),
890 ·····························Endianness·::·big·|·little,890 ·····························Endianness·::·big·|·little,
891 ·····························Unsigned·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:non_neg_integer/0">non_neg_integer</a>().</pre>891 ·····························Unsigned·::·<a·href="../../../../erts-15.2.6/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.6/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="5916168543-1">(</span><span·class="p"·data-group-id="5916168543-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="5916168543-2">[·...·truncated·by·diffoscope;·len:·56,·SHA:·da9e324efdffdbe4fde1fb07d4de2f61c689d5f47338ba6b0d424acfadb7f63c·...·]-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.6/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="7079607769-1">(</span><span·class="p"·data-group-id="7079607769-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="7079607769-2">[·...·truncated·by·diffoscope;·len:·56,·SHA:·36148a09bb13c5b1b5002d0bd9dd6df00e9f74a7634f90203021fe6e734cc1ab·...·]-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="5916168543-3">(</span><span·class="p"·data-group-id="5916168543-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="5916168543-4">[·...·truncated·by·diffoscope;·len:·131,·SHA:·bbc8f7206ce88b30fdce239b3e09fe7700a9cc7718e3517a33b9d6d36af12967·...·]-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="7079607769-3">(</span><span·class="p"·data-group-id="7079607769-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="7079607769-4">[·...·truncated·by·diffoscope;·len:·131,·SHA:·7ca9d33554e3b735bc94d7e751d6aa03d6d2fd777abce2ece3d4d7f48906c70e·...·]-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="5916168543-5">(</span><span·class="p"·data-group-id="5916168543-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="5916168543-6">[·...·truncated·by·diffoscope;·len:·134,·SHA:·e2f82866f536912b656bce83312b5ace79bf39e32e79c765c39a1309cdb7da10·...·]-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="7079607769-5">(</span><span·class="p"·data-group-id="7079607769-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="7079607769-6">[·...·truncated·by·diffoscope;·len:·134,·SHA:·d7a9994e1cc53baf6243ff2b33151ccde2695c86d303626be8d213342218fc1e·...·]-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.6/doc/html/erlang.html#t:binary/0">binary</a>(),·Case·::·lowercase·|·uppercase,·Bin2·::·<<_:_*16>>.</pre>953 ····················when·Bin·::·<a·href="../../../../erts-15.2.6/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="0340347149-1">(</span><span·class="p"·data-group-id="0340347149-2">&lt;&lt;</span><span·class="s">&quot;f&quot;</span><span·class="p"·data-group-id="0340347149-2">&gt;&gt;</span><span·class="p"·data-group-id="0340347149-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="1684686718-1">(</span><span·class="p"·data-group-id="1684686718-2">&lt;&lt;</span><span·class="s">&quot;f&quot;</span><span·class="p"·data-group-id="1684686718-2">&gt;&gt;</span><span·class="p"·data-group-id="1684686718-1">)</span><span·class="p">.</span><span·class="w">
957 </span><span·class="p"·data-group-id="0340347149-3">&lt;&lt;</span><span·class="s">&quot;66&quot;</span><span·class="p"·data-group-id="0340347149-3">&gt;&gt;</span><span·class="gp·unselectable">957 </span><span·class="p"·data-group-id="1684686718-3">&lt;&lt;</span><span·class="s">&quot;66&quot;</span><span·class="p"·data-group-id="1684686718-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="0340347149-4">(</span><span·class="p"·data-group-id="0340347149-5">&lt;&lt;</span><span·class="s">&quot;/&quot;</span><span·class="p"·data-group-id="0340347149-5">&gt;&gt;</span><span·class="p"·data-group-id="0340347149-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="1684686718-4">(</span><span·class="p"·data-group-id="1684686718-5">&lt;&lt;</span><span·class="s">&quot;/&quot;</span><span·class="p"·data-group-id="1684686718-5">&gt;&gt;</span><span·class="p"·data-group-id="1684686718-4">)</span><span·class="p">.</span><span·class="w">
959 </span><span·class="p"·data-group-id="0340347149-6">&lt;&lt;</span><span·class="s">&quot;2F&quot;</span><span·class="p"·data-group-id="0340347149-6">&gt;&gt;</span><span·class="gp·unselectable">959 </span><span·class="p"·data-group-id="1684686718-6">&lt;&lt;</span><span·class="s">&quot;2F&quot;</span><span·class="p"·data-group-id="1684686718-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="0340347149-7">(</span><span·class="p"·data-group-id="0340347149-8">&lt;&lt;</span><span·class="s">&quot;/&quot;</span><span·class="p"·data-group-id="0340347149-8">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">lowercase</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·960dc2d3ae19989ea311e5449556595c0e2cc47c85857754c32272246b025f97·...·]-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="1684686718-7">(</span><span·class="p"·data-group-id="1684686718-8">&lt;&lt;</span><span·class="s">&quot;/&quot;</span><span·class="p"·data-group-id="1684686718-8">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">lowercase</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·026d02904157d2fcea22f811c3d900c141728204de9f0e68c0e67f48a58c4970·...·]-7">)</span><span·class="p">.</span><span·class="w">
961 </span><span·class="p"·data-group-id="0340347149-9">&lt;&lt;</span><span·class="s">&quot;2f&quot;</span><span·class="p"·data-group-id="0340347149-9">&gt;&gt;</span><span·class="gp·unselectable">961 </span><span·class="p"·data-group-id="1684686718-9">&lt;&lt;</span><span·class="s">&quot;2f&quot;</span><span·class="p"·data-group-id="1684686718-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="0340347149-10">(</span><span·class="p"·data-group-id="0340347149-11">&lt;&lt;</span><span·class="s">&quot;/&quot;</span><span·class="p"·data-group-id="0340347149-11">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">uppercase<[·...·truncated·by·diffoscope;·len:·47,·SHA:·94dc90dec4f92b23398a0fb867a125906e8de2621da463de2522c98dd2e40751·...·]-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="1684686718-10">(</span><span·class="p"·data-group-id="1684686718-11">&lt;&lt;</span><span·class="s">&quot;/&quot;</span><span·class="p"·data-group-id="1684686718-11">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">uppercase<[·...·truncated·by·diffoscope;·len:·47,·SHA:·09c3fbbdace7657f0f4ca12929a50694b75967f4e25bd1d9036c23fed5870048·...·]-10">)</span><span·class="p">.</span><span·class="w">
963 </span><span·class="p"·data-group-id="0340347149-12">&lt;&lt;</span><span·class="s">&quot;2F&quot;</span><span·class="p"·data-group-id="0340347149-12">&gt;&gt;</span></code></pre>963 </span><span·class="p"·data-group-id="1684686718-12">&lt;&lt;</span><span·class="s">&quot;2F&quot;</span><span·class="p"·data-group-id="1684686718-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.6/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.6/doc/html/erlang.html#t:binary/0">binary</a>()
1018 ·························when·Unsigned·::·<a·href="../../../../erts-15.2.6/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.6/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="1644375261-1">(</span><span·class="mi">11111111</span><span·class="p"·data-group-id="1644375261-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="3026602441-1">(</span><span·class="mi">11111111</span><span·class="p"·data-group-id="3026602441-1">)</span><span·class="p">.</span><span·class="w">
1022 </span><span·class="p"·data-group-id="1644375261-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="1644375261-2">&gt;&gt;</span><span·class="gp·unselectable">1022 </span><span·class="p"·data-group-id="3026602441-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="3026602441-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="1644375261-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="1644375261-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="3026602441-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="3026602441-3">)</span><span·class="p">.</span><span·class="w">
1024 </span><span·class="p"·data-group-id="1644375261-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="1644375261-4">&gt;&gt;</span><span·class="gp·unselectable">1024 </span><span·class="p"·data-group-id="3026602441-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="3026602441-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="1644375261-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="1644375261-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="3026602441-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="3026602441-5">)</span><span·class="p">.</span><span·class="w">
1026 </span><span·class="p"·data-group-id="1644375261-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="1644375261-6">&gt;&gt;</span></code></pre>1026 </span><span·class="p"·data-group-id="3026602441-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="3026602441-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.6/doc/html/erlang.html#t:non_neg_integer/0">non_neg_integer</a>()·when·Binaries·::·[<a·href="../../../../erts-15.2.6/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.6/doc/html/erlang.html#t:non_neg_integer/0">non_neg_integer</a>()·when·Binaries·::·[<a·href="../../../../erts-15.2.6/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="2922780915-1">(</span><span·class="p"·data-group-id="2922780915-2">[</span><span·class="p"·data-group-id="2922780915-3">&lt;&lt;</span><span·class="s">&quot;erlang&quot;</span><span·class="p"·data-group-id="2922780915-3">&gt;&gt;</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·285,·SHA:·5ad73df82bf3af1542cba3d38293846af19a135cd0284d1e1659a3fd0f73a435·...·]-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="7100301320-1">(</span><span·class="p"·data-group-id="7100301320-2">[</span><span·class="p"·data-group-id="7100301320-3">&lt;&lt;</span><span·class="s">&quot;erlang&quot;</span><span·class="p"·data-group-id="7100301320-3">&gt;&gt;</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·285,·SHA:·6f78b9b3c7158232d20dd1d644fd04d282a7b9c4702cd0a97527977b4a635038·...·]-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="2922780915-5">(</span><span·class="p"·data-group-id="2922780915-6">[</span><span·class="p"·data-group-id="2922780915-7">&lt;&lt;</span><span·class="s">&quot;erlang&quot;</span><span·class="p"·data-group-id="2922780915-7">&gt;&gt;</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·281,·SHA:·64aabd54712608dab5f81ceafab0ef0fdd8176d3266bb074824191e07036e778·...·]-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="7100301320-5">(</span><span·class="p"·data-group-id="7100301320-6">[</span><span·class="p"·data-group-id="7100301320-7">&lt;&lt;</span><span·class="s">&quot;erlang&quot;</span><span·class="p"·data-group-id="7100301320-7">&gt;&gt;</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·281,·SHA:·a44b705199094ea851e4e9373f2566c413bcaf084d587136140cf6b6beb7c960·...·]-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.2/doc/html/c.html
    
Offset 1682, 15 lines modifiedOffset 1682, 15 lines modified
1682 ················Options·::·[Option]·|·Option,1682 ················Options·::·[Option]·|·Option,
1683 ················Option·::·<a·href="../../../../lib/compiler-8.6.1/doc/html/compile.html#t:option/0">compile:option</a>(),1683 ················Option·::·<a·href="../../../../lib/compiler-8.6.1/doc/html/compile.html#t:option/0">compile:option</a>(),
1684 ················Module·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:module/0">module</a>().</pre>1684 ················Module·::·<a·href="../../../../erts-15.2.6/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="9135695290-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="9135695290-2">[</span><sp[·...·truncated·by·diffoscope;·len:·214,·SHA:·ec8bc25f40b824660cf4902308f6769c836f30f628e62a3ae667952ec45ca916·...·]0-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="3303985640-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="3303985640-2">[</span><sp[·...·truncated·by·diffoscope;·len:·214,·SHA:·de39f52cde630eba444d22fcb95eb3d3b9ada8c3c3faaec315d6033f0e886068·...·]0-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.2/doc/html/calendar.html
    
Offset 1765, 18 lines modifiedOffset 1765, 18 lines modified
1765 ····································Option·::·{unit,·<a·href="#t:rfc3339_time_unit/0">rfc3339_time_unit</a>()}.</pre>1765 ····································Option·::·{unit,·<a·href="#t:rfc3339_time_unit/0">rfc3339_time_unit</a>()}.</pre>
  
1766 ······</div>1766 ······</div>
  
1767 <p>Converts·an·RFC·3339·timestamp·into·system·time.·The·data·format·of·RFC·33391767 <p>Converts·an·RFC·3339·timestamp·into·system·time.·The·data·format·of·RFC·3339
1768 timestamps·is·described·by·<a·href="https://www.ietf.org/rfc/rfc3339.txt">RFC·3339</a>.1768 timestamps·is·described·by·<a·href="https://www.ietf.org/rfc/rfc3339.txt">RFC·3339</a>.
1769 Starting·from·OTP·25.1,·the·minutes·part·of·the·time·zone·is·optional.</p><p>Valid·option:</p><ul><li><strong><code·class="inline">{unit,·Unit}</code></strong>·-·The·time·unit·of·the·return·value.·The·default·is1769 Starting·from·OTP·25.1,·the·minutes·part·of·the·time·zone·is·optional.</p><p>Valid·option:</p><ul><li><strong><code·class="inline">{unit,·Unit}</code></strong>·-·The·time·unit·of·the·return·value.·The·default·is
1770 <code·class="inline">second</code>.</li></ul><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">calendar</span><span·class="p">:</span><span·class="nf">rfc3339_to_system_time</span><span·class="p"·data-group-id="2854863338-1">(</span><span·class="s">&quot;2018-02-01T16:17:58+01:00&quot;</span><span·class="p"·data-group-id="2854863338-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="8807139374-1">(</span><span·class="s">&quot;2018-02-01T16:17:58+01:00&quot;</span><span·class="p"·data-group-id="8807139374-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="2854863338-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="8807139374-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="2854863338-3">[</span><span·class="p"·data-group-id="2854863338-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="2854863338-4">}</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·76,·SHA:·73664904a9f6c640f0ec74c938cbd08d3adb5bfd7561a103bb6a8863462d2512·...·]-2">)</span><span·class="p">.</span><span·class="w">1773 ···</span><span·class="p"·data-group-id="8807139374-3">[</span><span·class="p"·data-group-id="8807139374-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="8807139374-4">}</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·76,·SHA:·e0bcec5294b46c9eb12a7f8ff277145bb609170c531129351b10bb942fab7be9·...·]-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="3518350202-1">(</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">system_time</span><span·class="p"·data-group-id="3518350202-2">(</span><span·class="ss">second</span><span·class="p"·data-group-id="3518350202-2">)</span><span·cla[·...·truncated·by·diffoscope;·len:·32,·SHA:·513c4f2d6fab44f00e47eb8fa0a679c3dfb1495aa52216f51e4b729159b01d4b·...·]-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="1443027275-1">(</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">system_time</span><span·class="p"·data-group-id="1443027275-2">(</span><span·class="ss">second</span><span·class="p"·data-group-id="1443027275-2">)</span><span·cla[·...·truncated·by·diffoscope;·len:·32,·SHA:·cec05ccc1498d71601587c2ecc964ecfa1f971578cc920d8f3118d3d5e4a5aa9·...·]-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="3518350202-3">(</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">system_time</span><span·class="p"·data-group-id="3518350202-4">(</span><span·class="ss">second</span><span·class="p"·data-group-id="3518350202-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="1443027275-3">(</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">system_time</span><span·class="p"·data-group-id="1443027275-4">(</span><span·class="ss">second</span><span·class="p"·data-group-id="1443027275-4">)</span><span·class="p">,</span><span·class="w">
1938 ···</span><span·class="p"·data-group-id="3518350202-5">[</span><span·class="p"·data-group-id="3518350202-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="3518350202-6">}</span><span·cla[·...·truncated·by·diffoscope;·len:·85,·SHA:·cd56d38744166b02723afee6b543eb676ecf626349733cd16c4418380685964b·...·]-3">)</span><span·class="p">.</span><span·class="w">1938 ···</span><span·class="p"·data-group-id="1443027275-5">[</span><span·class="p"·data-group-id="1443027275-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="1443027275-6">}</span><span·cla[·...·truncated·by·diffoscope;·len:·85,·SHA:·6edd385ed28e478161057d220b05414c13e1f98aa65f290b822c94bba5981f89·...·]-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="3518350202-7">(</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">system_time</span><span·class="p"·data-group-id="3518350202-8">(</span><span·class="ss">second</span><span·class="p"·data-group-id="3518350202-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="1443027275-7">(</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">system_time</span><span·class="p"·data-group-id="1443027275-8">(</span><span·class="ss">second</span><span·class="p"·data-group-id="1443027275-8">)</span><span·class="p">,</span><span·class="w">
1941 ···</span><span·class="p"·data-group-id="3518350202-9">[</span><span·class="p"·data-group-id="3518350202-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="3518350202-10">}</s[·...·truncated·by·diffoscope;·len:·98,·SHA:·9b44a0dfa9296cec11005ddedbb4e4d53918451d522a85804fdae2f9b135b205·...·]-7">)</span><span·class="p">.</span><span·class="w">1941 ···</span><span·class="p"·data-group-id="1443027275-9">[</span><span·class="p"·data-group-id="1443027275-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="1443027275-10">}</s[·...·truncated·by·diffoscope;·len:·98,·SHA:·6a3f799a1e263695d71408b71ce34f0b25d9f5a0ed06b876a604f8b1617061d1·...·]-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="3518350202-11">(</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">system_time</span><span·class="p"·data-group-id="3518350202-12">(</span><span·class="ss">millisecond</span><span·class="p"·data-group-id="3518350202-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="1443027275-11">(</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">system_time</span><span·class="p"·data-group-id="1443027275-12">(</span><span·class="ss">millisecond</span><span·class="p"·data-group-id="1443027275-12">)</span><span·class="p">,</span><span·class="w">
1944 ···</span><span·class="p"·data-group-id="3518350202-13">[</span><span·class="p"·data-group-id="3518350202-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="3518350202-14">}</span><span·class="p[·...·truncated·by·diffoscope;·len:·621,·SHA:·215793fc82110f59d0910845f28cbb60216ae246031a48891dcca1d49f8f1746·...·]-11">)</span><span·class="p">.</span><span·class="w">1944 ···</span><span·class="p"·data-group-id="1443027275-13">[</span><span·class="p"·data-group-id="1443027275-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="1443027275-14">}</span><span·class="p[·...·truncated·by·diffoscope;·len:·621,·SHA:·fca32c68b73ab7bc9d4e3d04b576219dc4a0d56a79e7b366624912a09e3aa2a2·...·]-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.2/doc/html/dets.html
    
Offset 1846, 22 lines modifiedOffset 1846, 22 lines modified
  
1846 ··········<pre·translate="no"><span·class="attribute">-spec</span>·lookup(Name,·Key)·->·Objects·|·{error,·Reason}1846 ··········<pre·translate="no"><span·class="attribute">-spec</span>·lookup(Name,·Key)·->·Objects·|·{error,·Reason}
1847 ················when·Name·::·<a·href="#t:tab_name/0">tab_name</a>(),·Key·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:term/0">term</a>(),·Objects·::·[<a·href="#t:object/0">object</a>()],·Reason·::·<a·href="../../../../erts-15.2.6/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.6/doc/html/erlang.html#t:term/0">term</a>(),·Objects·::·[<a·href="#t:object/0">object</a>()],·Reason·::·<a·href="../../../../erts-15.2.6/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="4917786900-1">(</span><span·class="ss">abc</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4917786900-2">[</span><span·class="p"·data-group-id="4917786900-3">{</span><span·class="ss">type</span><span·class="p">,</span><[·...·truncated·by·diffoscope;·len:·197,·SHA:·b25298825ab77448c8072e331ade0df422a5fd6b7b950db2f1d44be882ceacc2·...·]-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="2753059869-1">(</span><span·class="ss">abc</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2753059869-2">[</span><span·class="p"·data-group-id="2753059869-3">{</span><span·class="ss">type</span><span·class="p">,</span><[·...·truncated·by·diffoscope;·len:·197,·SHA:·7d112dc5223360b1e8f90061efa61a1468df25e70c413269c47b09acdef8c8d2·...·]-1">)</span><span·class="p">.</span><span·class="w">
1851 </span><span·class="p"·data-group-id="4917786900-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">abc</span><span·class="p"·data-group-id="4917786900-4">}</span><span·class="gp·unselectable">1851 </span><span·class="p"·data-group-id="2753059869-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">abc</span><span·class="p"·data-group-id="2753059869-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="4917786900-5">(</span><span·class="ss">abc</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4917786900-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:·978ff45724ad1d6cabf6d7ba2a09cea86699b1707d7749e65b1804277d5390cb·...·]-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="2753059869-5">(</span><span·class="ss">abc</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2753059869-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:·014d0ef3aa2ac737a788dd7c68573fdc638bb22b383d273048ef701dff667c56·...·]-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="4917786900-7">(</span><span·class="ss">abc</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4917786900-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:·1a8fe53a696e741ae41113eaa44da8910a57c49421c4eca61187538d339d239c·...·]-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="2753059869-7">(</span><span·class="ss">abc</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2753059869-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:·335d4e57feab1531f5b63e8e43c612b26415c57506297395ab757f58fb340781·...·]-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="4917786900-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="4917786900-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="2753059869-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="2753059869-9">)</span><span·class="p">.</span><span·class="w">
1857 </span><span·class="p"·data-group-id="4917786900-10">[</span><span·class="p"·data-group-id="4917786900-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="4917786900-11">}</span><s[·...·truncated·by·diffoscope;·len:·294,·SHA:·8a0ea6ee568f84b9256a217391e2af3b3c07b03f5d280f79a90b585e3eb3a1aa·...·]-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="2753059869-10">[</span><span·class="p"·data-group-id="2753059869-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="2753059869-11">}</span><s[·...·truncated·by·diffoscope;·len:·294,·SHA:·0bb84465ee367e588862fcbb52aacfb9455659f14c6af705cd737263eda43217·...·]-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="0557666588-1">(</span><span·class="ss">t</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0557666588-2">[</span><span·class="p"·data-group-id="0557666588-2">]</span><span·class="p"·data-group-id="0557666588-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="1474287674-1">(</span><span·class="ss">t</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1474287674-2">[</span><span·class="p"·data-group-id="1474287674-2">]</span><span·class="p"·data-group-id="1474287674-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="0557666588-3">(</span><span·class="ss">t</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0557666588-4">[</span><span·class="p"·data-group-id="0557666588-5">{</span><span·class="mi">1</span><span·class="p">,</span><span·[·...·truncated·by·diffoscope;·len:·778,·SHA:·0cdd2dd49c4974019cbe7b3c4ca65a27972bdad4320fdf8b503a28f1d39c744d·...·]-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="1474287674-3">(</span><span·class="ss">t</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1474287674-4">[</span><span·class="p"·data-group-id="1474287674-5">{</span><span·class="mi">1</span><span·class="p">,</span><span·[·...·truncated·by·diffoscope;·len:·778,·SHA:·94b370491184d19b1be7fac40b922113805f75441bf8fafc4d3cf6d4087049c8·...·]-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="0557666588-9">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="0557666588-10">(</span><span·class="p"·data-group-id="0557666588-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:·b1e4ab79656f98f796c88e8958b755c4cbe0a46717282b72c54dba3095600e29·...·]-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="1474287674-9">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="1474287674-10">(</span><span·class="p"·data-group-id="1474287674-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:·7b6bd347f4ae8b785b6779fd0979c05d12db73ad341795edc92600ce0e4b1510·...·]-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="0557666588-15">(</span><span·class="ss">t</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0557666588-16">[</span><span·class="p"·data-group-id="0557666588-17">{</span><span·class="ss">traverse</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·2206,·SHA:·268f4e67b69d8ee641936741f3c11b2d5715ed46499a5b6dbcc586316a48f9b1·...·]-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="1474287674-15">(</span><span·class="ss">t</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1474287674-16">[</span><span·class="p"·data-group-id="1474287674-17">{</span><span·class="ss">traverse</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·2206,·SHA:·8edaa5aa0f54c1de541bb3af4cc41ee4bc5a45ffd1a847becb301b6560a0b8b4·...·]-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="1226505059-1">(</span><span·class="n">QH1</span><span·class="p"·data-group-id="1226505059-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:·e0b5c913b68f23b8d855885846871ab247855ae39c2d6600bb9052f71360c791·...·]-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="8286221547-1">(</span><span·class="n">QH1</span><span·class="p"·data-group-id="8286221547-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:·4e09655f476af9ba3d427666eb3020313c4cf4c6a348b4209721fd470fd3a520·...·]-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.6/doc/html/erlang.html#t:term/0">term</a>().</pre>2740 ······················Reason·::·<a·href="../../../../erts-15.2.6/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="5412306977-1">(</span><span·class="n">X</span><span·class="p"·data-group-id="5412306977-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:·7b3fc5a00e608d3635f164a5cec852f6a88160fde167655e13ed2e88c0b046a2·...·]-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="8424320643-1">(</span><span·class="n">X</span><span·class="p"·data-group-id="8424320643-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:·e8b075fb771e786cf4684868e503b39c9d37c0d7dcbafd8a1a91d29d3ac84ac1·...·]-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.2/doc/html/dict.html
    
Offset 134, 21 lines modifiedOffset 134, 21 lines modified
134 do·not·compare·equal·(<code·class="inline">==</code>).</p><h2·id="module-notes"·class="section-heading">134 do·not·compare·equal·(<code·class="inline">==</code>).</p><h2·id="module-notes"·class="section-heading">
135 ··<a·href="#module-notes"·class="hover-link">135 ··<a·href="#module-notes"·class="hover-link">
136 ····<i·class="ri-link-m"·aria-hidden="true"></i>136 ····<i·class="ri-link-m"·aria-hidden="true"></i>
137 ··</a>137 ··</a>
138 ··<span·class="text">Notes</span>138 ··<span·class="text">Notes</span>
139 </h2>139 </h2>
140 <p><a·href=""·id="notes"></a></p><p>Functions·<code·class="inline">append</code>·and·<code·class="inline">append_list</code>·are·included·so·that·keyed·values·can·be140 <p><a·href=""·id="notes"></a></p><p>Functions·<code·class="inline">append</code>·and·<code·class="inline">append_list</code>·are·included·so·that·keyed·values·can·be
141 stored·in·a·list·<em>accumulator</em>,·for·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="n">D0</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">dict</span><span·class="p">:</span><span·class="nf">new</span><span·class="p"·data-group-id="0343409741-1">(</span><span·class="p"·data-group-id="0343409741-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="5277026352-1">(</span><span·class="p"·data-group-id="5277026352-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="0343409741-2">(</span><span·class="ss">files</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0343409741-3">[</span><span·class="p"·data-group-id="0343409741-3">]</span><span·class="p">,</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·63,·SHA:·bd8e836f4217f68c272c058b91485867cbc1d0c0175b6ae879ad183dd347932d·...·]-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="5277026352-2">(</span><span·class="ss">files</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5277026352-3">[</span><span·class="p"·data-group-id="5277026352-3">]</span><span·class="p">,</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·63,·SHA:·19a97ab87747c0ed01b4f4b0bcaaf70bad7d3c74d06c2ce7dd235074609281ce·...·]-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="0343409741-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="0343409741-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="5277026352-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="5277026352-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="0343409741-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="0343409741-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="5277026352-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="5277026352-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="0343409741-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="0343409741-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="5277026352-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="5277026352-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="0343409741-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="0343409741-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="5277026352-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="5277026352-7">)</span><span·class="p">.</span><span·class="w">
147 </span><span·class="p"·data-group-id="0343409741-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="0343409741-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="5277026352-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="5277026352-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="1651865137-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="1651865137-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="2174716203-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="2174716203-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="1651865137-2">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="1651865137-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:·26685f597442b8dd14c5fd156981686f125efac201a680714237813d6c41df48·...·]-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="2174716203-2">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="2174716203-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:·0a8f5676f29e4ac76d5fe098cacfae76daa5fd101bf6f1dab69bbd78b9a4ccd3·...·]-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="1651865137-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="1651865137-5">(</span><span·class="n">V2</span><span·class="p"·data-group-id="16[·...·truncated·by·diffoscope;·len:·634,·SHA:·e3c974b17f9c241b2939443a067807a4a24f314da4d5a7a22c203332dd6b2bf6·...·]-4">)</span><span·class="w">878 ·················</span><span·class="nf">update</span><span·class="p"·data-group-id="2174716203-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="2174716203-5">(</span><span·class="n">V2</span><span·class="p"·data-group-id="21[·...·truncated·by·diffoscope;·len:·634,·SHA:·800926e778278fafcc572ef592f2319183f2f2a6f0945606b38859f7c13e3150·...·]-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="1651865137-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="2174716203-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="0353691258-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="0353691258-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="8876282201-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="8876282201-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="0353691258-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="0353691258-3">(</span><span·class="n">Old</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·673,·SHA:·860fa45f09c7b2e368fffe1bc46e63ce5cbd429461d1bb7a1ee66c7c9e7607cd·...·]-2">)</span><span·class="p">.</span></code></pre>1079 ····</span><span·class="nf">update</span><span·class="p"·data-group-id="8876282201-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="8876282201-3">(</span><span·class="n">Old</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·673,·SHA:·59bd73a5387ee0481ec5817524b8dbdccda4346120df498aac1e6dae4850cce7·...·]-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.6/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.6/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="1309199245-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="1309199245-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="2876509288-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="2876509288-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="1309199245-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="1309199245-3">(</span><span·class="n">Old</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·462,·SHA:·8d2b2078b0cf221b048f27baccbc2f504222d6993067339ef05b6c68ebfeb0f6·...·]-2">)</span><span·class="p">.</span></code></pre>1109 ····</span><span·class="nf">update</span><span·class="p"·data-group-id="2876509288-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="2876509288-3">(</span><span·class="n">Old</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·462,·SHA:·a7a9a32b7c2db350cc7552f53e81311d0c887f4dd45e1771e0cf45ffd83568ff·...·]-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.2/doc/html/epp.html
    
Offset 136, 15 lines modifiedOffset 136, 15 lines modified
136 <code·class="inline">Latin-1</code>·and·<code·class="inline">UTF-8</code>,·where·the·case·of·the·characters·can·be·chosen·freely.</p><p><em>Examples:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%·coding:·utf-8</span></code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%·For·this·file·we·have·chosen·encoding·=·Latin-1</span></code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%·-*-·coding:·latin-1·-*-</span></code></pre><h2·id="module-error-information"·class="section-heading">136 <code·class="inline">Latin-1</code>·and·<code·class="inline">UTF-8</code>,·where·the·case·of·the·characters·can·be·chosen·freely.</p><p><em>Examples:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%·coding:·utf-8</span></code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%·For·this·file·we·have·chosen·encoding·=·Latin-1</span></code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%%·-*-·coding:·latin-1·-*-</span></code></pre><h2·id="module-error-information"·class="section-heading">
137 ··<a·href="#module-error-information"·class="hover-link">137 ··<a·href="#module-error-information"·class="hover-link">
138 ····<i·class="ri-link-m"·aria-hidden="true"></i>138 ····<i·class="ri-link-m"·aria-hidden="true"></i>
139 ··</a>139 ··</a>
140 ··<span·class="text">Error·Information</span>140 ··<span·class="text">Error·Information</span>
141 </h2>141 </h2>
142 <p><code·class="inline">ErrorInfo</code>·is·the·standard·<code·class="inline">ErrorInfo</code>·structure·that·is·returned·from·all·I/O142 <p><code·class="inline">ErrorInfo</code>·is·the·standard·<code·class="inline">ErrorInfo</code>·structure·that·is·returned·from·all·I/O
143 modules.·The·format·is·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="8656684301-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="86566843[·...·truncated·by·diffoscope;·len:·369,·SHA:·9a425d0db0db1eab4dde5cd055fdbc37be2f61812161b8e0bf081c398f8d378c·...·]-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="1525855594-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="15258555[·...·truncated·by·diffoscope;·len:·369,·SHA:·77d4d054096180c090e4a3bdccf1c927ebaba855dc63a1cf45cf5f0bd393da44·...·]-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.2/doc/html/erl_error.html
    
Offset 309, 15 lines modifiedOffset 309, 15 lines modified
309 ······<div·class="specs">309 ······<div·class="specs">
  
310 ··········<pre·translate="no"><span·class="attribute">-type</span>·format_fun()·::·fun((<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:term/0">term</a>(),·<a·href="#t:column/0">column</a>())·->·<a·href="../../../../erts-15.2.6/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.6/doc/html/erlang.html#t:term/0">term</a>(),·<a·href="#t:column/0">column</a>())·->·<a·href="../../../../erts-15.2.6/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="9799527628-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="9799527628-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·418,·SHA:·2b094795abedcce9c07c4be4e0ce60732cabe53046349abe34e21f0f6f6871a4·...·]-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="2007916273-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="2007916273-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·418,·SHA:·55239f7efa5c0e7390032ab8f30e0ee9ccb318c99feede6ad220a58b2721f671·...·]-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="2052716267-1">(</span><span·class="ss">my_error_module</span><span·class="p"·data-group-id="2052716267-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="5817094649-1">(</span><span·class="ss">my_error_module</span><span·class="p"·data-group-id="5817094649-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="2052716267-2">(</span><span·class="p"·data-group-id="2052716267-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:·6a5cb739ca4c45748d042ce1d217b56cb9d945d93097db6bd51e2da7b724cc9c·...·]-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="5817094649-2">(</span><span·class="p"·data-group-id="5817094649-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:·8900c5fe87adac3ea68adb9b4f4f6dd9480af9ab268fcf9287106f5966954639·...·]-2">)</span><span·class="p">.</span><span·class="w">
  
433 </span><span·class="nf">atom_to_string</span><span·class="p"·data-group-id="2052716267-4">(</span><span·class="n">Arg</span><span·class="p"·data-group-id="2052716267-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="2052716267-5">(</s[·...·truncated·by·diffoscope;·len:·71,·SHA:·416d4f9f142ab57abe8c0cc0c815a733a4ae5bfbd14e7ff35f706c96120f4e76·...·]-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="5817094649-4">(</span><span·class="n">Arg</span><span·class="p"·data-group-id="5817094649-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="5817094649-5">(</s[·...·truncated·by·diffoscope;·len:·71,·SHA:·4fbea5825a768defee3f03d4c0d9f9755d0b163a61c1dd5839f2881e98ede376·...·]-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="2052716267-6">(</span><span·class="n">Arg</span><span·class="p"·data-group-id="2052716267-6">)</span><span·class="p">;</span><span·class="w">434 ··</span><span·class="nf">atom_to_list</span><span·class="p"·data-group-id="5817094649-6">(</span><span·class="n">Arg</span><span·class="p"·data-group-id="5817094649-6">)</span><span·class="p">;</span><span·class="w">
435 </span><span·class="nf">atom_to_string</span><span·class="p"·data-group-id="2052716267-7">(</span><span·class="n">Arg</span><span·class="p"·data-group-id="2052716267-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="5817094649-7">(</span><span·class="n">Arg</span><span·class="p"·data-group-id="5817094649-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="2052716267-8">(</span><span·class="ss">badarg</span><span·class="p">,</span><span·class="p"·data-group-id="2052716267-9">[</span><span·class="n">Arg</span><span·class="p"·data-group-id="2052716267-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="5817094649-8">(</span><span·class="ss">badarg</span><span·class="p">,</span><span·class="p"·data-group-id="5817094649-9">[</span><span·class="n">Arg</span><span·class="p"·data-group-id="5817094649-9">]</span><span·class="p">,</span><span·class="w">
437 ···············</span><span·class="p"·data-group-id="2052716267-10">[</span><span·class="p"·data-group-id="2052716267-11">{</span><span·class="ss">error_info</span><span·class="p">,</span><span·class="p"·data-group-id="2052716267-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="5817094649-10">[</span><span·class="p"·data-group-id="5817094649-11">{</span><span·class="ss">error_info</span><span·class="p">,</span><span·class="p"·data-group-id="5817094649-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="2052716267-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:·687be6594ac6faa135ea2caa8a003156f03840533011af0ae27f04d680ef7ed4·...·]-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="5817094649-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:·40fccee4e78a3050b4ea8b38e949fda2d1d84c63d4577c2db69a2cf337c97b22·...·]-8">)</span><span·class="p">.</span><span·class="w">
  
439 </span><span·class="nf">format_error</span><span·class="p"·data-group-id="2052716267-14">(</span><span·class="n">Reason</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2052716267-15">[</span><span·class="p"·data-group-id="2052716267-16">{</span><span·class="p">_</span><span·class="n">M</span>[·...·truncated·by·diffoscope;·len:·393,·SHA:·2d155f4fbb48384527349ab1f2cb68cdc5f22dbdcc16c6a7bd9f4bfccdd776d6·...·]-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="5817094649-14">(</span><span·class="n">Reason</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5817094649-15">[</span><span·class="p"·data-group-id="5817094649-16">{</span><span·class="p">_</span><span·class="n">M</span>[·...·truncated·by·diffoscope;·len:·393,·SHA:·f7c09dca15d2269a48b342fbb29dbd9c84d11028a801ada1de46f1f50a0081df·...·]-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="2052716267-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="2052716267-18">#{</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·74,·SHA:·b52121a070747f5212563fc38b8349c2ff6fc566ed00b667c65b3b3aee5b8bab·...·]-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="5817094649-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="5817094649-18">#{</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·74,·SHA:·ce9df89587c1b618b981593c4bfe82e124d87c11a23ce1abaaf423a4a1fe5aa5·...·]-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="2052716267-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="2052716267-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="5817094649-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="5817094649-19">)</span><span·class="p">,</span><span·class="w">
442 ··</span><span·class="n">ErrorMap</span><span·class="p"·data-group-id="2052716267-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="5817094649-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="2052716267-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="2052716267-22">[</span><span·class="o">?</s[·...·truncated·by·diffoscope;·len:·582,·SHA:·269e099ed7ec02ab8f0180187c76be29f7b52b568671ca4aae486fd3e565a433·...·]-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="5817094649-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="5817094649-22">[</span><span·class="o">?</s[·...·truncated·by·diffoscope;·len:·582,·SHA:·428e874e2cf8d1eef1b190018e19cebc4992d32a97bff30bc2a3467855ac48c5·...·]-1">)</span><span·class="p">.</span><span·class="w">
444 </span><span·class="p"·data-group-id="0603918153-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">my_error_module</span><span·class="p"·data-group-id="0603918153-2">}</span><span·class="gp·unselectable">444 </span><span·class="p"·data-group-id="6590895875-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">my_error_module</span><span·class="p"·data-group-id="6590895875-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="0603918153-3">(</span><span·class="mi">1</span><span·class="p"·data-group-id="0603918153-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="6590895875-3">(</span><span·class="mi">1</span><span·class="p"·data-group-id="6590895875-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.6/doc/html/erlang.html#t:stacktrace/0">erlang:stacktrace</a>(),524 ······························StackTrace·::·<a·href="../../../../erts-15.2.6/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="8649914671-1">(</span><span·class="p"·data-group-id="8649914671-1">)</span><span·class="w">529 ····</span><span·class="nf">do_something</span><span·class="p"·data-group-id="1979073104-1">(</span><span·class="p"·data-group-id="1979073104-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="8649914671-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="8649914671-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="1979073104-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="1979073104-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="8649914671-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="8649914671-4">[</span><span·class="n"[·...·truncated·by·diffoscope;·len:·109,·SHA:·fa8b0e5287ac70760d3f8eeeae585c84b83ba5a2cc61aaa17dbce17dc90bc389·...·]-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="1979073104-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="1979073104-4">[</span><span·class="n"[·...·truncated·by·diffoscope;·len:·109,·SHA:·16dc9a9596af18cbed8fbdb33bab920e8f7d01565d05f792ce2f346df58debe4·...·]-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="7538552644-1">(</span><span·class="ss">badarg</span><span·class="p">,</span><span·class="p"·data-group-id="7538552644-2">[</span><span·class="p"·data-group-id="7538552644-2">]</span><span·class="p">,</span><span·class="p"·data-group-id="7538552644-3">[</sp[·...·truncated·by·diffoscope;·len:·368,·SHA:·fd588304d226ac8e769913aae2601dd90ffbb10e19d1c6f7394df83cca0ccd6b·...·]-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="4711973855-1">(</span><span·class="ss">badarg</span><span·class="p">,</span><span·class="p"·data-group-id="4711973855-2">[</span><span·class="p"·data-group-id="4711973855-2">]</span><span·class="p">,</span><span·class="p"·data-group-id="4711973855-3">[</sp[·...·truncated·by·diffoscope;·len:·368,·SHA:·53740d6797a1a14b80a85047221d94531a4b47e3d00a1829390a38f1ef8f255a·...·]-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="7538552644-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="7538552644-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="4711973855-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="4711973855-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="7538552644-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="7538552644-8">[</span><span·class="n"[·...·truncated·by·diffoscope;·len:·109,·SHA:·3bb3ec2699552820c9ea0594ade2bacac280e1d661ff45e023d3c9ff5d0abefb·...·]-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="4711973855-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="4711973855-8">[</span><span·class="n"[·...·truncated·by·diffoscope;·len:·109,·SHA:·f0c13c878c5bb035caa23354d60c4774600f9d46a7e3f1c310b4e463dbf76b5d·...·]-7">)</span><span·class="w">
541 </span><span·class="k">end</span></code></pre><p>See·<a·href="../../../../erts-15.2.6/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.6/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.2/doc/html/erl_eval.html
    
Offset 137, 35 lines modifiedOffset 137, 35 lines modified
137 ··<span·class="text">Local·Function·Handler</span>137 ··<span·class="text">Local·Function·Handler</span>
138 </h2>138 </h2>
139 <p>During·evaluation·of·a·function,·no·calls·can·be·made·to·local·functions.·An139 <p>During·evaluation·of·a·function,·no·calls·can·be·made·to·local·functions.·An
140 undefined·function·error·would·be·generated.·However,·the·optional·argument140 undefined·function·error·would·be·generated.·However,·the·optional·argument
141 <code·class="inline">LocalFunctionHandler</code>·can·be·used·to·define·a·function·that·is·called·when141 <code·class="inline">LocalFunctionHandler</code>·can·be·used·to·define·a·function·that·is·called·when
142 there·is·a·call·to·a·local·function.·The·argument·can·have·the·following142 there·is·a·call·to·a·local·function.·The·argument·can·have·the·following
143 formats:</p><ul><li><p><strong><code·class="inline">{value,Func}</code></strong>·-·This·defines·a·local·function·handler·that·is·called143 formats:</p><ul><li><p><strong><code·class="inline">{value,Func}</code></strong>·-·This·defines·a·local·function·handler·that·is·called
144 with:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Func</span><span·class="p"·data-group-id="3475556566-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="3475556566-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="1201036209-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="1201036209-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.6/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.6/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="2102747321-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="2102747321-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="3730305074-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="3730305074-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="5335346969-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="5335346969-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="4348469680-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="4348469680-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.6/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.6/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="9946178560-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="9946178560-1">)</span></code></pre><p>or·three·arguments:</p><pre><code·class="makeup·erlang[·...·truncated·by·diffoscope;·len:·324,·SHA:·6fca31aa4003eef71bda8789262b4f132da099b83f2e18cc264ac0336650e6e2·...·]-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="6927399633-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="6927399633-1">)</span></code></pre><p>or·three·arguments:</p><pre><code·class="makeup·erlang[·...·truncated·by·diffoscope;·len:·324,·SHA:·175208487304fc9efe4146d5fede1ee26cd4210fe4fcb98008a5d23a4f891a09·...·]-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.6/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.6/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.2/doc/html/erl_lint.html
    
Offset 135, 15 lines modifiedOffset 135, 15 lines modified
135 your·own·Erlang·compiler.</p><h2·id="module-error-information"·class="section-heading">135 your·own·Erlang·compiler.</p><h2·id="module-error-information"·class="section-heading">
136 ··<a·href="#module-error-information"·class="hover-link">136 ··<a·href="#module-error-information"·class="hover-link">
137 ····<i·class="ri-link-m"·aria-hidden="true"></i>137 ····<i·class="ri-link-m"·aria-hidden="true"></i>
138 ··</a>138 ··</a>
139 ··<span·class="text">Error·Information</span>139 ··<span·class="text">Error·Information</span>
140 </h2>140 </h2>
141 <p><code·class="inline">ErrorInfo</code>·is·the·standard·<code·class="inline">ErrorInfo</code>·structure·that·is·returned·from·all·I/O141 <p><code·class="inline">ErrorInfo</code>·is·the·standard·<code·class="inline">ErrorInfo</code>·structure·that·is·returned·from·all·I/O
142 modules.·The·format·is·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="1381863039-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="13818630[·...·truncated·by·diffoscope;·len:·369,·SHA:·7100bf4050b96edbcb2f9dba61669b7ffb511bd04a990af30aafc41754645045·...·]-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="6569505866-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="65695058[·...·truncated·by·diffoscope;·len:·369,·SHA:·c7539764463635650ff1de61bbf082f25637b16805ccdaae0169c0e668840081·...·]-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.2/doc/html/erl_parse.html
    
Offset 134, 15 lines modifiedOffset 134, 15 lines modified
134 (see·the·<a·href="erl_scan.html"><code·class="inline">erl_scan</code></a>)·module.</p><h2·id="module-error-information"·class="section-heading">134 (see·the·<a·href="erl_scan.html"><code·class="inline">erl_scan</code></a>)·module.</p><h2·id="module-error-information"·class="section-heading">
135 ··<a·href="#module-error-information"·class="hover-link">135 ··<a·href="#module-error-information"·class="hover-link">
136 ····<i·class="ri-link-m"·aria-hidden="true"></i>136 ····<i·class="ri-link-m"·aria-hidden="true"></i>
137 ··</a>137 ··</a>
138 ··<span·class="text">Error·Information</span>138 ··<span·class="text">Error·Information</span>
139 </h2>139 </h2>
140 <p>ErrorInfo·is·the·standard·ErrorInfo·structure·that·is·returned·from·all·I/O·modules.140 <p>ErrorInfo·is·the·standard·ErrorInfo·structure·that·is·returned·from·all·I/O·modules.
141 The·format·is·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="5193285080-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="51932850[·...·truncated·by·diffoscope;·len:·369,·SHA:·16c07cdbbb21fd901875f89e1c9b7dcefcf8ad9a8e15aaa0cd7e5cd17731d489·...·]-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="2887935816-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="28879358[·...·truncated·by·diffoscope;·len:·369,·SHA:·cf018ed2ae6dfe56075aab3c8c35d3bf8a8d3dacb2bfd3c2e5086a0f2695c744·...·]-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.6/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.6/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.2/doc/html/erl_scan.html
    
Offset 132, 15 lines modifiedOffset 132, 15 lines modified
132 tokens.</p><h2·id="module-error-information"·class="section-heading">132 tokens.</p><h2·id="module-error-information"·class="section-heading">
133 ··<a·href="#module-error-information"·class="hover-link">133 ··<a·href="#module-error-information"·class="hover-link">
134 ····<i·class="ri-link-m"·aria-hidden="true"></i>134 ····<i·class="ri-link-m"·aria-hidden="true"></i>
135 ··</a>135 ··</a>
136 ··<span·class="text">Error·Information</span>136 ··<span·class="text">Error·Information</span>
137 </h2>137 </h2>
138 <p><code·class="inline">ErrorInfo</code>·is·the·standard·<code·class="inline">ErrorInfo</code>·structure·that·is·returned·from·all·I/O138 <p><code·class="inline">ErrorInfo</code>·is·the·standard·<code·class="inline">ErrorInfo</code>·structure·that·is·returned·from·all·I/O
139 modules.·The·format·is·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="4208007100-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="4208[·...·truncated·by·diffoscope;·len:·373,·SHA:·05e7d84df2b8542937bb36d320bb2f7de605c01ebd35a5c954d007ccd353af5a·...·]-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="8434191206-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="8434[·...·truncated·by·diffoscope;·len:·373,·SHA:·58746c86aa10b221a823c4ad11e94da785dceaeb6a7c81bdb2c764026751f0f2·...·]-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.2/doc/html/erl_tar.html
    
Offset 1239, 22 lines modifiedOffset 1239, 22 lines modified
1239 storage·handling·function.</p><p>Parameter·<code·class="inline">UserData</code>·is·typically·the·result·of·opening·a·low-level·structure1239 storage·handling·function.</p><p>Parameter·<code·class="inline">UserData</code>·is·typically·the·result·of·opening·a·low-level·structure
1240 like·a·file·descriptor·or·an·SFTP·channel·id.·The·different·<code·class="inline">Fun</code>·clauses1240 like·a·file·descriptor·or·an·SFTP·channel·id.·The·different·<code·class="inline">Fun</code>·clauses
1241 operate·on·that·very·term.</p><p>The·following·are·the·fun·clauses·parameter·lists:</p><ul><li><p><strong><code·class="inline">(write,·{UserData,DataToWrite})</code></strong>·-·Writes·term·<code·class="inline">DataToWrite</code>·using1241 operate·on·that·very·term.</p><p>The·following·are·the·fun·clauses·parameter·lists:</p><ul><li><p><strong><code·class="inline">(write,·{UserData,DataToWrite})</code></strong>·-·Writes·term·<code·class="inline">DataToWrite</code>·using
1242 <code·class="inline">UserData</code>.</p></li><li><p><strong><code·class="inline">(close,·UserData)</code></strong>·-·Closes·the·access.</p></li><li><p><strong><code·class="inline">(read2,·{UserData,Size})</code></strong>·-·Reads·using·<code·class="inline">UserData</code>·but·only·<code·class="inline">Size</code>·bytes.1242 <code·class="inline">UserData</code>.</p></li><li><p><strong><code·class="inline">(close,·UserData)</code></strong>·-·Closes·the·access.</p></li><li><p><strong><code·class="inline">(read2,·{UserData,Size})</code></strong>·-·Reads·using·<code·class="inline">UserData</code>·but·only·<code·class="inline">Size</code>·bytes.
1243 Notice·that·there·is·only·an·arity-2·read·function,·not·an·arity-1·function.</p></li><li><p><strong><code·class="inline">(position,{UserData,Position})</code></strong>·-·Sets·the·position·of·<code·class="inline">UserData</code>·as1243 Notice·that·there·is·only·an·arity-2·read·function,·not·an·arity-1·function.</p></li><li><p><strong><code·class="inline">(position,{UserData,Position})</code></strong>·-·Sets·the·position·of·<code·class="inline">UserData</code>·as
1244 defined·for·files·in·<a·href="../../../../lib/kernel-10.2.6/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.6/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.6/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.6/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="1316182709-1">(</span><span·class="ss">write</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1316182709-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:·5b8fe9db4dda615f9b0d8e5b2f5a92d6c62d6da7d5c0f065589f170ea201c1ee·...·]-3">)</span><span·class="p">;</span><span·class="w">1246 ···</span><span·class="nf">fun</span><span·class="p"·data-group-id="2558161571-1">(</span><span·class="ss">write</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2558161571-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:·ba10893ee260e0f334c6699b64064c611594e4e769e8d267ebd05c02fe05d1f8·...·]-3">)</span><span·class="p">;</span><span·class="w">
1247 ······</span><span·class="p"·data-group-id="1316182709-4">(</span><span·class="ss">position</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1316182709-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:·32ee5f585e1574bd822f034d3248963134b91f56b27a7080a0e75a746b24f3c5·...·]-6">)</span><span·class="p">;</span><span·class="w">1247 ······</span><span·class="p"·data-group-id="2558161571-4">(</span><span·class="ss">position</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2558161571-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:·1dc0cbe59d1cf8d2ed7d036cc989fe7217710fd96345bbd8f6d57461434cee5e·...·]-6">)</span><span·class="p">;</span><span·class="w">
1248 ······</span><span·class="p"·data-group-id="1316182709-7">(</span><span·class="ss">read2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1316182709-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:·8b1c33779809f6bb52e9025d9bd0a9be84a17997ce4a561c5dbb54dfcaaa3572·...·]-9">)</span><span·class="p">;</span><span·class="w">1248 ······</span><span·class="p"·data-group-id="2558161571-7">(</span><span·class="ss">read2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2558161571-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:·17e8f311d8d3bbb89eb3f75c2ef83ecd2e50f3d7a69fb487a3fe37dff07ca7cb·...·]-9">)</span><span·class="p">;</span><span·class="w">
1249 ······</span><span·class="p"·data-group-id="1316182709-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="1316182709-10">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·200,·SHA:·9ca9935cdb83195fb85b2bc3a1690f98157d54e531675d098605cd8ea799f98d·...·]-11">)</span><span·class="w">1249 ······</span><span·class="p"·data-group-id="2558161571-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="2558161571-10">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·200,·SHA:·f97b382a8be73f64857f606ed01aa912ddc6294faa6d324c5495fc78186633f2·...·]-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="1683274629-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Fd</span><span·class="p"·data-group-id="1683274629-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="1683274629-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="1683274629-2">)</span><span·class="p">.</span><span·class="w"> 
1251 </span><span·class="p"·data-group-id="1683274629-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">TarDesc</span><span·class="p"·data-group-id="1683274629-3">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w"[·...·truncated·by·diffoscope;·len:·1041,·SHA:·3ce60f1ce95ab35d1b8b67b63a924684998afa2906a479923e4ffa0bc4b8449b·...·]</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:·d15b7e253ae2a92598c103a58aef52bc1ba2427e24ac6e16427ec34c8943115a·...·]</span><span·class="w">
 1251 </span><span·class="p"·data-group-id="8279175735-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">TarDesc</span><span·class="p"·data-group-id="8279175735-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="8279175735-4">(</span><span·class="n">Fd</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8279175735-5">[</span><span·class="ss">write</span><span·class="p"·data-group-id="8279175735-5">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ExampleFun</span><span·class="p"·data-group-id="8279175735-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="9943642970-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="9943642970-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="1020072188-2">(</span><span·class="n">TarDesc</span><span·class="p"·data-group-id="1020072188-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="9943642970-2">(</span><span·class="n">TarDesc</span><span·class="p"·data-group-id="9943642970-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.2/doc/html/escript.html
    
Offset 502, 75 lines modifiedOffset 502, 75 lines modified
502 <code·class="inline">shebang</code>·defaults·to·<code·class="inline">&quot;/usr/bin/env·escript&quot;</code>.·The·<code·class="inline">comment</code>·defaults·to502 <code·class="inline">shebang</code>·defaults·to·<code·class="inline">&quot;/usr/bin/env·escript&quot;</code>.·The·<code·class="inline">comment</code>·defaults·to
503 <code·class="inline">&quot;This·is·an·-*-·erlang·-*-·file&quot;</code>.·The·created·escript·can·either·be·returned503 <code·class="inline">&quot;This·is·an·-*-·erlang·-*-·file&quot;</code>.·The·created·escript·can·either·be·returned
504 as·a·binary·or·written·to·file.</p><p>As·an·example·of·how·the·function·can·be·used,·we·create·an·interpreted·escript504 as·a·binary·or·written·to·file.</p><p>As·an·example·of·how·the·function·can·be·used,·we·create·an·interpreted·escript
505 that·uses·<code·class="inline">emu_args</code>·to·set·some·emulator·flag.·In·this·case,·it·happens·to·set505 that·uses·<code·class="inline">emu_args</code>·to·set·some·emulator·flag.·In·this·case,·it·happens·to·set
506 number·of·schedulers·with·<code·class="inline">+S3</code>.·We·also·extract·the·different·sections·from·the506 number·of·schedulers·with·<code·class="inline">+S3</code>.·We·also·extract·the·different·sections·from·the
507 newly·created·script:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="n">Source</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;%%·Demo\nmain(_Args)·-&gt;\n····io:format(\&quot;</span><span·class="si">~p</span><span·class="s">\&quot;,[erlang:system_info(schedulers)]).\n&quot;</span><span·class="p">.</span><span·class="w">507 newly·created·script:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="n">Source</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;%%·Demo\nmain(_Args)·-&gt;\n····io:format(\&quot;</span><span·class="si">~p</span><span·class="s">\&quot;,[erlang:system_info(schedulers)]).\n&quot;</span><span·class="p">.</span><span·class="w">
508 </span><span·class="s">&quot;%%·Demo\nmain(_Args)·-&gt;\n····io:format(erlang:system_info(schedulers)).\n&quot;</span><span·class="gp·unselectable">508 </span><span·class="s">&quot;%%·Demo\nmain(_Args)·-&gt;\n····io:format(erlang:system_info(schedulers)).\n&quot;</span><span·class="gp·unselectable">
509 &gt;·</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="3900086507-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="3900086507-2">[</span><span·class="n">Source</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·75,·SHA:·a328934a2e649565f8b3f8f8ad44cfbd0260c5f94b8bb65fcadaa9859285e9b9·...·]-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="3289354349-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="3289354349-2">[</span><span·class="n">Source</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·75,·SHA:·d2571852b72fc0a2e842e18348e690e057ce0f02c8e252bc84c2459a32942f64·...·]-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="3900086507-3">(</span><span·class="p">_</span><span·class="n">Args</span><span·class="p"·data-group-id="3900086507-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="3289354349-3">(</span><span·class="p">_</span><span·class="n">Args</span><span·class="p"·data-group-id="3289354349-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="3900086507-4">(</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">system_info</span><span·class="p"·data-group-id="3900086507-5">(</span><span·class="ss">schedulers</span><span·class="p"·data-group-id="3900086507-5">)</span><span·[·...·truncated·by·diffoscope;·len:·35,·SHA:·d1be8fe297037e42086aa236822c7d9589db4a10c21c80b42d4ef65af1f74f1a·...·]-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="3289354349-4">(</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">system_info</span><span·class="p"·data-group-id="3289354349-5">(</span><span·class="ss">schedulers</span><span·class="p"·data-group-id="3289354349-5">)</span><span·[·...·truncated·by·diffoscope;·len:·35,·SHA:·8a9eaa78f5bc043dc81eca9ef3625dfaf599a07cc0d501b5f796427e42f4b382·...·]-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="3900086507-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="3900086507-6">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·629,·SHA:·9985eea2ffdcc0ea67a49a446d885b9b31d5a4189537b1edd915f8fabfac0d0e·...·]-9">}</span><span·class="p">,</span><span·class="w">514 &gt;·</span><span·class="p"·data-group-id="3289354349-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="3289354349-6">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·629,·SHA:·cfa1d88c41c952fae399089760a97fa69a0cfc346bc6ea35abb756dace6818c6·...·]-9">}</span><span·class="p">,</span><span·class="w">
515 ······································</span><span·class="p"·data-group-id="3900086507-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="3900086507-11">(</span><span·class="n">Source</span><span·class="p"·data-group-id="3900[·...·truncated·by·diffoscope;·len:·167,·SHA:·59b612ade2126bede28b98adf81f26ba33512575b063f4a2d3feac159370e72b·...·]-7">)</span><span·class="p">.</span><span·class="w">515 ······································</span><span·class="p"·data-group-id="3289354349-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="3289354349-11">(</span><span·class="n">Source</span><span·class="p"·data-group-id="3289[·...·truncated·by·diffoscope;·len:·167,·SHA:·5fd2831a3b4b7a1090fe1157e35266af733c466e2f2ae4b101c7de69fda8a569·...·]-7">)</span><span·class="p">.</span><span·class="w">
516 </span><span·class="p"·data-group-id="3900086507-12">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="3900086507-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[·...·truncated·by·diffoscope;·len:·151,·SHA:·c1135b539a170634651c9376e8ae399cddd6e4a044c9281c556962797f0848fd·...·]-12">}</span><span·class="gp·unselectable">516 </span><span·class="p"·data-group-id="3289354349-12">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="3289354349-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[·...·truncated·by·diffoscope;·len:·151,·SHA:·a114302221b45b8250d048224ed2e16255e6453f104ee77308de71bf053e4d2f·...·]-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="3900086507-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="3900086507-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="3289354349-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="3289354349-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="3900086507-15">(</span><span·class="s">&quot;escript·demo.escript&quot;</span><span·class="p"·data-group-id="3900086507-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="3289354349-15">(</span><span·class="s">&quot;escript·demo.escript&quot;</span><span·class="p"·data-group-id="3289354349-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="3900086507-16">(</span><span·class="s">&quot;demo.escript&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3900086507-17">[</span><span·class="p"·data-group-id="3900086507-17">]</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·10,·SHA:·5d02d8a0de8d598a4400ecc3cde5db13fff82fc203526c7c7421800b070cdb3c·...·]-16">)</span><span·class="p">.</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="3289354349-16">(</span><span·class="s">&quot;demo.escript&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3289354349-17">[</span><span·class="p"·data-group-id="3289354349-17">]</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·10,·SHA:·029047b52e0fc4b8116fbc7161592d51f9008a0a2bb96ec775b08abdc9772a0f·...·]-16">)</span><span·class="p">.</span><span·class="w">
522 </span><span·class="p"·data-group-id="3900086507-18">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="3900086507-19">[</span><span·class="p"·data-group-id="3900086507-20">{</span><span·class="ss">shebang</span><span·class="p">,</span><span·class="ss">defa[·...·truncated·by·diffoscope;·len:·543,·SHA:·be721bdc3f38835936e61f9d3636ac78e8ec12a5976f42603c0328d8eb00c53a·...·]-22">}</span><span·class="p">,</span><span·class="w">522 </span><span·class="p"·data-group-id="3289354349-18">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="3289354349-19">[</span><span·class="p"·data-group-id="3289354349-20">{</span><span·class="ss">shebang</span><span·class="p">,</span><span·class="ss">defa[·...·truncated·by·diffoscope;·len:·543,·SHA:·d6d6c5221d60c12a48d9c4f7540f3202eb2261ccb5b7a2e917668c2a36dd6023·...·]-22">}</span><span·class="p">,</span><span·class="w">
523 ·····</span><span·class="p"·data-group-id="3900086507-23">{</span><span·class="ss">source</span><span·class="p">,</span><span·class="p"·data-group-id="3900086507-24">&lt;&lt;</span><span·class="s">&quot;%%·Demo\nmain(_Args)·-&gt;\n····io:format(erlang:system_info(schedu&quot;</span><span·class="p">.[·...·truncated·by·diffoscope;·len:·567,·SHA:·8fa8645e5b9d3adc3873b525488744294ecb965ea07926a73a10adc61dd52d25·...·]-1">(</span><span·class="s">&quot;demo.erl&quot;</span><span·class="p">,</span><span·class="w">523 ·····</span><span·class="p"·data-group-id="3289354349-23">{</span><span·class="ss">source</span><span·class="p">,</span><span·class="p"·data-group-id="3289354349-24">&lt;&lt;</span><span·class="s">&quot;%%·Demo\nmain(_Args)·-&gt;\n····io:format(erlang:system_info(schedu&quot;</span><span·class="p">.[·...·truncated·by·diffoscope;·len:·567,·SHA:·74ca557e93d1cafd89e8527bcd96ae3925b7b7f29cb4a52440577e277feadbc9·...·]-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="7410039186-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="7410039186-2">]</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·b83252f68ee9fe0440a51d0f6ab8fccb630e4dc135012336118946a9168cd40b·...·]-1">)</span><span·class="p">.</span><span·class="w">524 ··················</span><span·class="p"·data-group-id="4367314308-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="4367314308-2">]</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·fee6766b3feb39d4ee6686138eaf6a61c1f75f9df982f482a1ce445e9fb16150·...·]-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="7410039186-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="7410039186-3">}</span><spa[·...·truncated·by·diffoscope;·len:·554,·SHA:·ba75fe305cbc025cba8eb969a9020d925696a94d7e36cb694dac5ade09aa3971·...·]-4">)</span><span·class="p">.</span><span·class="w">526 &gt;·</span><span·class="p"·data-group-id="4367314308-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="4367314308-3">}</span><spa[·...·truncated·by·diffoscope;·len:·554,·SHA:·ff0d12cc9373dfff7013d24672ee13d3fcddfe900d03349776e916e84385e587·...·]-4">)</span><span·class="p">.</span><span·class="w">
527 </span><span·class="p"·data-group-id="7410039186-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="4367314308-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="7410039186-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="4367314308-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="7410039186-7">&gt;&gt;</span><span·class="p"·data-group-id="7410039186-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="4367314308-7">&gt;&gt;</span><span·class="p"·data-group-id="4367314308-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="7410039186-8">(</span><span·class="s">&quot;demo.beam&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7410039186-9">[</span><span·class="p"·data-group-id="7410039186-10">{</span><span·class="ss">beam</span><span·c[·...·truncated·by·diffoscope;·len:·220,·SHA:·89992373490643ae49d0cac5b0a297748fe37d303e6940e0c8923d456395bdc8·...·]-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="4367314308-8">(</span><span·class="s">&quot;demo.beam&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4367314308-9">[</span><span·class="p"·data-group-id="4367314308-10">{</span><span·class="ss">beam</span><span·c[·...·truncated·by·diffoscope;·len:·220,·SHA:·05e8e332bfa4bbc94819170af0fa85bd4a4ca73361d12596ead800546d0b462b·...·]-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="7410039186-11">(</span><span·class="s">&quot;demo.beam&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7410039186-12">[</span><span·class="p"·data-group-id="7410039186-12">]</span><span·class="p"·data-group-id="7410039186-11">)</span><span·class="p">.</span><span·class="w"> 
533 </span><span·class="p"·data-group-id="7410039186-13">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="7410039186-14">[</span><span·class="p"·data-group-id="7410039186-15">{</span><span·class="ss">shebang</span><span·[·...·truncated·by·diffoscope;·len:·611,·SHA:·a232166b391841898ef92ca2f1300dfaf096fd89647d416a314ac6beb665e8ca·...·]</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="4367314308-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:·05afa1d9d19c8645d4559bb848a4ae241d20cec877978f9356dd1e6e9e981448·...·]</span><span·class="w">
 533 </span><span·class="p"·data-group-id="4367314308-13">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="4367314308-14">[</span><span·class="p"·data-group-id="4367314308-15">{</span><span·class="ss">shebang</span><span·class="p">,</span><span·class="ss">undefined</span><span·class="p"·data-group-id="4367314308-15">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4367314308-16">{</span><span·class="ss">comment</span><span·class="p">,</span><span·class="ss">undefined</span><span·class="p"·data-group-id="4367314308-16">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4367314308-17">{</span><span·class="ss">emu_args</span><span·class="p">,</span><span·class="ss">undefined</span><span·class="p"·data-group-id="4367314308-17">}</span><span·class="p">,</span><span·class="w">
534 ·····</span><span·class="p"·data-group-id="7410039186-18">{</span><span·class="ss">beam</span><span·class="p">,</span><span·class="p"·data-group-id="7410039186-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="4367314308-18">{</span><span·class="ss">beam</span><span·class="p">,</span><span·class="p"·data-group-id="4367314308-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="7410039186-19">&gt;&gt;</span><span·class="p"·data-group-id="7410039186-18">}</span><span·class="p"·data-group-id="7410039186-14">]</span><span·class="p"·data-group-id="7410039186-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="4367314308-19">&gt;&gt;</span><span·class="p"·data-group-id="4367314308-18">}</span><span·class="p"·data-group-id="4367314308-14">]</span><span·class="p"·data-group-id="4367314308-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="7410039186-20">(</span><span·class="s">&quot;escript·demo.beam&quot;</span><span·class="p"·data-group-id="7410039186-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="4367314308-20">(</span><span·class="s">&quot;escript·demo.beam&quot;</span><span·class="p"·data-group-id="4367314308-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="6955589730-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="6955589730-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="6955589730-2">(</span><span·class="s">&quot;demo.erl&quot;</span><span·class="p"·data-group-id="6955589730-2">)</span><span·class="p">.</span><span·class="w"> 
540 </span><span·class="p"·data-group-id="6955589730-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="6955589730-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:·933e1fc455efa810b16fd88e4a82b36396811561e8b86805617836af6b9bba42·...·]">539 information·about·them:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="p"·data-group-id="8335525156-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class=[·...·truncated·by·diffoscope;·len:·418,·SHA:·df847b5c76e0106efcf89777d4442af2e1196dc5fb8428385a22c6ef7f4a8474·...·]">
 540 </span><span·class="p"·data-group-id="8335525156-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="8335525156-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="8335525156-4">&gt;&gt;</span><span·class="p"·data-group-id="8335525156-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="6955589730-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="8335525156-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="6955589730-6">[</span><span·class="ss">shebang</span><span·class="p">,</span><span·class="w">542 ·················</span><span·class="p"·data-group-id="8335525156-6">[</span><span·class="ss">shebang</span><span·class="p">,</span><span·class="w">
543 ··················</span><span·class="p"·data-group-id="6955589730-7">{</span><span·class="ss">archive</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6955589730-8">[</span><span·class="p"·data-group-id="6955589730-9">{</span><span·class="s">&quot;demo.erl&quot;</span><span·[·...·truncated·by·diffoscope;·len:·116,·SHA:·ec8688f8713eaba1ab264940cd5b933bc827bd047c5c83d55fd874b8502ae6ff·...·]-9">}</span><span·class="p">,</span><span·class="w">543 ··················</span><span·class="p"·data-group-id="8335525156-7">{</span><span·class="ss">archive</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8335525156-8">[</span><span·class="p"·data-group-id="8335525156-9">{</span><span·class="s">&quot;demo.erl&quot;</span><span·[·...·truncated·by·diffoscope;·len:·116,·SHA:·8fb8db64fd5dfe2f3c5320b8f50dc7e400407a27425e1338201368995ee17b7a·...·]-9">}</span><span·class="p">,</span><span·class="w">
544 ·····························</span><span·class="p"·data-group-id="6955589730-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="6955589730-10">}</span><span·class="p"·data-group-id="6955589730-8">]</span><sp[·...·truncated·by·diffoscope;·len:·300,·SHA:·76d0e497ec6e6bdcc1d2d498eeca05ceecd4c5890ed021ba43baf2f55be0536f·...·]-5">)</span><span·class="p">.</span><span·class="w">544 ·····························</span><span·class="p"·data-group-id="8335525156-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="8335525156-10">}</span><span·class="p"·data-group-id="8335525156-8">]</span><sp[·...·truncated·by·diffoscope;·len:·300,·SHA:·ce9e6ce62be551bfa25580129373e1182895b0ae996b9aea4d4a739494bf8adf·...·]-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="6955589730-12">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6955589730-13">[</span><span·class="p"·data-group-id="6955589730-14">{</span><span·class="ss">shebang</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·565,·SHA:·5d75cb399611b66bed68649ffaab1b3a508d2828025035cb43a93201486228a3·...·]-16">}</span><span·class="p">,</span><span·class="w">546 &gt;·</span><span·class="p"·data-group-id="8335525156-12">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8335525156-13">[</span><span·class="p"·data-group-id="8335525156-14">{</span><span·class="ss">shebang</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·565,·SHA:·e4ad650b098352bf28aa07ca203fde9a168d16ab3351887a2e5e4e629a7b5129·...·]-16">}</span><span·class="p">,</span><span·class="w">
547 ·····</span><span·class="p"·data-group-id="6955589730-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="6955589730-17">}</span><span·class="p"·data-group-id="6955589730-13">]</span><span·class="[·...·truncated·by·diffoscope;·len:·497,·SHA:·0e1df708214e4db0979287d439715b9b0a9f607ea3b014f836a170d19e3682f6·...·]-18">)</span><span·class="p">.</span><span·class="w">547 ·····</span><span·class="p"·data-group-id="8335525156-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="8335525156-17">}</span><span·class="p"·data-group-id="8335525156-13">]</span><span·class="[·...·truncated·by·diffoscope;·len:·497,·SHA:·6fcdb3217f9986d370501eec861421bc646072f974f7717985cb2e6053aa0846·...·]-18">)</span><span·class="p">.</span><span·class="w">
548 </span><span·class="p"·data-group-id="6955589730-20">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="6955589730-21">[</span><span·class="p"·data-group-id="6955589730-22">{</span><span·class="ss">shebang</span><span·class="p">,</span><span·class="ss">def[·...·truncated·by·diffoscope;·len:·541,·SHA:·4172d5c3c3ca05c6c354ee75b066b7b5cde0b6b2dba98976745bd6c4d2a98b9e·...·]-24">}</span><span·class="p">,</span><span·class="w">548 </span><span·class="p"·data-group-id="8335525156-20">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="8335525156-21">[</span><span·class="p"·data-group-id="8335525156-22">{</span><span·class="ss">shebang</span><span·class="p">,</span><span·class="ss">def[·...·truncated·by·diffoscope;·len:·541,·SHA:·fecf26ffa9c8c78d584266c3de7f68bc2fb725134511ba063ab3d999e3210a31·...·]-24">}</span><span·class="p">,</span><span·class="w">
549 ·····</span><span·class="p"·data-group-id="6955589730-25">{</span><span·class="p"·data-group-id="6955589730-26">{</span><span·class="ss">archive</span><span·class="p">,</span><span·class="p"·data-group-id="6955589730-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="8335525156-25">{</span><span·class="p"·data-group-id="8335525156-26">{</span><span·class="ss">archive</span><span·class="p">,</span><span·class="p"·data-group-id="8335525156-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="6955589730-27">&gt;&gt;</span><span·class="p"·data-group-id="6955589730-26">}</span><span·class="p">]</span><span·class="p"·data-group-id="6955589730-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="8335525156-27">&gt;&gt;</span><span·class="p"·data-group-id="8335525156-26">}</span><span·class="p">]</span><span·class="p"·data-group-id="8335525156-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="6955589730-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="6955589730-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="8335525156-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="8335525156-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="6955589730-29">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="6955589730-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:·70c37d54c6c4d06aa764f71b41a06e0578030123f105d530931b6961eb26fae2·...·]-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="8335525156-29">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="8335525156-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:·fa3053dae576e83656dd45e97d0b21ca0023519368dcfc0dcc63a3133dd798d4·...·]-29">)</span><span·class="p">.</span><span·class="w">
554 </span><span·class="p"·data-group-id="6955589730-36">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="6955589730-37">[</span><span·class="p"·data-group-id="6955589730-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="8335525156-36">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="8335525156-37">[</span><span·class="p"·data-group-id="8335525156-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="6955589730-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="8335525156-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="6955589730-40">{</span><span·class="p"·data-group-id="6955589730-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="6955589730-41">}</span[·...·truncated·by·diffoscope;·len:·299,·SHA:·7e36ca4f21991c1d47c58f5623697408a1d1e996dd33d765cbda9b11897a5b26·...·]-40">}</span><span·class="p">,</span><span·class="w">556 ·················</span><span·class="p"·data-group-id="8335525156-40">{</span><span·class="p"·data-group-id="8335525156-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="8335525156-41">}</span[·...·truncated·by·diffoscope;·len:·299,·SHA:·ecb01df211fa96173b021aee7d2cc51c5cf78fb98d67c70e5214d92d77c05dc4·...·]-40">}</span><span·class="p">,</span><span·class="w">
557 ·················</span><span·class="p"·data-group-id="6955589730-43">{</span><span·class="p"·data-group-id="6955589730-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="6955589730-44">}</span[·...·truncated·by·diffoscope;·len:·299,·SHA:·6fb56236c919c34f7904ac195f214523ff1ef6c0cdc66f73bebe517bfb31b4b5·...·]-43">}</span><span·class="p">,</span><span·class="w">557 ·················</span><span·class="p"·data-group-id="8335525156-43">{</span><span·class="p"·data-group-id="8335525156-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="8335525156-44">}</span[·...·truncated·by·diffoscope;·len:·299,·SHA:·6b2c7f085fdcb942ad3005abe7da95fe5e44289fd062d3f70e8b5861d3a3a78b·...·]-43">}</span><span·class="p">,</span><span·class="w">
558 ·················</span><span·class="p"·data-group-id="6955589730-46">{</span><span·class="p"·data-group-id="6955589730-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="6955589730-47">}</span[·...·truncated·by·diffoscope;·len:·299,·SHA:·1d601acd567493c7ba7669e79bceb89fdcf870c0e1b4d098f9d94d43e993fe26·...·]-46">}</span><span·class="p">,</span><span·class="w">558 ·················</span><span·class="p"·data-group-id="8335525156-46">{</span><span·class="p"·data-group-id="8335525156-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="8335525156-47">}</span[·...·truncated·by·diffoscope;·len:·299,·SHA:·9900837bb250d43f736a4e0138106e2071cca7fe0d2f0fc84de1cb2dd3be98e5·...·]-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="6955589730-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="8335525156-39">}</span><span·class="p">,</span><span·class="w">
560 ······</span><span·class="p"·data-group-id="6955589730-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="8335525156-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="6955589730-49">&gt;&gt;</span><span·class="p"·data-group-id="6955589730-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="8335525156-49">&gt;&gt;</span><span·class="p"·data-group-id="8335525156-38">}</span><span·class="p">,</span><span·class="w">
562 ·····</span><span·class="p"·data-group-id="6955589730-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="8335525156-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="6955589730-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="8335525156-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="6955589730-52">{</span><span·class="p"·data-group-id="6955589730-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="6955589730-53">}</span[·...·truncated·by·diffoscope;·len:·299,·SHA:·38a87cfb57995248d059a12f039e1ebf0a7c8ea13bc3a505cf7cef12752ed884·...·]-52">}</span><span·class="p">,</span><span·class="w">564 ·················</span><span·class="p"·data-group-id="8335525156-52">{</span><span·class="p"·data-group-id="8335525156-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="8335525156-53">}</span[·...·truncated·by·diffoscope;·len:·299,·SHA:·02956d62dcc10a8d08240a5fef1aafcb052afdcc6b6afc4755cff82e6423cce3·...·]-52">}</span><span·class="p">,</span><span·class="w">
565 ·················</span><span·class="p"·data-group-id="6955589730-55">{</span><span·class="p"·data-group-id="6955589730-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="6955589730-56">}</span[·...·truncated·by·diffoscope;·len:·299,·SHA:·5ee167eea02c151f3ab05ef53e51ac76e4c52e5433a4d4b6d185911ae5c29f62·...·]-55">}</span><span·class="p">,</span><span·class="w">565 ·················</span><span·class="p"·data-group-id="8335525156-55">{</span><span·class="p"·data-group-id="8335525156-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="8335525156-56">}</span[·...·truncated·by·diffoscope;·len:·299,·SHA:·df7b4edd4813f1a2dea5a28122e37672d10e78344a764e5e402fc4e27ead1441·...·]-55">}</span><span·class="p">,</span><span·class="w">
566 ·················</span><span·class="p"·data-group-id="6955589730-58">{</span><span·class="p"·data-group-id="6955589730-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="6955589730-59">}</span[·...·truncated·by·diffoscope;·len:·299,·SHA:·4726402026b4c8376700401a0f1735d08664a2bfff5e4099d5803a7e3ada24c3·...·]-58">}</span><span·class="p">,</span><span·class="w">566 ·················</span><span·class="p"·data-group-id="8335525156-58">{</span><span·class="p"·data-group-id="8335525156-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="8335525156-59">}</span[·...·truncated·by·diffoscope;·len:·299,·SHA:·8ccbd1ba46fb8164a832dcd891b437e9d71afcd254e2d01b6647d420189ca593·...·]-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="6955589730-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="8335525156-51">}</span><span·class="p">,</span><span·class="w">
568 ······</span><span·class="p"·data-group-id="6955589730-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="6955589730-61">&gt;[·...·truncated·by·diffoscope;·len:·160,·SHA:·e29151cbfc2ed5ccb12e31de20c8b44a3938156a95f18fa090b043a281395c42·...·]-36">}</span></code></pre>568 ······</span><span·class="p"·data-group-id="8335525156-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="8335525156-61">&gt;[·...·truncated·by·diffoscope;·len:·160,·SHA:·bdcc5fee7eae8e87c757026e42d412299c8075c934c1b1f5e42d5964dd6319e1·...·]-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="1666880436-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="6839608567-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="1666880436-2">[</span><span·class="ss">shebang</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1666880436-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:·a441d92e47e3357a91011e7e86198cbe35dd58ee631ea93149435062d1b1ac20·...·]-5">}</span><span·class="p">,</span><span·class="w">600 ·················</span><span·class="p"·data-group-id="6839608567-2">[</span><span·class="ss">shebang</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6839608567-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:·3503d7d4f6295216c31ba3550aa9ac74f3dcca9f78b966fd2010afa0b204ecc3·...·]-5">}</span><span·class="p">,</span><span·class="w">
601 ······································</span><span·class="p"·data-group-id="1666880436-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="1666880436-6">}</span><span·class="p"·data-group-id="1666880436-4">]</span><span[·...·truncated·by·diffoscope;·len:·296,·SHA:·db6e8ea3cce95401335795c32ce6ccf9f68f237ff2750021843fed1c997e2f00·...·]-1">)</span><span·class="p">.</span><span·class="w">601 ······································</span><span·class="p"·data-group-id="6839608567-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="6839608567-6">}</span><span·class="p"·data-group-id="6839608567-4">]</span><span[·...·truncated·by·diffoscope;·len:·296,·SHA:·25c6f3b3152f61ba084cf04b3fd1c1bd3a43be5f5cd09a5b3688184bed58a90e·...·]-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="1666880436-8">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1666880436-9">[</span><span·class="p"·data-group-id="1666880436-10">{</span><span·class="ss">shebang</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·563,·SHA:·2a7ebdd402c981c6a40d9c0243dc6afb7f466279e99eb56a9f1f00060f18d1cb·...·]-12">}</span><span·class="p">,</span><span·class="w">603 &gt;·</span><span·class="p"·data-group-id="6839608567-8">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6839608567-9">[</span><span·class="p"·data-group-id="6839608567-10">{</span><span·class="ss">shebang</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·563,·SHA:·35efc8118e59ed01b1f4ebf2b8688cc1e295fd8751f049511c1f6bddf266e4fc·...·]-12">}</span><span·class="p">,</span><span·class="w">
604 ·····</span><span·class="p"·data-group-id="1666880436-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="1666880436-13">}</span><span·class="p"·data-group-id="1666880436-9">]</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·cbb70c800540e825554c8476595d819e870d573a001683384c2649a9a7700c11·...·]-8">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">604 ·····</span><span·class="p"·data-group-id="6839608567-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="6839608567-13">}</span><span·class="p"·data-group-id="6839608567-9">]</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·ba1c5e1acb552d2350e9b7cb76b5e014f9d5c4fe1cd95f7cc4a1dc4b8f8b9dfe·...·]-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="1666880436-14">(</span><span·class="s">&quot;demo.escript&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1666880436-15">[</span><span·class="p"·data-group-id="1666880436-15">]</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·11,·SHA:·104c26b037415fb3b33a5d1048db055fa4861522442b6921f1ab417c94887343·...·]-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="6839608567-14">(</span><span·class="s">&quot;demo.escript&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6839608567-15">[</span><span·class="p"·data-group-id="6839608567-15">]</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·11,·SHA:·e905ceeeef3ec7c957d7c9605fe2e5799ef14088b4a4d04e7ca4f715d1a04032·...·]-14">)</span><span·class="p">.</span><span·class="w">
606 </span><span·class="p"·data-group-id="1666880436-16">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="1666880436-17">[</span><span·class="p"·data-group-id="1666880436-18">{</span><span·class="p"·data-group-id="1666880436-19">{</span><span·class="ss">arch[·...·truncated·by·diffoscope;·len:·75,·SHA:·911966b05cb5cd5232dab07a7018f130fe43d9320200ffdf1e60aca2e11ae533·...·]-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="6839608567-16">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="6839608567-17">[</span><span·class="p"·data-group-id="6839608567-18">{</span><span·class="p"·data-group-id="6839608567-19">{</span><span·class="ss">arch[·...·truncated·by·diffoscope;·len:·75,·SHA:·5402e9cfeacb76bdeff2c411a0abf9aef8c356f8efde7eb3f0bde049a56ac182·...·]-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="1666880436-20">&gt;&gt;</span><span·class="p"·data-group-id="1666880436-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="6839608567-20">&gt;&gt;</span><span·class="p"·data-group-id="6839608567-19">}</span><span·class="w">
608 ·····</span><span·class="p"·data-group-id="1666880436-21">{</span><span·class="ss">emu_args</span><span·class="p">,</span><span·class="ss">undefined</span><span·class="p"·data-group-id="1666880436-21">}</span><span·class="p">]</span><span·class="p"·data-group-id="1666880436-18">}</span></code></pre>608 ·····</span><span·class="p"·data-group-id="6839608567-21">{</span><span·class="ss">emu_args</span><span·class="p">,</span><span·class="ss">undefined</span><span·class="p"·data-group-id="6839608567-21">}</span><span·class="p">]</span><span·class="p"·data-group-id="6839608567-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.2/doc/html/ets.html
    
Offset 216, 35 lines modifiedOffset 216, 35 lines modified
216 disallow·concurrent·updates·during·the·entire·traversal.</p><p>Moreover,·traversals·not·done·in·a·<em>safe</em>·way,·on·tables·where·keys·are·inserted216 disallow·concurrent·updates·during·the·entire·traversal.</p><p>Moreover,·traversals·not·done·in·a·<em>safe</em>·way,·on·tables·where·keys·are·inserted
217 or·deleted·during·the·traversal,·may·yield·the·following·undesired·effects:</p><ul><li>Any·key·may·be·missed.</li><li>Any·key·may·be·found·more·than·once.</li><li>The·traversal·may·fail·with·<code·class="inline">badarg</code>·exception·if·keys·are·deleted.</li></ul><p>A·table·traversal·is·<em>safe</em>·if·either</p><ul><li>the·table·is·of·type·<code·class="inline">ordered_set</code>.</li><li>the·entire·table·traversal·is·done·within·one·ETS·function·call.</li><li>function·<a·href="#safe_fixtable/2"><code·class="inline">safe_fixtable/2</code></a>·is·used·to·keep·the·table·fixated·during·the·entire217 or·deleted·during·the·traversal,·may·yield·the·following·undesired·effects:</p><ul><li>Any·key·may·be·missed.</li><li>Any·key·may·be·found·more·than·once.</li><li>The·traversal·may·fail·with·<code·class="inline">badarg</code>·exception·if·keys·are·deleted.</li></ul><p>A·table·traversal·is·<em>safe</em>·if·either</p><ul><li>the·table·is·of·type·<code·class="inline">ordered_set</code>.</li><li>the·entire·table·traversal·is·done·within·one·ETS·function·call.</li><li>function·<a·href="#safe_fixtable/2"><code·class="inline">safe_fixtable/2</code></a>·is·used·to·keep·the·table·fixated·during·the·entire
218 traversal.</li></ul><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>Even·though·the·access·of·a·single·object·is·always·guaranteed·to·be218 traversal.</li></ul><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>Even·though·the·access·of·a·single·object·is·always·guaranteed·to·be
219 <a·href="ets.html#module-concurrency">atomic·and·isolated</a>,·each·traversal·through·a·table·to219 <a·href="ets.html#module-concurrency">atomic·and·isolated</a>,·each·traversal·through·a·table·to
220 find·the·next·key·is·not·done·with·such·guarantees.·This·is·often·not·a220 find·the·next·key·is·not·done·with·such·guarantees.·This·is·often·not·a
221 problem,·but·may·cause·rare·subtle·&quot;unexpected&quot;·effects·if·a·concurrent221 problem,·but·may·cause·rare·subtle·&quot;unexpected&quot;·effects·if·a·concurrent
222 process·inserts·objects·during·a·traversal.·For·example,·consider·one·process222 process·inserts·objects·during·a·traversal.·For·example,·consider·one·process
223 doing</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">new</span><span·class="p"·data-group-id="0297122868-1">(</span><span·class="ss">t</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0297122868-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:·c399532ea161cbc514c668ab80411b88b5e4e678129fecb1d858e9d9a10096dd·...·]-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="8115769324-1">(</span><span·class="ss">t</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8115769324-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:·e1b97658aa2cba7a70ef9b53333c1191c8fd566b480e552302aae0a0ff99f358·...·]-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="0297122868-3">(</span><span·class="ss">t</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0297122868-4">{</span><span·class="mi">1</span><span·class="p"·data-group-id="0297122868-4">}</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·11,·SHA:·b4b9e1387eda24546f4191132072e42cb946c654bc7337d6857cde7fe405c75e·...·]-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="8115769324-3">(</span><span·class="ss">t</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8115769324-4">{</span><span·class="mi">1</span><span·class="p"·data-group-id="8115769324-4">}</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·11,·SHA:·22b7306a498f9c881290407d76ec2edb947442eff797968d8bcbca71c7716710·...·]-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="0297122868-5">(</span><span·class="ss">t</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0297122868-6">{</span><span·class="mi">2</span><span·class="p"·data-group-id="0297122868-6">}</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·11,·SHA:·b4b9e1387eda24546f4191132072e42cb946c654bc7337d6857cde7fe405c75e·...·]-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="8115769324-5">(</span><span·class="ss">t</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8115769324-6">{</span><span·class="mi">2</span><span·class="p"·data-group-id="8115769324-6">}</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·11,·SHA:·22b7306a498f9c881290407d76ec2edb947442eff797968d8bcbca71c7716710·...·]-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="0297122868-7">(</span><span·class="ss">t</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0297122868-8">{</span><span·class="mi">3</span><span·class="p"·data-group-id="0297122868-8">}</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·11,·SHA:·b4b9e1387eda24546f4191132072e42cb946c654bc7337d6857cde7fe405c75e·...·]-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="8115769324-7">(</span><span·class="ss">t</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8115769324-8">{</span><span·class="mi">3</span><span·class="p"·data-group-id="8115769324-8">}</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·11,·SHA:·22b7306a498f9c881290407d76ec2edb947442eff797968d8bcbca71c7716710·...·]-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="7328785204-1">(</span><span·class="ss">t</span><span·class="p">,</span><span·class="p"·data-group-id="7328785204-2">[</span><span·class="ss">ordered_set</span><span·class="p"·data-group-id="7328785204-2">]</span><span·class="p"·data-group-id="7328785204-1"[·...·truncated·by·diffoscope;·len:·546,·SHA:·2e4355e35ed1a96d9c0daf3cbf94fe1b7ba9943a9b3b50396ee61e1780089fac·...·]-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="3464578332-1">(</span><span·class="ss">t</span><span·class="p">,</span><span·class="p"·data-group-id="3464578332-2">[</span><span·class="ss">ordered_set</span><span·class="p"·data-group-id="3464578332-2">]</span><span·class="p"·data-group-id="3464578332-1"[·...·truncated·by·diffoscope;·len:·546,·SHA:·17f4721de77f211d19e85f91ba009a94b62bd26d8ba9e868542e9d95ace7f815·...·]-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="7328785204-5">(</span><span·class="n">T</span><span·class="p">,</span><span·class="p"·data-group-id="7328785204-6">{</span><span·class="p"·data-group-id="7328785204-7">[</span><span·class="sc">$5</span><span·class="p">,</span><span·class="sc">$5</span><spa[·...·truncated·by·diffoscope;·len:·387,·SHA:·6fc717d650af51c4c872f327b315db1f8d063c80bb7e92fa7dbf326e7a7dccf8·...·]-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="3464578332-5">(</span><span·class="n">T</span><span·class="p">,</span><span·class="p"·data-group-id="3464578332-6">{</span><span·class="p"·data-group-id="3464578332-7">[</span><span·class="sc">$5</span><span·class="p">,</span><span·class="sc">$5</span><spa[·...·truncated·by·diffoscope;·len:·387,·SHA:·f04368b17acaae6580fc37c0edb08129e0799d4ade88ab1e2a3d757be3948d46·...·]-5">)</span><span·class="p">.</span><span·class="w">
243 </span><span·class="p"·data-group-id="7328785204-8">[</span><span·class="p"·data-group-id="7328785204-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="7328785204-9">]</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·4b2c386cd33b1f2e6429d2bbefeb546a3498eff8dfa26583fce50ce97c90a435·...·]-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="3464578332-8">[</span><span·class="p"·data-group-id="3464578332-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="3464578332-9">]</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·69b9e0fe4f03cdcf86ed3a2df89d50cdc9f1d09a853c0f6627bcfc7ff2e40565·...·]-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="8621961045-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="8621961045-2">(</span><span·class="p"·data-group-id="8621961045-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:·60f5958a5ac7832d460388f8d209f23180e066fac20b2aecb9ff64cc3e571543·...·]5-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="1610538465-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="1610538465-2">(</span><span·class="p"·data-group-id="1610538465-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:·145b2ca42b6dc534e9c58d686fa2a4ad0e3a2d75862d6d1d4570c969cdd7cf70·...·]5-1">)</span><span·class="p">.</span><span·class="w">
1894 </span><span·class="p"·data-group-id="8621961045-4">[</span><span·class="p"·data-group-id="8621961045-5">{</span><span·class="p"·data-group-id="8621961045-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:·663,·SHA:·0bbccdd8e978a894486d9d4d88f013abd352d8e6cf776102219ed23417a3a476·...·]5-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="1610538465-4">[</span><span·class="p"·data-group-id="1610538465-5">{</span><span·class="p"·data-group-id="1610538465-6">{</span><span·class="ss">&#39;$1&#39;</span><span·class="p">,</span><span·class="ss">&#39;$2&#39;</span><span·class="p"·data-group-id="1[·...·truncated·by·diffoscope;·len:·663,·SHA:·981a720a86690e055f813c57f48c3b958015c57ca864b2110161a791635b36b0·...·]5-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="7021878760-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="7021878760-2">(</span><span·class="p"·data-group-id="7021878760-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:·bd369d8ac63713b54c5b7daa35a08fe5ce274eb25df0375717c037e52b6c763a·...·]-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="9711610464-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="9711610464-2">(</span><span·class="p"·data-group-id="9711610464-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:·4dc2ec3e134281ed646220fc2ebb81cba29d285addd60589b16c89b805b7f761·...·]-1">)</span><span·class="p">.</span><span·class="w">
1897 </span><span·class="p"·data-group-id="7021878760-4">[</span><span·class="p"·data-group-id="7021878760-5">{</span><span·class="p"·data-group-id="7021878760-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="7[·...·truncated·by·diffoscope;·len:·825,·SHA:·55879490d45c3625ede00b7a273b76c63ad04b8132a57aac25aaf7fc0e3b048a·...·]-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="9711610464-4">[</span><span·class="p"·data-group-id="9711610464-5">{</span><span·class="p"·data-group-id="9711610464-6">{</span><span·class="ss">&#39;$1&#39;</span><span·class="p">,</span><span·class="ss">&#39;$2&#39;</span><span·class="p"·data-group-id="9[·...·truncated·by·diffoscope;·len:·825,·SHA:·70d58c04bc95e35132f972fbb51546358b09a586ab1c562b84f8cb149f252bdb·...·]-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="9206115143-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="9206115143-2">(</span><span·class="p"·data-group-id="9206115143-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:·12b60a514e851204fd851047f37e213eaa10562b520afc9a05dd40f858e773ec·...·]-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="7517607335-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="7517607335-2">(</span><span·class="p"·data-group-id="7517607335-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:·5b8e83a38205dcf70e808fc7d9324808ac5a987694ab6340bcf17bb0ddaab85e·...·]-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="9206115143-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="920611[·...·truncated·by·diffoscope;·len:·4,·SHA:·2a14e0e74f5b626ed7eed6bda430a7d5c8c338b7371284799059f546a0f611bc·...·]-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="7517607335-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="751760[·...·truncated·by·diffoscope;·len:·4,·SHA:·112533d6bc1adb32dc262d3c307ef8901f23b03de5fcdf351ef6492ff4fcaf2a·...·]-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="9206115143-6">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="ss">transform_error</span><span·class="p"·data-group-id="9206115143-6">}</span><span·class="gp·unselectable">1903 </span><span·class="p"·data-group-id="7517607335-6">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="ss">transform_error</span><span·class="p"·data-group-id="7517607335-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="9206115143-7">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="9206115143-8">(</span><span·class="p"·data-group-id="9206115143-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:·07cf78ce5be51c24293b55320458e1d6779f05a2a5b3c7effa42e158f879f075·...·]-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="7517607335-7">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="7517607335-8">(</span><span·class="p"·data-group-id="7517607335-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:·5eaba0a85fec61ff767378ca23960f67ac03641a36f291bb868ce8835874e7c1·...·]-7">)</span><span·class="p">.</span><span·class="w">
1905 </span><span·class="p"·data-group-id="9206115143-11">[</span><span·class="p"·data-group-id="9206115143-12">{</span><span·class="p"·data-group-id="9206115143-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:·c00ae27bce7d960a1325c20c95e960f292f162ef3076862d178385dbecc4a7ef·...·]-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="7517607335-11">[</span><span·class="p"·data-group-id="7517607335-12">{</span><span·class="p"·data-group-id="7517607335-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:·91ea0c716aa25c9471fff8cdd9fcf2797e77e1789a90fab002681982e40a52c2·...·]-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.6/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.6/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="5371679373-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="5371679373-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="8609173640-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="8609173640-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="5371679373-2">[</span><span·class="p"·data-group-id="5371679373-3">[</span><span·class="p"·data-group-id="5371679373-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:·49a7969ad4e77847e320b5a57f40e93386879089ed7264660130888584f05a65·...·]-2">]</span><span·class="gp·unselectable">2496 </span><span·class="p"·data-group-id="8609173640-2">[</span><span·class="p"·data-group-id="8609173640-3">[</span><span·class="p"·data-group-id="8609173640-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:·6c46f71fad4dc702808866b42c4d6b851263b489ee9822933882a174aa871104·...·]-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="5371679373-9">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5371679373-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:·3e715db91e625f125fee774f67da3b3158bbafd2feee9429490af100063d4bb7·...·]-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="8609173640-9">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8609173640-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:·547518a26a5f56640e57a29e62974040ff7cd4ae0f2d8f19fec209ad2d178ac6·...·]-9">)</span><span·class="p">.</span><span·class="w">
2498 </span><span·class="p"·data-group-id="5371679373-11">[</span><span·class="p"·data-group-id="5371679373-12">[</span><span·class="mi">7</span><span·class="p"·data-group-id="5371679373-12">]</span><span·class="p">,</span><span·class="p"·data-group-id="5371679373-13">[</span><span·class="mi">5</sp[·...·truncated·by·diffoscope;·len:·98,·SHA:·f107f4d009270c9c240c70bda187d9f44c3fe3aba1e551fd836bcffd7780fbe7·...·]-11">]</span><span·class="gp·unselectable">2498 </span><span·class="p"·data-group-id="8609173640-11">[</span><span·class="p"·data-group-id="8609173640-12">[</span><span·class="mi">7</span><span·class="p"·data-group-id="8609173640-12">]</span><span·class="p">,</span><span·class="p"·data-group-id="8609173640-13">[</span><span·class="mi">5</sp[·...·truncated·by·diffoscope;·len:·98,·SHA:·a860efbc9e21d1d9d9ec9ca37b9babab9a385c55a251e35e7f570345ada3c019·...·]-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="5371679373-14">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5371679373-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:·068c07dad60ee217c620f348699e830e2f3efc77e4cf984a920011be991011bf·...·]-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="8609173640-14">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8609173640-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:·d9f8b9cc285ee5932fe7bae8e5188be6c5b86461d476581c6ec0f7f155cda7af·...·]-14">)</span><span·class="p">.</span><span·class="w">
2500 </span><span·class="p"·data-group-id="5371679373-16">[</span><span·class="p"·data-group-id="5371679373-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="8609173640-16">[</span><span·class="p"·data-group-id="8609173640-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="1792413175-1">(</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">tab2list</span><span·class="p"·data-group-id="1792413175-2">(</span><span·class="n">Table</span><span·class="p"·data-group-id="1792413175-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="7499327592-1">(</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">tab2list</span><span·class="p"·data-group-id="7499327592-2">(</span><span·class="n">Table</span><span·class="p"·data-group-id="7499327592-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="1792413175-3">(</span><span·class="n">MatchSpec</span><span·class="p"·data-group-id="1792413175-3">)</span><span·class="p"·data-group-id="1792413175-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="7499327592-3">(</span><span·class="n">MatchSpec</span><span·class="p"·data-group-id="7499327592-3">)</span><span·class="p"·data-group-id="7499327592-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="1792413175-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="1792413175-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="7499327592-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="7499327592-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="4598109977-1">(</span><span·class="ss">x</span><span·class="p">,</span><span·class="p"·data-group-id="4598109977-2">[</span><span·class="p"·data-group-id="4598109977-2">]</span><span·class="p"·data-group-id="4598109977-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="9948554073-1">(</span><span·class="ss">x</span><span·class="p">,</span><span·class="p"·data-group-id="9948554073-2">[</span><span·class="p"·data-group-id="9948554073-2">]</span><span·class="p"·data-group-id="9948554073-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="4598109977-3">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="4598109977-4">(</span><span·class="p"·data-group-id="4598109977-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:·c42d7cb590bb05c0cbefdaca9687ec1cb41be4d52fb6a4f0950b4cfa0c3158c4·...·]-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="9948554073-3">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="9948554073-4">(</span><span·class="p"·data-group-id="9948554073-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:·fb34739d6fa4c16bd2ee45d805c068d64274288726c5583915bdebf1652b20a2·...·]-3">)</span><span·class="p">,</span><span·class="w">
3094 </span><span·class="p"·data-group-id="4598109977-7">{</span><span·class="p">_</span><span·class="p">,</span><span·class="n">C</span><span·class="p"·data-group-id="4598109977-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:·14769ec9e3890615f4abb0599e98da502cb4a59b87ce2c181cd2a58546410871·...·]-8">)</span><span·class="p">,</span><span·class="w">3094 </span><span·class="p"·data-group-id="9948554073-7">{</span><span·class="p">_</span><span·class="p">,</span><span·class="n">C</span><span·class="p"·data-group-id="9948554073-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:·f98b099a9b815c1d3f07e8098250c18fa5f34c9f6ae2c36a06e51ed495a0f074·...·]-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="4598109977-9">(</span><span·class="nf">term_to_binary</span><span·class="p"·data-group-id="4598109977-10">(</span><span·class="n">C</span><span·class="p"·data-group-id="4598109977-10">)</span><span·class="p"·data-group-id="4598109977-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="9948554073-9">(</span><span·class="nf">term_to_binary</span><span·class="p"·data-group-id="9948554073-10">(</span><span·class="n">C</span><span·class="p"·data-group-id="9948554073-10">)</span><span·class="p"·data-group-id="9948554073-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="4598109977-11">(</span><span·class="n">MaybeBroken</span><span·class="p"·data-group-id="4598109977-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="9948554073-11">(</span><span·class="n">MaybeBroken</span><span·class="p"·data-group-id="9948554073-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="8734908327-1">(</span><span·class="ss">x</span><span·class="p">,</span><span·class="p"·data-group-id="8734908327-2">[</span><span·class="p"·data-group-id="8734908327-2">]</span><span·class="p"·data-group-id="8734908327-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="0865109434-1">(</span><span·class="ss">x</span><span·class="p">,</span><span·class="p"·data-group-id="0865109434-2">[</span><span·class="p"·data-group-id="0865109434-2">]</span><span·class="p"·data-group-id="0865109434-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="8734908327-3">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="8734908327-4">(</span><span·class="p"·data-group-id="8734908327-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:·8f084b9b20bad148176e026ddfc1b7d104dab7ff13d1e91ea52acd8c2b2f64c6·...·]-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="0865109434-3">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="0865109434-4">(</span><span·class="p"·data-group-id="0865109434-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:·65e24f2dd06d0cbf13267b69803903a98b738b52d018459cad098a737e006218·...·]-3">)</span><span·class="p">,</span><span·class="w">
3101 </span><span·class="p"·data-group-id="8734908327-7">{</span><span·class="p">_</span><span·class="p">,</span><span·class="n">C</span><span·class="p"·data-group-id="8734908327-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:·3948b71da42942f664db041aefcd9e871b6dc102a67ebe77d198867237bb7c25·...·]-8">)</span><span·class="p">,</span><span·class="w">3101 </span><span·class="p"·data-group-id="0865109434-7">{</span><span·class="p">_</span><span·class="p">,</span><span·class="n">C</span><span·class="p"·data-group-id="0865109434-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:·9de7dbc095164aabf065d9c91b67adbc031a20d9ad2083dc4d092b676aff8830·...·]-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="8734908327-9">(</span><span·class="nf">term_to_binary</span><span·class="p"·data-group-id="8734908327-10">(</span><span·class="n">C</span><span·class="p"·data-group-id="8734908327-10">)</span><span·class="p"·data-group-id="8734908327-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="0865109434-9">(</span><span·class="nf">term_to_binary</span><span·class="p"·data-group-id="0865109434-10">(</span><span·class="n">C</span><span·class="p"·data-group-id="0865109434-10">)</span><span·class="p"·data-group-id="0865109434-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="8734908327-11">(</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">repair_continuation</span><span·class="p"·data-group-id="8734908327-12">(</span><span·class="n">MaybeBroken</span><span·class="p">,</span><span·class="n">MS</span><s[·...·truncated·by·diffoscope;·len:·93,·SHA:·58648d7130b298fe07d7fe8ce3fee8c1396566c27d1c7e0864aed97bba515a1c·...·]-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="0865109434-11">(</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">repair_continuation</span><span·class="p"·data-group-id="0865109434-12">(</span><span·class="n">MaybeBroken</span><span·class="p">,</span><span·class="n">MS</span><s[·...·truncated·by·diffoscope;·len:·93,·SHA:·ce7462a5a576537edd80a774f423aafabdf1b171ae7fcc5fc28e1d6163dd39b5·...·]-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.2/doc/html/file_sorter.html
    
Offset 191, 43 lines modifiedOffset 191, 43 lines modified
191 function·has·been·applied·to·all·of·the·results·or·an·error·occurs,·the·last191 function·has·been·applied·to·all·of·the·results·or·an·error·occurs,·the·last
192 function·is·called·with·argument·<code·class="inline">close</code>,·and·the·reply·is·returned·as·value·of192 function·is·called·with·argument·<code·class="inline">close</code>,·and·the·reply·is·returned·as·value·of
193 the·current·call·to·the·sort·or·merge·function.</p><p>If·a·function·is·specified·as·input·and·the·last·input·function·returns193 the·current·call·to·the·sort·or·merge·function.</p><p>If·a·function·is·specified·as·input·and·the·last·input·function·returns
194 <code·class="inline">{end_of_input,·Value}</code>,·the·function·specified·as·output·is·called·with194 <code·class="inline">{end_of_input,·Value}</code>,·the·function·specified·as·output·is·called·with
195 argument·<code·class="inline">{value,·Value}</code>.·This·makes·it·easy·to·initiate·the·sequence·of·output195 argument·<code·class="inline">{value,·Value}</code>.·This·makes·it·easy·to·initiate·the·sequence·of·output
196 functions·with·a·value·calculated·by·the·input·functions.</p><p>As·an·example,·consider·sorting·the·terms·on·a·disk·log·file.·A·function·that196 functions·with·a·value·calculated·by·the·input·functions.</p><p>As·an·example,·consider·sorting·the·terms·on·a·disk·log·file.·A·function·that
197 reads·chunks·from·the·disk·log·and·returns·a·list·of·binaries·is·used·as·input.197 reads·chunks·from·the·disk·log·and·returns·a·list·of·binaries·is·used·as·input.
198 The·results·are·collected·in·a·list·of·terms.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">sort</span><span·class="p"·data-group-id="1248079845-1">(</span><span·class="n">Log</span><span·class="p"·data-group-id="1248079845-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">198 The·results·are·collected·in·a·list·of·terms.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">sort</span><span·class="p"·data-group-id="1152282738-1">(</span><span·class="n">Log</span><span·class="p"·data-group-id="1152282738-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
199 ····</span><span·class="p"·data-group-id="1248079845-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="1248079845-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class=[·...·truncated·by·diffoscope;·len:·695,·SHA:·3aff0ec9c348874fba88c11a7bae1b4cb0e7e88624a090c8b48f26cdb881a3ba·...·]-3">)</span><span·class="p">,</span><span·class="w">199 ····</span><span·class="p"·data-group-id="1152282738-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="1152282738-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class=[·...·truncated·by·diffoscope;·len:·695,·SHA:·6ca464fae511ee0c567e0e39b63e38c2d2139bf79e30ecc03e6166265614c211·...·]-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="1248079845-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="1248079845-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="1152282738-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="1152282738-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="1248079845-8">(</span><span·class="p"·data-group-id="1248079845-9">[</span><span·class="p"·data-group-id="1248079845-9">]</span><span·class="p"·data-group-id="1248079845-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="1152282738-8">(</span><span·class="p"·data-group-id="1152282738-9">[</span><span·class="p"·data-group-id="1152282738-9">]</span><span·class="p"·data-group-id="1152282738-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="1248079845-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="1248079845-11">{</span><span·class="ss">format</sp[·...·truncated·by·diffoscope;·len:·150,·SHA:·2ce80cc9fbbb2922af6f62fb9946f182b832260c3be9f3a670f003496b19205a·...·]-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="1152282738-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="1152282738-11">{</span><span·class="ss">format</sp[·...·truncated·by·diffoscope;·len:·150,·SHA:·9f277826d7dd7c145f1e3dffcd2c8b4cee466b896cf3a77066ea437bab491f7e·...·]-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="1248079845-12">(</span><span·class="n">Log</span><span·class="p"·data-group-id="1248079845-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="1152282738-12">(</span><span·class="n">Log</span><span·class="p"·data-group-id="1152282738-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="1248079845-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="1248079845-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="1152282738-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="1152282738-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="1248079845-14">(</span><span·class="ss">close</span><span·class="p"·data-group-id="1248079845-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="1152282738-14">(</span><span·class="ss">close</span><span·class="p"·data-group-id="1152282738-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="1248079845-15">(</span><span·class="ss">read</span><span·class="p"·data-group-id="1248079845-15">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">208 ·······</span><span·class="p"·data-group-id="1152282738-15">(</span><span·class="ss">read</span><span·class="p"·data-group-id="1152282738-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="1248079845-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="1248079845-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="1152282738-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="1152282738-16">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
210 ················</span><span·class="p"·data-group-id="1248079845-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="1248079845-17">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">210 ················</span><span·class="p"·data-group-id="1152282738-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="1152282738-17">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
211 ····················</span><span·class="p"·data-group-id="1248079845-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="1248079845-18">}</span><span·class="p">;</span><span·class="w">211 ····················</span><span·class="p"·data-group-id="1152282738-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="1152282738-18">}</span><span·class="p">;</span><span·class="w">
212 ················</span><span·class="p"·data-group-id="1248079845-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="1248079845-19">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">212 ················</span><span·class="p"·data-group-id="1152282738-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="1152282738-19">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
213 ····················</span><span·class="p"·data-group-id="1248079845-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="1248079845-21">(</span><span·class="n">Log</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·122,·SHA:·68a8e4d92d0807af4ecf9e2b1b2cee803f553992569136f5ab0060669f281938·...·]-20">}</span><span·class="p">;</span><span·class="w">213 ····················</span><span·class="p"·data-group-id="1152282738-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="1152282738-21">(</span><span·class="n">Log</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·122,·SHA:·7048feead75add403ec03510dc94a9cc8a41261f7731aacd3b903bff6c478602·...·]-20">}</span><span·class="p">;</span><span·class="w">
214 ················</span><span·class="p"·data-group-id="1248079845-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:·14,·SHA:·e6230aa56bec51d21b9c99a1024d22449e456bb9d4aeffbab0b389858877deb5·...·]-22">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">214 ················</span><span·class="p"·data-group-id="1152282738-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:·14,·SHA:·5e1fe96b32a1b8ef87491abc875acbdf18663e0a2f3b8a60613f3753b98bee9d·...·]-22">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
215 ····················</span><span·class="p"·data-group-id="1248079845-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="1248079845-24">(</span><span·class="n">Log</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·122,·SHA:·02b69ea6c119904c4412f25832f74cf209e3623d168e956615e099ab89d84d12·...·]-23">}</span><span·class="p">;</span><span·class="w">215 ····················</span><span·class="p"·data-group-id="1152282738-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="1152282738-24">(</span><span·class="n">Log</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·122,·SHA:·b1213f30048b5bc5c04939f77d5e41cb5b30e2c35d303c71e947f2cb80e9dc72·...·]-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="1248079845-25">(</span><span·class="n">L</span><span·class="p"·data-group-id="1248079845-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="1152282738-25">(</span><span·class="n">L</span><span·class="p"·data-group-id="1152282738-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="1248079845-26">(</span><span·class="ss">close</span><span·class="p"·data-group-id="1248079845-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="1152282738-26">(</span><span·class="ss">close</span><span·class="p"·data-group-id="1152282738-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="1248079845-27">(</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">reverse</span><span·class="p"·data-group-id="1248079845-28">(</span><span·class="n">L</span><span·class="p"·data-group-id="1248079845-28">)</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·a265fb7aa0282f276953159ed8e875cca854423bf247556660c5060bebd80caf·...·]-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="1152282738-27">(</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">reverse</span><span·class="p"·data-group-id="1152282738-28">(</span><span·class="n">L</span><span·class="p"·data-group-id="1152282738-28">)</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·a8a7952c73b6a500a252d4e975baff436143b53283816e03ec80dfd97c7ddf3e·...·]-27">)</span><span·class="p">;</span><span·class="w">
223 ·······</span><span·class="p"·data-group-id="1248079845-29">(</span><span·class="n">Terms</span><span·class="p"·data-group-id="1248079845-29">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">223 ·······</span><span·class="p"·data-group-id="1152282738-29">(</span><span·class="n">Terms</span><span·class="p"·data-group-id="1152282738-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="1248079845-30">(</span><span·class="p"·data-group-id="1248079845-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="1248079845-31">]</span><s[·...·truncated·by·diffoscope;·len:·39,·SHA:·5f7e66191805489b334470899e71b3db03f825de242348b473fe58cf8e082e9a·...·]-30">)</span><span·class="w">224 ············</span><span·class="nf">output</span><span·class="p"·data-group-id="1152282738-30">(</span><span·class="p"·data-group-id="1152282738-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="1152282738-31">]</span><s[·...·truncated·by·diffoscope;·len:·39,·SHA:·9c3dcf112def350220454858f03599d585e65c23e79fc9e58f99bf84f8589d8a·...·]-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.6/doc/html/file.html#t:posix/0"><code·class="inline">file:posix()</code></a>,·see·<a·href="../../../../lib/kernel-10.2.6/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.6/doc/html/file.html#t:posix/0"><code·class="inline">file:posix()</code></a>,·see·<a·href="../../../../lib/kernel-10.2.6/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.2/doc/html/filelib.html
    
Offset 986, 23 lines modifiedOffset 986, 23 lines modified
986 ································Cwd·::·<a·href="#t:filename_all/0">filename_all</a>(),986 ································Cwd·::·<a·href="#t:filename_all/0">filename_all</a>(),
987 ································SafeFilename·::·<a·href="#t:filename_all/0">filename_all</a>().</pre>987 ································SafeFilename·::·<a·href="#t:filename_all/0">filename_all</a>().</pre>
  
988 ······</div>988 ······</div>
  
989 <p>Sanitizes·the·relative·path·by·eliminating·&quot;..&quot;·and·&quot;.&quot;·components·to·protect989 <p>Sanitizes·the·relative·path·by·eliminating·&quot;..&quot;·and·&quot;.&quot;·components·to·protect
990 against·directory·traversal·attacks.</p><p>Either·returns·the·sanitized·path·name,·or·the·atom·<code·class="inline">unsafe</code>·if·the·path·is·unsafe.990 against·directory·traversal·attacks.</p><p>Either·returns·the·sanitized·path·name,·or·the·atom·<code·class="inline">unsafe</code>·if·the·path·is·unsafe.
991 The·path·is·considered·unsafe·in·the·following·circumstances:</p><ul><li>The·path·is·not·relative.</li><li>A·&quot;..&quot;·component·would·climb·up·above·the·root·of·the·relative·path.</li><li>A·symbolic·link·in·the·path·points·above·the·root·of·the·relative·path.</li></ul><p><em>Examples:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="p"·data-group-id="4154912945-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="4154912945-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·168,·SHA:·dae0322a71c1935f31703e0bec7e75c791c052937c35e944d50e60f54199570e·...·]-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="8671091594-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="8671091594-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·168,·SHA:·dd2d3915aeae5e1d1dd699fcca15ee649d59b662423653eb18a26c9a6b4e285b·...·]-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="4154912945-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="4154912945-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="8671091594-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="8671091594-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="4154912945-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="4154912945-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="8671091594-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="8671091594-4">)</span><span·class="p">.</span><span·class="w">
996 </span><span·class="p"·data-group-id="4154912945-5">[</span><span·class="p"·data-group-id="4154912945-5">]</span><span·class="gp·unselectable">996 </span><span·class="p"·data-group-id="8671091594-5">[</span><span·class="p"·data-group-id="8671091594-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="4154912945-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="4154912945-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="8671091594-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="8671091594-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="4154912945-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="4154912945-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="8671091594-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="8671091594-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.2/doc/html/filename.html
    
Offset 514, 28 lines modifiedOffset 514, 28 lines modified
  
514 ··········<pre·translate="no"><span·class="attribute">-spec</span>·absname(Filename)·->·<a·href="../../../../lib/kernel-10.2.6/doc/html/file.html#t:filename_all/0">file:filename_all</a>()·when·Filename·::·<a·href="../../../../lib/kernel-10.2.6/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.6/doc/html/file.html#t:filename_all/0">file:filename_all</a>()·when·Filename·::·<a·href="../../../../lib/kernel-10.2.6/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="1609432035-1">(</span><span·class="p"·data-group-id="1609432035-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="8197413384-1">(</span><span·class="p"·data-group-id="8197413384-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="1609432035-2">(</span><span·class="s">&quot;foo&quot;</span><span·class="p"·data-group-id="1609432035-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="8197413384-2">(</span><span·class="s">&quot;foo&quot;</span><span·class="p"·data-group-id="8197413384-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="1609432035-3">(</span><span·class="s">&quot;../x&quot;</span><span·class="p"·data-group-id="1609432035-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="8197413384-3">(</span><span·class="s">&quot;../x&quot;</span><span·class="p"·data-group-id="8197413384-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="1609432035-4">(</span><span·class="s">&quot;/&quot;</span><span·class="p"·data-group-id="1609432035-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="8197413384-4">(</span><span·class="s">&quot;/&quot;</span><span·class="p"·data-group-id="8197413384-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="5492269279-1">(</span><span·class="p"·data-group-id="5492269279-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="7348409010-1">(</span><span·class="p"·data-group-id="7348409010-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="5492269279-2">(</span><span·class="s">&quot;foo&quot;</span><span·class="p"·data-group-id="5492269279-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="7348409010-2">(</span><span·class="s">&quot;foo&quot;</span><span·class="p"·data-group-id="7348409010-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="5492269279-3">(</span><span·class="s">&quot;../x&quot;</span><span·class="p"·data-group-id="5492269279-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="7348409010-3">(</span><span·class="s">&quot;../x&quot;</span><span·class="p"·data-group-id="7348409010-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="5492269279-4">(</span><span·class="s">&quot;/&quot;</span><span·class="p"·data-group-id="5492269279-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="7348409010-4">(</span><span·class="s">&quot;/&quot;</span><span·class="p"·data-group-id="7348409010-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.6/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.6/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="3046179386-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="3046179386-2">#{</span><s[·...·truncated·by·diffoscope;·len:·175,·SHA:·22cb54c93196ea278eaebfc390572d00b9661ace3824de86960beedfe49b09b5·...·]-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="3163552750-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="3163552750-2">#{</span><s[·...·truncated·by·diffoscope;·len:·175,·SHA:·855a24eb3e5e8c46cf6a646ae3ca4d320035bcf41d000ecf4ea17d6c11093fb4·...·]-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="9371800759-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="9371800759-2">#{</span><[·...·truncated·by·diffoscope;·len:·177,·SHA:·5d386466e7e85bafea6a1ff2ac4e5a2090055201d9b2b6010eb6e57ceab31a6b·...·]-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="7744284703-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="7744284703-2">#{</span><[·...·truncated·by·diffoscope;·len:·177,·SHA:·95e7b572a917ddcfa05ce2d8df8fa5fc08bb936c24ecfa7cdf3e5013a4e6a79f·...·]-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="3719481065-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="3719481065-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="6813028192-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="6813028192-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="3719481065-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="3719481065-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="6813028192-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="6813028192-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="3719481065-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="3719481065-4">#{</span><span·cla[·...·truncated·by·diffoscope;·len:·184,·SHA:·3b4bbcd10694641677c6b216206056edc8846623dfd90735e40f8e7ebb612d10·...·]-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="6813028192-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="6813028192-4">#{</span><span·cla[·...·truncated·by·diffoscope;·len:·184,·SHA:·83a92ade3201d4288d30c10c6be16c400a814145d27a406961ee1bbe49a53d8c·...·]-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="3719481065-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="3719481065-6">#{</span><span·cla[·...·truncated·by·diffoscope;·len:·182,·SHA:·bd927e2eab1041cb44e11a30a5146aa766c64a5813c6635e6a067a80589e2178·...·]-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="6813028192-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="6813028192-6">#{</span><span·cla[·...·truncated·by·diffoscope;·len:·182,·SHA:·db5e78e3fccab8e5633295b37cb2d9b7e6bcd51464bece38d511e1cba2d0a238·...·]-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="3719481065-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="3719481065-8">#{</span><span·cla[·...·truncated·by·diffoscope;·len:·305,·SHA:·b2171e588815e54bea9a4a6ae2191b83a46b5a38c2494e10d958883ebba0f849·...·]-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="6813028192-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="6813028192-8">#{</span><span·cla[·...·truncated·by·diffoscope;·len:·305,·SHA:·6089a0fdd456b242a5dd0d65f2f65db9dfb7dbbd0056aa013c575ceff76ba967·...·]-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="7410084544-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="7410084544-2">#{</span>[·...·truncated·by·diffoscope;·len:·177,·SHA:·a1628a74b77059dec34a04f02c22e22e9564746eece3937f7de33fad300d13de·...·]-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="9612539155-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="9612539155-2">#{</span>[·...·truncated·by·diffoscope;·len:·177,·SHA:·48764381a5b2230d82b466ec29ba6ec04dca869f39c1657d61aba5a86da927f5·...·]-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="8248278409-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="8248278409-2">#{</span>[·...·truncated·by·diffoscope;·len:·178,·SHA:·898bc9e28aac27ed83b48219c5701f78573fdd07dc74fce3012b7f83ad42b8b1·...·]-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="6162689205-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="6162689205-2">#{</span>[·...·truncated·by·diffoscope;·len:·178,·SHA:·de4f8d93f148aafc0c8b978c919d70ea387f457654960c600cb2c803a8c96419·...·]-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="4077782856-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="4077782856-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="6205121110-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="6205121110-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="4077782856-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="4077782856-3">#{</span><span·cl[·...·truncated·by·diffoscope;·len:·330,·SHA:·547c6994c1f35d3d52ac1ec69f80847a372321849efcc069a6c5d53100de1a4d·...·]-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="6205121110-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="6205121110-3">#{</span><span·cl[·...·truncated·by·diffoscope;·len:·330,·SHA:·059d10a04ad63f99bf3ffcd5aca785eb6b63b0b9266d8d90a978cdc536ce5a21·...·]-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="5595292522-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="5595292522-2">#{</span><s[·...·truncated·by·diffoscope;·len:·175,·SHA:·11286de129c8394f650d4c8e670ee73bc9d0e886723a2188ffa77eeec4e998aa·...·]-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="7299837744-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="7299837744-2">#{</span><s[·...·truncated·by·diffoscope;·len:·175,·SHA:·84a784a665764a3aeb3d3c03b4dde545caac1e88097cb2f1475fe532cfbc7d4b·...·]-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="2487612963-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="2487612963-2">#{</span><s[·...·truncated·by·diffoscope;·len:·176,·SHA:·25c0ee318bcd38fbfa0a3e093a5cdd64bd0411da478699f066ce34d440754f77·...·]-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="0975121390-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="0975121390-2">#{</span><s[·...·truncated·by·diffoscope;·len:·176,·SHA:·0db11f3a3df2998e93d33050563ca148164452114d3e8ebacd0a4e06f2d41434·...·]-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="3921107933-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="3921107933-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="4731577183-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="4731577183-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="3921107933-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="3921107933-3">#{</span><span·class="ss">author</span><spa[·...·truncated·by·diffoscope;·len:·279,·SHA:·663ac46c6516116a5f1d650a94a1ebba4abd16af9b55e26990652bbab777e2ea·...·]3-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="4731577183-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="4731577183-3">#{</span><span·class="ss">author</span><spa[·...·truncated·by·diffoscope;·len:·279,·SHA:·92f64490463e83aa83a23fd55142bc5c244264b120dd7a5b7b83c2af3dcafa1c·...·]3-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="5266168375-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="5266168375-2">#{</span><sp[·...·truncated·by·diffoscope;·len:·173,·SHA:·44ea4f4dbf60e4b16d68377b0dadbb04e0e04bca1761bae8346e99795c1fe9c4·...·]5-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="1505520895-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="1505520895-2">#{</span><sp[·...·truncated·by·diffoscope;·len:·173,·SHA:·1b179d28a6513435e1261b5a0ddaa0a1ef6870807a61a27a42210f1c9a77cf1e·...·]5-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="8047835866-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="8047835866-2">#{</span><sp[·...·truncated·by·diffoscope;·len:·175,·SHA:·4a2bf7c26b352b78975772898134a7b873df672dcf6f92a5c0cba0d5a44cb83d·...·]-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="7951129880-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="7951129880-2">#{</span><sp[·...·truncated·by·diffoscope;·len:·175,·SHA:·74ee0a89accccb4eb9db2fae7830b955abb918708620997f69a2c54ffbeed5da·...·]-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="0683884838-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="0683884838-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="5367640301-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="5367640301-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="0683884838-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="0683884838-3">#{</span><span·class="ss">author</span><span[·...·truncated·by·diffoscope;·len:·279,·SHA:·6a3d359ef3add14ab1626c5996f5a64aef97596845d2bdaad38465a898e5c473·...·]-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="5367640301-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="5367640301-3">#{</span><span·class="ss">author</span><span[·...·truncated·by·diffoscope;·len:·279,·SHA:·26e03ceb7f690b735bd563ac5a360df690118458a87381ac419d5b6f6b9da97c·...·]-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="1028673575-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="1028673575-2">#{</span>[·...·truncated·by·diffoscope;·len:·177,·SHA:·ba03d20cf317a8214985eb6cf57855a012aad1c2a122b76ac960a3d5c8f4298d·...·]-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="4200677891-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="4200677891-2">#{</span>[·...·truncated·by·diffoscope;·len:·177,·SHA:·de751b0f8eb8f94a033776668338cc7f08cad001450363f49e7406229a507d52·...·]-1">)</span><span·class="p">.</span><span·class="w">
691 </span><span·class="p"·data-group-id="1028673575-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="4200677891-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="1028673575-3">]</span><span·class="gp·unselectable">692 ·</span><span·class="s">&quot;/usr/share/my_application&quot;</span><span·class="p"·data-group-id="4200677891-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="1028673575-4">(</span><span·class="s">&quot;XDG_CONFIG_DIRS&quot;</span><span·class="p"·data-group-id="1028673575-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="4200677891-4">(</span><span·class="s">&quot;XDG_CONFIG_DIRS&quot;</span><span·class="p"·data-group-id="4200677891-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="1028673575-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="1028673575-6">#{</span>[·...·truncated·by·diffoscope;·len:·177,·SHA:·4c336d50dcf4b5fa2371d590f89ce52fcc1fad7b2daa5114fe6dc6a41efc3d11·...·]-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="4200677891-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="4200677891-6">#{</span>[·...·truncated·by·diffoscope;·len:·177,·SHA:·e2c588bdbabe016ebbc79b7bc3f928f6aa1a1358aed0dd9c0a6e1164f9555d24·...·]-5">)</span><span·class="p">.</span><span·class="w">
696 </span><span·class="p"·data-group-id="1028673575-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="4200677891-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="1028673575-7">]</span><span·class="gp·unselectable">698 ·</span><span·class="s">&quot;/etc/xdg/my_application&quot;</span><span·class="p"·data-group-id="4200677891-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="1028673575-8">(</span><span·class="s">&quot;XDG_CONFIG_DIRS&quot;</span><span·class="p"·data-group-id="1028673575-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="4200677891-8">(</span><span·class="s">&quot;XDG_CONFIG_DIRS&quot;</span><span·class="p"·data-group-id="4200677891-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="1028673575-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="1028673575-10">#{</span[·...·truncated·by·diffoscope;·len:·179,·SHA:·5f157a2c1660c6f78241483834a4cf2b8713d9c1a874955e3ff183f35328996c·...·]-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="4200677891-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="4200677891-10">#{</span[·...·truncated·by·diffoscope;·len:·179,·SHA:·b38b658b083bf7e9944e6ca02acfb51b194b8859a43f628914008481081b37d9·...·]-9">)</span><span·class="p">.</span><span·class="w">
702 </span><span·class="p"·data-group-id="1028673575-11">[</span><span·class="s">&quot;/etc/xdg/my_application&quot;</span><span·class="p"·data-group-id="1028673575-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:·4cf4575f210b314bdbad8a9ad39766166ecc0a5d999a37f3094129690038992f·...·]-1">)</span><span·class="p">.</span><span·class="w">702 </span><span·class="p"·data-group-id="4200677891-11">[</span><span·class="s">&quot;/etc/xdg/my_application&quot;</span><span·class="p"·data-group-id="4200677891-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:·9e328ac35c622af72f19465621bccd959e2ea3aadbea6658e5d57ef75d012c9c·...·]-1">)</span><span·class="p">.</span><span·class="w">
703 </span><span·class="p"·data-group-id="4549735897-3">[</span><span·class="s">&quot;/Library/Application·Support/my_application&quot;</span><span·class="p"·data-group-id="4549735897-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:·be2561910d2875112595411a477279830d80ee13a7c35bf3160ee8ef09050f05·...·]-1">)</span><span·class="p">.</span><span·class="w">703 </span><span·class="p"·data-group-id="3785981478-3">[</span><span·class="s">&quot;/Library/Application·Support/my_application&quot;</span><span·class="p"·data-group-id="3785981478-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:·77529c86b32d16ce0012f0be4d1fae0fb08e6b3fa0eb52f09e517d257365489f·...·]-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="3379068628-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="3379068628-3">#{</span><s[·...·truncated·by·diffoscope;·len:·175,·SHA:·19b2f16ec643368f89bbf34705084f0aedd878995029ea7a02c11fcb5207d73c·...·]-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="4601317554-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="4601317554-3">#{</span><s[·...·truncated·by·diffoscope;·len:·175,·SHA:·191abdcb9dc010a44f587db5a0aea47c4344a5462d5e5ed5f9663252638ff484·...·]-2">)</span><span·class="p">.</span><span·class="w">
706 </span><span·class="p"·data-group-id="3379068628-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="4601317554-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="3379068628-4">]</span><span·class="gp·unselectable">709 ·</span><span·class="s">&quot;/usr/share/my_application&quot;</span><span·class="p"·data-group-id="4601317554-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="3379068628-5">(</span><span·class="s">&quot;XDG_DATA_DIRS&quot;</span><span·class="p"·data-group-id="3379068628-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="4601317554-5">(</span><span·class="s">&quot;XDG_DATA_DIRS&quot;</span><span·class="p"·data-group-id="4601317554-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="3379068628-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="3379068628-7">#{</span><s[·...·truncated·by·diffoscope;·len:·175,·SHA:·864db31834f1392339c594adc372366c380f39e87d02ce30db3ccc0b340d33f0·...·]-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="4601317554-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="4601317554-7">#{</span><s[·...·truncated·by·diffoscope;·len:·175,·SHA:·c786eec77ed1a99b9b1f70e2c63f2ed65835abb35c1f9e85b750a61f6b028221·...·]-6">)</span><span·class="p">.</span><span·class="w">
713 </span><span·class="p"·data-group-id="3379068628-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="4601317554-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="3379068628-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:·423b0f9281e2083aefcb135f79bf3b81d1f055f4603b3b8e287e3d482958c35b·...·]-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="4601317554-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:·4cd2b120539eff730f9050f8779969d0562f3beb27192de4e2d9fab9bc7aa479·...·]-1">)</span><span·class="p">.</span><span·class="w">
715 </span><span·class="p"·data-group-id="6857330670-3">[</span><span·class="s">&quot;/Library/Application·Support/my_application&quot;</span><span·class="p"·data-group-id="6857330670-3">]</span></code></pre></li></ul>715 </span><span·class="p"·data-group-id="7133116509-3">[</span><span·class="s">&quot;/Library/Application·Support/my_application&quot;</span><span·class="p"·data-group-id="7133116509-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.6/doc/html/file.html#t:filename_all/0">file:filename_all</a>()·when·Filename·::·<a·href="../../../../lib/kernel-10.2.6/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.6/doc/html/file.html#t:filename_all/0">file:filename_all</a>()·when·Filename·::·<a·href="../../../../lib/kernel-10.2.6/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="7255031253-1">(</span><span·class="s">&quot;foo&quot;</span><span·class="p"·data-group-id="7255031253-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="2884556291-1">(</span><span·class="s">&quot;foo&quot;</span><span·class="p"·data-group-id="2884556291-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="7255031253-2">(</span><span·class="s">&quot;/usr/foo&quot;</span><span·class="p"·data-group-id="7255031253-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="2884556291-2">(</span><span·class="s">&quot;/usr/foo&quot;</span><span·class="p"·data-group-id="2884556291-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="7255031253-3">(</span><span·class="s">&quot;/&quot;</span><span·class="p"·data-group-id="7255031253-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="2884556291-3">(</span><span·class="s">&quot;/&quot;</span><span·class="p"·data-group-id="2884556291-3">)</span><span·class="p">.</span><span·class="w">
746 </span><span·class="p"·data-group-id="7255031253-4">[</span><span·class="p"·data-group-id="7255031253-4">]</span></code></pre>746 </span><span·class="p"·data-group-id="2884556291-4">[</span><span·class="p"·data-group-id="2884556291-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.6/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.6/doc/html/file.html#t:filename_all/0">file:filename_all</a>()
772 ··················when·Filename·::·<a·href="../../../../lib/kernel-10.2.6/doc/html/file.html#t:name_all/0">file:name_all</a>(),·Ext·::·<a·href="../../../../lib/kernel-10.2.6/doc/html/file.html#t:name_all/0">file:name_all</a>().</pre>772 ··················when·Filename·::·<a·href="../../../../lib/kernel-10.2.6/doc/html/file.html#t:name_all/0">file:name_all</a>(),·Ext·::·<a·href="../../../../lib/kernel-10.2.6/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="3797549015-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="3797549015-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="0799118834-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="0799118834-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="3797549015-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="3797549015-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="0799118834-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="0799118834-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.2/doc/html/gen_event.html
    
Offset 1267, 23 lines modifiedOffset 1267, 23 lines modified
1267 format/limit·the·server·state·for·debugging·and·logging·purposes.</p><p>It·is·called·in·the·following·situations:</p><ul><li><p>One·of·<a·href="sys.html#get_status/1"><code·class="inline">sys:get_status/1,2</code></a>·is·invoked1267 format/limit·the·server·state·for·debugging·and·logging·purposes.</p><p>It·is·called·in·the·following·situations:</p><ul><li><p>One·of·<a·href="sys.html#get_status/1"><code·class="inline">sys:get_status/1,2</code></a>·is·invoked
1268 to·get·the·<code·class="inline">gen_event</code>·status.</p></li><li><p>The·event·handler·terminates·abnormally·and·<code·class="inline">gen_event</code>·logs·an·error.</p></li></ul><p>This·callback·is·used·to·limit·the·status·of·the·event·handler·returned·by1268 to·get·the·<code·class="inline">gen_event</code>·status.</p></li><li><p>The·event·handler·terminates·abnormally·and·<code·class="inline">gen_event</code>·logs·an·error.</p></li></ul><p>This·callback·is·used·to·limit·the·status·of·the·event·handler·returned·by
1269 <a·href="sys.html#get_status/1"><code·class="inline">sys:get_status/1,2</code></a>·or·sent·to·<a·href="../../../../lib/kernel-10.2.6/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.6/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="6521829805-1">(</span><span·class="n">Status</span><span·class="p"·data-group-id="6521829805-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="8108857027-1">(</span><span·class="n">Status</span><span·class="p"·data-group-id="8108857027-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="6521829805-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="8108857027-2">(</span><span·class="w">
1276 ····</span><span·class="nf">fun</span><span·class="p"·data-group-id="6521829805-3">(</span><span·class="ss">state</span><span·class="p">,</span><span·class="n">State</span><span·class="p"·data-group-id="6521829805-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="8108857027-3">(</span><span·class="ss">state</span><span·class="p">,</span><span·class="n">State</span><span·class="p"·data-group-id="8108857027-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="6521829805-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="6521829805-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="8108857027-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="8108857027-4">)</span><span·class="p">;</span><span·class="w">
1278 ·······</span><span·class="p"·data-group-id="6521829805-5">(</span><span·class="ss">message</span><span·class="p">,</span><span·class="p"·data-group-id="6521829805-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:·db00512cdfd7c00974252e7bfae1a827bc9f9315e2d65bb03002cb499db43c21·...·]-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">1278 ·······</span><span·class="p"·data-group-id="8108857027-5">(</span><span·class="ss">message</span><span·class="p">,</span><span·class="p"·data-group-id="8108857027-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:·69995fcfabb039afe7f83e816cdf5f3d8499275ec215ae40e9e4dd263577d4b6·...·]-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
1279 ············</span><span·class="p"·data-group-id="6521829805-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="6521829805-7">}</span><span·class="p">;</span><span·class="w">1279 ············</span><span·class="p"·data-group-id="8108857027-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="8108857027-7">}</span><span·class="p">;</span><span·class="w">
1280 ·······</span><span·class="p"·data-group-id="6521829805-8">(</span><span·class="p">_</span><span·class="p">,</span><span·class="n">Value</span><span·class="p"·data-group-id="6521829805-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">1280 ·······</span><span·class="p"·data-group-id="8108857027-8">(</span><span·class="p">_</span><span·class="p">,</span><span·class="n">Value</span><span·class="p"·data-group-id="8108857027-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="6521829805-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="8108857027-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.2/doc/html/gen_fsm.html
    
Offset 131, 171 lines modifiedOffset 131, 171 lines modified
131 <p>Deprecated·and·replaced·by·<a·href="gen_statem.html"><code·class="inline">gen_statem</code></a>·in·OTP·20.</p><h2·id="module-migration-to-gen_statem"·class="section-heading">131 <p>Deprecated·and·replaced·by·<a·href="gen_statem.html"><code·class="inline">gen_statem</code></a>·in·OTP·20.</p><h2·id="module-migration-to-gen_statem"·class="section-heading">
132 ··<a·href="#module-migration-to-gen_statem"·class="hover-link">132 ··<a·href="#module-migration-to-gen_statem"·class="hover-link">
133 ····<i·class="ri-link-m"·aria-hidden="true"></i>133 ····<i·class="ri-link-m"·aria-hidden="true"></i>
134 ··</a>134 ··</a>
135 ··<span·class="text">Migration·to·gen_statem</span>135 ··<span·class="text">Migration·to·gen_statem</span>
136 </h2>136 </h2>
137 <p>Here·follows·a·simple·example·of·turning·a·gen_fsm·into·a·<a·href="gen_statem.html"><code·class="inline">gen_statem</code></a>.137 <p>Here·follows·a·simple·example·of·turning·a·gen_fsm·into·a·<a·href="gen_statem.html"><code·class="inline">gen_statem</code></a>.
138 The·example·comes·from·the·previous·User's·Guide·for·<code·class="inline">gen_fsm</code></p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="4935685549-1">(</span><span·class="ss">code_lock</span><span·class="p"·data-group-id="4935685549-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="3708233460-1">(</span><span·class="ss">code_lock</span><span·class="p"·data-group-id="3708233460-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="4935685549-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="4935685549-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="3708233460-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="3708233460-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="4935685549-3">(</span><span·class="n">BEFORE_REWRITE</span><span·class="p"·data-group-id="4935685549-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="3708233460-3">(</span><span·class="n">BEFORE_REWRITE</span><span·class="p"·data-group-id="3708233460-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="4935685549-4">(</span><span·class="ss">gen_fsm</span><span·class="p"·data-group-id="4935685549-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="3708233460-4">(</span><span·class="ss">gen_fsm</span><span·class="p"·data-group-id="3708233460-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="4935685549-5">(</span><span·class="ss">gen_statem</span><span·class="p"·data-group-id="4935685549-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="3708233460-5">(</span><span·class="ss">gen_statem</span><span·class="p"·data-group-id="3708233460-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="4935685549-6">(</span><span·class="p"·data-group-id="4935685549-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:·1b5430c772d2bf239222883e8405e8d0fd4177390e2a58e9560aaf34558a2d2d·...·]-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="3708233460-6">(</span><span·class="p"·data-group-id="3708233460-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:·4df14fda041ca945fdbd155e76159153be08e9d4de6be38130edb1ff827c17dd·...·]-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="4935685549-8">(</span><span·class="n">BEFORE_REWRITE</span><span·class="p"·data-group-id="4935685549-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="3708233460-8">(</span><span·class="n">BEFORE_REWRITE</span><span·class="p"·data-group-id="3708233460-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="4935685549-9">(</span><span·class="p"·data-group-id="4935685549-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="3708233460-9">(</span><span·class="p"·data-group-id="3708233460-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="4935685549-10">]</span><span·class="p"·data-group-id="4935685549-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="3708233460-10">]</span><span·class="p"·data-group-id="3708233460-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="4935685549-11">(</span><span·class="p"·data-group-id="4935685549-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="3708233460-11">(</span><span·class="p"·data-group-id="3708233460-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="4935685549-12">]</span><span·class="p"·data-group-id="4935685549-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="3708233460-12">]</span><span·class="p"·data-group-id="3708233460-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="4935685549-13">(</span><span·class="n">BEFORE_REWRITE</span><span·class="p"·data-group-id="4935685549-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="3708233460-13">(</span><span·class="n">BEFORE_REWRITE</span><span·class="p"·data-group-id="3708233460-13">)</span><span·class="p">.</span><span·class="w">
162 </span><span·class="nf">start_link</span><span·class="p"·data-group-id="4935685549-14">(</span><span·class="n">Code</span><span·class="p"·data-group-id="4935685549-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="3708233460-14">(</span><span·class="n">Code</span><span·class="p"·data-group-id="3708233460-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="4935685549-15">(</span><span·class="p"·data-group-id="4935685549-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="4935685549-16">}</sp[·...·truncated·by·diffoscope;·len:·376,·SHA:·6dfc277f08358e028682ed78664389e9a2896e6da3f1ac20056c7b5310653dec·...·]-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="3708233460-15">(</span><span·class="p"·data-group-id="3708233460-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="3708233460-16">}</sp[·...·truncated·by·diffoscope;·len:·376,·SHA:·310365a4722718baa70e5038e51765d0ea409c7446693355bff82d733de80d07·...·]-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="4935685549-18">(</span><span·class="n">Code</span><span·class="p"·data-group-id="4935685549-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="3708233460-18">(</span><span·class="n">Code</span><span·class="p"·data-group-id="3708233460-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="4935685549-19">(</span><span·class="p"·data-group-id="4935685549-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="4935685549-20">}</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·352,·SHA:·e3a0dbdf422b853582927df4a283c546482ca1dbc4344ddad6a2b148a71d21c1·...·]-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="3708233460-19">(</span><span·class="p"·data-group-id="3708233460-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="3708233460-20">}</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·352,·SHA:·a7e08d98c2bee3808a5425cb33f9c97587a309187a5a664fdc5734355352193e·...·]-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="4935685549-22">(</span><span·class="n">BEFORE_REWRITE</span><span·class="p"·data-group-id="4935685549-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="3708233460-22">(</span><span·class="n">BEFORE_REWRITE</span><span·class="p"·data-group-id="3708233460-22">)</span><span·class="p">.</span><span·class="w">
170 </span><span·class="nf">button</span><span·class="p"·data-group-id="4935685549-23">(</span><span·class="n">Digit</span><span·class="p"·data-group-id="4935685549-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="3708233460-23">(</span><span·class="n">Digit</span><span·class="p"·data-group-id="3708233460-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="4935685549-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="4935685549-25">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·121,·SHA:·d965f3570651bc553b5cbe3ecc1327ef991861a603f9411a0c1eda87f7145849·...·]-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="3708233460-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="3708233460-25">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·121,·SHA:·dc040b747a54f8f1dba0902b54e30e2b3d4b83c5d630c53ae4aaaf97eb155893·...·]-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="4935685549-26">(</span><span·class="n">Digit</span><span·class="p"·data-group-id="4935685549-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="3708233460-26">(</span><span·class="n">Digit</span><span·class="p"·data-group-id="3708233460-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="4935685549-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="4935685549-28">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="n">Digit</spa[·...·truncated·by·diffoscope;·len:·97,·SHA:·e982df6ff44e5dd8b09448e3e06025b8872e653600f0b720676b854182b06f9e·...·]-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="3708233460-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="3708233460-28">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="n">Digit</spa[·...·truncated·by·diffoscope;·len:·97,·SHA:·98d441ce8f5cdf4ad9ce5cdfe485b6ded11be608acadc920662f8c7a4cec3cae·...·]-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="4935685549-29">(</span><span·class="n">BEFORE_REWRITE</span><span·class="p"·data-group-id="4935685549-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="3708233460-29">(</span><span·class="n">BEFORE_REWRITE</span><span·class="p"·data-group-id="3708233460-29">)</span><span·class="p">.</span><span·class="w">
179 </span><span·class="nf">stop</span><span·class="p"·data-group-id="4935685549-30">(</span><span·class="p"·data-group-id="4935685549-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="3708233460-30">(</span><span·class="p"·data-group-id="3708233460-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="4935685549-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="4935685549-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="3708233460-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="3708233460-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="4935685549-32">(</span><span·class="p"·data-group-id="4935685549-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="3708233460-32">(</span><span·class="p"·data-group-id="3708233460-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="4935685549-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="4935685549-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="3708233460-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="3708233460-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="4935685549-34">(</span><span·class="n">Code</span><span·class="p"·data-group-id="4935685549-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="3708233460-34">(</span><span·class="n">Code</span><span·class="p"·data-group-id="3708233460-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="4935685549-35">(</span><span·class="p"·data-group-id="4935685549-35">)</span><span·class="p">,</span><span·class="w">188 ····</span><span·class="nf">do_lock</span><span·class="p"·data-group-id="3708233460-35">(</span><span·class="p"·data-group-id="3708233460-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="4935685549-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:·22a9123f2ba438a29c4c899287047234b94892398e7929880693ec80d4617cb4·...·]-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="3708233460-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:·eefd785607da0182605dab7691b898af1935faeb108aa46d771f97e0b60b91de·...·]-36">}</span><span·class="p">,</span><span·class="w">
190 ····</span><span·class="p"·data-group-id="4935685549-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="4935685549-37">}</span><span·class="p">.</span><span·class="w">190 ····</span><span·class="p"·data-group-id="3708233460-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="3708233460-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="4935685549-38">(</span><span·class="n">BEFORE_REWRITE</span><span·class="p"·data-group-id="4935685549-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="3708233460-38">(</span><span·class="n">BEFORE_REWRITE</span><span·class="p"·data-group-id="3708233460-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="4935685549-39">(</span><span·class="p"·data-group-id="4935685549-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="3708233460-39">(</span><span·class="p"·data-group-id="3708233460-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="4935685549-40">(</span><span·class="n">BEFORE_REWRITE</span><span·class="p"·data-group-id="4935685549-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="3708233460-40">(</span><span·class="n">BEFORE_REWRITE</span><span·class="p"·data-group-id="3708233460-40">)</span><span·class="p">.</span><span·class="w">
202 </span><span·class="nf">locked</span><span·class="p"·data-group-id="4935685549-41">(</span><span·class="p"·data-group-id="4935685549-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="4935685549-42">}</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·98,·SHA:·2b7fd8751d33656eab6f25d996b2b62d25c152539d97eddaa94d69138f044368·...·]-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="3708233460-41">(</span><span·class="p"·data-group-id="3708233460-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="3708233460-42">}</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·98,·SHA:·f93728f62716a261955f82ef8ab0b62ac95e02b600a9b0d1a53407571a9b9bb4·...·]-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="4935685549-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="4935685549-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="3708233460-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="3708233460-43">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
204 ····</span><span·class="p"·data-group-id="4935685549-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:·4d117a94a8b4c0a7fd5a1e149794fee2c4c5c8e3bf91e0f5684247ec74286f9e·...·]-44">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">204 ····</span><span·class="p"·data-group-id="3708233460-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:·3c883f510b136795259be18d41cfb4a14865d13b5c39a0c6f62cde7dd7fdc31c·...·]-44">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
205 ········</span><span·class="p"·data-group-id="4935685549-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:·6c218654ebb99e49c53505a6169923a8c0a69bc2155b3a5d2e44eca10f37f05b·...·]-45">}</span><span·class="p">;</span><span·class="w">205 ········</span><span·class="p"·data-group-id="3708233460-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:·a1a95401544cc339c3d49dd1299d014c7163a73a7f73389764d68d25b2fe3e03·...·]-45">}</span><span·class="p">;</span><span·class="w">
206 ····</span><span·class="p"·data-group-id="4935685549-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="4935685549-46">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">206 ····</span><span·class="p"·data-group-id="3708233460-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="3708233460-46">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
207 ········</span><span·class="p"·data-group-id="4935685549-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="4935685549-47">}</span><span·class="w">207 ········</span><span·class="p"·data-group-id="3708233460-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="3708233460-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="4935685549-48">(</span><span·class="ss">cast</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4935685549-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:·67a8c6977d572aefa0b91d8a43cbc3c36e01a4d61e9ba70634a3a516b813b227·...·]-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="3708233460-48">(</span><span·class="ss">cast</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3708233460-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:·53406b2e101d0edaacf12fcfb8e36538a4e9ebab80f98c13d78d840bb4633ee7·...·]-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="4935685549-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="4935685549-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="3708233460-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="3708233460-50">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
212 ····</span><span·class="p"·data-group-id="4935685549-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:·4d117a94a8b4c0a7fd5a1e149794fee2c4c5c8e3bf91e0f5684247ec74286f9e·...·]-51">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">212 ····</span><span·class="p"·data-group-id="3708233460-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:·3c883f510b136795259be18d41cfb4a14865d13b5c39a0c6f62cde7dd7fdc31c·...·]-51">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
213 ········</span><span·class="p"·data-group-id="4935685549-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:·6c218654ebb99e49c53505a6169923a8c0a69bc2155b3a5d2e44eca10f37f05b·...·]-52">}</span><span·class="p">;</span><span·class="w">213 ········</span><span·class="p"·data-group-id="3708233460-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:·a1a95401544cc339c3d49dd1299d014c7163a73a7f73389764d68d25b2fe3e03·...·]-52">}</span><span·class="p">;</span><span·class="w">
214 ····</span><span·class="p"·data-group-id="4935685549-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="4935685549-53">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">214 ····</span><span·class="p"·data-group-id="3708233460-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="3708233460-53">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
215 ········</span><span·class="p"·data-group-id="4935685549-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="4935685549-54">}</span><span·class="w">215 ········</span><span·class="p"·data-group-id="3708233460-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="3708233460-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="4935685549-55">(</span><span·class="p"·data-group-id="4935685549-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="4935685549-56">}</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·168,·SHA:·896d79e3651ef4fc687a8de38b4f88d3858360d6a5e12b5c225201a6595983ba·...·]-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="3708233460-55">(</span><span·class="p"·data-group-id="3708233460-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="3708233460-56">}</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·168,·SHA:·eb07add63b1bd577eb6267686308ef5e27dacc42e73cf1f655bec6058b63c49d·...·]-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="4935685549-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="4935685549-57">)</span><span·class="p">;</span><span·class="w">218 ····</span><span·class="nf">handle_call</span><span·class="p"·data-group-id="3708233460-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="3708233460-57">)</span><span·class="p">;</span><span·class="w">
219 </span><span·class="nf">locked</span><span·class="p"·data-group-id="4935685549-58">(</span><span·class="p"·data-group-id="4935685549-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="4935685549-59">}</span><span·class="p">,</span[·...·truncated·by·diffoscope;·len:·173,·SHA:·48bbac60cf61737d50954c8c4dc8e60dd3d535786eb96a593af150970b98f1fb·...·]-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="3708233460-58">(</span><span·class="p"·data-group-id="3708233460-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="3708233460-59">}</span><span·class="p">,</span[·...·truncated·by·diffoscope;·len:·173,·SHA:·a1c39bd2ee9f2f6f28d817c6111feaa3e73237df83b4a46a4d586206351e82c1·...·]-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="4935685549-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="4935685549-60">)</span><span·class="p">.</span><span·class="w">220 ····</span><span·class="nf">handle_info</span><span·class="p"·data-group-id="3708233460-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="3708233460-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="4935685549-61">(</span><span·class="n">BEFORE_REWRITE</span><span·class="p"·data-group-id="4935685549-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="3708233460-61">(</span><span·class="n">BEFORE_REWRITE</span><span·class="p"·data-group-id="3708233460-61">)</span><span·class="p">.</span><span·class="w">
228 </span><span·class="nf">open</span><span·class="p"·data-group-id="4935685549-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="4935685549-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="3708233460-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="3708233460-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="4935685549-63">(</span><span·class="p"·data-group-id="4935685549-63">)</span><span·class="p">,</span><span·class="w">229 ·····</span><span·class="nf">do_lock</span><span·class="p"·data-group-id="3708233460-63">(</span><span·class="p"·data-group-id="3708233460-63">)</span><span·class="p">,</span><span·class="w">
230 ····</span><span·class="p"·data-group-id="4935685549-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="4935685549-64">}</span><span·class="p">;</span><span·class="w">230 ····</span><span·class="p"·data-group-id="3708233460-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="3708233460-64">}</span><span·class="p">;</span><span·class="w">
231 </span><span·class="nf">open</span><span·class="p"·data-group-id="4935685549-65">(</span><span·class="p"·data-group-id="4935685549-66">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id="4935685549-66">}</span><span·class="p">,</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·69,·SHA:·02bed1f8f6b6350369ed409f68ebc27b703349f7f7b68cb19ea5bdaa80da721e·...·]-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="3708233460-65">(</span><span·class="p"·data-group-id="3708233460-66">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id="3708233460-66">}</span><span·class="p">,</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·69,·SHA:·464d5c403a90a03a48606fd2a8bc27b71b41d7364d844557ea96b0e21dbc30ed·...·]-65">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
232 ····</span><span·class="p"·data-group-id="4935685549-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="4935685549-67">}</span><span·class="p">.</span><span·class="w">232 ····</span><span·class="p"·data-group-id="3708233460-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="3708233460-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="4935685549-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="4935685549-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="3708233460-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="3708233460-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="4935685549-69">(</span><span·class="p"·data-group-id="4935685549-69">)</span><span·class="p">,</span><span·class="w">235 ····</span><span·class="nf">do_lock</span><span·class="p"·data-group-id="3708233460-69">(</span><span·class="p"·data-group-id="3708233460-69">)</span><span·class="p">,</span><span·class="w">
236 ····</span><span·class="p"·data-group-id="4935685549-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="4935685549-70">}</span><span·class="p">;</span><span·class="w">236 ····</span><span·class="p"·data-group-id="3708233460-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="3708233460-70">}</span><span·class="p">;</span><span·class="w">
237 </span><span·class="nf">open</span><span·class="p"·data-group-id="4935685549-71">(</span><span·class="ss">cast</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4935685549-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:·da212f4a41f4e09f7775eb4be514edcee3f36c12cf1c2cdfcf64057c902a7982·...·]-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="3708233460-71">(</span><span·class="ss">cast</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3708233460-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:·8d52167ec5d94830659f8ba1ffb2c2eb88403a279b5a8328fb745d5e88f1148f·...·]-71">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
238 ····</span><span·class="p"·data-group-id="4935685549-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="4935685549-73">}</span><span·class="p">;</span><span·class="w">238 ····</span><span·class="p"·data-group-id="3708233460-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="3708233460-73">}</span><span·class="p">;</span><span·class="w">
239 </span><span·class="nf">open</span><span·class="p"·data-group-id="4935685549-74">(</span><span·class="p"·data-group-id="4935685549-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="4935685549-75">}</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·168,·SHA:·896d79e3651ef4fc687a8de38b4f88d3858360d6a5e12b5c225201a6595983ba·...·]-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="3708233460-74">(</span><span·class="p"·data-group-id="3708233460-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="3708233460-75">}</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·168,·SHA:·eb07add63b1bd577eb6267686308ef5e27dacc42e73cf1f655bec6058b63c49d·...·]-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="4935685549-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="4935685549-76">)</span><span·class="p">;</span><span·class="w">240 ····</span><span·class="nf">handle_call</span><span·class="p"·data-group-id="3708233460-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="3708233460-76">)</span><span·class="p">;</span><span·class="w">
241 </span><span·class="nf">open</span><span·class="p"·data-group-id="4935685549-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="4935685549-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="3708233460-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="3708233460-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="4935685549-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="4935685549-78">)</span><span·class="p">.</span><span·class="w">242 ····</span><span·class="nf">handle_info</span><span·class="p"·data-group-id="3708233460-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="3708233460-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="4935685549-79">(</span><span·class="n">BEFORE_REWRITE</span><span·class="p"·data-group-id="4935685549-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="3708233460-79">(</span><span·class="n">BEFORE_REWRITE</span><span·class="p"·data-group-id="3708233460-79">)</span><span·class="p">.</span><span·class="w">
250 </span><span·class="nf">handle_sync_event</span><span·class="p"·data-group-id="4935685549-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:·0f077b0583e33c66034dc209b87e0df67cf51db44d78415f6d8129b178cf33ca·...·]-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="3708233460-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:·66327c7d7664de474325090110e50b3bd9859afa7c92c1090ec38745c0fc01cf·...·]-80">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
251 ····</span><span·class="p"·data-group-id="4935685549-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:·1600cf159588db47668282b9cf403091eb1f2f94b21fda7762549155a9b19df6·...·]-81">}</span><span·class="p">.</span><span·class="w">251 ····</span><span·class="p"·data-group-id="3708233460-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:·c052c68e42859797473246276914308b72f696753ea58d97f100f4861b365322·...·]-81">}</span><span·class="p">.</span><span·class="w">
  
252 </span><span·class="nf">handle_event</span><span·class="p"·data-group-id="4935685549-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="4935685549-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="3708233460-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="3708233460-82">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
253 ····</span><span·class="p"·data-group-id="4935685549-83">{</span><span·class="ss">stop</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4935685549-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:·94ddf76add1894034d5b9e5555f2031f6b5f5d43b62860c2a004aa9a56934136·...·]-83">}</span><span·class="p">.</span><span·class="w">253 ····</span><span·class="p"·data-group-id="3708233460-83">{</span><span·class="ss">stop</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3708233460-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:·b8b1be8d472c6f9b666d88d6072ff08cbca0ad7eb869b86546b967808ccfe1c1·...·]-83">}</span><span·class="p">.</span><span·class="w">
  
254 </span><span·class="nf">handle_info</span><span·class="p"·data-group-id="4935685549-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="4935685549-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="3708233460-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="3708233460-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.2/doc/html/gen_server.html
    
Offset 1247, 23 lines modifiedOffset 1247, 23 lines modified
1247 format/limit·the·server·state·for·debugging·and·logging·purposes.</p><p>It·is·called·in·the·following·situations:</p><ul><li><a·href="sys.html#get_status/1"><code·class="inline">sys:get_status/1,2</code></a>·is·invoked1247 format/limit·the·server·state·for·debugging·and·logging·purposes.</p><p>It·is·called·in·the·following·situations:</p><ul><li><a·href="sys.html#get_status/1"><code·class="inline">sys:get_status/1,2</code></a>·is·invoked
1248 to·get·the·<code·class="inline">gen_server</code>·status.</li><li>The·<code·class="inline">gen_server</code>·process·terminates·abnormally·and·logs·an·error.</li></ul><p>This·callback·is·used·to·limit·the·status·of·the·process·returned·by1248 to·get·the·<code·class="inline">gen_server</code>·status.</li><li>The·<code·class="inline">gen_server</code>·process·terminates·abnormally·and·logs·an·error.</li></ul><p>This·callback·is·used·to·limit·the·status·of·the·process·returned·by
1249 <a·href="sys.html#get_status/1"><code·class="inline">sys:get_status/1,2</code></a>·or·sent·to·<a·href="../../../../lib/kernel-10.2.6/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.6/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="6560084038-1">(</span><span·class="n">Status</span><span·class="p"·data-group-id="6560084038-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="1246051403-1">(</span><span·class="n">Status</span><span·class="p"·data-group-id="1246051403-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="6560084038-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="1246051403-2">(</span><span·class="w">
1256 ····</span><span·class="nf">fun</span><span·class="p"·data-group-id="6560084038-3">(</span><span·class="ss">state</span><span·class="p">,</span><span·class="n">State</span><span·class="p"·data-group-id="6560084038-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="1246051403-3">(</span><span·class="ss">state</span><span·class="p">,</span><span·class="n">State</span><span·class="p"·data-group-id="1246051403-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="6560084038-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="6560084038-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="1246051403-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="1246051403-4">)</span><span·class="p">;</span><span·class="w">
1258 ·······</span><span·class="p"·data-group-id="6560084038-5">(</span><span·class="ss">message</span><span·class="p">,</span><span·class="p"·data-group-id="6560084038-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:·8decb7d550bde1fe2e19493548868d7203fe30271d8ee3de046c72ecedc90220·...·]-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">1258 ·······</span><span·class="p"·data-group-id="1246051403-5">(</span><span·class="ss">message</span><span·class="p">,</span><span·class="p"·data-group-id="1246051403-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:·d0a1aa542b49c551cfb82cfc2dad28c883106ac23240b7dd4e4bf14b6836bd2f·...·]-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
1259 ············</span><span·class="p"·data-group-id="6560084038-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="6560084038-7">}</span><span·class="p">;</span><span·class="w">1259 ············</span><span·class="p"·data-group-id="1246051403-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="1246051403-7">}</span><span·class="p">;</span><span·class="w">
1260 ·······</span><span·class="p"·data-group-id="6560084038-8">(</span><span·class="p">_</span><span·class="p">,</span><span·class="n">Value</span><span·class="p"·data-group-id="6560084038-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">1260 ·······</span><span·class="p"·data-group-id="1246051403-8">(</span><span·class="p">_</span><span·class="p">,</span><span·class="n">Value</span><span·class="p"·data-group-id="1246051403-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="6560084038-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="1246051403-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.2/doc/html/gen_statem.html
    
Offset 172, 15 lines modifiedOffset 172, 15 lines modified
172 </span><span·class="nc">gen_statem</span><span·class="p">:</span><span·class="ss">send_request</span><span·class="w">172 </span><span·class="nc">gen_statem</span><span·class="p">:</span><span·class="ss">send_request</span><span·class="w">
173 </span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nb">send</span><span·class="w">173 </span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nb">send</span><span·class="w">
174 </span><span·class="nc">erlang</span><span·class="p">:</span><span·class="ss">&#39;!&#39;</span><span·class="w">············</span><span·class="o">--</span><span·class="o">--</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Module</span><span·class="p">:</span><span·class="n">StateName</span><span·class="o">/</span><span·class="mi">3</span><span·class="w">174 </span><span·class="nc">erlang</span><span·class="p">:</span><span·class="ss">&#39;!&#39;</span><span·class="w">············</span><span·class="o">--</span><span·class="o">--</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Module</span><span·class="p">:</span><span·class="n">StateName</span><span·class="o">/</span><span·class="mi">3</span><span·class="w">
175 ···················</span><span·class="ow">or</span><span·class="w">·</span><span·class="o">--</span><span·class="o">--</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Module</span><span·class="p">:</span><span·class="ss">handle_event</span><span·class="p">/</span><span·class="mi">4</span><span·class="w">175 ···················</span><span·class="ow">or</span><span·class="w">·</span><span·class="o">--</span><span·class="o">--</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Module</span><span·class="p">:</span><span·class="ss">handle_event</span><span·class="p">/</span><span·class="mi">4</span><span·class="w">
176 ···················</span><span·class="ss">depending</span><span·class="w">·</span><span·class="ss">on</span><span·class="w">·</span><span·class="ss">callback</span><span·class="w">·</span><span·class="ss">mode</span><span·class="w">176 ···················</span><span·class="ss">depending</span><span·class="w">·</span><span·class="ss">on</span><span·class="w">·</span><span·class="ss">callback</span><span·class="w">·</span><span·class="ss">mode</span><span·class="w">
  
177 </span><span·class="n">Release</span><span·class="w">·</span><span·class="ss">upgrade</span><span·class="o">/</span><span·class="nf">downgrade</span><span·class="w">177 </span><span·class="n">Release</span><span·class="w">·</span><span·class="ss">upgrade</span><span·class="o">/</span><span·class="nf">downgrade</span><span·class="w">
178 </span><span·class="p"·data-group-id="6488629604-1">(</span><span·class="ss">code</span><span·class="w">·</span><span·class="ss">change</span><span·class="p"·data-group-id="6488629604-1">)</span><span·class="w">178 </span><span·class="p"·data-group-id="1226342429-1">(</span><span·class="ss">code</span><span·class="w">·</span><span·class="ss">change</span><span·class="p"·data-group-id="1226342429-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="5683877460-1">(</span><span·class="ss">pushbutton</span><span·class="p"·data-group-id="5683877460-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="5134563010-1">(</span><span·class="ss">pushbutton</span><span·class="p"·data-group-id="5134563010-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="5683877460-2">(</span><span·class="ss">gen_statem</span><span·class="p"·data-group-id="5683877460-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="5134563010-2">(</span><span·class="ss">gen_statem</span><span·class="p"·data-group-id="5134563010-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="5683877460-3">(</span><span·class="p"·data-group-id="5683877460-4">[</span><span·class="ss">start</span><span·class="p">/</span><span·class="mi">0</span><span·class="p">,</span><span·class="ss">push</span><span·class="p">/</span><span·class="mi">0</span><sp[·...·truncated·by·diffoscope;·len:·297,·SHA:·cdf9ce7943ecb654b8acf1f4d738399f014ef2734bc41f95017093b8cc6595ee·...·]0-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="5134563010-3">(</span><span·class="p"·data-group-id="5134563010-4">[</span><span·class="ss">start</span><span·class="p">/</span><span·class="mi">0</span><span·class="p">,</span><span·class="ss">push</span><span·class="p">/</span><span·class="mi">0</span><sp[·...·truncated·by·diffoscope;·len:·297,·SHA:·054c0c8f522832cf950b7277650b56bbf240494f8ad1bb63244ac5c01fc70d7d·...·]0-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="5683877460-5">(</span><span·class="p"·data-group-id="5683877460-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:·312,·SHA:·22cf79ffe648fd60b62655f7f5d88dedfa8bdf7b6e6c7624c2024577d46cee58·...·]0-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="5134563010-5">(</span><span·class="p"·data-group-id="5134563010-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:·312,·SHA:·4e2bbbe8357ac17881c65b75520450521b509de242e000a0d69af1fe2fa83afe·...·]0-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="5683877460-7">(</span><span·class="p"·data-group-id="5683877460-8">[</span><span·class="ss">on</span><span·class="p">/</span><span·class="mi">3</span><span·class="p">,</span><span·class="ss">off</span><span·class="p">/</span><span·class="mi">3</span><span·c[·...·truncated·by·diffoscope;·len:·86,·SHA:·a3499a2212dffc359b5616fdafa4d25d15b5795a273c2a1de3df8e3c39794a8a·...·]0-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="5134563010-7">(</span><span·class="p"·data-group-id="5134563010-8">[</span><span·class="ss">on</span><span·class="p">/</span><span·class="mi">3</span><span·class="p">,</span><span·class="ss">off</span><span·class="p">/</span><span·class="mi">3</span><span·c[·...·truncated·by·diffoscope;·len:·86,·SHA:·cec954aaa8af4e101d8bf69c1fc0ff5b9763d4c4715ed6adb05a267d24139143·...·]0-7">)</span><span·class="p">.</span><span·class="w">
  
311 </span><span·class="nf">name</span><span·class="p"·data-group-id="5683877460-9">(</span><span·class="p"·data-group-id="5683877460-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="5134563010-9">(</span><span·class="p"·data-group-id="5134563010-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="5683877460-10">(</span><span·class="p"·data-group-id="5683877460-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="5134563010-10">(</span><span·class="p"·data-group-id="5134563010-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="5683877460-11">(</span><span·class="p"·data-group-id="5683877460-12">{</span><span·class="ss">local</span><span·class="p">,</span><span·class="nf">name</span><span·class="p"·data-group-id="5683877460-13">(</span><span·class="p"·data-group-id="5683877460-13"[·...·truncated·by·diffoscope;·len:·516,·SHA:·e83559f76e13813e1666797c43897ba0ded8d68c4a46911c7aee4d196d07343f·...·]0-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="5134563010-11">(</span><span·class="p"·data-group-id="5134563010-12">{</span><span·class="ss">local</span><span·class="p">,</span><span·class="nf">name</span><span·class="p"·data-group-id="5134563010-13">(</span><span·class="p"·data-group-id="5134563010-13"[·...·truncated·by·diffoscope;·len:·516,·SHA:·b2d8c912bf2975b12c00e609abfb4e25363feab48f5534397d3995a5b5280f19·...·]0-11">)</span><span·class="p">.</span><span·class="w">
316 </span><span·class="nf">push</span><span·class="p"·data-group-id="5683877460-16">(</span><span·class="p"·data-group-id="5683877460-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="5134563010-16">(</span><span·class="p"·data-group-id="5134563010-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="5683877460-17">(</span><span·class="nf">name</span><span·class="p"·data-group-id="5683877460-18">(</span><span·class="p"·data-group-id="5683877460-18">)</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">push</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·18,·SHA:·22496c39fb299d22ae2283ba4c92342e62248aa9a8c4a8469cb5d3da4ec58a24·...·]0-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="5134563010-17">(</span><span·class="nf">name</span><span·class="p"·data-group-id="5134563010-18">(</span><span·class="p"·data-group-id="5134563010-18">)</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">push</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·18,·SHA:·a4cd2c98009ca3ef5d12ce4f9a65e5e83b99261c0c18d7760c77c01629233f7f·...·]0-17">)</span><span·class="p">.</span><span·class="w">
318 </span><span·class="nf">get_count</span><span·class="p"·data-group-id="5683877460-19">(</span><span·class="p"·data-group-id="5683877460-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="5134563010-19">(</span><span·class="p"·data-group-id="5134563010-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="5683877460-20">(</span><span·class="nf">name</span><span·class="p"·data-group-id="5683877460-21">(</span><span·class="p"·data-group-id="5683877460-21">)</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">get_count</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·23,·SHA:·7752e60977a5157c7b3dae530d957ef3fdd743f65563e1baed86ff01dd0b70cf·...·]0-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="5134563010-20">(</span><span·class="nf">name</span><span·class="p"·data-group-id="5134563010-21">(</span><span·class="p"·data-group-id="5134563010-21">)</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">get_count</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·23,·SHA:·12bf3cbd8c415e1fd1ba016747598b5c9bddd46487827815f86dae413cf2d75e·...·]0-20">)</span><span·class="p">.</span><span·class="w">
320 </span><span·class="nf">stop</span><span·class="p"·data-group-id="5683877460-22">(</span><span·class="p"·data-group-id="5683877460-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="5134563010-22">(</span><span·class="p"·data-group-id="5134563010-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="5683877460-23">(</span><span·class="nf">name</span><span·class="p"·data-group-id="5683877460-24">(</span><span·class="p"·data-group-id="5683877460-24">)</span><span·class="p"·data-group-id="5683877460-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="5134563010-23">(</span><span·class="nf">name</span><span·class="p"·data-group-id="5134563010-24">(</span><span·class="p"·data-group-id="5134563010-24">)</span><span·class="p"·data-group-id="5134563010-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="5683877460-25">(</span><span·class="p">_</span><span·class="n">Reason</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">State</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·cla[·...·truncated·by·diffoscope;·len:·58,·SHA:·b72e2cf183bf42fec85f522dfe2ba92d76cd06cec9138e462cbcd4f875fa706c·...·]0-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="5134563010-25">(</span><span·class="p">_</span><span·class="n">Reason</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">State</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·cla[·...·truncated·by·diffoscope;·len:·58,·SHA:·9f512fe6cc806f748d8505e2f44c13a15f08dfc9f08a95852e6028bc47698395·...·]0-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="5683877460-26">(</span><span·class="p">_</span><span·class="n">Vsn</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p">,</span><span·cla[·...·truncated·by·diffoscope;·len:·107,·SHA:·b8fb1677a0dec1e4edf25fd420ea2e014bb7d31514dbdc17f74455dfb303307e·...·]0-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="5134563010-26">(</span><span·class="p">_</span><span·class="n">Vsn</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><span·class="p">,</span><span·cla[·...·truncated·by·diffoscope;·len:·107,·SHA:·04c853fd732292f2f59f0e5d18661675e0bc0ef3ea278f5c565afe459392ec27·...·]0-26">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
326 ····</span><span·class="p"·data-group-id="5683877460-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="5683877460-27">}</span><span·class="p">.</span><span·class="w">326 ····</span><span·class="p"·data-group-id="5134563010-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="5134563010-27">}</span><span·class="p">.</span><span·class="w">
327 </span><span·class="nf">init</span><span·class="p"·data-group-id="5683877460-28">(</span><span·class="p"·data-group-id="5683877460-29">[</span><span·class="p"·data-group-id="5683877460-29">]</span><span·class="p"·data-group-id="5683877460-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="5134563010-28">(</span><span·class="p"·data-group-id="5134563010-29">[</span><span·class="p"·data-group-id="5134563010-29">]</span><span·class="p"·data-group-id="5134563010-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="5683877460-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="5683877460-30">}</span><span·class="p">.</span><span·class="w">330 ····</span><span·class="p"·data-group-id="5134563010-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="5134563010-30">}</span><span·class="p">.</span><span·class="w">
331 </span><span·class="nf">callback_mode</span><span·class="p"·data-group-id="5683877460-31">(</span><span·class="p"·data-group-id="5683877460-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="5134563010-31">(</span><span·class="p"·data-group-id="5134563010-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="5683877460-32">(</span><span·class="p"·data-group-id="5683877460-33">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="n">From</span><span·class="p"·data-group-id="5683877460-33">}</span><span·class="p">,</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·144,·SHA:·7a7864e4651d7263b972214704374c8834d41ab55d3dc3006186c36db8960970·...·]0-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="5134563010-32">(</span><span·class="p"·data-group-id="5134563010-33">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="n">From</span><span·class="p"·data-group-id="5134563010-33">}</span><span·class="p">,</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·144,·SHA:·d765e5bb5d3074395075b37dc557836b9f057b77066c8723ca91e09429dcf046·...·]0-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="5683877460-34">{</span><span·class="ss">next_state</span><span·class="p">,</span><span·class="ss">on</span><span·class="p">,</span><span·class="n">Data</span><span·class="o">+</span><span·class="mi">1</span><span·class="p">,</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·360,·SHA:·ca7ac99be8fe7f4c3410012ce8f06e35846b618c35d4f3344f9387290c15eaa4·...·]0-34">}</span><span·class="p">;</span><span·class="w">336 ····</span><span·class="p"·data-group-id="5134563010-34">{</span><span·class="ss">next_state</span><span·class="p">,</span><span·class="ss">on</span><span·class="p">,</span><span·class="n">Data</span><span·class="o">+</span><span·class="mi">1</span><span·class="p">,</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·360,·SHA:·918c996f096bf9f1e1c38e39dee0ecf3945cb5bf4873161b15f7d76821a62e0a·...·]0-34">}</span><span·class="p">;</span><span·class="w">
337 </span><span·class="nf">off</span><span·class="p"·data-group-id="5683877460-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="5683877460-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="5134563010-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="5134563010-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="5683877460-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="5683877460-38">)</span><span·class="p">.</span><span·class="w">338 ····</span><span·class="nf">handle_event</span><span·class="p"·data-group-id="5134563010-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="5134563010-38">)</span><span·class="p">.</span><span·class="w">
  
339 </span><span·class="nf">on</span><span·class="p"·data-group-id="5683877460-39">(</span><span·class="p"·data-group-id="5683877460-40">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="n">From</span><span·class="p"·data-group-id="5683877460-40">}</span><span·class="p">,</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·144,·SHA:·7a7864e4651d7263b972214704374c8834d41ab55d3dc3006186c36db8960970·...·]0-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="5134563010-39">(</span><span·class="p"·data-group-id="5134563010-40">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="n">From</span><span·class="p"·data-group-id="5134563010-40">}</span><span·class="p">,</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·144,·SHA:·d765e5bb5d3074395075b37dc557836b9f057b77066c8723ca91e09429dcf046·...·]0-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="5683877460-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="5683877460-42">[</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·313,·SHA:·336b932e042ec39770d3e5ab0ed7881f6a8afc54d4959d1859faf508690157c9·...·]0-41">}</span><span·class="p">;</span><span·class="w">341 ····</span><span·class="p"·data-group-id="5134563010-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="5134563010-42">[</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·313,·SHA:·0b8a237f4372fe338975b865ba904c5202d79681a5d108b54896b7682e9d6d54·...·]0-41">}</span><span·class="p">;</span><span·class="w">
342 </span><span·class="nf">on</span><span·class="p"·data-group-id="5683877460-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="5683877460-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="5134563010-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="5134563010-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="5683877460-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="5683877460-45">)</span><span·class="p">.</span><span·class="w">343 ····</span><span·class="nf">handle_event</span><span·class="p"·data-group-id="5134563010-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="5134563010-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="5683877460-46">(</span><span·class="p"·data-group-id="5683877460-47">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="n">From</span><span·class="p"·data-group-id="5683877460-47">}</span><span·class="p">,</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·149,·SHA:·bc7260bb748798bfa973e7b697e973a7c2873a0077a299ff5a661f316f50ef7d·...·]0-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="5134563010-46">(</span><span·class="p"·data-group-id="5134563010-47">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="n">From</span><span·class="p"·data-group-id="5134563010-47">}</span><span·class="p">,</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·149,·SHA:·a3254004757890d65629662a1bb823e8e3519dc8c8d4e4694d92442fe7e65617·...·]0-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="5683877460-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="5683877460-49">[</span><span·class="p"·data-group-id="5683877460-50">{</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·262,·SHA:·8936a1de080d613aa72f7487e9e0c235a168dc35e3c0fddbb80fa555d9993ce4·...·]0-48">}</span><span·class="p">;</span><span·class="w">347 ····</span><span·class="p"·data-group-id="5134563010-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="5134563010-49">[</span><span·class="p"·data-group-id="5134563010-50">{</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·262,·SHA:·62386f9e62e9713f4eeb91ec403887e4f9e1ffbf8797a6bb6153022889d200ce·...·]0-48">}</span><span·class="p">;</span><span·class="w">
348 </span><span·class="nf">handle_event</span><span·class="p"·data-group-id="5683877460-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="5683877460-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="5134563010-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="5134563010-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="5683877460-52">{</span><span·class="ss">keep_state</span><span·class="p">,</span><span·class="n">Data</span><span·class="p"·data-group-id="5683877460-52">}</span><span·class="p">.</span></code></pre><p>The·following·is·a·shell·session·when·running·it:</p><p[·...·truncated·by·diffoscope;·len:·270,·SHA:·1d089b8f429978593b0ad3d3ff98b49ba9f5a1abb4315d0ce681e127fd288426·...·]-1">)</span><span·class="p">.</span><span·class="w">350 ····</span><span·class="p"·data-group-id="5134563010-52">{</span><span·class="ss">keep_state</span><span·class="p">,</span><span·class="n">Data</span><span·class="p"·data-group-id="5134563010-52">}</span><span·class="p">.</span></code></pre><p>The·following·is·a·shell·session·when·running·it:</p><p[·...·truncated·by·diffoscope;·len:·270,·SHA:·63b0f50fe1a3926052bd770a5b459a05cdc40393bfb11c42476acb01e234884b·...·]-1">)</span><span·class="p">.</span><span·class="w">
351 </span><span·class="p"·data-group-id="5947452217-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="5947452217-2">}</span><span·class="gp·unselectable">351 </span><span·class="p"·data-group-id="3606068770-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="3606068770-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="5947452217-3">(</span><span·class="p"·data-group-id="5947452217-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="3606068770-3">(</span><span·class="p"·data-group-id="3606068770-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="5947452217-4">(</span><span·class="p"·data-group-id="5947452217-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="3606068770-4">(</span><span·class="p"·data-group-id="3606068770-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="5947452217-5">(</span><span·class="p"·data-group-id="5947452217-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="3606068770-5">(</span><span·class="p"·data-group-id="3606068770-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="5947452217-6">(</span><span·class="p"·data-group-id="5947452217-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="3606068770-6">(</span><span·class="p"·data-group-id="3606068770-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="5947452217-7">(</span><span·class="p"·data-group-id="5947452217-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="3606068770-7">(</span><span·class="p"·data-group-id="3606068770-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="5947452217-8">(</span><span·class="p"·data-group-id="5947452217-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="3606068770-8">(</span><span·class="p"·data-group-id="3606068770-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="5947452217-9">(</span><span·class="p"·data-group-id="5947452217-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="3606068770-9">(</span><span·class="p"·data-group-id="3606068770-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="0740336836-1">(</span><span·class="p"·data-group-id="0740336836-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="0085855846-1">(</span><span·class="p"·data-group-id="0085855846-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="0740336836-2">(</span><span·class="p"·data-group-id="0740336836-3">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="n">From</span><span·class="p"·data-group-id="0740336836-3">}</span><span·class="p">,</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·216,·SHA:·194daae8cd2f49fd80c24e849a1eb44d5b906f3b0f7a0a92c6b2eb5ca31c561d·...·]6-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="0085855846-2">(</span><span·class="p"·data-group-id="0085855846-3">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="n">From</span><span·class="p"·data-group-id="0085855846-3">}</span><span·class="p">,</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·216,·SHA:·e9e8b8d24cfef5dbfc8c017921d2a4aa764e031aa9ca48208c2211c4dac6e717·...·]6-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="0740336836-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:·355,·SHA:·29c9823d27dac3f40a6db7a7b68563b0fe7883cca777392dcab26499c6ed5fb9·...·]6-4">}</span><span·class="p">;</span><span·class="w">375 ····</span><span·class="p"·data-group-id="0085855846-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:·355,·SHA:·9f8846badda9ad5804b89633521f2f20985e98f3008c624d0c0b7eb4fdd026b6·...·]6-4">}</span><span·class="p">;</span><span·class="w">
376 </span><span·class="nf">handle_event</span><span·class="p"·data-group-id="0740336836-7">(</span><span·class="p"·data-group-id="0740336836-8">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="n">From</span><span·class="p"·data-group-id="0740336836-8">}</span><span·class="p">,</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·215,·SHA:·578d0c56ac0eb6778cdad7f20bd677ade0a3a126d764be4c0983029162792103·...·]6-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="0085855846-7">(</span><span·class="p"·data-group-id="0085855846-8">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="n">From</span><span·class="p"·data-group-id="0085855846-8">}</span><span·class="p">,</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·215,·SHA:·196962a4ae62e08131111e4a6a6f37bf71c04765a94e27987cd1976ea66eacfd·...·]6-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="0740336836-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="0740336836-10">[</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·312,·SHA:·8285170ba97bd92cde976a1ff946d53c7a192b9bf6841e65d45e1b91ed58f070·...·]6-9">}</span><span·class="p">;</span><span·class="w">378 ····</span><span·class="p"·data-group-id="0085855846-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="0085855846-10">[</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·312,·SHA:·800fd3e44e068025ae4436b0efab76077d1edb4a90284614f7ef6f02e01b339a·...·]6-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="0740336836-12">(</span><span·class="p"·data-group-id="0740336836-13">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="n">From</span><span·class="p"·data-group-id="0740336836-13">}</span><span·class="p">,</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·225,·SHA:·247f16382008faee46f56743aa5e810d73086db477941f2baf54e5e9777a1c22·...·]6-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="0085855846-12">(</span><span·class="p"·data-group-id="0085855846-13">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="n">From</span><span·class="p"·data-group-id="0085855846-13">}</span><span·class="p">,</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·225,·SHA:·73b9006a3eda274183b65676e11b65dda2b427764a0aa84d5e1c6c536a604ef1·...·]6-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="0740336836-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="0740336836-15">[</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·314,·SHA:·7c67f007baa8b544ab01821db11c1019b90b21e1c1607f22bbe2261b1e9e425e·...·]6-14">}</span><span·class="p">;</span><span·class="w">383 ····</span><span·class="p"·data-group-id="0085855846-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="0085855846-15">[</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·314,·SHA:·17d57a5b762f93621f1c8b6227e8f28ecfef399f2e1db857ec25436425881c46·...·]6-14">}</span><span·class="p">;</span><span·class="w">
384 </span><span·class="nf">handle_event</span><span·class="p"·data-group-id="0740336836-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="n[·...·truncated·by·diffoscope;·len:·53,·SHA:·f3c76d07c0ab2ed01e428b6f4a749dcb1e57a2eb41bde5f533a80ca28cee357c·...·]6-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="0085855846-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="n[·...·truncated·by·diffoscope;·len:·53,·SHA:·eb2bc5c45b724dc42c4bbca287bc15505c27d85107e9e639770de122c75e2d84·...·]6-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="0740336836-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="0740336836-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="0085855846-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="0085855846-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.2/doc/html/io.html
    
Offset 144, 15 lines modifiedOffset 144, 15 lines modified
144 module.</p></section><h2·id="module-error-information"·class="section-heading">144 module.</p></section><h2·id="module-error-information"·class="section-heading">
145 ··<a·href="#module-error-information"·class="hover-link">145 ··<a·href="#module-error-information"·class="hover-link">
146 ····<i·class="ri-link-m"·aria-hidden="true"></i>146 ····<i·class="ri-link-m"·aria-hidden="true"></i>
147 ··</a>147 ··</a>
148 ··<span·class="text">Error·Information</span>148 ··<span·class="text">Error·Information</span>
149 </h2>149 </h2>
150 <p>The·<code·class="inline">ErrorInfo</code>·mentioned·in·this·module·is·the·standard·<code·class="inline">ErrorInfo</code>·structure150 <p>The·<code·class="inline">ErrorInfo</code>·mentioned·in·this·module·is·the·standard·<code·class="inline">ErrorInfo</code>·structure
151 that·is·returned·from·all·I/O·modules.·It·has·the·following·format:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="8212884244-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="8212[·...·truncated·by·diffoscope;·len:·377,·SHA:·e49da40ed30e8f8692e343f600cf19b650163afd6c7ffa525190a9b33b1adda7·...·]-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="2842443634-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="2842[·...·truncated·by·diffoscope;·len:·377,·SHA:·5029d5dd99c428a01dcd6a161110e25f2818dfa559b27d717ab145350a5f6200·...·]-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="5813641537-1">(</span><span·class="ss">&#39;enter&gt;&#39;</span><span·class="p"·data-group-id="5813641537-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="7229219084-1">(</span><span·class="ss">&#39;enter&gt;&#39;</span><span·class="p"·data-group-id="7229219084-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="5813641537-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">foo</span><span·class="p"·data-group-id="5813641537-2">}</span><span·class="gp·unselectable">1166 </span><span·class="p"·data-group-id="7229219084-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">foo</span><span·class="p"·data-group-id="7229219084-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="5813641537-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="5813641537-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="7229219084-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="7229219084-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="5813641537-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">bar</span><span·class="p"·data-group-id="5813641537-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="7229219084-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">bar</span><span·class="p"·data-group-id="7229219084-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.6/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.6/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.6/doc/html/erlang.html#group_leader/2"><code·class="inline">group_leader(NewGroupLeader,·self())</code></a>.</p>1173 <a·href="../../../../erts-15.2.6/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="6662982195-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="6662982195-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="5929892747-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="5929892747-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="6662982195-2">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="p"·data-group-id="6662982195-3">{</span><span·class="ss">fread</span><span·class="p">,</span><span·class="ss">string</span><span·class="p"·data-group-id="6662982195-3">[·...·truncated·by·diffoscope;·len:·49,·SHA:·4fa0e096c44932f0d1551cc1b340859d4af371841f11766295b75caf87e63c69·...·]-2">}</span><span·class="gp·unselectable">1432 </span><span·class="p"·data-group-id="5929892747-2">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="p"·data-group-id="5929892747-3">{</span><span·class="ss">fread</span><span·class="p">,</span><span·class="ss">string</span><span·class="p"·data-group-id="5929892747-3">[·...·truncated·by·diffoscope;·len:·49,·SHA:·a9120702ac43ce98701275ad2c383e4500577ea11fd7ce1498a075faf771e7c6·...·]-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="6662982195-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="6662982195-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="5929892747-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="5929892747-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="6662982195-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="6662982195-6">[</span><span·class="p"·data-group-id="6662982195-7">[</span><span·class="mi">1091</span><span·class="p">,</span><span·class="mi">1085</spa[·...·truncated·by·diffoscope;·len:·409,·SHA:·6a0d34cc94f0dff2473a69924d484f7a8fc661a9f7e182e4ccee207bb6dfa38b·...·]-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="5929892747-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="5929892747-6">[</span><span·class="p"·data-group-id="5929892747-7">[</span><span·class="mi">1091</span><span·class="p">,</span><span·class="mi">1085</spa[·...·truncated·by·diffoscope;·len:·409,·SHA:·bc4d308c79c8277303921f17f6e4f9111aabdc31f02ef2d4a220068334c3356a·...·]-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="0179952128-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="0179952128-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="9659918265-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="9659918265-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="0179952128-2">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="p"·data-group-id="0179952128-3">{</span><span·class="ss">fread</span><span·class="p">,</span><span·class="ss">string</span><span·class="p"·data-group-id="0179952128-3">[·...·truncated·by·diffoscope;·len:·49,·SHA:·ace2f15b13f7c05aea5f012e03395a58b844823c31c855b7b9d1423faa933c19·...·]-2">}</span><span·class="gp·unselectable">1441 </span><span·class="p"·data-group-id="9659918265-2">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="p"·data-group-id="9659918265-3">{</span><span·class="ss">fread</span><span·class="p">,</span><span·class="ss">string</span><span·class="p"·data-group-id="9659918265-3">[·...·truncated·by·diffoscope;·len:·49,·SHA:·6cf2fbb01da22498ab7a780850165c69b3504283975430119997b0b3ba0e2030·...·]-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="0179952128-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="0179952128-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="9659918265-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="9659918265-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="0179952128-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="0179952128-6">[</span><span·class="p"·data-group-id="0179952128-7">[</span><span·class="mi">1091</span><span·class="p"·data-group-id="0179952128-7">]</sp[·...·truncated·by·diffoscope;·len:·97,·SHA:·22eb7fea0d5aaf4427b3e169c66f309f3b15c8521c1bb8912481f236023bfc30·...·]-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="9659918265-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9659918265-6">[</span><span·class="p"·data-group-id="9659918265-7">[</span><span·class="mi">1091</span><span·class="p"·data-group-id="9659918265-7">]</sp[·...·truncated·by·diffoscope;·len:·97,·SHA:·57eb920a22685e613df539522fe8cba7cb5336a7452d4ac76eebe1455978fd00·...·]-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="9027048117-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="9027048117-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="5216188578-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="5216188578-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="9027048117-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9027048117-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:·02eb182158e0934195f9de4443d91671c34077a063214f67e8dc891bde7d33a8·...·]-2">}</span><span·class="gp·unselectable">1450 </span><span·class="p"·data-group-id="5216188578-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="5216188578-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:·bbfff0fc9f5fee18d927aa40939f93c2c8c2fa1822a1261a41a00cd1b70ac25e·...·]-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="9027048117-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="9027048117-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="5216188578-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="5216188578-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="9027048117-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9027048117-6">[</span><span·class="mf">5.678</span><span·class="p">,</span><span·class="mi">99</span><span·class="p"·data-group-id="9027048117-6">]</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·77642dba35928f5743cea194641a4184b219150d23ac5ea00fb1fac5d46dce61·...·]-5">}</span><span·class="gp·unselectable">1453 </span><span·class="p"·data-group-id="5216188578-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="5216188578-6">[</span><span·class="mf">5.678</span><span·class="p">,</span><span·class="mi">99</span><span·class="p"·data-group-id="5216188578-6">]</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·43b37dca93aed27594845a194a429d30775927c556fe67247232e2c823d36992·...·]-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="9027048117-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="9027048117-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="5216188578-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="5216188578-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="9027048117-8">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9027048117-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:·aa904ffcc7a37fa84cadd9c0d3e5230125cddd6b5dc65d8c8165ea434515d235·...·]-8">}</span></code></pre>1456 </span><span·class="p"·data-group-id="5216188578-8">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5216188578-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:·32ee685d7a2772550a6ee5ce84293368a3531eea84e5c5704767ef708e37a2c6·...·]-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.6/doc/html/erlang.html#atom_to_list/1"><code·class="inline">atom_to_list/1</code></a>·or1536 <a·href="../../../../erts-15.2.6/doc/html/erlang.html#atom_to_list/1"><code·class="inline">atom_to_list/1</code></a>·or
1537 <a·href="../../../../erts-15.2.6/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="7987908965-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="7987908965-2">[</span><span·class="p"·data-group-id="798790[·...·truncated·by·diffoscope;·len:·56,·SHA:·574d2a640d0e0f13062e234f7c3ef33658d7d600a7a40ae01960cbe182b77393·...·]5-1">)</span><span·class="p">.</span><span·class="w">1537 <a·href="../../../../erts-15.2.6/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="3312520725-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="3312520725-2">[</span><span·class="p"·data-group-id="331252[·...·truncated·by·diffoscope;·len:·56,·SHA:·f02c32f13b284de17d90b6439b2ee8cc686a3a98abdb95cf895262feeda13164·...·]5-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="0179448807-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:·91d6d956668dbaa1a3f44d4b2f1853e62292915c6e96c1317ecca72acb9b66a1·...·]-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="9124942010-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:·88b7821884cbba700e44629551bdc47472d8e4ac012add8f1b939ac9b37553a8·...·]-1">}</span><span·class="p">.</span><span·class="w">
1558 </span><span·class="p"·data-group-id="0179448807-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:·71c0de5c036d01d2e892c622d3dc287893b8f83a873c5723e7b74c5952390eb1·...·]-2">}</span><span·class="gp·unselectable">1558 </span><span·class="p"·data-group-id="9124942010-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:·c113cffc07a083ffa60822aec6d5779155f7fb882da784dc8a3b9c4df23dbc96·...·]-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="0179448807-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="0179448807-4">[</span><span·class="ss">reversed</span><span·class="p[·...·truncated·by·diffoscope;·len:·152,·SHA:·8dd084dc43ba64963eccd3454e84b01411c8dca1403c6cfd4bf17de5350599c0·...·]-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="9124942010-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="9124942010-4">[</span><span·class="ss">reversed</span><span·class="p[·...·truncated·by·diffoscope;·len:·152,·SHA:·fe1546b7fb1195afb87e6089f275c86a478cd80875df764f3238bf555b7037b4·...·]-3">)</span><span·class="p">.</span><span·class="w">
1560 </span><span·class="p"·data-group-id="0179448807-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:·5f9513e632ebffcb5393fb610e6184ba0fc3e0e42a76c42fda080bc0dd87d0f5·...·]-5">}</span><span·class="w">1560 </span><span·class="p"·data-group-id="9124942010-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:·1204a4882d58d41d749da118c578922b7e259552ef624c9bf258a51e479240bc·...·]-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="9253308926-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="9253308926-2">[</span><span·class="mi">9</span><span·class="p">,</span><span·class="w">·[·...·truncated·by·diffoscope;·len:·208,·SHA:·0fdad94eab5e0be5487cdcf5907ed72a1e65affd5544a7c5fb736ad068c103fd·...·]-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="5475512049-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="5475512049-2">[</span><span·class="mi">9</span><span·class="p">,</span><span·class="w">·[·...·truncated·by·diffoscope;·len:·208,·SHA:·0972857ab55bfec234c7990753b7e32bcf954c315c916544b0d850d416814be0·...·]-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="1873158571-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="1873158571-2">[</span><span·class="mi">9</span><span·class="p">,</span><span·class="w">·[·...·truncated·by·diffoscope;·len:·282,·SHA:·2b669710da2a23a761dc076194f23bfcace76999cf9805c5c94f0e8ca1578834·...·]-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="2693666232-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="2693666232-2">[</span><span·class="mi">9</span><span·class="p">,</span><span·class="w">·[·...·truncated·by·diffoscope;·len:·282,·SHA:·f105c3106035ac9d281255be953c40f1c8b84abe13a3e338c297078b451d15b3·...·]-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="9106806755-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="9106[·...·truncated·by·diffoscope;·len:·286,·SHA:·1e7fcc2c69d328ada387a94172f6b65d98ad38abff54d187f851301c5f96508c·...·]-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="2743621871-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="2743[·...·truncated·by·diffoscope;·len:·286,·SHA:·fe941f3b8b92214cf159bed5c11ac0cf8786c20a54f63debd535d19fa32b3816·...·]-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="3640306283-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="3640306283-2">[</span><span·class="mi">1024</span><span·class="p"·data-group-id="3640306283-2[·...·truncated·by·diffoscope;·len:·51,·SHA:·f4dc71be27b497335a76a6c8bb99a42deee995494daa1456555d84447c8641c9·...·]-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="3501000840-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="3501000840-2">[</span><span·class="mi">1024</span><span·class="p"·data-group-id="3501000840-2[·...·truncated·by·diffoscope;·len:·51,·SHA:·842b26cdf3dbfd83f77ee340afe6a0893218d58e29231bf2c77a8d72218cd68e·...·]-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="3640306283-3">{</span><span·class="mi">400</span><span·class="p"·data-group-id="3640306283-3">}</span><span·class="w">1573 </span><span·class="err">\</span><span·class="ss">x</span><span·class="p"·data-group-id="3501000840-3">{</span><span·class="mi">400</span><span·class="p"·data-group-id="3501000840-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="3640306283-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="3640306283-5">[</span><span·class="mi">1024</span><span·class="p"·data-group-id="3640306283-5"[·...·truncated·by·diffoscope;·len:·50,·SHA:·c1938759cee2e62e9de2a11de3544147be63e7bd7c0c2ac546626e323c84e38c·...·]-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="3501000840-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="3501000840-5">[</span><span·class="mi">1024</span><span·class="p"·data-group-id="3501000840-5"[·...·truncated·by·diffoscope;·len:·50,·SHA:·5249bea8d3bc4da80c9b760651ee48d9782cbf16cd97f9f63c148d3d3f4757c1·...·]-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.2/doc/html/io_lib.html
    
Offset 998, 16 lines modifiedOffset 998, 16 lines modified
998 <p>Tries·to·read·<code·class="inline">String</code>·in·accordance·with·the·control·sequences·in·<code·class="inline">Format</code>.</p><p>For·a·detailed·description·of·the·available·formatting·options,·see·<a·href="io.html#fread/3"><code·class="inline">io:fread/3</code></a>.998 <p>Tries·to·read·<code·class="inline">String</code>·in·accordance·with·the·control·sequences·in·<code·class="inline">Format</code>.</p><p>For·a·detailed·description·of·the·available·formatting·options,·see·<a·href="io.html#fread/3"><code·class="inline">io:fread/3</code></a>.
999 It·is·assumed·that·<code·class="inline">String</code>·contains·whole·lines.</p><p>The·function·returns:</p><ul><li><p><strong><code·class="inline">{ok,·InputList,·LeftOverChars}</code></strong>·-·The·string·was·read.·<code·class="inline">InputList</code>·is·the999 It·is·assumed·that·<code·class="inline">String</code>·contains·whole·lines.</p><p>The·function·returns:</p><ul><li><p><strong><code·class="inline">{ok,·InputList,·LeftOverChars}</code></strong>·-·The·string·was·read.·<code·class="inline">InputList</code>·is·the
1000 list·of·successfully·matched·and·read·items,·and·<code·class="inline">LeftOverChars</code>·are·the·input1000 list·of·successfully·matched·and·read·items,·and·<code·class="inline">LeftOverChars</code>·are·the·input
1001 characters·not·used.</p></li><li><p><strong><code·class="inline">{more,·RestFormat,·Nchars,·InputStack}</code></strong>·-·The·string·was·read,·but·more1001 characters·not·used.</p></li><li><p><strong><code·class="inline">{more,·RestFormat,·Nchars,·InputStack}</code></strong>·-·The·string·was·read,·but·more
1002 input·is·needed·to·complete·the·original·format·string.·<code·class="inline">RestFormat</code>·is·the1002 input·is·needed·to·complete·the·original·format·string.·<code·class="inline">RestFormat</code>·is·the
1003 remaining·format·string,·<code·class="inline">Nchars</code>·is·the·number·of·characters·scanned,·and1003 remaining·format·string,·<code·class="inline">Nchars</code>·is·the·number·of·characters·scanned,·and
1004 <code·class="inline">InputStack</code>·is·the·reversed·list·of·inputs·matched·up·to·that·point.</p></li><li><p><strong><code·class="inline">{error,·What}</code></strong>·-·The·read·operation·failed·and·parameter·<code·class="inline">What</code>·gives·a1004 <code·class="inline">InputStack</code>·is·the·reversed·list·of·inputs·matched·up·to·that·point.</p></li><li><p><strong><code·class="inline">{error,·What}</code></strong>·-·The·read·operation·failed·and·parameter·<code·class="inline">What</code>·gives·a
1005 hint·about·the·error.</p></li></ul><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">3&gt;·</span><span·class="nc">io_lib</span><span·class="p">:</span><span·class="nf">fread</span><span·class="p"·data-group-id="9724880336-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="9724880336-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="7977404452-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="7977404452-1">)</span><span·class="p">.</span><span·class="w">
1006 </span><span·class="p"·data-group-id="9724880336-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9724880336-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:·af4c024a778d23cad32b35715dada2d724739c8c93e778e663f7b6123b911ab8·...·]-2">}</span></code></pre>1006 </span><span·class="p"·data-group-id="7977404452-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="7977404452-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:·c61b28a5e51c2d84d98d754bafbcd0e384b7a44d3bd1afd7104df7616866df5a·...·]-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="6444861397-1">(</span><span·class="nc">io_lib</span><span·class="p">:</span><span·class="nf">write</span><span·class="p"·data-group-id="6444861397-2">(</span><span·class="p"·data-group-id="6444861397-3">{</span><span·class="mi">1</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·837,·SHA:·645f6b5582ac27b847d697efccf1c267add86febe132714266c654e354fbc6b3·...·]-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="7889453186-1">(</span><span·class="nc">io_lib</span><span·class="p">:</span><span·class="nf">write</span><span·class="p"·data-group-id="7889453186-2">(</span><span·class="p"·data-group-id="7889453186-3">{</span><span·class="mi">1</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·837,·SHA:·f2f00c9dfd7c9dfda78d73b5538172da0c3173ec4601f133fefb4720bd9aa5f2·...·]-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="6444861397-7">(</span><span·class="nc">io_lib</span><span·class="p">:</span><span·class="nf">write</span><span·class="p"·data-group-id="6444861397-8">(</span><span·class="p"·data-group-id="6444861397-9">{</span><span·class="mi">1</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·916,·SHA:·3d1543c80368bf50ed555ee4fecd9626f85d761c1eeb84895f9c6b56d76f6d24·...·]-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="7889453186-7">(</span><span·class="nc">io_lib</span><span·class="p">:</span><span·class="nf">write</span><span·class="p"·data-group-id="7889453186-8">(</span><span·class="p"·data-group-id="7889453186-9">{</span><span·class="mi">1</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·916,·SHA:·5ff7f38c9ef82606edbdcb4d40f2e59b8f0e73a1547d8b25aca25dea8e499046·...·]-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="6444861397-13">(</span><span·class="nc">io_lib</span><span·class="p">:</span><span·class="nf">write</span><span·class="p"·data-group-id="6444861397-14">(</span><span·class="p"·data-group-id="6444861397-15">{</span><span·class="p"·data-group-id="6444861397-[·...·truncated·by·diffoscope;·len:·1089,·SHA:·2e63daf3be4c6f8cb0c1f38c4f3da21d5f640546e9c5c70a2eac1b4ca027c267·...·]-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="7889453186-13">(</span><span·class="nc">io_lib</span><span·class="p">:</span><span·class="nf">write</span><span·class="p"·data-group-id="7889453186-14">(</span><span·class="p"·data-group-id="7889453186-15">{</span><span·class="p"·data-group-id="7889453186-[·...·truncated·by·diffoscope;·len:·1089,·SHA:·8ab2b8823aff084a5bcb0375d751b133e192bd2cd5ea24760d726c579e02a45c·...·]-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.2/doc/html/io_protocol.html
    
Offset 142, 16 lines modifiedOffset 142, 16 lines modified
142 I/O·server·communicates·with.</p><h2·id="protocol-basics"·class="section-heading">142 I/O·server·communicates·with.</p><h2·id="protocol-basics"·class="section-heading">
143 ··<a·href="#protocol-basics"·class="hover-link">143 ··<a·href="#protocol-basics"·class="hover-link">
144 ····<i·class="ri-link-m"·aria-hidden="true"></i>144 ····<i·class="ri-link-m"·aria-hidden="true"></i>
145 ··</a>145 ··</a>
146 ··<span·class="text">Protocol·Basics</span>146 ··<span·class="text">Protocol·Basics</span>
147 </h2>147 </h2>
148 <p>As·described·in·Robert's·paper,·I/O·servers·and·clients·communicate·using148 <p>As·described·in·Robert's·paper,·I/O·servers·and·clients·communicate·using
149 <code·class="inline">io_request</code>/<code·class="inline">io_reply</code>·tuples·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="3625372420-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:·b0f61bdc27f02e02c22e94009b5c57743075d98221b72d63a2a97d564f083bb3·...·]-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="0780146495-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:·4aec3b84ed76945be16d7efde3a1a2d97f5adbd595aadcd8ec7d7d10f2f7baf0·...·]-1">}</span><span·class="w">
150 </span><span·class="p"·data-group-id="3625372420-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="3625372420-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="0780146495-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="0780146495-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.6/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.6/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.6/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.6/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="6722756176-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="6722756176-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="3606990377-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="3606990377-1">}</span><span·class="w">
168 </span><span·class="p"·data-group-id="6722756176-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:·b027ea8775ccdc7bbcc6fd2bc77be6787dd4c7694b568e413b56be4912070fb6·...·]-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="3606990377-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:·2526fce96b994717a28397ba4222a0c17cc87ced44a4542afdbf74f6307cb6fc·...·]-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="3703580235-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:·231,·SHA:·32da52b6cad0209fe12c5d57bf988d7d24b1dc362edbe60526c81ae41be99ace·...·]5-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="1722029295-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:·231,·SHA:·cca6d7023e98a84dd88532fd938868ad67a746655f460174bdefbfefb324d9d7·...·]5-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="1818327757-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="1818327757-1">}</span><span·class="w">210 one·of:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="7228118328-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="7228118328-1">}</span><span·class="w">
211 </span><span·class="p"·data-group-id="1818327757-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="1818327757-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.6/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="7228118328-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="7228118328-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.6/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.6/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.6/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="8296771659-1">(</span><span·class="ss">demo</span><span·class="p"·data-group-id="8296771659-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="2290725828-1">(</span><span·class="ss">demo</span><span·class="p"·data-group-id="2290725828-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="8296771659-2">(</span><span·class="p"·data-group-id="8296771659-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:·549ea571f8f29b7a016cc669a20d0ec2f5c00299a9b6431f1fb6de0d6d6c5729·...·]-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="2290725828-2">(</span><span·class="p"·data-group-id="2290725828-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:·b679da6a6f2f57ad682275bebeb05811a82822b00899415ef8387e4c5c6128ec·...·]-2">)</span><span·class="p">.</span><span·class="w">
  
223 </span><span·class="nf">until_newline</span><span·class="p"·data-group-id="8296771659-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="8296771659-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="2290725828-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="2290725828-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
224 ····</span><span·class="p"·data-group-id="8296771659-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="8296771659-6">[</span><span·class="p"·data-group-id="8296771659-6">]</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·18786582d5d86380a79e36e07f7ce0fc4f05a578c18ace58a90187813a6af5f2·...·]-5">}</span><span·class="p">;</span><span·class="w">224 ····</span><span·class="p"·data-group-id="2290725828-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="2290725828-6">[</span><span·class="p"·data-group-id="2290725828-6">]</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·864611e434f7bf47f0613e4206b0dd029ab62498661332f3faaac3c21ea1e6f1·...·]-5">}</span><span·class="p">;</span><span·class="w">
225 </span><span·class="nf">until_newline</span><span·class="p"·data-group-id="8296771659-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="8296771659-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="2290725828-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="2290725828-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="8296771659-8">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="8296771659-9">(</span><span·class="n">X</span><span·class="p"·data-group-id="8296771659-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·306,·SHA:·0f891f8bbc4a24f2b05cb05d9b26238aaaaf838fccaf6bf5b6db8b9cee7a951c·...·]-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="2290725828-8">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="2290725828-9">(</span><span·class="n">X</span><span·class="p"·data-group-id="2290725828-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·306,·SHA:·7a741dc784c47d17d0568a4381db53facde5941f6187e5ac340a96f4c06bca13·...·]-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="8296771659-10">{</span><span·class="n">L</span><span·class="p">,</span><span·class="p"·data-group-id="8296771659-11">[</span><span·class="p"·data-group-id="8296771659-11">]</span><span·class="p"·data-group-id="8296771659-10">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">229 ··</span><span·class="p"·data-group-id="2290725828-10">{</span><span·class="n">L</span><span·class="p">,</span><span·class="p"·data-group-id="2290725828-11">[</span><span·class="p"·data-group-id="2290725828-11">]</span><span·class="p"·data-group-id="2290725828-10">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
230 ············</span><span·class="p"·data-group-id="8296771659-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="8296771659-12">}</span><span·class="p">;</span><span·class="w">230 ············</span><span·class="p"·data-group-id="2290725828-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="2290725828-12">}</span><span·class="p">;</span><span·class="w">
231 ··</span><span·class="p"·data-group-id="8296771659-13">{</span><span·class="n">L2</span><span·class="p">,</span><span·class="p"·data-group-id="8296771659-14">[</span><span·class="n">MyStopCharacter</span><span·class="p">|</span><span·class="n">Rest</span><span·class="p"·data-group-id="8296771659[·...·truncated·by·diffoscope;·len:·54,·SHA:·54cc15897100af914c256b388c56a7a104f3d9313171f4dc04d1fc99e6b9b7a9·...·]-13">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">231 ··</span><span·class="p"·data-group-id="2290725828-13">{</span><span·class="n">L2</span><span·class="p">,</span><span·class="p"·data-group-id="2290725828-14">[</span><span·class="n">MyStopCharacter</span><span·class="p">|</span><span·class="n">Rest</span><span·class="p"·data-group-id="2290725828[·...·truncated·by·diffoscope;·len:·54,·SHA:·e6c55f533cee92fcdfd0479cecf1d5eafbdec6fb16fcd3fab3012ffce527e6cd·...·]-13">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
232 ······</span><span·class="p"·data-group-id="8296771659-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="8296771659-16">[</span><span·class="n">MyStop[·...·truncated·by·diffoscope;·len:·162,·SHA:·1e51525cf9f1cbb1d7fbab45f354cd2f924ee166905b3b168dda5eb7d37b810a·...·]-15">}</span><span·class="w">232 ······</span><span·class="p"·data-group-id="2290725828-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="2290725828-16">[</span><span·class="n">MyStop[·...·truncated·by·diffoscope;·len:·162,·SHA:·9e27ccbaefbbb74f43f264ec29ed53a148a0fb2f2c9c5e550e3e21aec2fc32bd·...·]-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="8296771659-17">(</span><span·class="n">IoServer</span><span·class="p"·data-group-id="8296771659-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="2290725828-17">(</span><span·class="n">IoServer</span><span·class="p"·data-group-id="2290725828-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="8296771659-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="2290725828-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="8296771659-19">(</span><span·class="p"·data-group-id="8296771659-19">)</span><span·class="p">,</span><span·class="w">236 ················</span><span·class="nf">self</span><span·class="p"·data-group-id="2290725828-19">(</span><span·class="p"·data-group-id="2290725828-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="8296771659-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:·f2403c43fcd5b5791e56187607903519ecae88d5f64b8901d1e8cfcc51813c89·...·]-18">}</span><span·class="p">,</span><span·class="w">238 ················</span><span·class="p"·data-group-id="2290725828-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:·8efab2eb98b15fd8e7cfd67ffa2cafe2198b6f371bf69f63351adc8224567d30·...·]-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="8296771659-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="8296771659-22">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">240 ········</span><span·class="p"·data-group-id="2290725828-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="2290725828-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.6/doc/html/erlang.html#apply/3"><code·class="inline">apply(Module,·Function,·[·State,·Data·|·ExtraArgs·])</code></a>·by244 like·<a·href="../../../../erts-15.2.6/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="0266066763-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="0266066763-2">(</span><span·class="p"·data-group-id="0266066763-2">)</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·284,·SHA:·95010f6aa48529192246af9496932c5ea09ff42e91aaa42e9df57a8a2fa7db27·...·]-3">)</span><span·class="w">280 understands·the·following·options:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="5534420932-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="5534420932-2">(</span><span·class="p"·data-group-id="5534420932-2">)</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·284,·SHA:·f5b6a064703af5cbacd03278881fd883785d5b8acb970e67374e443498b8877d·...·]-3">)</span><span·class="w">
281 </span><span·class="p"·data-group-id="0266066763-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="0266066763-5">(</span><span·class="p"·data-group-id="0266066763-5">)</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·14382e7533ac65348e8c98f2ad10069882068d8721903657a8086bec2daa67d1·...·]-4">}</span><span·class="w">281 </span><span·class="p"·data-group-id="5534420932-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="5534420932-5">(</span><span·class="p"·data-group-id="5534420932-5">)</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·c6640325b15126ddc62602c507adb7712259c755864161395d5506442b85b5e0·...·]-4">}</span><span·class="w">
282 </span><span·class="p"·data-group-id="0266066763-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="0266066763-7">(</span><span·class="p"·data-group-id="0266066763-7">)</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·2990bbf5e7bb01a31bbe4800acb286accc7caa8b12c629c81c0df30690098df2·...·]-6">}</span><span·class="w">282 </span><span·class="p"·data-group-id="5534420932-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="5534420932-7">(</span><span·class="p"·data-group-id="5534420932-7">)</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·1c8cfb4951ac76ea18d812cbacfed907bcef4ef39c8d0e4e5758865724915580·...·]-6">}</span><span·class="w">
283 </span><span·class="p"·data-group-id="0266066763-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="0266066763-8">}</span><span·class="w">[·...·truncated·by·diffoscope;·len:·237,·SHA:·af2870a4bde2217d604a7ddfbcd32ba17ac9b5437c22cf4e0023dd1e1fac68ed·...·]-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="5534420932-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="5534420932-8">}</span><span·class="w">[·...·truncated·by·diffoscope;·len:·237,·SHA:·3fcaeeeb3a5f0fdb6d742fc40800f2ab17624db0f12c0ee0f9589a6c255db201·...·]-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="4954706226-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="4954706226-1">}</span><span·class="w">306 </span><span·class="p"·data-group-id="1997020896-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="1997020896-1">}</span><span·class="w">
307 </span><span·class="p"·data-group-id="4954706226-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="4954706226-2">}</span><span·class="w">307 </span><span·class="p"·data-group-id="1997020896-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="1997020896-2">}</span><span·class="w">
308 </span><span·class="p"·data-group-id="4954706226-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="4954706226-3">}</span></code></pre><h2·id="optional-i-o-request"·class="section-heading">308 </span><span·class="p"·data-group-id="1997020896-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="1997020896-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.2/doc/html/json.html
    
Offset 977, 16 lines modifiedOffset 977, 16 lines modified
977 </h2>977 </h2>
978 <ul><li><code·class="inline">error(unexpected_end)</code>·if·<code·class="inline">Binary</code>·contains·incomplete·JSON·value</li><li><code·class="inline">error({invalid_byte,·Byte})</code>·if·<code·class="inline">Binary</code>·contains·unexpected·byte·or·invalid·UTF-8·byte</li><li><code·class="inline">error({unexpected_sequence,·Bytes})</code>·if·<code·class="inline">Binary</code>·contains·invalid·UTF-8·escape</li></ul><h2·id="decode/1-example"·class="section-heading">978 <ul><li><code·class="inline">error(unexpected_end)</code>·if·<code·class="inline">Binary</code>·contains·incomplete·JSON·value</li><li><code·class="inline">error({invalid_byte,·Byte})</code>·if·<code·class="inline">Binary</code>·contains·unexpected·byte·or·invalid·UTF-8·byte</li><li><code·class="inline">error({unexpected_sequence,·Bytes})</code>·if·<code·class="inline">Binary</code>·contains·invalid·UTF-8·escape</li></ul><h2·id="decode/1-example"·class="section-heading">
979 ··<a·href="#decode/1-example"·class="hover-link">979 ··<a·href="#decode/1-example"·class="hover-link">
980 ····<i·class="ri-link-m"·aria-hidden="true"></i>980 ····<i·class="ri-link-m"·aria-hidden="true"></i>
981 ··</a>981 ··</a>
982 ··<span·class="text">Example</span>982 ··<span·class="text">Example</span>
983 </h2>983 </h2>
984 <pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nc">json</span><span·class="p">:</span><span·class="nf">decode</span><span·class="p"·data-group-id="8913849244-1">(</span><span·class="p"·data-group-id="8913849244-2">&lt;&lt;</span><span·class="s">&quot;{\&quot;foo\&quot;:·1}&quot;</span><span·class="p"·data-group-id="8913849244-2">&gt;&gt;</span><span·class="p"·data-group-id="8913849244-1">)</span><span·class="p">.</span><span·class="w"> 
985 </span><span·class="p"·data-group-id="8913849244-3">#{</span><span·class="p"·data-group-id="8913849244-4">&lt;&lt;</span><span·class="s">&quot;foo&quot;</span><span·class="p"·data-group-id="8913849244-4">&gt;&gt;</span><span·class="w">·</span><span·class="p[·...·truncated·by·diffoscope;·len:·128,·SHA:·b65717e8634553da1f8b37512921f05b26dd0d58a3fa2d76e95219884e108930·...·]>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="6903098179-1">(</span><span·class="p"·data-group-id="6[·...·truncated·by·diffoscope;·len:·237,·SHA:·0159fff27905ded9d9d29b5e4a7e1f4928ba6913af8defd1d34e1f6845936d58·...·]>
 985 </span><span·class="p"·data-group-id="6903098179-3">#{</span><span·class="p"·data-group-id="6903098179-4">&lt;&lt;</span><span·class="s">&quot;foo&quot;</span><span·class="p"·data-group-id="6903098179-4">&gt;&gt;</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="6903098179-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="2698446950-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="2698446950-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="2698446950-2">[</span><span·class="p"·data-group-id="2698446950-3">{</span><span·class="nf">binary_to_existing_atom</span><span·class="p"·data-group-id="2698446950-4">(</span><span·class="n">Key</span><span·class="p"·data-group-id="2698446950-4">)</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Value</span><span·class="p"·data-group-id="2698446950-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="2698446950-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="2698446950-5">(</span><span·class="p"·data-group-id="2698446950-6">&lt;&lt;</span><span·class="s">&quot;{\&quot;foo\&quot;:·1}&quot;</span><span·class="p"·data-group-id="2698446950-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="2698446950-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="2698446950-7">}</span><span·class="p"·data-group-id="2698446950-5">)</span><span·class="p">.</span><span·class="w"> 
1037 </span><span·class="p"·data-group-id="2698446950-8">{</span><span·class="p"·data-group-id="2698446950-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:·eeacf1cc8cbbdc83ad6562c21b162e5a09cbd46ebe85061f36db8e35c48e1f78·...·]>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:·b12a26dd53ddd72698da7c2b71e0f6d2dc41b53d0b918af251446e14a6310c22·...·]>
 1036 &gt;·</span><span·class="nc">json</span><span·class="p">:</span><span·class="nf">decode</span><span·class="p"·data-group-id="8243957751-5">(</span><span·class="p"·data-group-id="8243957751-6">&lt;&lt;</span><span·class="s">&quot;{\&quot;foo\&quot;:·1}&quot;</span><span·class="p"·data-group-id="8243957751-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="8243957751-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="8243957751-7">}</span><span·class="p"·data-group-id="8243957751-5">)</span><span·class="p">.</span><span·class="w">
 1037 </span><span·class="p"·data-group-id="8243957751-8">{</span><span·class="p"·data-group-id="8243957751-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="8243957751-9">}</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="8243957751-10">&lt;&lt;</span><span·class="p"·data-group-id="8243957751-10">&gt;&gt;</span><span·class="p"·data-group-id="8243957751-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.6/doc/html/erlang.html#t:binary/0">binary</a>()·|·end_of_input,·Opaque·::·<a·href="../../../../erts-15.2.6/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.6/doc/html/erlang.html#t:binary/0">binary</a>()·|·end_of_input,·Opaque·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:term/0">term</a>())·->
1062 ·························{Result·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:dynamic/0">dynamic</a>(),·Acc·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:dynamic/0">dynamic</a>(),·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:binary/0">binary</a>()}·|1062 ·························{Result·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:dynamic/0">dynamic</a>(),·Acc·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:dynamic/0">dynamic</a>(),·<a·href="../../../../erts-15.2.6/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="3216864459-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="3216864459-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">json</span><span·class="p">:</span><span·class="nf">decode_start</span><span·class="p"·data-group-id="3216864459-2">(</span><span·class="p"·data-group-id="3216864459-3">&lt;&lt;</span><span·class="s">&quot;{\&quot;foo\&quot;:&quot;</span><span·class="p"·data-group-id="3216864459-3">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3216864459-4">#{</span><span·class="p"·data-group-id="3216864459-4">}</span><span·class="p"·data-group-id="3216864459-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="3216864459-5">(</span><span·class="p"·data-group-id="3216864459-6">&lt;&lt;</span><span·class="s">&quot;1}&quot;</span><span·class="p"·data-group-id="3216864459-6">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="p"·data-group-id="3216864459-5">)</span><span·class="p">.</span><span·class="w"> 
1068 </span><span·class="p"·data-group-id="3216864459-7">{</span><span·class="p"·data-group-id="3216864459-8">#{</span><span·class="ss">foo</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">1</span><span·class="p[·...·truncated·by·diffoscope;·len:·1244,·SHA:·e44daec94a388b6b8e9f02053a89f2e7a054e73aea1b0dd93ec09648bb052b1a·...·]-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="4371887386-1">{</span><span·class="ss">cont[·...·truncated·by·diffoscope;·len:·797,·SHA:·977ae962f4dcaa6d46ab24b33c72aab875a0cf55359ee1a197485f0ea1ddf16d·...·]-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="4371887386-5">(</span><span·class="p"·data-group-id="4371887386-6">&lt;&lt;</span><span·class="s">&quot;1}&quot;</span><span·class="p"·data-group-id="4371887386-6">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><span·class="p"·data-group-id="4371887386-5">)</span><span·class="p">.</span><span·class="w">
 1068 </span><span·class="p"·data-group-id="4371887386-7">{</span><span·class="p"·data-group-id="4371887386-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="4371887386-8">}</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="4371887386-9">&lt;&lt;</span><span·class="p"·data-group-id="4371887386-9">&gt;&gt;</span><span·class="p"·data-group-id="4371887386-7">}</span></code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="p"·data-group-id="6279048855-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="6279048855-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">json</span><span·class="p">:</span><span·class="nf">decode_start</span><span·class="p"·data-group-id="6279048855-2">(</span><span·class="p"·data-group-id="6279048855-3">&lt;&lt;</span><span·class="s">&quot;123&quot;</span><span·class="p"·data-group-id="6279048855-3">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6279048855-4">#{</span><span·class="p"·data-group-id="6279048855-4">}</span><span·class="p"·data-group-id="6279048855-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="9294835578-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="9294835578-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="6279048855-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="6279048855-5">)</span><span·class="p">.</span><span·class="w">
1070 </span><span·class="p"·data-group-id="9294835578-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="9294835578-7">&lt;&lt;</span><span·class="p"·data-group-id="9294835578-7">&gt;&gt;</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·227ae6e92c94e13e93842746497fbdc53b38bbcde7f9c09aa6b712eb9df54a75·...·]-6">}</span></code></pre>1070 </span><span·class="p"·data-group-id="6279048855-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="6279048855-7">&lt;&lt;</span><span·class="p"·data-group-id="6279048855-7">&gt;&gt;</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·3eacd77dd942d0aeeeda726a7f92fdf1da19e652f4f2885a52d0466e84a6eb3c·...·]-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="7381111076-1">(</span><span·class="nc">json</span><span·class="p">:</span><span·class="nf">encode</span><span·class="p"·data-group-id="7381111076-2">(</span><span·class="p"·data-group-id="7381111076-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="7381111076-4">&lt;&lt;</span><span·class="s">&quot;bar&quot;</span><span·class="p"·data-group-id="7381111076-4">&gt;&gt;</span><span·class="p"·data-group-id="7381111076-3">}</span><span·class="p"·data-group-id="7381111076-2">)</span><span·class="p"·data-group-id="7381111076-1">)</span><span·class="p">.</span><span·class="w"> 
1138 </span><span·class="p"·data-group-id="7381111076-5">&lt;&lt;</span><span·class="s">&quot;{\&quot;foo\&quot;:\&quot;bar\&quot;}&quot;</span><span·class="p"·data-group-id="7381111076-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="9642833857-1">(</span><span·class="nc">json</span><span·class="p">:</span><span·class="nf">encod[·...·truncated·by·diffoscope;·len:·574,·SHA:·132111b6bb0ea85d5876064c856c2d83be5e19c0f586b3ee0142672dacf98565·...·]>
 1138 </span><span·class="p"·data-group-id="9642833857-5">&lt;&lt;</span><span·class="s">&quot;{\&quot;foo\&quot;:\&quot;bar\&quot;}&quot;</span><span·class="p"·data-group-id="9642833857-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="5787265416-1">(</span><span·class="p"·data-group-id="5787265416-2">[</span><span·class="p"·data-group-id="5787265416-3">{</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p"·data-group-id="5[·...·truncated·by·diffoscope;·len:·772,·SHA:·b756ac9a0c5c8f5e2e26bdb917a91ea42634bcd8dd2e9a6bd60663c1d92e4993·...·]-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="3181612303-1">(</span><span·class="p"·data-group-id="3181612303-2">[</span><span·class="p"·data-group-id="3181612303-3">{</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p"·data-group-id="3[·...·truncated·by·diffoscope;·len:·772,·SHA:·a0a873be7c95d3a03ad3c99c4abe02606a202c984158b2fe65c1aebce960db0e·...·]-4">)</span><span·class="p">;</span><span·class="gp·unselectable">
1179 &gt;·</span><span·class="nf">encoder</span><span·class="p"·data-group-id="5787265416-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="5787265416-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·287,·SHA:·acaa5c87f37f3ab7e248fabd7299b585855fedad4be70ab8f430242e4f2dfe91·...·]-6">)</span><span·class="p">.</span><span·class="gp·unselectable">1179 &gt;·</span><span·class="nf">encoder</span><span·class="p"·data-group-id="3181612303-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="3181612303-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·287,·SHA:·b4e27b892332cbeeb4cec424bafb581fd52780f045809fe932cf61b2beeee0d4·...·]-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="5787265416-7">(</span><span·class="n">Value</span><span·class="p"·data-group-id="5787265416-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:·c7849434d119a3290fe55715b41a98387a2e597ebfb3c0c23c0aa11774ce7a21·...·]-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="3181612303-7">(</span><span·class="n">Value</span><span·class="p"·data-group-id="3181612303-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:·bbe49e06808c5ee1aec09c0b567bacd8f2565aa3d1997f84e6839784802540af·...·]-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="5787265416-11">(</span><span·class="nf">custom_encode</span><span·class="p"·data-group-id="5787265416-12">(</span><span·class="p"·data-group-id="5787265416-13">[</span><span·class="p"·data-group-id="5787265416-14">{</span><span·class="ss">a</span><span·cla[·...·truncated·by·diffoscope;·len:·604,·SHA:·015009f150b5a3e9594380bd457482642cbc562d3c76f6079cdc856b794cdc8e·...·]-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="3181612303-11">(</span><span·class="nf">custom_encode</span><span·class="p"·data-group-id="3181612303-12">(</span><span·class="p"·data-group-id="3181612303-13">[</span><span·class="p"·data-group-id="3181612303-14">{</span><span·class="ss">a</span><span·cla[·...·truncated·by·diffoscope;·len:·604,·SHA:·a25ee4864fdca71d0f14c35431cf7cb545d7c182a70f2afa9cd60cd7fff59d0b·...·]-11">)</span><span·class="p">.</span><span·class="w">
1182 </span><span·class="p"·data-group-id="5787265416-17">&lt;&lt;</span><span·class="s">&quot;{\&quot;a\&quot;:[],\&quot;b\&quot;:1}&quot;</span><span·class="p"·data-group-id="5787265416-17">&gt;&gt;</span></code></pre>1182 </span><span·class="p"·data-group-id="3181612303-17">&lt;&lt;</span><span·class="s">&quot;{\&quot;a\&quot;:[],\&quot;b\&quot;:1}&quot;</span><span·class="p"·data-group-id="3181612303-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.6/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.6/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="5885451111-1">(</span><span·class="nc">json</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="5885451111-2">(</span><span·class="p"·data-group-id="5885451111-3">#{</span><span·class="ss">foo</span><span·class="w">·<[·...·truncated·by·diffoscope;·len:·540,·SHA:·046c5af7b4e3acb2efb8f5bd33b7e956d3b892d63a70f55dde8422fa46aeaf88·...·]-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="8119690479-1">(</span><span·class="nc">json</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="8119690479-2">(</span><span·class="p"·data-group-id="8119690479-3">#{</span><span·class="ss">foo</span><span·class="w">·<[·...·truncated·by·diffoscope;·len:·540,·SHA:·0e383e46768995f2408f408c5055c982b0a6fd2191bd676637fff5158f8f7db2·...·]-1">)</span><span·class="p">.</span><span·class="w">
1546 </span><span·class="p"·data-group-id="5885451111-5">{</span><span·class="w">1546 </span><span·class="p"·data-group-id="8119690479-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="5885451111-5">}</span><span·class="w">1549 </span><span·class="p"·data-group-id="8119690479-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.6/doc/html/erlang.html#t:dynamic/0">dynamic</a>(),·Encoder·::·<a·href="#t:formatter/0">formatter</a>(),·Options·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:map/0">map</a>())·->·<a·href="../../../../erts-15.2.6/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.6/doc/html/erlang.html#t:dynamic/0">dynamic</a>(),·Encoder·::·<a·href="#t:formatter/0">formatter</a>(),·Options·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:map/0">map</a>())·->·<a·href="../../../../erts-15.2.6/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="2096060837-1">(</span><span·class="p"·data-group-id="2096060837-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="2096060837-2">}</span><span·class=[·...·truncated·by·diffoscope;·len:·182,·SHA:·248930b30cafe2d7d53ea16ba1f4ad2477f15f943a7b38bb9ac74be0080efe63·...·]-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="0515786350-1">(</span><span·class="p"·data-group-id="0515786350-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="0515786350-2">}</span><span·class=[·...·truncated·by·diffoscope;·len:·182,·SHA:·f10f6fb1c038387414792dd89c47522a0f86de62355071bda004dd7e3907b3e1·...·]-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="2096060837-3">(</span><span·class="n">SysTimeSecs</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2096060837-4">[</span><span·class="p"·data-group-id="2096060837-5">{</span><span·class="ss">offset</span><span·class="p">[·...·truncated·by·diffoscope;·len:·215,·SHA:·8ccf97f8c5ce026db80439136afa27ddfd3f6c9ddb81ba5a88e14402c93607ac·...·]-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="0515786350-3">(</span><span·class="n">SysTimeSecs</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0515786350-4">[</span><span·class="p"·data-group-id="0515786350-5">{</span><span·class="ss">offset</span><span·class="p">[·...·truncated·by·diffoscope;·len:·215,·SHA:·d00a02f957ce390d2a96f074da99d7ad7ee8bc1f6955b5ba9018b15bb3f6a38a·...·]-3">)</span><span·class="p">,</span><span·class="w">
Max diff block lines reached; 6816/48919 bytes (13.93%) of diff not shown.
164 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2.2/doc/html/lists.html
    
Offset 1157, 16 lines modifiedOffset 1157, 16 lines modified
  
1157 ······<div·class="specs">1157 ······<div·class="specs">
  
1158 ··········<pre·translate="no"><span·class="attribute">-spec</span>·append(ListOfLists)·->·List1·when·ListOfLists·::·[List],·List·::·[T],·List1·::·[T],·T·::·<a·href="../../../../erts-15.2.6/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.6/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="8043102358-1">(</span><span·class="p"·data-group-id="8043102358-2">[</span><span·class="p"·data-group-id="8043102358-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:·3c03eb24d5aabf43c7598828da561215c9eceff531922a3b2c23448c1aa4170f·...·]-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="6417698004-1">(</span><span·class="p"·data-group-id="6417698004-2">[</span><span·class="p"·data-group-id="6417698004-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:·fdddca20986b672cffdac2630505a8e877881e79c9857333a9ea4680862519a0·...·]-1">)</span><span·class="p">.</span><span·class="w">
1161 </span><span·class="p"·data-group-id="8043102358-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:·bc76073724f250cf102b66ff55af7a1943d6863015baadc59a10ac9f8cc276b2·...·]-6">]</span></code></pre>1161 </span><span·class="p"·data-group-id="6417698004-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:·33fc7483ff58ea02225a0797afa69f52215b84882b29e09d3b3e4687d9a9c09d·...·]-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.6/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.6/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="5856530069-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="5856530069-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="9984417782-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="9984417782-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.6/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.6/doc/html/erlang.html#t:string/0">string</a>()
1215 ················when·Things·::·[Thing],·Thing·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:atom/0">atom</a>()·|·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:integer/0">integer</a>()·|·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:float/0">float</a>()·|·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:string/0">string</a>().</pre>1215 ················when·Things·::·[Thing],·Thing·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:atom/0">atom</a>()·|·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:integer/0">integer</a>()·|·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:float/0">float</a>()·|·<a·href="../../../../erts-15.2.6/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="0230076908-1">(</span><span·class="p"·data-group-id="0230076908-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:·66e43ea64d3fefb9e744f78012c0a439befdf8609049e1b44468ea76879cb619·...·]-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="1873636025-1">(</span><span·class="p"·data-group-id="1873636025-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:·0fc631b0984704b116400a7a18ca3e3955bec3b7a0291783566456203e9171ec·...·]-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.6/doc/html/erlang.html#t:non_neg_integer/0">non_neg_integer</a>(),·Elem·::·T,·List·::·[T],·T·::·<a·href="../../../../erts-15.2.6/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.6/doc/html/erlang.html#t:non_neg_integer/0">non_neg_integer</a>(),·Elem·::·T,·List·::·[T],·T·::·<a·href="../../../../erts-15.2.6/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="1531027883-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="1531027883-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="1573574227-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="1573574227-1">)</span><span·class="p">.</span><span·class="w">
1329 </span><span·class="p"·data-group-id="1531027883-2">[</span><span·class="ss">xx</span><span·class="p">,</span><span·class="ss">xx</span><span·class="p">,</span><span·class="ss">xx</span><span·class="p">,</span><span·class="ss">xx</span><span·class="p">,</span><span·class="ss">xx</span><span·clas[·...·truncated·by·diffoscope;·len:·31,·SHA:·a3811223085aeebb13b2dccaf8ea2e12d205b6f19982403e65318f3d292530b9·...·]-2">]</span></code></pre>1329 </span><span·class="p"·data-group-id="1573574227-2">[</span><span·class="ss">xx</span><span·class="p">,</span><span·class="ss">xx</span><span·class="p">,</span><span·class="ss">xx</span><span·class="p">,</span><span·class="ss">xx</span><span·class="p">,</span><span·class="ss">xx</span><span·clas[·...·truncated·by·diffoscope;·len:·31,·SHA:·c902f65442233be4cbe887275d2a75d890997bd1ab70085dcde091387ae23d21·...·]-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.6/doc/html/erlang.html#t:term/0">term</a>().</pre>1421 ·······················T·::·<a·href="../../../../erts-15.2.6/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="8487429339-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="8487429339-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="9130216571-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="9130216571-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
1427 ··</span><span·class="p"·data-group-id="8487429339-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="8487429339-2">}</span><span·class="w">·</span><span·class="o">=</span><span·cla[·...·truncated·by·diffoscope;·len:·1130,·SHA:·0e998b557c8144678656db17133fdb961c32739e9e8aeefb5ef64b24252d47fb·...·]-3">)</span><span·class="p">,</span><span·class="w">1427 ··</span><span·class="p"·data-group-id="9130216571-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="9130216571-2">}</span><span·class="w">·</span><span·class="o">=</span><span·cla[·...·truncated·by·diffoscope;·len:·1130,·SHA:·fb3a346342c4395f3feb66b90731925e383f093035dd615578d9af835f77672f·...·]-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="9942672106-1">(</span><span·class="p"·data-group-id="9942672106-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="9942672106-2">]</span><span·[·...·truncated·by·diffoscope;·len:·35,·SHA:·11fa42f64b92f516fc3082cc339093d8d0f4c587e8f880d2d0ed2e73980e9c47·...·]-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="9746481067-1">(</span><span·class="p"·data-group-id="9746481067-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="9746481067-2">]</span><span·[·...·truncated·by·diffoscope;·len:·35,·SHA:·cdebf703f50ee41458566363e3f385098fa114ef254b0aaca8a700014e3ef126·...·]-1">)</span><span·class="p">.</span><span·class="w">
1429 </span><span·class="p"·data-group-id="9942672106-3">[</span><span·class="p"·data-group-id="9942672106-4">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="ss">a</span><span·class="p"·data-group-id="9942672106-4">}</span><span·class="p">,</span><span·class="p"·data-group-id="9942672106-5">{</span><span·class="mi">2</span><span·class="p">,</span><span·class="ss">b</span><span·class="p"·data-group-id="9942672106-5">}</span><span·class="p">,</span><span·class="p"·data-group-id="9942672106-6">{</span><span·class="mi">3</span><span·class="p">,</span><span·class="ss">c</span><span·class="p"·data-group-id="9942672106-6">}</span><span·class="p"·data-group-id="9942672106-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="9142444244-1">(</span><span·class="mi">10</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9142444244-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="9142444244-2">]</span><span·class="p"·data-group-id="9142444244-1">)</span><span·class="p">.</span><span·class="w"> 
1430 </span><span·class="p"·data-group-id="9142444244-3">[</span><span·class="p"·data-group-id="9142444244-4">{</span><span·class="mi">10</span><span·class="p">,</span><span·class="ss">a</span><span·class="p"·data-group-id="9142444244-4">}</span><span·class="p">,</span><span·class="p"·data-group-id="9142444244-5">{</span><span·class="mi">11</span><span·class="p">,</span><span·class="ss">b</span><span·class="p"·data-group-id="9142444244-5">}</span><span·class="p">,</span><span·class="p"·data-group-id="9142444244-6">{</span><span·class="mi">12</span><span·class="p">,</span><span·class="ss">c</span><span·class="p"·data-group-id="9142444244-6">}</span><span·class="p"·data-group-id="9142444244-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="0733712107-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="0733712107-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="0733712107-2">]</span><span·class="p"·data-group-id="0733712107-1">)</span><span·class="p">.</span><span·class="w"> 
1431 </span><span·class="p"·data-group-id="0733712107-3">[</span><span·class="p"·data-group-id="0733712107-4">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="ss">a</span><span·class="p"·data-group-id="0733712107-4">}</span><span·class="p">,</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·467,·SHA:·22313fefd4f85b97d98b2963dabfc765f6ae36c76f0cf201862e6cab95bdce9c·...·]>1429 </span><span·class="p"·data-group-id="9746481067-3">[</span><span·class="p"·data-group-id="9746481067-4">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="ss">a</span><span·class="p"·data-group-id="9746481067-4">}</span><span·class="p">,</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·1044,·SHA:·4cb01f5c18bac1570bb4266d99f5e3dd672a881d0121e8dd3511e1da01e1f6db·...·]>
 1430 </span><span·class="p"·data-group-id="1413494050-3">[</span><span·class="p"·data-group-id="1413494050-4">{</span><span·class="mi">10</span><span·class="p">,</span><span·class="ss">a</span><span·class="p"·data-group-id="1413494050-4">}</span><span·class="p">,</span><span·class="p"·data-group-id="1413494050-5">{</span><span·class="mi">11</span><span·class="p">,</span><span·class="ss">b</span><span·class="p"·data-group-id="1413494050-5">}</span><span·class="p">,</span><span·class="p"·data-group-id="1413494050-6">{</span><span·class="mi">12</span><span·class="p">,</span><span·class="ss">c</span><span·class="p"·data-group-id="1413494050-6">}</span><span·class="p"·data-group-id="1413494050-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="2984596638-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="2984596638-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="2984596638-2">]</span><span·class="p"·data-group-id="2984596638-1">)</span><span·class="p">.</span><span·class="w">
 1431 </span><span·class="p"·data-group-id="2984596638-3">[</span><span·class="p"·data-group-id="2984596638-4">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="ss">a</span><span·class="p"·data-group-id="2984596638-4">}</span><span·class="p">,</span><span·class="p"·data-group-id="2984596638-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="2984596638-5">}</span><span·class="p">,</span><span·class="p"·data-group-id="2984596638-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="2984596638-6">}</span><span·class="p"·data-group-id="2984596638-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.6/doc/html/erlang.html#t:term/0">term</a>().</pre>1491 ·······················Value·::·<a·href="../../../../erts-15.2.6/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="1148089813-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="1148089813-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="7050754218-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="7050754218-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="1148089813-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="1148089813-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="1148089813-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="7050754218-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="7050754218-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="7050754218-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="1148089813-4">(</span><span·class="n">Elem</span><span·class="p"·data-group-id="1148089813-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="7050754218-4">(</span><span·class="n">Elem</span><span·class="p"·data-group-id="7050754218-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="1148089813-5">[</span><span·class="n">Elem</span><span·class="p">|</span><span·class="n">Acc</span><span·class="p"·data-group-id="1148089813-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="7050754218-5">[</span><span·class="n">Elem</span><span·class="p">|</span><span·class="n">Acc</span><span·class="p"·data-group-id="7050754218-5">]</span><span·class="p">;</span><span·class="w">
1501 ···························</span><span·class="p"·data-group-id="1148089813-6">{</span><span·class="ss">true</span><span·class="p">,</span><span·class="n">Value</span><span·class="p"·data-group-id="1148089813-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:·a774666fb7f62c1c54e158ff6b40fc263faea99f3316ac09b29d095498054009·...·]-7">]</span><span·class="w">1501 ···························</span><span·class="p"·data-group-id="7050754218-6">{</span><span·class="ss">true</span><span·class="p">,</span><span·class="n">Value</span><span·class="p"·data-group-id="7050754218-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:·39b1ccd71fe0298a740acc3acc3fdb3349723ce82549ffafbfb930a2294d94ce·...·]-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="1148089813-8">[</span><span·class="p"·data-group-id="1148089813-8">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">List1</span><span·class="p"·data-group-id="1148089813-2">)</span><span·class="p">.</span></code></pre><p><em>Example:[·...·truncated·by·diffoscope;·len:·1819,·SHA:·bac93d5a84921e0e152df68d66dcb3aaded28bca63322ee6eacfb1a0ded02feb·...·]-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="7050754218-8">[</span><span·class="p"·data-group-id="7050754218-8">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">List1</span><span·class="p"·data-group-id="7050754218-2">)</span><span·class="p">.</span></code></pre><p><em>Example:[·...·truncated·by·diffoscope;·len:·1819,·SHA:·ad8c9f27e92a2797ec43dd91d633a6270e58b98a4ead4305b90a6b259e8c8a71·...·]-1">)</span><span·class="p">.</span><span·class="w">
1504 </span><span·class="p"·data-group-id="4585307654-5">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="4585307654-5">]</span></code></pre>1504 </span><span·class="p"·data-group-id="3703276146-5">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="3703276146-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.6/doc/html/erlang.html#t:term/0">term</a>(),·B·::·<a·href="../../../../erts-15.2.6/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.6/doc/html/erlang.html#t:term/0">term</a>(),·B·::·<a·href="../../../../erts-15.2.6/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="3881200864-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="3881200864-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="8127889604-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="8127889604-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="3881200864-2">(</span><span·class="nf">map</span><span·class="p"·data-group-id="3881200864-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="3881200864-3">)</span[·...·truncated·by·diffoscope;·len:·1073,·SHA:·4b94e399d585718a108130a30be2441ade17436a9e3968999eec14724f061ebd·...·]-1">)</span><span·class="p">.</span><span·class="w">1560 ····</span><span·class="nf">append</span><span·class="p"·data-group-id="8127889604-2">(</span><span·class="nf">map</span><span·class="p"·data-group-id="8127889604-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="8127889604-3">)</span[·...·truncated·by·diffoscope;·len:·1073,·SHA:·d7da5c16683ae4a16ffcc0e82b4b14eafc21fdaac51235e3be313c37db85ce07·...·]-1">)</span><span·class="p">.</span><span·class="w">
1561 </span><span·class="p"·data-group-id="8713259711-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:·553a8d8a05aa3b04a0bdbcbe3ffeb8eb3c4359bf1849a2bb49d9b38c4e7565e2·...·]-5">]</span></code></pre>1561 </span><span·class="p"·data-group-id="7725629443-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:·26e8fd322aa4726c18871b91e5fb01a91056879c1bf82cf61e903fac9c2690a9·...·]-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.2/doc/html/maps.html
    
Offset 731, 18 lines modifiedOffset 731, 18 lines modified
731 ····················Pred·::·fun((Key,·Value)·->·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:boolean/0">boolean</a>()),731 ····················Pred·::·fun((Key,·Value)·->·<a·href="../../../../erts-15.2.6/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="6016715630-1">#{</span><span·class="ss">a</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">2</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">b</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·813,·SHA:·55acc6c6986fe8407b6e770ea81137bb04a1b11046e29b14b36a2f0430e6a0eb·...·]-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="2044819393-1">#{</span><span·class="ss">a</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">2</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">b</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·813,·SHA:·79f6639a58bb1503e0ba3244801f074fb9004a732b2ca29bccead84ceaaef27b·...·]-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="6016715630-2">(</span><span·class="n">K</span><span·class="p">,</span><span·class="n">V</span><span·class="p"·data-group-id="6016715630-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nf">is_atom</span><s[·...·truncated·by·diffoscope;·len:·425,·SHA:·1b6c7f20fc3c2665519000224bdac8251cf0384ab47464543b6774f9990b2455·...·]-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="2044819393-2">(</span><span·class="n">K</span><span·class="p">,</span><span·class="n">V</span><span·class="p"·data-group-id="2044819393-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nf">is_atom</span><s[·...·truncated·by·diffoscope;·len:·425,·SHA:·2c6546a22fc9adcea4ac6e1922d9a2193934613fc7c2f0da678a6f874b4a72c4·...·]-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="6016715630-5">(</span><span·class="n">Pred</span><span·class="p">,</span><span·class="n">M</span><span·class="p"·data-group-id="6016715630-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="2044819393-5">(</span><span·class="n">Pred</span><span·class="p">,</span><span·class="n">M</span><span·class="p"·data-group-id="2044819393-5">)</span><span·class="p">.</span><span·class="w">
739 </span><span·class="p"·data-group-id="6016715630-6">#{</span><span·class="ss">a</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">2</span><span·class="p">,</span><span·class="ss">c</span><span·class="w">·</span><span·class="p">=&gt;</span><span·[·...·truncated·by·diffoscope;·len:·84,·SHA:·665efd75974761d756fd6b9613ccc0044f8174bcc22bf348d5e55fc0b4946b84·...·]-6">}</span></code></pre>739 </span><span·class="p"·data-group-id="2044819393-6">#{</span><span·class="ss">a</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="mi">2</span><span·class="p">,</span><span·class="ss">c</span><span·class="w">·</span><span·class="p">=&gt;</span><span·[·...·truncated·by·diffoscope;·len:·84,·SHA:·e4e86fa7c1ed53708f735ebbadb5b377ee07b52f5b070cc0c8e8d71e2927695e·...·]-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="0331978402-1">(</span><span·class="n">K</span><span·class="p">,</span><span·class="n">V</span><span·class="p"·data-group-id="0331978402-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:·50f6f0df1135be54231bc1d56b76d1cd2013e6c0ce0fbf409b87f9094979f4f4·...·]-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="1403874056-1">(</span><span·class="n">K</span><span·class="p">,</span><span·class="n">V</span><span·class="p"·data-group-id="1403874056-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:·ec7b51f539ac0dcbe618ffa20a20dbc119c2534afdf74d085a2329de889035b8·...·]-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="0331978402-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:·bd14cc53065380e5f7757e85bb28cd5feb8cdd2c23ecc17edbe74c74356a08a2·...·]-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="1403874056-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:·075251e02f7c2af255a443f4b478a5e147c573661692fa4c8978b8da81363eae·...·]-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="0331978402-7">(</span><span·class="n">Fun</span><span·class="p">,</span><span·class="n">Map</span><span·class="p"·data-group-id="0331978402-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="1403874056-7">(</span><span·class="n">Fun</span><span·class="p">,</span><span·class="n">Map</span><span·class="p"·data-group-id="1403874056-7">)</span><span·class="p">.</span><span·class="w">
780 </span><span·class="p"·data-group-id="0331978402-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:·0ba6f034686c94eb4e1ef119083dd5a0577745cf2c5b7bfc74908b43c6b3ccdb·...·]-8">}</span></code></pre>780 </span><span·class="p"·data-group-id="1403874056-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:·8635440a89cd4301e5d4afda68d4628a90bb70f9d44a7195d43762336a9a56c8·...·]-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="9956372757-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="9956372757-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="3042597611-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="3042597611-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="9956372757-2">(</span><span·class="n">Key</span><span·class="p">,</span><span·class="n">Map</span><span·class="p"·data-group-id="9956372757-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="3042597611-2">(</span><span·class="n">Key</span><span·class="p">,</span><span·class="n">Map</span><span·class="p"·data-group-id="3042597611-2">)</span><span·class="p">.</span><span·class="w">
810 </span><span·class="p"·data-group-id="9956372757-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="mi">42</span><span·class="p"·data-group-id="9956372757-3">}</span></code></pre>810 </span><span·class="p"·data-group-id="3042597611-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="mi">42</span><span·class="p"·data-group-id="3042597611-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="0345446968-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="0345446968-1">)</span><span·class="w">·</span><span·class="k">when</span><span·[·...·truncated·by·diffoscope;·len:·166,·SHA:·aa2f46b2a18c4b56bb671035d5ca4873d8ff4da8363c439bceee60721f3eb582·...·]8-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="6229598478-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="6229598478-1">)</span><span·class="w">·</span><span·class="k">when</span><span·[·...·truncated·by·diffoscope;·len:·166,·SHA:·9750a9b5ac77a02227e1f05cfc5543e2f86ea11d23e992c434fa6336cae0b2b4·...·]8-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="0345446968-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:·317,·SHA:·36edc87f5138e3d42ad9047ce6b977c26e4f24be27e680095332cce9ce3c18c7·...·]8-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="6229598478-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:·317,·SHA:·462bfa7d706f47338e521cbbe793157d2a9380237261bb1646c81865ad553e3b·...·]8-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="0345446968-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="0345446968-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="6229598478-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="6229598478-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.6/doc/html/erlang.html#t:list/0">list</a>(),·Value·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:term/0">term</a>(),·Map·::·<a·href="../../../../erts-15.2.6/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.6/doc/html/erlang.html#t:list/0">list</a>(),·Value·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:term/0">term</a>(),·Map·::·<a·href="../../../../erts-15.2.6/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="1039800456-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:·b9e5816b7817c33e5b8662330e77ac85cf64fe45bc0a4e8661780fb7697239fa·...·]-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="0975244817-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:·1e82cb29290d59934a87b4f6324ecbff81ce4b9897a1226f9fe9a554671d6aaa·...·]-2">)</span><span·class="p">.</span><span·class="w">
915 </span><span·class="p"·data-group-id="1039800456-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:·fe5c4ee7fbb07d325db308e03c6510fef497779da9b79c4ca97f9dfe9439a17b·...·]-3">}</span></code></pre>915 </span><span·class="p"·data-group-id="0975244817-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:·fb8a74793b9483466a0e5bd40bc5aeef2e3e172afd7bae8c5965031e6ade14e5·...·]-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.6/doc/html/erlang.html#t:term/0">term</a>(),·Value·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:term/0">term</a>(),·Map·::·<a·href="../../../../erts-15.2.6/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.6/doc/html/erlang.html#t:term/0">term</a>(),·Value·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:term/0">term</a>(),·Map·::·<a·href="../../../../erts-15.2.6/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="3542401489-1">[</span><span·class="p"·data-group-id="3542401489-2">{</span><span·class="s">&quot;a&quot;</span><span·class="p">,</span><span·class="ss">ignored</span><span·class="p"·data-group-id="3542401489-2">}</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·660,·SHA:·3d3dd8113f36ce1a82549deeaed3535d7eec5214c310583e3623b0fd6fb8fbd8·...·]-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="7613098020-1">[</span><span·class="p"·data-group-id="7613098020-2">{</span><span·class="s">&quot;a&quot;</span><span·class="p">,</span><span·class="ss">ignored</span><span·class="p"·data-group-id="7613098020-2">}</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·660,·SHA:·6b0e94bfb529b53f21b4d204da321bc0b31489d6757f4321c5a3c22dab981f56·...·]-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="3542401489-6">(</span><span·class="n">List</span><span·class="p"·data-group-id="3542401489-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="7613098020-6">(</span><span·class="n">List</span><span·class="p"·data-group-id="7613098020-6">)</span><span·class="p">.</span><span·class="w">
947 </span><span·class="p"·data-group-id="3542401489-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:·4abd67cc30d50245563b1c5988c22de533f1bff8f3ee1da631e42fc2c869e5aa·...·]-7">}</span></code></pre>947 </span><span·class="p"·data-group-id="7613098020-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:·835106cc8232e57aebf0466d5ddd2e30270c6ebed284b22ff092d726011b69fe·...·]-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.6/doc/html/erlang.html#t:term/0">term</a>(),·Map·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:map/0">map</a>(),·Value·::·<a·href="../../../../erts-15.2.6/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.6/doc/html/erlang.html#t:term/0">term</a>(),·Map·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:map/0">map</a>(),·Value·::·<a·href="../../../../erts-15.2.6/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="4191861007-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:·275,·SHA:·f9d6c883b017813294b476933098c00f25301db2d29e5536fea0a51e5cf18609·...·]-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="4967390628-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:·275,·SHA:·4ef0a4294fe45ebd22d2091db1fecc1a3bbe5624967d01d1069cbe54e5768a04·...·]-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="4191861007-2">(</span><span·class="n">Key</span><span·class="p">,</span><span·class="n">Map</span><span·class="p"·data-group-id="4191861007-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="4967390628-2">(</span><span·class="n">Key</span><span·class="p">,</span><span·class="n">Map</span><span·class="p"·data-group-id="4967390628-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.2/doc/html/ms_transform.html
    
Offset 150, 55 lines modifiedOffset 150, 55 lines modified
150 ··</a>150 ··</a>
151 ··<span·class="text">Example·1</span>151 ··<span·class="text">Example·1</span>
152 </h2>152 </h2>
153 <p>Using·<a·href="ets.html#select/2"><code·class="inline">ets:select/2</code></a>·and·a·match·specification,·one·can·filter·out·rows·of·a153 <p>Using·<a·href="ets.html#select/2"><code·class="inline">ets:select/2</code></a>·and·a·match·specification,·one·can·filter·out·rows·of·a
154 table·and·construct·a·list·of·tuples·containing·relevant·parts·of·the·data·in154 table·and·construct·a·list·of·tuples·containing·relevant·parts·of·the·data·in
155 these·rows.·One·can·use·<a·href="ets.html#foldl/3"><code·class="inline">ets:foldl/3</code></a>·instead,·but·the·<a·href="ets.html#select/2"><code·class="inline">ets:select/2</code></a>·call·is155 these·rows.·One·can·use·<a·href="ets.html#foldl/3"><code·class="inline">ets:foldl/3</code></a>·instead,·but·the·<a·href="ets.html#select/2"><code·class="inline">ets:select/2</code></a>·call·is
156 far·more·efficient.·Without·the·translation·provided·by·<code·class="inline">ms_transform</code>,·one·must156 far·more·efficient.·Without·the·translation·provided·by·<code·class="inline">ms_transform</code>,·one·must
157 struggle·with·writing·match·specifications·terms·to·accommodate·this.</p><p>Consider·a·simple·table·of·employees:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="7639757310-1">(</span><span·class="ss">emp</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7639757310-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="4650851907-1">(</span><span·class="ss">emp</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4650851907-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="7639757310-2">}</span><span·class="p"·data-group-id="7639757310-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:·f1b7316c0a23a8ac2b1c7b456b727e2c52099346772fbbd6c6e6126888d8794c·...·]-2">}</span><span·class="p">,</span><span·class="w">161 ··············</span><span·class="ss">empyear</span><span·class="p"·data-group-id="4650851907-2">}</span><span·class="p"·data-group-id="4650851907-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:·17e3e7116d5bf12744f48ebe7855bd3c3fc85101e36cc0b65549b5c1db8b4838·...·]-2">}</span><span·class="p">,</span><span·class="w">
162 ·</span><span·class="p"·data-group-id="5719998103-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:·231a1ea94560f6fb81ca463c50b9265373033a19ee7ba419ea92a94d7609b58b·...·]-3">}</span><span·class="p">,</span><span·class="w">162 ·</span><span·class="p"·data-group-id="0228158527-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:·1430d14d4ec02473afbfb58f96135b1c2aa525d5f58789ab0b01b53e2ad26c7f·...·]-3">}</span><span·class="p">,</span><span·class="w">
163 ·</span><span·class="p"·data-group-id="5719998103-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:·fd07de338bb54f774562f35821ca0f6e3bf5e1bc1f735ab95406f49d9f89c3ff·...·]-4">}</span><span·class="p">,</span><span·class="w">163 ·</span><span·class="p"·data-group-id="0228158527-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:·046366425f7d17ec7104fed81d969d81c0fb1fcf213da043cf43b1e77bb64479·...·]-4">}</span><span·class="p">,</span><span·class="w">
164 ·</span><span·class="p"·data-group-id="5719998103-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:·1f25ac72fdb40db41934e0f89e2d60da99c6a9c728837c1d446958b17e5932c4·...·]-5">}</span><span·class="p">,</span><span·class="w">164 ·</span><span·class="p"·data-group-id="0228158527-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:·25c692855e68f6ab70bb67d66d43e303795fe230d4f972d047e6b6f73c022f15·...·]-5">}</span><span·class="p">,</span><span·class="w">
165 ·</span><span·class="p"·data-group-id="5719998103-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:·40308eb70bc0dc98e7a8bf840e7a7a3b343bfbc027c0caeeff94d9cc8003bb46·...·]-6">}</span><span·class="p">,</span><span·class="w">165 ·</span><span·class="p"·data-group-id="0228158527-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:·5cf36cf858d239195e8538885a068359a758554b2c265efcfac75ed63ce2df50·...·]-6">}</span><span·class="p">,</span><span·class="w">
166 ·</span><span·class="p"·data-group-id="5719998103-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:·fc8565970ab079bea6b84ca92e8281210f652ae7d44711d6b08b8d4995ead5ce·...·]-7">}</span><span·class="p">,</span><span·class="w">166 ·</span><span·class="p"·data-group-id="0228158527-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:·e1f50708fe2c3a0cc81cdc79f9e26059e22737295e60dd34abf29b6f731cd695·...·]-7">}</span><span·class="p">,</span><span·class="w">
167 ·</span><span·class="p"·data-group-id="5719998103-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:·c8704c45a5ebf71c0f7f319a6ac3de7be1e28bf0287445b64b8e9386dcf13ab9·...·]-8">}</span><span·class="p">,</span><span·class="w">167 ·</span><span·class="p"·data-group-id="0228158527-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:·354e2bc02fb42ad68fabc62df2ff34aaa3799f9a400328e6e48680f9aff08c47·...·]-8">}</span><span·class="p">,</span><span·class="w">
168 ·</span><span·class="p"·data-group-id="5719998103-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:·a2071132498eef9527d6a26e9424356c660f373714b5224b46ad402180f65f07·...·]-9">}</span><span·class="p">,</span><span·class="w">168 ·</span><span·class="p"·data-group-id="0228158527-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:·6134703aebd39fc019fd2686215aaebca0e9f16d667b81ec0fcfe7fd7dab4da8·...·]-9">}</span><span·class="p">,</span><span·class="w">
169 ·</span><span·class="p"·data-group-id="5719998103-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:·97f14cc9be6469b20cba3a6af90a008a47d61eb1a596a70e34280bf5144fc474·...·]-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="0228158527-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:·c57c90975c205d73e403683d0b280043e625652caff6b656537c339c3587c556·...·]-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="0179295971-1">(</span><span·class="ss">emp_tab</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0179295971-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:·96b2121247aee1eca44084dc92dac85f6766da148213e3fa96c9b4fa117912b3·...·]-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="2197928585-1">(</span><span·class="ss">emp_tab</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2197928585-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:·06cc6e7dc8353c4a50a5b446abff54655d4339bde18d252ebbfd0a1b79f4fe6b·...·]-1">)</span><span·class="p">.</span><span·class="w">
171 </span><span·class="p"·data-group-id="0179295971-3">[</span><span·class="p"·data-group-id="0179295971-4">[</span><span·class="s">&quot;011103&quot;</span><span·class="p"·data-group-id="0179295971-4">]</span><span·class="p">,</span><span·class="p"·data-group-id="0179295971-5">[</span><span·clas[·...·truncated·by·diffoscope;·len:·125,·SHA:·e097c53f7cc3ea4bbe36442b19444cd8eb7d4632beae92b1035bf222af06596b·...·]-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="2197928585-3">[</span><span·class="p"·data-group-id="2197928585-4">[</span><span·class="s">&quot;011103&quot;</span><span·class="p"·data-group-id="2197928585-4">]</span><span·class="p">,</span><span·class="p"·data-group-id="2197928585-5">[</span><span·clas[·...·truncated·by·diffoscope;·len:·125,·SHA:·0dbb6f652d8469e33232671f94541ed5e1a20cd2b78b298c9965773221116eb7·...·]-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="7649451253-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="7649451253-2">(</span><span·class="o">#</span><span·class="ss">emp</span><span·class="p"·data-group-id="7649451253-3">{</span><span·class="ss">empno</span><span·class="w">·</sp[·...·truncated·by·diffoscope;·len:·700,·SHA:·ee4607397d45808a0764faa5675a984602915947465f928aba82fcf854d6e559·...·]-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="3991086300-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="3991086300-2">(</span><span·class="o">#</span><span·class="ss">emp</span><span·class="p"·data-group-id="3991086300-3">{</span><span·class="ss">empno</span><span·class="w">·</sp[·...·truncated·by·diffoscope;·len:·700,·SHA:·43ca1619102869a03e98c1aeaebd1f7cdd90ade7b7a5d836d5e1e92576a9ad4b·...·]-4">]</span><span·class="p">;</span><span·class="w">
174 ·············</span><span·class="p"·data-group-id="7649451253-5">(</span><span·class="p">_</span><span·class="p">,</span><span·class="n">Acc</span><span·class="p"·data-group-id="7649451253-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="3991086300-5">(</span><span·class="p">_</span><span·class="p">,</span><span·class="n">Acc</span><span·class="p"·data-group-id="3991086300-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="7649451253-6">[</span><span·class="p"·data-group-id="7649451253-6">]</span><span·class="p">,</span><span·class="w">176 ··········</span><span·class="p"·data-group-id="3991086300-6">[</span><span·class="p"·data-group-id="3991086300-6">]</span><span·class="p">,</span><span·class="w">
177 ··········</span><span·class="ss">emp_tab</span><span·class="p"·data-group-id="7649451253-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="3991086300-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="7824968495-1">(</span><span·class="ss">emp_tab</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7824968495-2">[</span><span·class="p"·data-group-id="7824968495-3">{</span><span·class="o">#</span><span·class="ss">emp</spa[·...·truncated·by·diffoscope;·len:·996,·SHA:·e3bc3d5e51c90e86929a6b1a7f98dd14458ea99eba4ddc21eacdd022c6bc49db·...·]-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="4316275264-1">(</span><span·class="ss">emp_tab</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4316275264-2">[</span><span·class="p"·data-group-id="4316275264-3">{</span><span·class="o">#</span><span·class="ss">emp</spa[·...·truncated·by·diffoscope;·len:·996,·SHA:·5630038f460d1dc20e94599ceaa325acc00513c10d9f32b8522e0e8bb8f32896·...·]-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="2185419395-1">(</span><span·class="s">&quot;stdlib/include/ms_transform.hrl&quot;</span><span·class="p"·data-group-id="2185419395-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="6483338450-1">(</span><span·class="s">&quot;stdlib/include/ms_transform.hrl&quot;</span><span·class="p"·data-group-id="6483338450-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="2185419395-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="2185419395-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="6483338450-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="6483338450-3">(</span><span·class="w">
194 ······················</span><span·class="nf">fun</span><span·class="p"·data-group-id="2185419395-4">(</span><span·class="o">#</span><span·class="ss">emp</span><span·class="p"·data-group-id="2185419395-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:·9a1230c763d0c197cd7fdfd59c44399a95378584501cef6b5fba2eb9fff1d4fb·...·]-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="6483338450-4">(</span><span·class="o">#</span><span·class="ss">emp</span><span·class="p"·data-group-id="6483338450-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:·0360aaa6a4045dff186f00f4e2abf5e5eeaaa409685fdfc68859a4f5c507e322·...·]-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="2185419395-3">)</span><span·class="p"·data-group-id="2185419395-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="6483338450-3">)</span><span·class="p"·data-group-id="6483338450-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="0680625505-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="0680625505-2">(</span><span·class="o">#</span><span·class="ss">emp</span><span·class="p"·data-group-id="0680625505-3">{</span><span·class="ss">empno</span><span·class="w">·</sp[·...·truncated·by·diffoscope;·len:·900,·SHA:·379ea52a77f63531fd2591f9c961d8692301a09a8e3e6b88fae2d7c05df19d72·...·]-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="9603508998-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="9603508998-2">(</span><span·class="o">#</span><span·class="ss">emp</span><span·class="p"·data-group-id="9603508998-3">{</span><span·class="ss">empno</span><span·class="w">·</sp[·...·truncated·by·diffoscope;·len:·900,·SHA:·55547430741cb8c2777193c2e4315c9bd79e6e78bdced046e2017b1dae49061d·...·]-4">]</span><span·class="p">;</span><span·class="w">
220 ··················</span><span·class="p"·data-group-id="0680625505-5">(</span><span·class="p">_</span><span·class="p">,</span><span·class="n">Acc</span><span·class="p"·data-group-id="0680625505-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="9603508998-5">(</span><span·class="p">_</span><span·class="p">,</span><span·class="n">Acc</span><span·class="p"·data-group-id="9603508998-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="0680625505-6">[</span><span·class="p"·data-group-id="0680625505-6">]</span><span·class="p">,</span><span·class="w">222 ··········</span><span·class="p"·data-group-id="9603508998-6">[</span><span·class="p"·data-group-id="9603508998-6">]</span><span·class="p">,</span><span·class="w">
223 ··········</span><span·class="ss">emp_tab</span><span·class="p"·data-group-id="0680625505-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="9603508998-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="7654641640-1">(</span><span·class="ss">emp_tab</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7654641640-2">[</span><span·class="p"·data-group-id="7654641640-3">{</span><span·class="o">#</span><span·class="ss">emp</spa[·...·truncated·by·diffoscope;·len:·551,·SHA:·3fab7af683f3a01e26404ed5e2e6896e784e3216580354e470fd8cd4ba542177·...·]-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="6443285714-1">(</span><span·class="ss">emp_tab</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6443285714-2">[</span><span·class="p"·data-group-id="6443285714-3">{</span><span·class="o">#</span><span·class="ss">emp</spa[·...·truncated·by·diffoscope;·len:·551,·SHA:·455d5520e96e9182c2de65bb0ab1f99516a8278f84b5fcab2b8aa989779debea·...·]-4">}</span><span·class="p">,</span><span·class="w">
226 ·····················</span><span·class="p"·data-group-id="7654641640-5">[</span><span·class="p"·data-group-id="7654641640-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:·cd9f972961653bc064406f3ae630a6487813c51e0e1edf4f1f50cd35554a4a34·...·]-5">]</span><span·class="p">,</span><span·class="w">226 ·····················</span><span·class="p"·data-group-id="6443285714-5">[</span><span·class="p"·data-group-id="6443285714-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:·2bc1fe8b03557b9f6b6d840b08dd30c0e240001081e04e037835275b74c5d074·...·]-5">]</span><span·class="p">,</span><span·class="w">
227 ·····················</span><span·class="p"·data-group-id="7654641640-7">[</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="7654641640-7">]</span><span·class="p"·data-group-id="7654641640-3">}</span><span·class="p"·data-group-id="7654641640-2">]</span><span·class="p"·data-group-id="76546416[·...·truncated·by·diffoscope;·len:·2,·SHA:·d59eced1ded07f84c145592f65bdf854358e009c5cd705f5215bf18697fed103·...·]-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="6443285714-7">[</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="6443285714-7">]</span><span·class="p"·data-group-id="6443285714-3">}</span><span·class="p"·data-group-id="6443285714-2">]</span><span·class="p"·data-group-id="64432857[·...·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·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="2263450727-1">(</span><span·class="s">&quot;stdlib/include/ms_transform.hrl&quot;</span><span·class="p"·data-group-id="2263450727-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="5465571990-1">(</span><span·class="s">&quot;stdlib/include/ms_transform.hrl&quot;</span><span·class="p"·data-group-id="5465571990-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="2263450727-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="2263450727-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="5465571990-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="5465571990-3">(</span><span·class="w">
231 ······················</span><span·class="nf">fun</span><span·class="p"·data-group-id="2263450727-4">(</span><span·class="o">#</span><span·class="ss">emp</span><span·class="p"·data-group-id="2263450727-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:·6e1a513ebeb7e9349c83ecb644101be1b406e88c5ee8d2d3606412183c22ee0f·...·]-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="5465571990-4">(</span><span·class="o">#</span><span·class="ss">emp</span><span·class="p"·data-group-id="5465571990-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:·7a886b8508f3a9a8515de55c69fe0a2e3a05824f58b7c0bf192a58d416baa260·...·]-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="2263450727-3">)</span><span·class="p"·data-group-id="2263450727-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="5465571990-3">)</span><span·class="p"·data-group-id="5465571990-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="2592573658-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="2592573658-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="4309835431-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="4309835431-2">(</span><span·class="w">
242 ······················</span><span·class="nf">fun</span><span·class="p"·data-group-id="2592573658-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="2592573658-4">{</span><span·class="ss">empno</span><sp[·...·truncated·by·diffoscope;·len:·362,·SHA:·6e4776e28e3e3495bfa54f156f6ae8e11ac13280e5af8743192c88c5960b201e·...·]-3">)</span><span·class="w">242 ······················</span><span·class="nf">fun</span><span·class="p"·data-group-id="4309835431-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="4309835431-4">{</span><span·class="ss">empno</span><sp[·...·truncated·by·diffoscope;·len:·362,·SHA:·04f360ce71e5a65544142c87007f17cd3472620ec130ed12a784ff7a5fd91647·...·]-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="2592573658-2">)</span><span·class="p"·data-group-id="2592573658-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="4309835431-2">)</span><span·class="p"·data-group-id="4309835431-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="7347623635-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="7347623635-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="9160011493-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="9160011493-2">(</span><span·class="w">
261 ······················</span><span·class="nf">fun</span><span·class="p"·data-group-id="7347623635-3">(</span><span·class="o">#</span><span·class="ss">emp</span><span·class="p"·data-group-id="7347623635-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:·cede54926985ad7bf2bf69d005803691ebed5303f6375902859107cc40d174d7·...·]-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="9160011493-3">(</span><span·class="o">#</span><span·class="ss">emp</span><span·class="p"·data-group-id="9160011493-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:·81f878e2c6ddcde1b5741414139644af02cd6c9a9717e7d5a4e0012bb768275e·...·]-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
262 ······························</span><span·class="p"·data-group-id="7347623635-6">{</span><span·class="p"·data-group-id="7347623635-7">[</span><span·class="sc">$0</span><span·class="p">|</span><span·class="n">Rest</span><span·class="p"·data-group-id="7347623635-7">]</span><span·class="p">,</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·197,·SHA:·ae8062dfd79f4f261ccba07f0533a0903704fc6f7fd0c9fd86abe689ea398fa1·...·]-6">}</span><span·class="w">262 ······························</span><span·class="p"·data-group-id="9160011493-6">{</span><span·class="p"·data-group-id="9160011493-7">[</span><span·class="sc">$0</span><span·class="p">|</span><span·class="n">Rest</span><span·class="p"·data-group-id="9160011493-7">]</span><span·class="p">,</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·197,·SHA:·21b507c46d23a44818614ffe5a34a662405826c9b317d3b8ed8cb4a5277e31e4·...·]-6">}</span><span·class="w">
263 ······················</span><span·class="k">end</span><span·class="p"·data-group-id="7347623635-2">)</span><span·class="p"·data-group-id="7347623635-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="9160011493-2">)</span><span·class="p"·data-group-id="9160011493-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="9071616070-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="9071616070-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="8899024793-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="8899024793-2">(</span><span·class="w">
277 ······················</span><span·class="nf">fun</span><span·class="p"·data-group-id="9071616070-3">(</span><span·class="o">#</span><span·class="ss">emp</span><span·class="p"·data-group-id="9071616070-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:·a5dfcb2102d3c9cc37267ea94fd5856d17c8ea553a8f2fe70c18432d39c0b3d9·...·]-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="8899024793-3">(</span><span·class="o">#</span><span·class="ss">emp</span><span·class="p"·data-group-id="8899024793-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:·bb16a97762e2d345081c3683d7c83c55a27f99f98c1cd6aac9a1ea222386d947·...·]-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
278 ······························</span><span·class="p"·data-group-id="9071616070-5">{</span><span·class="ss">guru</span><span·class="p">,</span><span·class="n">E</span><span·class="p"·data-group-id="9071616070-5">}</span><span·class="p">;</span><span·class="w">278 ······························</span><span·class="p"·data-group-id="8899024793-5">{</span><span·class="ss">guru</span><span·class="p">,</span><span·class="n">E</span><span·class="p"·data-group-id="8899024793-5">}</span><span·class="p">;</span><span·class="w">
279 ·························</span><span·class="p"·data-group-id="9071616070-6">(</span><span·class="o">#</span><span·class="ss">emp</span><span·class="p"·data-group-id="9071616070-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:·36bc86da43641b4eb9aad94d4576a534626d7aa0cfdffa63c33f12d3c8fac326·...·]-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="8899024793-6">(</span><span·class="o">#</span><span·class="ss">emp</span><span·class="p"·data-group-id="8899024793-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:·cd5639e329ec862ac2b5b14038a184728892693fb7d2449944befe47d689d672·...·]-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="9071616070-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="9071616070-8">}</span><span·class="p">;</span><span·class="w">280 ······························</span><span·class="p"·data-group-id="8899024793-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="8899024793-8">}</span><span·class="p">;</span><span·class="w">
281 ·························</span><span·class="p"·data-group-id="9071616070-9">(</span><span·class="o">#</span><span·class="ss">emp</span><span·class="p"·data-group-id="9071616070-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:·567ac091f4bfe46748a0aff170eee50aedd6489cd678ee34bb713ed882899f12·...·]-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="8899024793-9">(</span><span·class="o">#</span><span·class="ss">emp</span><span·class="p"·data-group-id="8899024793-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:·4448cd7dd1e3f7925d50503da0cdc780c2c83c61551d1dc8c71cff934faa3a28·...·]-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.2/doc/html/notes.html
    
Offset 159, 33 lines modifiedOffset 159, 33 lines modified
159 ··<a·href="#fixed-bugs-and-malfunctions-2"·class="hover-link">159 ··<a·href="#fixed-bugs-and-malfunctions-2"·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>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">164 <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">
165 </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">165 </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">
166 &gt;·</span><span·class="n">F</span><span·class="p"·data-group-id="8561447944-1">(</span><span·class="ss">a</span><span·class="p"·data-group-id="8561447944-1">)</span><span·class="p">.</span><span·class="w">166 &gt;·</span><span·class="n">F</span><span·class="p"·data-group-id="2541710515-1">(</span><span·class="ss">a</span><span·class="p"·data-group-id="2541710515-1">)</span><span·class="p">.</span><span·class="w">
167 </span><span·class="ss">true</span><span·class="gp·unselectable">167 </span><span·class="ss">true</span><span·class="gp·unselectable">
168 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">168 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">
169 </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">169 </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">
170 4&gt;·</span><span·class="n">Id</span><span·class="p"·data-group-id="8561447944-2">(</span><span·class="mi">42</span><span·class="p"·data-group-id="8561447944-2">)</span><span·class="p">.</span><span·class="w">170 4&gt;·</span><span·class="n">Id</span><span·class="p"·data-group-id="2541710515-2">(</span><span·class="mi">42</span><span·class="p"·data-group-id="2541710515-2">)</span><span·class="p">.</span><span·class="w">
171 </span><span·class="gt">**·exception·error:·undefined·shell·command·id/1</span><span·class="gp·unselectable">171 </span><span·class="gt">**·exception·error:·undefined·shell·command·id/1</span><span·class="gp·unselectable">
172 5&gt;·</span><span·class="nf">id</span><span·class="p"·data-group-id="8561447944-3">(</span><span·class="n">I</span><span·class="p"·data-group-id="8561447944-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">172 5&gt;·</span><span·class="nf">id</span><span·class="p"·data-group-id="2541710515-3">(</span><span·class="n">I</span><span·class="p"·data-group-id="2541710515-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">
173 </span><span·class="ss">ok</span><span·class="gp·unselectable">173 </span><span·class="ss">ok</span><span·class="gp·unselectable">
174 6&gt;·</span><span·class="n">Id</span><span·class="p"·data-group-id="8561447944-4">(</span><span·class="mi">42</span><span·class="p"·data-group-id="8561447944-4">)</span><span·class="p">.</span><span·class="w">174 6&gt;·</span><span·class="n">Id</span><span·class="p"·data-group-id="2541710515-4">(</span><span·class="mi">42</span><span·class="p"·data-group-id="2541710515-4">)</span><span·class="p">.</span><span·class="w">
175 </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">175 </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">
176 ··<a·href="#improvements-and-new-features"·class="hover-link">176 ··<a·href="#improvements-and-new-features"·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">Improvements·and·New·Features</span>179 ··<span·class="text">Improvements·and·New·Features</span>
180 </h3>180 </h3>
181 <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="6842013607-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="6842013607-1">)</span><span·class="p">.</span><span·class="w">181 <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="9730679827-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="9730679827-1">)</span><span·class="p">.</span><span·class="w">
182 </span><span·class="w">182 </span><span·class="w">
183 ··</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="6842013607-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="6842013607-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Minimum</span><span·class="w">183 ··</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="9730679827-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="9730679827-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Minimum</span><span·class="w">
184 ···············</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="6842013607-3">(</span><span·class="p"·data-group-id="6842013607-3">)</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Term2</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·420,·SHA:·73fbb4b5cf4368db3b24d5b56b3d1e6c1999656ccb199b945b27b935ef8912d0·...·]7-5">)</span><span·class="p">.</span><span·class="w">184 ···············</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="9730679827-3">(</span><span·class="p"·data-group-id="9730679827-3">)</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Term2</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·420,·SHA:·5ec80e068dc01a7c5c353cd8a0fb6972cde58cca73cbded091c4f1999a936e15·...·]7-5">)</span><span·class="p">.</span><span·class="w">
  
185 ··</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.6/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>·and185 ··</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.6/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
186 <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.6/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">186 <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.6/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">
187 ··<a·href="#stdlib-6-1-2"·class="hover-link">187 ··<a·href="#stdlib-6-1-2"·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">STDLIB·6.1.2</span>190 ··<span·class="text">STDLIB·6.1.2</span>
Offset 257, 16 lines modifiedOffset 257, 16 lines modified
257 <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">257 <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">
258 ··<a·href="#improvements-and-new-features-2"·class="hover-link">258 ··<a·href="#improvements-and-new-features-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">Improvements·and·New·Features</span>261 ··<span·class="text">Improvements·and·New·Features</span>
262 </h3>262 </h3>
263 <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.263 <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.
264 For·example,·given:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">a</span><span·class="p"·data-group-id="6739730452-1">(</span><span·class="p"·data-group-id="6739730452-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">264 For·example,·given:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">a</span><span·class="p"·data-group-id="8305296761-1">(</span><span·class="p"·data-group-id="8305296761-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">
265 </span><span·class="nf">a</span><span·class="p"·data-group-id="6739730452-2">(</span><span·class="p">_</span><span·class="p"·data-group-id="6739730452-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·mismatch265 </span><span·class="nf">a</span><span·class="p"·data-group-id="8305296761-2">(</span><span·class="p">_</span><span·class="p"·data-group-id="8305296761-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
266 %····6|·a(_)·-&gt;·error.266 %····6|·a(_)·-&gt;·error.
267 %·····|·^</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?267 %·····|·^</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?
268 %····6|·a(_)·-&gt;·error.268 %····6|·a(_)·-&gt;·error.
269 %·····|·^</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;269 %·····|·^</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;
270 ···a270 ···a
271 ···b271 ···b
272 ···c272 ···c
Offset 281, 30 lines modifiedOffset 281, 30 lines modified
281 ····.281 ····.
282 ····.282 ····.
283 ····.283 ····.
284 &lt;0.90.0&gt;··············erlang:apply/2························2586····75011····0284 &lt;0.90.0&gt;··············erlang:apply/2························2586····75011····0
285 my_label··············c:pinfo/2·······························51285 my_label··············c:pinfo/2·······························51
286 4&gt;·proc_lib:get_label(self()).286 4&gt;·proc_lib:get_label(self()).
287 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">287 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">
288 </span><span·class="p"·data-group-id="2939553274-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="2939553274-1">&gt;&gt;</span><span·class="gp·unselectable">288 </span><span·class="p"·data-group-id="5605489476-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="5605489476-1">&gt;&gt;</span><span·class="gp·unselectable">
289 2&gt;·</span><span·class="s">~b&quot;Björn&quot;</span><span·class="p">.</span><span·class="w">289 2&gt;·</span><span·class="s">~b&quot;Björn&quot;</span><span·class="p">.</span><span·class="w">
290 </span><span·class="p"·data-group-id="2939553274-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="2939553274-2">&gt;&gt;</span><span·class="gp·unselectable">290 </span><span·class="p"·data-group-id="5605489476-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="5605489476-2">&gt;&gt;</span><span·class="gp·unselectable">
291 3&gt;·</span><span·class="s">~S&quot;\s*(\w+)&quot;</span><span·class="p">.</span><span·class="w">291 3&gt;·</span><span·class="s">~S&quot;\s*(\w+)&quot;</span><span·class="p">.</span><span·class="w">
292 </span><span·class="s">&quot;\\s*(\\w+)&quot;</span><span·class="gp·unselectable">292 </span><span·class="s">&quot;\\s*(\\w+)&quot;</span><span·class="gp·unselectable">
293 4&gt;·</span><span·class="s">~B&quot;\s*(\w+)&quot;</span><span·class="p">.</span><span·class="w">293 4&gt;·</span><span·class="s">~B&quot;\s*(\w+)&quot;</span><span·class="p">.</span><span·class="w">
294 </span><span·class="p"·data-group-id="2939553274-3">&lt;&lt;</span><span·class="s">&quot;\\s*(\\w+)&quot;</span><span·class="p"·data-group-id="2939553274-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·294 </span><span·class="p"·data-group-id="5605489476-3">&lt;&lt;</span><span·class="s">&quot;\\s*(\\w+)&quot;</span><span·class="p"·data-group-id="5605489476-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·
295 <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.295 <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.
296 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·when296 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
297 <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·when297 <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
298 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="7143415527-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="7143415527-1">)</span><span·class="p">.</span></code></pre><p>Another·way·to·disable·the·<[·...·truncated·by·diffoscope;·len:·687,·SHA:·a85a0b8b229652d26ef3fef21d3d2958b944ec4dcd16678914dded6338bc7465·...·]6-1">)</span><span·class="p">.</span><span·class="w">298 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="3825359541-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="3825359541-1">)</span><span·class="p">.</span></code></pre><p>Another·way·to·disable·the·<[·...·truncated·by·diffoscope;·len:·687,·SHA:·a3672476cf94f8d0ada921e1635b0aa536f3ee11037a67c3fcd620812a3694c5·...·]6-1">)</span><span·class="p">.</span><span·class="w">
299 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="2197346916-2">(</span><span·class="p"·data-group-id="2197346916-3">[</span><span·class="ss">f</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="2197346916-3">]</span><span·class="p"·data-group-id="2197346916-2">)</span><span·class="p">.</span><span·class="w">299 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="9132046756-2">(</span><span·class="p"·data-group-id="9132046756-3">[</span><span·class="ss">f</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="9132046756-3">]</span><span·class="p"·data-group-id="9132046756-2">)</span><span·class="p">.</span><span·class="w">
300 </span><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="2197346916-4">(</span><span·class="ss">r</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2197346916-5">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">b</span><span·class="p">,</span><span·clas[·...·truncated·by·diffoscope;·len:·108,·SHA:·73727ab14ad3464d2975968d00bcb918007ef97ffceb8c2e8d88841ca3528490·...·]6-4">)</span><span·class="p">.</span><span·class="w">300 </span><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="9132046756-4">(</span><span·class="ss">r</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9132046756-5">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">b</span><span·class="p">,</span><span·clas[·...·truncated·by·diffoscope;·len:·108,·SHA:·6ed913ab9f9626cab1eeafcf960c7396cda92491fd137f5c1b6336474c930d60·...·]6-4">)</span><span·class="p">.</span><span·class="w">
  
301 </span><span·class="nf">f</span><span·class="p"·data-group-id="2197346916-6">(</span><span·class="p"·data-group-id="2197346916-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">301 </span><span·class="nf">f</span><span·class="p"·data-group-id="9132046756-6">(</span><span·class="p"·data-group-id="9132046756-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
302 ····</span><span·class="o">#</span><span·class="ss">r</span><span·class="p"·data-group-id="2197346916-7">{</span><span·class="ss">a</span><span·class="o">=</span><span·class="mi">1</span><span·class="p"·data-group-id="2197346916-7">}</span><span·class="o">#</span><span·class="ss">r</span><span·class="p"·data-group-id="2197346916-8">{</span><span[·...·truncated·by·diffoscope;·len:·109,·SHA:·ff2e17970f6a11f8a87c3a93c8000c428b2d3bec035cf56d84061a2131456e5d·...·]6-8">}</span><span·class="p">.</span></code></pre><p>The·compiler·raises·the·following·warning:</p><pre><code·class="text">1&gt;·c(t).302 ····</span><span·class="o">#</span><span·class="ss">r</span><span·class="p"·data-group-id="9132046756-7">{</span><span·class="ss">a</span><span·class="o">=</span><span·class="mi">1</span><span·class="p"·data-group-id="9132046756-7">}</span><span·class="o">#</span><span·class="ss">r</span><span·class="p"·data-group-id="9132046756-8">{</span><span[·...·truncated·by·diffoscope;·len:·109,·SHA:·c73130737faab48511748d55fff75c4487a05cd532c5ef908ad4a1d00af31de8·...·]6-8">}</span><span·class="p">.</span></code></pre><p>The·compiler·raises·the·following·warning:</p><pre><code·class="text">1&gt;·c(t).
303 t.erl:6:12:·Warning:·expression·updates·a·literal303 t.erl:6:12:·Warning:·expression·updates·a·literal
304 %····6|·····#r{a=1}#r{b=2}.304 %····6|·····#r{a=1}#r{b=2}.
305 %·····|············^</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.1/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">305 %·····|············^</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.1/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">
306 ··<a·href="#stdlib-5-2-3-3"·class="hover-link">306 ··<a·href="#stdlib-5-2-3-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">STDLIB·5.2.3.3</span>309 ··<span·class="text">STDLIB·5.2.3.3</span>
123 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2.2/doc/html/orddict.html
    
Offset 138, 21 lines modifiedOffset 138, 21 lines modified
138 ··<a·href="#module-notes"·class="hover-link">138 ··<a·href="#module-notes"·class="hover-link">
139 ····<i·class="ri-link-m"·aria-hidden="true"></i>139 ····<i·class="ri-link-m"·aria-hidden="true"></i>
140 ··</a>140 ··</a>
141 ··<span·class="text">Notes</span>141 ··<span·class="text">Notes</span>
142 </h2>142 </h2>
143 <p><a·href=""·id="notes"></a></p><p>Functions·<a·href="#append/3"><code·class="inline">append/3</code></a>·and·<a·href="#append_list/3"><code·class="inline">append_list/3</code></a>·are143 <p><a·href=""·id="notes"></a></p><p>Functions·<a·href="#append/3"><code·class="inline">append/3</code></a>·and·<a·href="#append_list/3"><code·class="inline">append_list/3</code></a>·are
144 included·so·that·keyed·values·can·be·stored·in·a·list·<em>accumulator</em>,·for144 included·so·that·keyed·values·can·be·stored·in·a·list·<em>accumulator</em>,·for
145 example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="n">D0</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">orddict</span><span·class="p">:</span><span·class="nf">new</span><span·class="p"·data-group-id="9562230102-1">(</span><span·class="p"·data-group-id="9562230102-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="9158633870-1">(</span><span·class="p"·data-group-id="9158633870-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="9562230102-2">(</span><span·class="ss">files</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9562230102-3">[</span><span·class="p"·data-group-id="9562230102-3">]</span><span·class="p">,</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·62,·SHA:·75b978069aa9452eaf2058888da9d58885574520d302477d5faf7e705bda066a·...·]-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="9158633870-2">(</span><span·class="ss">files</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9158633870-3">[</span><span·class="p"·data-group-id="9158633870-3">]</span><span·class="p">,</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·62,·SHA:·9da24a4c265ab206cc552b53ad833632ff3be7e0082035515c66a5c03d817172·...·]-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="9562230102-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="9562230102-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="9158633870-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="9158633870-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="9562230102-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="9562230102-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="9158633870-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="9158633870-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="9562230102-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="9562230102-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="9158633870-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="9158633870-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="9562230102-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="9562230102-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="9158633870-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="9158633870-7">)</span><span·class="p">.</span><span·class="w">
151 </span><span·class="p"·data-group-id="9562230102-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="9562230102-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="9158633870-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="9158633870-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="3584766206-1">(</span><span·class="p"·data-group-id="3584766206-2">[</span><span·class="p"·data-group-id="3584766206-3">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3584766206-4">[</span><span·class="p"·data-group-id="3584766206-4">]</span><span·class="p"·data-group-id="3584766206-3">}</span><span·class="p"·data-group-id="3584766206-2">]</span><span·class="p"·data-group-id="3584766206-1">)</span><span·class="p">.</span><span·class="w"> 
533 </span><span·class="p"·data-group-id="3584766206-5">[</span><span·class="p"·data-group-id="3584766206-6">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="p"·data-group-id="3584766206-7">[</span><span·class="p"·data-group-id="3584766206[·...·truncated·by·diffoscope;·len:·146,·SHA:·60f285e5b61d7c6b5872380d068f8c8b100da3e7d0a1b85684d9df37d4f30a77·...·]">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>[·...·truncated·by·diffoscope;·len:·671,·SHA:·e2d8264f8b7e98972b25ae23f952ee37952460546e682607d249fe2b5edf77b3·...·]">
 533 </span><span·class="p"·data-group-id="3331249604-5">[</span><span·class="p"·data-group-id="3331249604-6">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="p"·data-group-id="3331249604-7">[</span><span·class="p"·data-group-id="3331249604-7">]</span><span·class="p"·data-group-id="3331249604-6">}</span><span·class="p"·data-group-id="3331249604-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="3584766206-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="3584766206-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="3331249604-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="3331249604-8">)</span><span·class="p">.</span><span·class="w">
535 </span><span·class="p"·data-group-id="3584766206-9">[</span><span·class="p"·data-group-id="3584766206-10">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="p"·data-group-id="3584766206-11">[</span><span·class="mi">1</span><span·class="p"·data-group-id="3584766206-11">]</span[·...·truncated·by·diffoscope;·len:·96,·SHA:·ee57e4f95c06d876bd59c1d2f98dd610ff787b98387dd0021eae71ecc0e1e76d·...·]-9">]</span><span·class="gp·unselectable">535 </span><span·class="p"·data-group-id="3331249604-9">[</span><span·class="p"·data-group-id="3331249604-10">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="p"·data-group-id="3331249604-11">[</span><span·class="mi">1</span><span·class="p"·data-group-id="3331249604-11">]</span[·...·truncated·by·diffoscope;·len:·96,·SHA:·9d0044ea6b2f86ed8d683dac65e1b39939192b52d1ce6ad0d776d0c006ac2003·...·]-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="3584766206-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="3584766206-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="3331249604-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="3331249604-12">)</span><span·class="p">.</span><span·class="w">
537 </span><span·class="p"·data-group-id="3584766206-13">[</span><span·class="p"·data-group-id="3584766206-14">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="p"·data-group-id="3584766206-15">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><sp[·...·truncated·by·diffoscope;·len:·146,·SHA:·9178cf66f034c61ff3ed7796237675dc4d3743fa09ad1ada1ec6690581d79e5c·...·]-13">]</span><span·class="gp·unselectable">537 </span><span·class="p"·data-group-id="3331249604-13">[</span><span·class="p"·data-group-id="3331249604-14">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="p"·data-group-id="3331249604-15">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><sp[·...·truncated·by·diffoscope;·len:·146,·SHA:·aa0119353211374658a27f4024aee48ef856e4f3da9bd78a7c295033fc0f3e7a·...·]-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="3584766206-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="3584766206-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="3331249604-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="3331249604-16">)</span><span·class="p">.</span><span·class="w">
539 </span><span·class="p"·data-group-id="3584766206-17">[</span><span·class="p"·data-group-id="3584766206-18">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="p"·data-group-id="3584766206-19">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="3584766206-19">]</span><span·class="p"·data-group-id="3584766206-18">}</span><span·class="p">,</span><span·class="p"·data-group-id="3584766206-20">{</span><span·class="ss">y</span><span·class="p">,</span><span·class="p"·data-group-id="3584766206-21">[</span><span·class="mi">3</span><span·class="p"·data-group-id="3584766206-21">]</span><span·class="p"·data-group-id="3584766206-20">}</span><span·class="p"·data-group-id="3584766206-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="1428664619-1">(</span><span·class="p"·data-group-id="1428664619-2">[</span><span·class="p"·data-group-id="1428664619-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="1428664619-3">}</span><span·class="p"·data-group-id="1428664619-2">]</span><span·class="p"·data-group-id="1428664619-1">)</span><span·class="p">.</span><span·class="w"> 
540 </span><span·class="p"·data-group-id="1428664619-4">[</span><span·class="p"·data-group-id="1428664619-5">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">no_list</span><span·class="p"·data-group-id="1428664619-5">}</span><span·class="p"·data-group-id="1428664619-4">]</[·...·truncated·by·diffoscope;·len:·33,·SHA:·b2e352d8309445f25b55be1913f1379d4d74b8b1a31e1190b1cf594ab0bdcba8·...·]">539 </span><span·class="p"·data-group-id="3331249604-17">[</span><span·class="p"·data-group-id="3331249604-18">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="p"·data-group-id="3331249604-19">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><s[·...·truncated·by·diffoscope;·len:·1255,·SHA:·c27b310ed71d4af278f0d7668c85a6e871e5c43d81378d4a2edf847c632c53bb·...·]">
 540 </span><span·class="p"·data-group-id="8492199590-4">[</span><span·class="p"·data-group-id="8492199590-5">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">no_list</span><span·class="p"·data-group-id="8492199590-5">}</span><span·class="p"·data-group-id="8492199590-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="1428664619-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="1428664619-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="8492199590-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="8492199590-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="6225549709-1">(</span><span·class="p"·data-group-id="6225549709-2">[</span><span·class="p"·data-group-id="6225549709-3">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6225549709-4">[</span><span·class="p"·data-group-id="6225549709-4">]</span><span·class="p"·data-group-id="6225549709-3">}</span><span·class="p"·data-group-id="6225549709-2">]</span><span·class="p"·data-group-id="6225549709-1">)</span><span·class="p">.</span><span·class="w"> 
577 </span><span·class="p"·data-group-id="6225549709-5">[</span><span·class="p"·data-group-id="6225549709-6">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="p"·data-group-id="6225549709-7">[</span><span·class="p"·data-group-id="6225549709[·...·truncated·by·diffoscope;·len:·146,·SHA:·d540682dd7044f7214a83c8dcae5665bacd17972336730477061ffe8107ae725·...·]">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:·5255878e41c325850f188c2ff704b21d1753ad9a6ea6272aa0b5e0f4a5a1a052·...·]">
 577 </span><span·class="p"·data-group-id="9217493221-5">[</span><span·class="p"·data-group-id="9217493221-6">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="p"·data-group-id="9217493221-7">[</span><span·class="p"·data-group-id="9217493221-7">]</span><span·class="p"·data-group-id="9217493221-6">}</span><span·class="p"·data-group-id="9217493221-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="6225549709-8">(</span><span·class="ss">x</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6225549709-9">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="622[·...·truncated·by·diffoscope;·len:·139,·SHA:·0744981c7777f2640d3dd6a9986a19f44cd7b82a6900dea98bd8cffd9ac4ca30·...·]-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="9217493221-8">(</span><span·class="ss">x</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9217493221-9">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="921[·...·truncated·by·diffoscope;·len:·139,·SHA:·74e4fe5f123a87080a30f812b6cc7a8e07c7d6a83503a3df93067056c4039d58·...·]-8">)</span><span·class="p">.</span><span·class="w">
579 </span><span·class="p"·data-group-id="6225549709-10">[</span><span·class="p"·data-group-id="6225549709-11">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="p"·data-group-id="6225549709-12">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><s[·...·truncated·by·diffoscope;·len:·147,·SHA:·b4ca955bff5567c2baf29f39329727bc67c54dbe2e59da7f6be55a14b56426e7·...·]-10">]</span><span·class="gp·unselectable">579 </span><span·class="p"·data-group-id="9217493221-10">[</span><span·class="p"·data-group-id="9217493221-11">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="p"·data-group-id="9217493221-12">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><s[·...·truncated·by·diffoscope;·len:·147,·SHA:·e093764bd444966865a83682f9d899d0c04c54c61b51637fd99c113d1ec1a80e·...·]-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="6225549709-13">(</span><span·class="ss">y</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6225549709-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:·5f520df4c723677277fdfc9b1bcced3f622c99914655809b9892c200b438d536·...·]-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="9217493221-13">(</span><span·class="ss">y</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9217493221-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:·7b83e1c00221ac4f71bd82cf1bee482968877d915d15aa997c9a7b5759879c6c·...·]-13">)</span><span·class="p">.</span><span·class="w">
581 </span><span·class="p"·data-group-id="6225549709-15">[</span><span·class="p"·data-group-id="6225549709-16">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="p"·data-group-id="6225549709-17">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><s[·...·truncated·by·diffoscope;·len:·510,·SHA:·abafdd5643b9beb3e0667c89c671a7ea2b1cbceba4da2de024a43b2972d03efa·...·]-15">]</span></code></pre>581 </span><span·class="p"·data-group-id="9217493221-15">[</span><span·class="p"·data-group-id="9217493221-16">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="p"·data-group-id="9217493221-17">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><s[·...·truncated·by·diffoscope;·len:·510,·SHA:·0690f455da34272f6a8d6cd44bf64e9738f38237a0607a23c891bb0fd29f8cd0·...·]-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="3479466409-1">(</span><span·class="p"·data-group-id="3479466409-2">[</span><span·class="p"·data-group-id="3479466409-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:·3d75085e50e0e4647bbe7e87a9e09fdc3e3e2b07ba4971239be9f5981ff7f0b4·...·]-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="5853686714-1">(</span><span·class="p"·data-group-id="5853686714-2">[</span><span·class="p"·data-group-id="5853686714-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:·11a5685b333194097460a5c076455b97ae1bd7f882815e994474ce3b277639a6·...·]-1">)</span><span·class="p">.</span><span·class="w">
608 </span><span·class="p"·data-group-id="3479466409-5">[</span><span·class="p"·data-group-id="3479466409-6">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="3479466409-6">}</span><span·class="p">,</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·191,·SHA:·22a8105ffcda986038da43e004675cf29df442251824ea272040a10c495d3434·...·]-5">]</span><span·class="gp·unselectable">608 </span><span·class="p"·data-group-id="5853686714-5">[</span><span·class="p"·data-group-id="5853686714-6">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="5853686714-6">}</span><span·class="p">,</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·191,·SHA:·ebfbde7d8d535d629539dcf9499bc6c965dbc8a949d18d4f438b9dde118d8643·...·]-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="3479466409-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="3479466409-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="5853686714-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="5853686714-8">)</span><span·class="p">.</span><span·class="w">
610 </span><span·class="p"·data-group-id="3479466409-9">[</span><span·class="p"·data-group-id="3479466409-10">{</span><span·class="ss">b</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="3479466409-10">}</span><span·class="p"·data-group-id="3479466409-9">]</span></code></pre>610 </span><span·class="p"·data-group-id="5853686714-9">[</span><span·class="p"·data-group-id="5853686714-10">{</span><span·class="ss">b</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="5853686714-10">}</span><span·class="p"·data-group-id="5853686714-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="6737024799-1">(</span><span·class="p"·data-group-id="6737024799-2">[</span><span·class="p"·data-group-id="6737024799-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:·3bb7886876ac4e9b0578b5114d3609d09f7118e6a35c020d89335d825e2de1dc·...·]-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="4315416473-1">(</span><span·class="p"·data-group-id="4315416473-2">[</span><span·class="p"·data-group-id="4315416473-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:·52b39f940451570d4fad1625dc0ab21f6faec7617325a987c8870a0597b49828·...·]-1">)</span><span·class="p">.</span><span·class="w">
639 </span><span·class="p"·data-group-id="6737024799-5">[</span><span·class="p"·data-group-id="6737024799-6">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="6737024799-6">}</span><span·class="p">,</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·191,·SHA:·a67b0a1af9b08b7c0899b326f2696ca5eaac1ebb2e424067dbec6116d9e04617·...·]-5">]</span><span·class="gp·unselectable">639 </span><span·class="p"·data-group-id="4315416473-5">[</span><span·class="p"·data-group-id="4315416473-6">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="4315416473-6">}</span><span·class="p">,</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·191,·SHA:·6b2edf35fd07e9327f58798b88a5f80ad8c4f6b104922094fd27536784715dd6·...·]-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="6737024799-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="6737024799-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="4315416473-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="4315416473-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="6737024799-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="6737024799-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="4315416473-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="4315416473-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.6/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.6/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="9610329565-1">(</span><span·class="p"·data-group-id="9610329565-2">[</span><span·class="p"·data-group-id="9610329565-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:·367,·SHA:·50c4b15085d5cc3a8fb249f2c95d4c6cb71b03b4243a98801c4139902e0729bd·...·]65-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="1213116665-1">(</span><span·class="p"·data-group-id="1213116665-2">[</span><span·class="p"·data-group-id="1213116665-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:·367,·SHA:·4924682bcbefa87b890129eaf65674d53baa2fc1c9a154f9d8bb0a795cca2b7f·...·]65-1">)</span><span·class="p">.</span><span·class="w">
669 </span><span·class="p"·data-group-id="9610329565-5">[</span><span·class="p"·data-group-id="9610329565-6">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="9610329565-6">}</span><span·class="p">,</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·189,·SHA:·bb12394a075622b478fd400b03aa52c48bd3383340c7ec61c11a9cd7122bc701·...·]65-5">]</span><span·class="gp·unselectable">669 </span><span·class="p"·data-group-id="1213116665-5">[</span><span·class="p"·data-group-id="1213116665-6">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="1213116665-6">}</span><span·class="p">,</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·189,·SHA:·76804115ffdfde7d9ff65d8db40a40273c3a36600992986bbb8529269bfe96ce·...·]65-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="9610329565-8">(</span><span·class="n">OrdDict1</span><span·class="p"·data-group-id="9610329565-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="1213116665-8">(</span><span·class="n">OrdDict1</span><span·class="p"·data-group-id="1213116665-8">)</span><span·class="p">.</span><span·class="w">
671 </span><span·class="p"·data-group-id="9610329565-9">[</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">b</span><span·class="p"·data-group-id="9610329565-9">]</span></code></pre>671 </span><span·class="p"·data-group-id="1213116665-9">[</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">b</span><span·class="p"·data-group-id="1213116665-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">
Max diff block lines reached; 81832/126290 bytes (64.80%) of diff not shown.
90.3 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2.2/doc/html/peer.html
    
Offset 157, 135 lines modifiedOffset 157, 135 lines modified
157 employs·a·number·of·techniques·to·speed·up·testing·and·reliably·shut·down·peer157 employs·a·number·of·techniques·to·speed·up·testing·and·reliably·shut·down·peer
158 nodes:</p><ul><li>peers·start·linked·to·test·runner·process.·If·the·test·case·fails,·the·peer158 nodes:</p><ul><li>peers·start·linked·to·test·runner·process.·If·the·test·case·fails,·the·peer
159 node·is·stopped·automatically,·leaving·no·rogue·nodes·running·in·the159 node·is·stopped·automatically,·leaving·no·rogue·nodes·running·in·the
160 background</li><li>arguments·used·to·start·the·peer·are·saved·in·the·control·process·state·for160 background</li><li>arguments·used·to·start·the·peer·are·saved·in·the·control·process·state·for
161 manual·analysis.·If·the·test·case·fails,·the·CRASH·REPORT·contains·these161 manual·analysis.·If·the·test·case·fails,·the·CRASH·REPORT·contains·these
162 arguments</li><li>multiple·test·cases·can·run·concurrently·speeding·up·overall·testing·process,162 arguments</li><li>multiple·test·cases·can·run·concurrently·speeding·up·overall·testing·process,
163 peer·node·names·are·unique·even·when·there·are·multiple·instances·of·the·same163 peer·node·names·are·unique·even·when·there·are·multiple·instances·of·the·same
164 test·suite·running·in·parallel</li></ul><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="0804319214-1">(</span><span·class="ss">my_SUITE</span><span·class="p"·data-group-id="0804319214-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="2795277579-1">(</span><span·class="ss">my_SUITE</span><span·class="p"·data-group-id="2795277579-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="0804319214-2">(</span><span·class="ss">ct_suite</span><span·class="p"·data-group-id="0804319214-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="2795277579-2">(</span><span·class="ss">ct_suite</span><span·class="p"·data-group-id="2795277579-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="0804319214-3">(</span><span·class="p"·data-group-id="0804319214-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:·0deba1cb8642a88fe1ff2f378d1244a27464b4ec9a68b3c4610554898af021d8·...·]-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="2795277579-3">(</span><span·class="p"·data-group-id="2795277579-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:·b95f2111aaf06773748e067f0f0212ec88ad13d579ad3acd57732963d2f59de9·...·]-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="0804319214-5">(</span><span·class="p"·data-group-id="0804319214-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:·9cbb8a8c22de0c4c58e986657e283f1e6531d0bc07cd5de0d1e9be3b11a08d95·...·]-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="2795277579-5">(</span><span·class="p"·data-group-id="2795277579-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:·401a4f0a8a71460ae91ae5e243e604a2dcb4a6939823227b898bfb26e2007f69·...·]-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="0804319214-7">(</span><span·class="s">&quot;common_test/include/ct.hrl&quot;</span><span·class="p"·data-group-id="0804319214-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="2795277579-7">(</span><span·class="s">&quot;common_test/include/ct.hrl&quot;</span><span·class="p"·data-group-id="2795277579-7">)</span><span·class="p">.</span><span·class="w">
  
170 </span><span·class="nf">groups</span><span·class="p"·data-group-id="0804319214-8">(</span><span·class="p"·data-group-id="0804319214-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="2795277579-8">(</span><span·class="p"·data-group-id="2795277579-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
171 ····</span><span·class="p"·data-group-id="0804319214-9">[</span><span·class="p"·data-group-id="0804319214-10">{</span><span·class="ss">quick</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0804319214-11">[</span><span·class="ss">parallel</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·24,·SHA:·a3142599afeb974d140f9abea6fea312c279e2c156229de5147e13cd875d423c·...·]-11">]</span><span·class="p">,</span><span·class="w">171 ····</span><span·class="p"·data-group-id="2795277579-9">[</span><span·class="p"·data-group-id="2795277579-10">{</span><span·class="ss">quick</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2795277579-11">[</span><span·class="ss">parallel</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·24,·SHA:·675c56385fcaa4c9723739c9874c27a4357843e6382ba346b2b19ab062c38ef2·...·]-11">]</span><span·class="p">,</span><span·class="w">
172 ········</span><span·class="p"·data-group-id="0804319214-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:·39785e80208df2fedea42dd1fe95f950323f13bd44e5d184d4387c0ecdebdc23·...·]-9">]</span><span·class="p">.</span><span·class="w">172 ········</span><span·class="p"·data-group-id="2795277579-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:·67b406dc9cae31bd6c45a69a402a2c50e54ff3e266a88494952843cfad525195·...·]-9">]</span><span·class="p">.</span><span·class="w">
  
173 </span><span·class="nf">all</span><span·class="p"·data-group-id="0804319214-13">(</span><span·class="p"·data-group-id="0804319214-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="2795277579-13">(</span><span·class="p"·data-group-id="2795277579-13">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
174 ····</span><span·class="p"·data-group-id="0804319214-14">[</span><span·class="p"·data-group-id="0804319214-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="0804319214-15">}</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·580576c5c10469127a5a36d2d05f7ecb0ee139b6063591389210cf5a2271fd61·...·]-14">]</span><span·class="p">.</span><span·class="w">174 ····</span><span·class="p"·data-group-id="2795277579-14">[</span><span·class="p"·data-group-id="2795277579-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="2795277579-15">}</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·d8af30bdb9921b475352bdf98d0560cf87d6d033f035d1c3d09105e0ec474a11·...·]-14">]</span><span·class="p">.</span><span·class="w">
  
175 </span><span·class="nf">basic</span><span·class="p"·data-group-id="0804319214-16">(</span><span·class="n">Config</span><span·class="p"·data-group-id="0804319214-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="0804319214-17[·...·truncated·by·diffoscope;·len:·80,·SHA:·001228ed8a1f79109949154b21d88fc9950c18ee0a4ca2834659f6f9bbc0290d·...·]-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="2795277579-16">(</span><span·class="n">Config</span><span·class="p"·data-group-id="2795277579-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="2795277579-17[·...·truncated·by·diffoscope;·len:·80,·SHA:·d039ba019c58a15abb7f77bf825715a322edd334b365030e1e510dc1ec7a4a1f·...·]-17">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
176 ····</span><span·class="p"·data-group-id="0804319214-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="08[·...·truncated·by·diffoscope;·len:·242,·SHA:·aade3257d3a946511bf71fe1dc0aab6263c2ca00c0ddfeba39377591d58b1a30·...·]-19">)</span><span·class="p">,</span><span·class="w">176 ····</span><span·class="p"·data-group-id="2795277579-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="27[·...·truncated·by·diffoscope;·len:·242,·SHA:·89aaff179ffdfcec27701cd430b55d7f6070a13882b9e72f5efdcb5700a2c3d3·...·]-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="0804319214-20">(</span><span·class="n">Peer</span><span·class="p"·data-group-id="0804319214-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="2795277579-20">(</span><span·class="n">Peer</span><span·class="p"·data-group-id="2795277579-20">)</span><span·class="p">.</span><span·class="w">
  
178 </span><span·class="nf">args</span><span·class="p"·data-group-id="0804319214-21">(</span><span·class="n">Config</span><span·class="p"·data-group-id="0804319214-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="0804319214-22[·...·truncated·by·diffoscope;·len:·80,·SHA:·001228ed8a1f79109949154b21d88fc9950c18ee0a4ca2834659f6f9bbc0290d·...·]-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="2795277579-21">(</span><span·class="n">Config</span><span·class="p"·data-group-id="2795277579-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="2795277579-22[·...·truncated·by·diffoscope;·len:·80,·SHA:·d039ba019c58a15abb7f77bf825715a322edd334b365030e1e510dc1ec7a4a1f·...·]-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="0804319214-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="08[·...·truncated·by·diffoscope;·len:·482,·SHA:·f0226d1d67010aa31bc5d8a2fb893e35ba88d7e5504045ba6809898cfefb33c2·...·]-24">)</span><span·class="p">,</span><span·class="w">180 ····</span><span·class="p"·data-group-id="2795277579-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="27[·...·truncated·by·diffoscope;·len:·482,·SHA:·8fbb1918dd9b2f0c1276f9b69c3352891b205861a424816195a7985c47dabed9·...·]-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="0804319214-26">(</span><span·class="n">Peer</span><span·class="p"·data-group-id="0804319214-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="2795277579-26">(</span><span·class="n">Peer</span><span·class="p"·data-group-id="2795277579-26">)</span><span·class="p">.</span><span·class="w">
  
182 </span><span·class="nf">named</span><span·class="p"·data-group-id="0804319214-27">(</span><span·class="n">Config</span><span·class="p"·data-group-id="0804319214-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="0804319214-28[·...·truncated·by·diffoscope;·len:·80,·SHA:·001228ed8a1f79109949154b21d88fc9950c18ee0a4ca2834659f6f9bbc0290d·...·]-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="2795277579-27">(</span><span·class="n">Config</span><span·class="p"·data-group-id="2795277579-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="2795277579-28[·...·truncated·by·diffoscope;·len:·80,·SHA:·d039ba019c58a15abb7f77bf825715a322edd334b365030e1e510dc1ec7a4a1f·...·]-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="0804319214-29">(</span><span·class="ss">named_test</span><span·class="p"·data-group-id="0804319214-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="2795277579-29">(</span><span·class="ss">named_test</span><span·class="p"·data-group-id="2795277579-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="0804319214-30">(</span><span·class="n">Peer</span><span·class="p"·data-group-id="0804319214-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="2795277579-30">(</span><span·class="n">Peer</span><span·class="p"·data-group-id="2795277579-30">)</span><span·class="p">.</span><span·class="w">
  
186 </span><span·class="nf">start_node_impl</span><span·class="p"·data-group-id="0804319214-31">(</span><span·class="n">ActualTestCase</span><span·class="p"·data-group-id="0804319214-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="2795277579-31">(</span><span·class="n">ActualTestCase</span><span·class="p"·data-group-id="2795277579-31">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
187 ····</span><span·class="p"·data-group-id="0804319214-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="0804319214-32">}</span><sp[·...·truncated·by·diffoscope;·len:·635,·SHA:·96e8290cbf5df1cf4c5793dfb2bd3f81131a2074128ff62f3d5e47a27ace19a0·...·]-33">)</span><span·class="p">,</span><span·class="w">187 ····</span><span·class="p"·data-group-id="2795277579-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="2795277579-32">}</span><sp[·...·truncated·by·diffoscope;·len:·635,·SHA:·5f7792651f1dff9c4a912064365f178fb5d41c2cf93b8a46740c26e7eaeffe53·...·]-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="0804319214-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:·ea0a69dd37a6345c30f2fda669a974f8206a1023e1479385149b96a612b46bf7·...·]-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="2795277579-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:·20f464218be8c22b0b734e1988789b119181444547aa75482c1a302eab97364e·...·]-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="0804319214-38">(</span><span·class="n">Config</span><span·class="p"·data-group-id="0804319214-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="0804319214-39[·...·truncated·by·diffoscope;·len:·80,·SHA:·001228ed8a1f79109949154b21d88fc9950c18ee0a4ca2834659f6f9bbc0290d·...·]-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="2795277579-38">(</span><span·class="n">Config</span><span·class="p"·data-group-id="2795277579-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="2795277579-39[·...·truncated·by·diffoscope;·len:·80,·SHA:·d039ba019c58a15abb7f77bf825715a322edd334b365030e1e510dc1ec7a4a1f·...·]-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="0804319214-40">(</span><span·class="p"·data-group-id="0804319214-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="2795277579-40">(</span><span·class="p"·data-group-id="2795277579-40">)</span><span·class="p">,</span><span·class="w">
193 ····</span><span·class="p"·data-group-id="0804319214-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="0804319214-41">}</span><sp[·...·truncated·by·diffoscope;·len:·458,·SHA:·60766e28135c1c387e50bd85e4596289b13d2fb582c194956569763b98f063a1·...·]-42">)</span><span·class="p">,</span><span·class="w">193 ····</span><span·class="p"·data-group-id="2795277579-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="2795277579-41">}</span><sp[·...·truncated·by·diffoscope;·len:·458,·SHA:·8b1933e973f003d183e6947436e58ed845181ec36311a157711d3b14483c2098·...·]-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="0804319214-44">(</span><span·class="n">Peer</span><span·class="p"·data-group-id="0804319214-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="2795277579-44">(</span><span·class="n">Peer</span><span·class="p"·data-group-id="2795277579-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="0804319214-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="0804319214-45">}</span><s[·...·truncated·by·diffoscope;·len:·758,·SHA:·ff7d84d000408acb16a5c76b67be32a844053310e8c2864143785d5018a6f5e9·...·]-46">)</span><span·class="p">,</span><span·class="w">196 ····</span><span·class="p"·data-group-id="2795277579-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="2795277579-45">}</span><s[·...·truncated·by·diffoscope;·len:·758,·SHA:·790c7cb54147a5002ec2ebf28ae01612d397651b7674645d1bc4fa5f8fac8ac9·...·]-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="0804319214-49">(</span><span·class="n">Peer2</span><span·class="p"·data-group-id="0804319214-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"·tra[·...·truncated·by·diffoscope;·len:·410,·SHA:·f365d9e10590d48a856de9bbce8e30db4697f1e5afab3802b314e0c64dc9ef7f·...·]-2">)</span><span·class="w">·</span><span·class="p">-&gt;</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="2795277579-49">(</span><span·class="n">Peer2</span><span·class="p"·data-group-id="2795277579-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"·tra[·...·truncated·by·diffoscope;·len:·410,·SHA:·5377ad2d28131570a05cf985d56792451ff30705513f58fd1fc877fcbc9140f0·...·]-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="5232219717-3">[</span><span·class="o">?</span><span·class="n">CT_PEER</span><span·class="p"·data-group-id="5232219717-4">(</span><span·class="p"·data-group-id="5232219717-5">#{</span><span·class="ss">wait_boot</span><span·class="w">·</span><span·class="p">[·...·truncated·by·diffoscope;·len:·445,·SHA:·bef02a459c3f7f9b04e21e7c5589e6bca5fbdb679bcb4b266038896143d325eb·...·]-4">)</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="2245610492-3">[</span><span·class="o">?</span><span·class="n">CT_PEER</span><span·class="p"·data-group-id="2245610492-4">(</span><span·class="p"·data-group-id="2245610492-5">#{</span><span·class="ss">wait_boot</span><span·class="w">·</span><span·class="p">[·...·truncated·by·diffoscope;·len:·445,·SHA:·ee23669b6b21a3e92ab7993cbd31694218b820f348f933638a58499c71a31f42·...·]-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="5232219717-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="5232219717-8">)</span><span·class="p"·data-group-id="5232219717-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="2245610492-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="2245610492-8">)</span><span·class="p"·data-group-id="2245610492-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="5232219717-9">[</span><span·class="k">receive</span><span·class="w">·</span><span·class="p"·data-group-id="5232219717-10">{</span><span·class="ss">tag</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5232219717-11">{</sp[·...·truncated·by·diffoscope;·len:·279,·SHA:·ef612428d1827862cca16ed389262c5de5a6de7f506d7dcc1fb0a5bd8c6fda1a·...·]-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="2245610492-9">[</span><span·class="k">receive</span><span·class="w">·</span><span·class="p"·data-group-id="2245610492-10">{</span><span·class="ss">tag</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2245610492-11">{</sp[·...·truncated·by·diffoscope;·len:·279,·SHA:·b4fc48ce1184334b5099585685d3e00c2057b39c890d9f923e396d695fd72132·...·]-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="5232219717-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="5232219717-12">}</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·67,·SHA:·95a052a159b3e168ff78da4137f9888da45d550f03ca340d2dac9aa25646c914·...·]-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="2245610492-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="2245610492-12">}</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·67,·SHA:·f81657a938e56144646bebdd39746663d145cfa19db506bde56b69c5ff284429·...·]-9">]</span><span·class="p">,</span><span·class="w">
203 ····</span><span·class="p"·data-group-id="5232219717-13">[</span><span·class="nc">peer</span><span·class="p">:</span><span·class="nf">stop</span><span·class="p"·data-group-id="5232219717-14">(</span><span·class="n">Peer</span><span·class="p"·data-group-id="5232219717-14">)</span><span·class="w">·<[·...·truncated·by·diffoscope;·len:·409,·SHA:·402f9e181e48fffc72d1b405e39d96c34f4141a223d9777cf38b309437118249·...·]-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="2245610492-13">[</span><span·class="nc">peer</span><span·class="p">:</span><span·class="nf">stop</span><span·class="p"·data-group-id="2245610492-14">(</span><span·class="n">Peer</span><span·class="p"·data-group-id="2245610492-14">)</span><span·class="w">·<[·...·truncated·by·diffoscope;·len:·409,·SHA:·4e3cd99a4e9c60453a34502912c97ce4c7f25279ff9d5f806d7b49a77f15ba4e·...·]-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="1699221606-1">(</span><span·class="s">&quot;ssh&quot;</span><span·class="p"·data-group-id="1699221606-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="2313576794-1">(</span><span·class="s">&quot;ssh&quot;</span><span·class="p"·data-group-id="2313576794-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="1699221606-2">(</span><span·class="p"·data-group-id="1699221606-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="1699221606-4">{</span><span·class="n">Ssh</sp[·...·truncated·by·diffoscope;·len:·331,·SHA:·478ac2fa00c6b9e4583244259202401a5ab5f636c5dcf71929e022d0b55a5f90·...·]-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="2313576794-2">(</span><span·class="p"·data-group-id="2313576794-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="2313576794-4">{</span><span·class="n">Ssh</sp[·...·truncated·by·diffoscope;·len:·331,·SHA:·35121a720bb023ceb38180980bedb732d2c207398b11bd1b42cc51ede50750be·...·]-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="1699221606-3">}</span><span·class="p"·data-group-id="1699221606-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="2313576794-3">}</span><span·class="p"·data-group-id="2313576794-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="5133649864-1">(</span><span·class="n">Config</span><span·class="p"·data-group-id="5133649864-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="5133649864-2">([·...·truncated·by·diffoscope;·len:·77,·SHA:·bb9431834e0414a25fa21164ff4c2cfe2bb0ec6f7279f856c6230a7d0ae0e594·...·]-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="0986733836-1">(</span><span·class="n">Config</span><span·class="p"·data-group-id="0986733836-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="0986733836-2">([·...·truncated·by·diffoscope;·len:·77,·SHA:·432b4ef468f6b862b87e7b9d88cd77824fefe1f2d7433488d79941ea7fd33666·...·]-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="5133649864-3">(</span><span·class="s">&quot;docker&quot;</span><span·class="p"·data-group-id="5133649864-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="0986733836-3">(</span><span·class="s">&quot;docker&quot;</span><span·class="p"·data-group-id="0986733836-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="5133649864-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="5133649864-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="0986733836-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="0986733836-4">)</span><span·class="p">,</span><span·class="w">
211 ····</span><span·class="nf">build_release</span><span·class="p"·data-group-id="5133649864-5">(</span><span·class="n">PrivDir</span><span·class="p"·data-group-id="5133649864-5">)</span><span·class="p">,</span><span·class="w">211 ····</span><span·class="nf">build_release</span><span·class="p"·data-group-id="0986733836-5">(</span><span·class="n">PrivDir</span><span·class="p"·data-group-id="0986733836-5">)</span><span·class="p">,</span><span·class="w">
212 ····</span><span·class="nf">build_image</span><span·class="p"·data-group-id="5133649864-6">(</span><span·class="n">PrivDir</span><span·class="p"·data-group-id="5133649864-6">)</span><span·class="p">,</span><span·class="w">212 ····</span><span·class="nf">build_image</span><span·class="p"·data-group-id="0986733836-6">(</span><span·class="n">PrivDir</span><span·class="p"·data-group-id="0986733836-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="5133649864-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="5133649864-7">}</span><span[·...·truncated·by·diffoscope;·len:·247,·SHA:·1ecd4a0e81723e641680f11c2e0b3eb7d615d7892694aa136021a85648f1980f·...·]-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="0986733836-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="0986733836-7">}</span><span[·...·truncated·by·diffoscope;·len:·247,·SHA:·30160ac9e8a03ffcd33c302e96e090db8e0e4e839668d16364b203a1771ddb54·...·]-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="5133649864-10">{</span><span·class="n">Docker</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5133649864-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:·7b29d9f6451ded1e1db4f7b493a19db87cec6b383b830418ab259c2d5d06e47b·...·]-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="0986733836-10">{</span><span·class="n">Docker</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0986733836-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:·2cabfcb9fab19d139a3f85d5ba7aeaa3b1eb4a9099fada406f94f77bd1da8146·...·]-8">)</span><span·class="p">,</span><span·class="w">
217 ····</span><span·class="p"·data-group-id="5133649864-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="5133649864-12">}</span><[·...·truncated·by·diffoscope;·len:·252,·SHA:·0786a385a1ba3e9da66c7af17025d09c8931be1f0ef7ac69f5d25103a9c1a399·...·]-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="0986733836-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="0986733836-12">}</span><[·...·truncated·by·diffoscope;·len:·252,·SHA:·6ff5a639120c22703d1d7fffd3003c02a7cf62479f11ac3bb61b6bf10242fb4a·...·]-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="5133649864-15">{</span><span·class="n">Docker</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5133649864-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:·f48576fca35e6e8d2353122e84197b65d1b2bd8694912c3432356709e6e6160c·...·]-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="0986733836-15">{</span><span·class="n">Docker</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0986733836-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:·bd57379afc9e65019facd1136412776800c3a11b42b63664f643557d2d4ffca8·...·]-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="5133649864-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="5133649864-17">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·510,·SHA:·8a40d09a148842125e7fa979eb8a40e9062da1c95376474b0798c5edd4175430·...·]-18">)</span><span·class="p">,</span><span·class="w">221 ····</span><span·class="p"·data-group-id="0986733836-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="0986733836-17">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·510,·SHA:·783fdec55a34890e1097e74df509464459b508ad06b80050faa6de913d3893b3·...·]-18">)</span><span·class="p">,</span><span·class="w">
222 ····</span><span·class="p"·data-group-id="5133649864-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="5133649864-20">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·[·...·truncated·by·diffoscope;·len:·372,·SHA:·cdaad6cf1f36c1f4ac6ce41a7d1c560bc1bd19eeebb843688cca0f3dae7ac583·...·]-21">)</span><span·class="p">,</span><span·class="w">222 ····</span><span·class="p"·data-group-id="0986733836-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="0986733836-20">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·[·...·truncated·by·diffoscope;·len:·372,·SHA:·a2926f7dbad4ccd97a6afb4dd4267825b3ea0ac69600119f3fa6086e9812d188·...·]-21">)</span><span·class="p">,</span><span·class="w">
223 ····</span><span·class="p"·data-group-id="5133649864-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="5133649864-22">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·349,·SHA:·2cc463d774a92bf033c9253560a072764549f8c60484ceb33eb6706f116db7d7·...·]-23">)</span><span·class="p">,</span><span·class="w">223 ····</span><span·class="p"·data-group-id="0986733836-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="0986733836-22">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·349,·SHA:·80fc9003418043e1b25b456f7ff560000dc8f418084970ac47364ebcebdd5418·...·]-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="5133649864-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:·7cca78551828d89a515cacf04b70e20fbf4c0ed9c6206a60efa21c52b7aa966b·...·]-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="0986733836-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:·f435e52bb148afd878fefe2918b23f34ade73a3f106c1387ae9a99f30992962f·...·]-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="5133649864-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:·1025614db0255bc95ff7acf0043dc69f28ac8599c4a83fdf746e1f452456f721·...·]-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="0986733836-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:·d2ad00b55de3227c41fdbd2d0061fa1167c7e86f6ac0de9de473b626d6e7b90d·...·]-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="5133649864-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:·37af1bc8f9a9a8cdcb67addd5ba1ef4cff78bdc8773b71b67bd7f53603a9c4c5·...·]-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="0986733836-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:·1c6ac4b2f9c6c45fc4f9ebe6f045c2806a9f36e982a729b3801912926d8e1822·...·]-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="5133649864-32">[</span><span·class="n">Node</span><span·class="p"·data-group-id="5133649864-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:·0f8698f434291f6eb5c311cfb13fd8e3e35b5fb4007da57312c217ae382e0519·...·]-33">)</span><span·class="p">,</span><span·class="w">230 ····</span><span·class="p"·data-group-id="0986733836-32">[</span><span·class="n">Node</span><span·class="p"·data-group-id="0986733836-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:·1b80b54b4a865b4fb56a46f07f91415ffb9839d83c27e5d985effff75d8b023e·...·]-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="5133649864-35">(</span><span·class="n">Peer2</span><span·class="p"·data-group-id="5133649864-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="0986733836-35">(</span><span·class="n">Peer2</span><span·class="p"·data-group-id="0986733836-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="5133649864-36">(</span><span·class="n">Peer</span><span·class="p"·data-group-id="5133649864-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="0986733836-36">(</span><span·class="n">Peer</span><span·class="p"·data-group-id="0986733836-36">)</span><span·class="p">.</span><span·class="w">
  
234 </span><span·class="nf">build_release</span><span·class="p"·data-group-id="5133649864-37">(</span><span·class="n">Dir</span><span·class="p"·data-group-id="5133649864-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="0986733836-37">(</span><span·class="n">Dir</span><span·class="p"·data-group-id="0986733836-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="5133649864-38">(</span><span·class="ss">sasl</span><span·class="p"·data-group-id="5133649864-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="0986733836-38">(</span><span·class="ss">sasl</span><span·class="p"·data-group-id="0986733836-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="5133649864-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="5133649864-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="0986733836-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="0986733836-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="5133649864-40">{</span><span·class="ss">release</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5133649864-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:·df9dabc107581606e602eb77e8587ee7b9b1bfc695b8928ccd4bc1df8f463165·...·]-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="0986733836-40">{</span><span·class="ss">release</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0986733836-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:·b794f8a2fc83b8d5d74148954239e671f9e99282fb46311278d05440e33c1172·...·]-41">}</span><span·class="p">,</span><span·class="w">
240 ········</span><span·class="p"·data-group-id="5133649864-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="5133649864-43">(</span><span·class="s[·...·truncated·by·diffoscope;·len:·112,·SHA:·3142c0834d27b80e673ca71df0ffbdf32d880df6a6583957fa898f593900f8a6·...·]-42">}</span><span·class="p">,</span><span·class="w">240 ········</span><span·class="p"·data-group-id="0986733836-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="0986733836-43">(</span><span·class="s[·...·truncated·by·diffoscope;·len:·112,·SHA:·0bd66ccc9772b8c93683993896e077d14ce00641e49b06193eb0ba96f7048243·...·]-42">}</span><span·class="p">,</span><span·class="w">
241 ········</span><span·class="p"·data-group-id="5133649864-44">[</span><span·class="p"·data-group-id="5133649864-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="5133649864-46">{</span[·...·truncated·by·diffoscope;·len:·691,·SHA:·29d86d40ef429b43f800071d6bbf0d571ca905aed7aec6254729c5586c749fde·...·]-45">}</span><span·class="w">241 ········</span><span·class="p"·data-group-id="0986733836-44">[</span><span·class="p"·data-group-id="0986733836-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="0986733836-46">{</span[·...·truncated·by·diffoscope;·len:·691,·SHA:·8a0ed9ce1be510a91378a95be70f5732ef1913ab248295b8f8f183b1392f5621·...·]-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="5133649864-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="5133649864-48">]</[·...·truncated·by·diffoscope;·len:·100,·SHA:·6568164f5a4f19f1befda6c0cf707bd6537a8332d024c9b1ced0e2a975441303·...·]-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="0986733836-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="0986733836-48">]</[·...·truncated·by·diffoscope;·len:·100,·SHA:·8a0affe1e3d5f2ec3e3b8ad5e8a4ad2cd43ed2c6eb3d2b70ec7fafecc388e905·...·]-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="5133649864-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="5133649864-50">(</span><span·class="nc">lists</span><span·class="p">:</span><span·clas[·...·truncated·by·diffoscope;·len:·62,·SHA:·44549d92031d4ece4b1726efa561584cf447fd3a6a797748249b8e120e8f3dc6·...·]-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="0986733836-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="0986733836-50">(</span><span·class="nc">lists</span><span·class="p">:</span><span·clas[·...·truncated·by·diffoscope;·len:·62,·SHA:·4ce3ac9d44d82449ac539ce0c239effe481e7a96af326778d34c24ce14e43ec1·...·]-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="5133649864-52">(</span><span·class="s">&quot;~tp.&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5133649864-53">[</span><span·class="n">Release</span><span·class="p"·data-group-id="5133649864-53">]</span><span·cl[·...·truncated·by·diffoscope;·len:·195,·SHA:·7631d09878c602eb43d80ceda5c1becb5aa8329be848135ed8cb12ccaf28850b·...·]-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="0986733836-52">(</span><span·class="s">&quot;~tp.&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0986733836-53">[</span><span·class="n">Release</span><span·class="p"·data-group-id="0986733836-53">]</span><span·cl[·...·truncated·by·diffoscope;·len:·195,·SHA:·66b3140888256b94df87ed66ae758459324b1fda280d763a958f16fca5835a1b·...·]-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="5133649864-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="5133649864-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="0986733836-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="0986733836-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="5133649864-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="5133649864-56">[</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·292,·SHA:·c02d6a2660aa3eff8c272c07cbaff40d59976b2d93be5fdbce7ac2a2e95fb46b·...·]-57">(</span><span·class="n">RelFileNoExt</span><span·class="p">,</span><span·class="w">247 ····</span><span·class="p"·data-group-id="0986733836-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="0986733836-56">[</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·292,·SHA:·78c8495b22c0b090bd9e944587a8ec5f6e2ac74416c7bcb555e664b106a3f934·...·]-57">(</span><span·class="n">RelFileNoExt</span><span·class="p">,</span><span·class="w">
248 ········</span><span·class="p"·data-group-id="5133649864-58">[</span><span·class="ss">silent</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5133649864-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:·501da2a3e16acf91f5601acb95e28d21305c28acdc40a0335e03c1d711e29cc9·...·]-57">)</span><span·class="p">,</span><span·class="w">248 ········</span><span·class="p"·data-group-id="0986733836-58">[</span><span·class="ss">silent</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0986733836-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:·d64b9c20a60363191674b72f66ed642a81265927ee8d415d5c9b0cc84c367da0·...·]-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="5133649864-60">(</span><span·class="n">RelFileNoExt</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5133649864-61">[</span><span·class="p"·data-group-id="5133649864-62">{</span><span·class="ss">erts</span><span·class="p[·...·truncated·by·diffoscope;·len:·375,·SHA:·70e86905952ace96e073b5b40f05e45ca1b06f01ce383ce8e0858bb6d431ed9c·...·]-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="0986733836-60">(</span><span·class="n">RelFileNoExt</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0986733836-61">[</span><span·class="p"·data-group-id="0986733836-62">{</span><span·class="ss">erts</span><span·class="p[·...·truncated·by·diffoscope;·len:·375,·SHA:·c37b447a151e6e6d69a613ff0e78b99b0ee951c22378eb9e28cac2f296dbbf1b·...·]-60">)</span><span·class="p">.</span><span·class="w">
  
251 </span><span·class="nf">build_image</span><span·class="p"·data-group-id="5133649864-64">(</span><span·class="n">Dir</span><span·class="p"·data-group-id="5133649864-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="0986733836-64">(</span><span·class="n">Dir</span><span·class="p"·data-group-id="0986733836-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="5133649864-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="5133649864-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="0986733836-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="0986733836-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="5133649864-66">(</span><span·class="ss">version</span><span·class="p"·data-group-id="5133649864-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="0986733836-66">(</span><span·class="ss">version</span><span·class="p"·data-group-id="0986733836-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">
268 ····</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="5133649864-67">(</span><span·class="n">BuildScript</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Dockerfile</span><span·class="p"·data-group-id="5133649864-67">)</span><span·class="p">,</span><span·class="w">268 ····</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="0986733836-67">(</span><span·class="n">BuildScript</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Dockerfile</span><span·class="p"·data-group-id="0986733836-67">)</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.2/doc/html/proc_lib.html
    
Offset 969, 29 lines modifiedOffset 969, 29 lines modified
969 the·start·function·used.</p><p>If·neither·this·function·nor·<a·href="#init_fail/3"><code·class="inline">init_fail/2,3</code></a>·is·called·by·the969 the·start·function·used.</p><p>If·neither·this·function·nor·<a·href="#init_fail/3"><code·class="inline">init_fail/2,3</code></a>·is·called·by·the
970 started·process,·the·start·function·returns·an·error·tuple·when·the·started970 started·process,·the·start·function·returns·an·error·tuple·when·the·started
971 process·exits,·or·when·the·start·function·time-out·(if·used)·has·passed,·see971 process·exits,·or·when·the·start·function·time-out·(if·used)·has·passed,·see
972 <a·href="#start/5"><code·class="inline">start/3,4,5</code></a>.</p><section·role="note"·class="admonition·warning"><h4·class="admonition-title·warning">Warning</h4><p>Do·not·use·this·function·to·return·an·error·indicating·that·the·process·start972 <a·href="#start/5"><code·class="inline">start/3,4,5</code></a>.</p><section·role="note"·class="admonition·warning"><h4·class="admonition-title·warning">Warning</h4><p>Do·not·use·this·function·to·return·an·error·indicating·that·the·process·start
973 failed.·When·doing·so·the·start·function·can·return·before·the·failing·process973 failed.·When·doing·so·the·start·function·can·return·before·the·failing·process
974 has·exited,·which·may·block·VM·resources·required·for·a·new·start·attempt·to974 has·exited,·which·may·block·VM·resources·required·for·a·new·start·attempt·to
975 succeed.·Use·<a·href="#init_fail/3"><code·class="inline">init_fail/2,3</code></a>·for·that·purpose.</p></section><p>The·following·example·illustrates·how·this·function·and·<a·href="#start_link/3"><code·class="inline">proc_lib:start_link/3</code></a>975 succeed.·Use·<a·href="#init_fail/3"><code·class="inline">init_fail/2,3</code></a>·for·that·purpose.</p></section><p>The·following·example·illustrates·how·this·function·and·<a·href="#start_link/3"><code·class="inline">proc_lib:start_link/3</code></a>
976 are·used:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="7098323488-1">(</span><span·class="ss">my_proc</span><span·class="p"·data-group-id="7098323488-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="5761913906-1">(</span><span·class="ss">my_proc</span><span·class="p"·data-group-id="5761913906-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="7098323488-2">(</span><span·class="p"·data-group-id="7098323488-3">[</span><span·class="ss">start_link</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="7098323488-3">]</span><span·class="p"·data-group-id="7098323488-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="7098323488-4">(</span><span·class="p"·data-group-id="7098323488-5">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="7098323488-5">]</span><span·class="p"·data-group-id="7098323488-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="5761913906-2">(</span><span·class="p"·data-group-id="5761913906-3">[</span><span·class="ss">start_link</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="5761913906-3">]</span><span·class="p"·data-group-id="5761913906-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="5761913906-4">(</span><span·class="p"·data-group-id="5761913906-5">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="5761913906-5">]</span><span·class="p"·data-group-id="5761913906-4">)</span><span·class="p">.</span><span·class="w">
  
979 </span><span·class="nf">start_link</span><span·class="p"·data-group-id="7098323488-6">(</span><span·class="p"·data-group-id="7098323488-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="5761913906-6">(</span><span·class="p"·data-group-id="5761913906-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="7098323488-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="7098323488-8">[</span><span·class="nf">self</spa[·...·truncated·by·diffoscope;·len:·202,·SHA:·89a2695a5613d84e3f5a9dae1c564e7eaa8741834ec7e65079d2290db91a7b0b·...·]-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="5761913906-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="5761913906-8">[</span><span·class="nf">self</spa[·...·truncated·by·diffoscope;·len:·202,·SHA:·5a8b4027a99a5f601e46ea73468dda575b068700e7c9b70610db694446f67a7b·...·]-7">)</span><span·class="p">.</span><span·class="w">
  
981 </span><span·class="nf">init</span><span·class="p"·data-group-id="7098323488-10">(</span><span·class="n">Parent</span><span·class="p"·data-group-id="7098323488-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="5761913906-10">(</span><span·class="n">Parent</span><span·class="p"·data-group-id="5761913906-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="7098323488-11">(</span><span·class="p"·data-group-id="7098323488-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="5761913906-11">(</span><span·class="p"·data-group-id="5761913906-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="7098323488-12">(</span><span·class="n">Parent</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7098323488-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:·3c5d4478547a72afe59b89da5e8ccc5d5311f69af781aadb97fc8e543a04669e·...·]-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="5761913906-12">(</span><span·class="n">Parent</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5761913906-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:·b560f21a7fe9e6ccec1512e7f6474e0402b20e8566978cc34e5fb278b6fa121d·...·]-12">)</span><span·class="p">;</span><span·class="w">
985 ········</span><span·class="p"·data-group-id="7098323488-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="7098323488-15">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">985 ········</span><span·class="p"·data-group-id="5761913906-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="5761913906-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="7098323488-16">(</span><span·class="n">Reason</span><span·class="p"·data-group-id="7098323488-16">)</span><span·class="w">986 ············</span><span·class="nf">exit</span><span·class="p"·data-group-id="5761913906-16">(</span><span·class="n">Reason</span><span·class="p"·data-group-id="5761913906-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="7098323488-17">(</span><span·class="p"·data-group-id="7098323488-17">)</span><span·class="p">.</span><span·class="w">988 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="5761913906-17">(</span><span·class="p"·data-group-id="5761913906-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.6/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.6/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="1404754523-1">(</span><span·class="ss">my_proc</span><span·class="p"·data-group-id="1404754523-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="0802102212-1">(</span><span·class="ss">my_proc</span><span·class="p"·data-group-id="0802102212-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="1404754523-2">(</span><span·class="p"·data-group-id="1404754523-3">[</span><span·class="ss">start_link</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="1404754523-3">]</span><span·class="p"·data-group-id="1404754523-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="1404754523-4">(</span><span·class="p"·data-group-id="1404754523-5">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="1404754523-5">]</span><span·class="p"·data-group-id="1404754523-4">)</span><span·class="p">.</span><span·class="w">1060 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="0802102212-2">(</span><span·class="p"·data-group-id="0802102212-3">[</span><span·class="ss">start_link</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="0802102212-3">]</span><span·class="p"·data-group-id="0802102212-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="0802102212-4">(</span><span·class="p"·data-group-id="0802102212-5">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="0802102212-5">]</span><span·class="p"·data-group-id="0802102212-4">)</span><span·class="p">.</span><span·class="w">
  
1062 </span><span·class="nf">start_link</span><span·class="p"·data-group-id="1404754523-6">(</span><span·class="p"·data-group-id="1404754523-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="0802102212-6">(</span><span·class="p"·data-group-id="0802102212-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="1404754523-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="1404754523-8">[</span><span·class="nf">self</spa[·...·truncated·by·diffoscope;·len:·202,·SHA:·a2f11a45deb13617fcb33d1cb8fdcc3f7499ec69bb933095fd67e1bfb78b02fd·...·]-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="0802102212-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="0802102212-8">[</span><span·class="nf">self</spa[·...·truncated·by·diffoscope;·len:·202,·SHA:·3d72eecd34db3815c94ec6926308ed4314ca1c3d8907fb67ecccbe3ba18d4ad6·...·]-7">)</span><span·class="p">.</span><span·class="w">
  
1064 </span><span·class="nf">init</span><span·class="p"·data-group-id="1404754523-10">(</span><span·class="n">Parent</span><span·class="p"·data-group-id="1404754523-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="0802102212-10">(</span><span·class="n">Parent</span><span·class="p"·data-group-id="0802102212-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="1404754523-11">(</span><span·class="p"·data-group-id="1404754523-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="0802102212-11">(</span><span·class="p"·data-group-id="0802102212-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="1404754523-12">(</span><span·class="n">Parent</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1404754523-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:·7907cb3c02bb438d42f9cc27b5f777a759c969ca56da8f8357680ed93d1181bf·...·]-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="0802102212-12">(</span><span·class="n">Parent</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0802102212-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:·f97aa936abd57685525364382db5dc3a85ee6143b2b531148dde78a08de849f3·...·]-12">)</span><span·class="p">;</span><span·class="w">
1068 ········</span><span·class="p"·data-group-id="1404754523-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="1404754523-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="0802102212-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="0802102212-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="1404754523-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="1404754523-17">{</span><span·class="nb">exit</spa[·...·truncated·by·diffoscope;·len:·175,·SHA:·551d1246680a58dd9b0290771e19c3745c42bfdcda7fe2ee80f35384c5e507c2·...·]-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="0802102212-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="0802102212-17">{</span><span·class="nb">exit</spa[·...·truncated·by·diffoscope;·len:·175,·SHA:·f514c451250141830127611e2d8958c7eb6f6e49104c00da02a5f0a3329485a9·...·]-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="1404754523-18">(</span><span·class="p"·data-group-id="1404754523-18">)</span><span·class="p">.</span><span·class="w">1071 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="0802102212-18">(</span><span·class="p"·data-group-id="0802102212-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.2/doc/html/proplists.html
    
Offset 522, 15 lines modifiedOffset 522, 15 lines modified
  
522 ··········<pre·translate="no"><span·class="attribute">-spec</span>·append_values(Key,·ListIn)·->·ListOut·when·Key·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:term/0">term</a>(),·ListIn·::·[<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:term/0">term</a>()],·ListOut·::·[<a·href="../../../../erts-15.2.6/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.6/doc/html/erlang.html#t:term/0">term</a>(),·ListIn·::·[<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:term/0">term</a>()],·ListOut·::·[<a·href="../../../../erts-15.2.6/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="3282015951-1">(</span><span·class="ss">a</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3282015951-2">[</span><span·class="p"·data-group-id="3282015951-3">{</span><span·class="ss">a</span><span·class="p">,</span><span·[·...·truncated·by·diffoscope;·len:·1837,·SHA:·5fdf758aa3537bb9450554d8e2c194bd61c7d70c94fd559993c9bb956df1bc0c·...·]-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="4276059844-1">(</span><span·class="ss">a</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4276059844-2">[</span><span·class="p"·data-group-id="4276059844-3">{</span><span·class="ss">a</span><span·class="p">,</span><span·[·...·truncated·by·diffoscope;·len:·1837,·SHA:·9c3434d9eda1e655246ac09893715463dbf14910185df2998725b12a0230b235·...·]-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="8020843541-1">(</span><span·class="p"·data-group-id="8020843541-2">[</span><span·class="p"·data-group-id="8020843541-3">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8020843541-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="8020843541-4">]</span><span·class="p"·data-group-id="8020843541-3">}</span><span·class="p"·data-group-id="8020843541-2">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8020843541-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="8020843541-5">]</span><span·class="p"·data-group-id="8020843541-1">)</span><span·class="w"> 
617 </span><span·class="nf">expand</span><span·class="p"·data-group-id="8020843541-6">(</span><span·class="p"·data-group-id="8020843541-7">[</span><span·class="p"·data-group-id="8020843541-8">{</span><span·class="p"·data-group-id="8020843541-9">{</span><span·cl[·...·truncated·by·diffoscope;·len:·888,·SHA:·bd720c7ad6f13010b8812d89fe7063e916a51a87e5b02d11176ee46045eca774·...·]">)</span><span·class="w">616 <code·class="inline">ListIn</code>.</p><p>For·example,·the·following·expressions·all·return·<code·class="inline">[fie,·bar,·baz,·fum]</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">expand</span><span·class="p"·data-group-id="483[·...·truncated·by·diffoscope;·len:·888,·SHA:·f0f875fe2699571b713dfcff6bc4e5beb21e4860e3a0cb54954490eaa3e59136·...·]">)</span><span·class="w">
 617 </span><span·class="nf">expand</span><span·class="p"·data-group-id="4835130817-6">(</span><span·class="p"·data-group-id="4835130817-7">[</span><span·class="p"·data-group-id="4835130817-8">{</span><span·class="p"·data-group-id="4835130817-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="4835130817-9">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4835130817-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="4835130817-10">]</span><span·class="p"·data-group-id="4835130817-8">}</span><span·class="p"·data-group-id="4835130817-7">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4835130817-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="4835130817-11">]</span><span·class="p"·data-group-id="4835130817-6">)</span><span·class="w">
 618 </span><span·class="nf">expand</span><span·class="p"·data-group-id="4835130817-12">(</span><span·class="p"·data-group-id="4835130817-13">[</span><span·class="p"·data-group-id="4835130817-14">{</span><span·class="p"·data-group-id="4835130817-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="4835130817-15">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4835130817-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="4835130817-16">]</span><span·class="p"·data-group-id="4835130817-14">}</span><span·class="p"·data-group-id="4835130817-13">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4835130817-17">[</span><span·class="ss">fie</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4835130817-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="4835130817-18">}</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">fum</span><span·class="p"·data-group-id="4835130817-17">]</span><span·class="p"·data-group-id="4835130817-12">)</span></code></pre><p>However,·no·expansion·is·done·in·the·following·call·because·<code·class="inline">{foo,·false}</code>
618 </span><span·class="nf">expand</span><span·class="p"·data-group-id="8020843541-12">(</span><span·class="p"·data-group-id="8020843541-13">[</span><span·class="p"·data-group-id="8020843541-14">{</span><span·class="p"·data-group-id="8020843541-15">{</span><sp[·...·truncated·by·diffoscope;·len:·1209,·SHA:·23a36b9e347a146aacdb5e53fdafe68462e004654e4123162eb20864ccf45d57·...·]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="8433500966-1">(</span><span·class="p"·data-group-id="8433500966-2">[</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·1333,·SHA:·c613db98d9bdfdc94ceda117dcd648a69ed20fe21a918fb77ede39a327296f3b·...·]
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="7045217060-1">(</span><span·class="p"·data-group-id="7045217060-2">[</span><span·class="p"·data-group-id="7045217060-3">{</span><span·class="p"·data-group-id="7045217060-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="7045217060-4">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7045217060-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="7045217060-5">]</span><span·class="p"·data-group-id="7045217060-3">}</span><span·class="p"·data-group-id="7045217060-2">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7045217060-6">[</span><span·class="p"·data-group-id="7045217060-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="7045217060-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="7045217060-6">]</span><span·class="p"·data-group-id="7045217060-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.6/doc/html/erlang.html#t:term/0">term</a>()],·Keys·::·[<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:term/0">term</a>()],·Lists·::·[[<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:term/0">term</a>()]],·Rest·::·[<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:term/0">term</a>()].</pre>992 ···············when·List·::·[<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:term/0">term</a>()],·Keys·::·[<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:term/0">term</a>()],·Lists·::·[[<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:term/0">term</a>()]],·Rest·::·[<a·href="../../../../erts-15.2.6/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="9737239895-1">(</span><span·class="p"·data-group-id="9737239895-2">[</span><span·class="p"·data-group-id="9737239895-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:·6c541ad5acd87b958464c6945e7f8db9cebcc33700dea7a974be766ad296685a·...·]-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="8813049879-1">(</span><span·class="p"·data-group-id="8813049879-2">[</span><span·class="p"·data-group-id="8813049879-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:·2aef1185449b54cb8fabfd0a8b2d9f8f6e682baf2bda2d42b8f1c696a451b79a·...·]-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="8601188618-1">(</span><span·class="p"·data-group-id="8601188618-2">[</span><span·class="ss">a</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8601188618-3">{</span><span·class="ss">b</span><span·class="p">,</span><span·[·...·truncated·by·diffoscope;·len:·1354,·SHA:·2c910e492699da4e0eb68ede41945992e401c3d200bb495d98a3b43d644ab49a·...·]-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="5502294427-1">(</span><span·class="p"·data-group-id="5502294427-2">[</span><span·class="ss">a</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5502294427-3">{</span><span·class="ss">b</span><span·class="p">,</span><span·[·...·truncated·by·diffoscope;·len:·1354,·SHA:·2b5d6abbecc43ceb5d93949bbb2e359f62421a8fc34205cb6e5ddc07d3d33fdb·...·]-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.2/doc/html/qlc.html
    
Offset 281, 58 lines modifiedOffset 281, 58 lines modified
281 traverses·objects·from·many·tables·or·lists·after·each·other.·If,·for·example,281 traverses·objects·from·many·tables·or·lists·after·each·other.·If,·for·example,
282 you·want·to·traverse·all·answers·to·a·query·<code·class="inline">QH</code>·and·then·finish·off·by·a·term282 you·want·to·traverse·all·answers·to·a·query·<code·class="inline">QH</code>·and·then·finish·off·by·a·term
283 <code·class="inline">{finished}</code>,·you·can·do·that·by·calling·<code·class="inline">qlc:append(QH,·[{finished}])</code>.283 <code·class="inline">{finished}</code>,·you·can·do·that·by·calling·<code·class="inline">qlc:append(QH,·[{finished}])</code>.
284 <a·href="#append/2"><code·class="inline">append/2</code></a>·first·returns·all·objects·of·<code·class="inline">QH</code>,·then·<code·class="inline">{finished}</code>.284 <a·href="#append/2"><code·class="inline">append/2</code></a>·first·returns·all·objects·of·<code·class="inline">QH</code>,·then·<code·class="inline">{finished}</code>.
285 If·a·tuple·<code·class="inline">{finished}</code>·exists·among·the·answers·to·<code·class="inline">QH</code>,·it·is·returned·twice285 If·a·tuple·<code·class="inline">{finished}</code>·exists·among·the·answers·to·<code·class="inline">QH</code>,·it·is·returned·twice
286 from·<a·href="#append/2"><code·class="inline">append/2</code></a>.</p><p>As·another·example,·consider·concatenating·the·answers·to·two·queries·<code·class="inline">QH1</code>·and286 from·<a·href="#append/2"><code·class="inline">append/2</code></a>.</p><p>As·another·example,·consider·concatenating·the·answers·to·two·queries·<code·class="inline">QH1</code>·and
287 <code·class="inline">QH2</code>·while·removing·all·duplicates.·This·is·accomplished·by·using·option287 <code·class="inline">QH2</code>·while·removing·all·duplicates.·This·is·accomplished·by·using·option
288 <code·class="inline">unique</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">qlc</span><span·class="p">:</span><span·class="nf">q</span><span·class="p"·data-group-id="5939388120-1">(</span><span·class="p"·data-group-id="5939388120-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:·811d06aae9cca1bf86000518e83f0bf616cb2ad65b022e0a37babac30791f481·...·]-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="4276835903-1">(</span><span·class="p"·data-group-id="4276835903-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:·d585ab1444bddddb0feb5e9eb775474218c767bdc236680861f349e34b527b7a·...·]-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="6136618106-1">(</span><span·class="nc">qlc</span><span·class="p">:</span><span·class="nf">q</span><span·class="p"·data-group-id="6136618106-2">(</span><span·class="p"·data-group-id="6136618106-3">[</span><span·class="n">X</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·837,·SHA:·35f7ace536567ec3e7fad066eb252ee3e8a1b1c3546ff6455a5c8a2b8cd25d95·...·]06-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="0097302806-1">(</span><span·class="nc">qlc</span><span·class="p">:</span><span·class="nf">q</span><span·class="p"·data-group-id="0097302806-2">(</span><span·class="p"·data-group-id="0097302806-3">[</span><span·class="n">X</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·837,·SHA:·f2b7e953b35d5876719aba11f2153f01f0d4c512fdd7cc2b92ce435c6e8c5456·...·]06-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="5270080466-1">(</span><span·class="nc">qlc</span><span·class="p">:</span><span·class="nf">q</span><span·class="p"·data-group-id="5270080466-2">(</span><span·class="p"·data-group-id="5270080466-3">[</span><span·class="n">X</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·791,·SHA:·4894b79ed3222c8775c06a6dd5f329889b0054804a1d7c635aea480458e80d62·...·]-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="6983968885-1">(</span><span·class="nc">qlc</span><span·class="p">:</span><span·class="nf">q</span><span·class="p"·data-group-id="6983968885-2">(</span><span·class="p"·data-group-id="6983968885-3">[</span><span·class="n">X</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·791,·SHA:·b6c219d2abb028cd316527a72253f3707d7b2c6ba4dba1a84f675de6d82add6a·...·]-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="5270080466-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="5270080466-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="6983968885-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="6983968885-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="5270080466-7">(</span><span·class="n">C</span><span·class="p"·data-group-id="5270080466-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="6983968885-7">(</span><span·class="n">C</span><span·class="p"·data-group-id="6983968885-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="8559694890-1">(</span><span·class="p"·data-group-id="8559694890-2">[</span><span·class="p"·data-group-id="8559694890-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:·9e93da0bb3e1b3db1692cdb2019fef798ef2f0fa850ab486bb81693f6650f8c8·...·]-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="2671463001-1">(</span><span·class="p"·data-group-id="2671463001-2">[</span><span·class="p"·data-group-id="2671463001-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:·d308abaa11263f5a1374b9cab09a9a69b8488e3daafb875b02aa7c9163d384b8·...·]-3">}</span><span·class="w">·</span><span·class="p">||</span><span·class="w">
303 ··········</span><span·class="p"·data-group-id="8559694890-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="8559694890-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="2671463001-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="2671463001-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="8559694890-5">{</span><span·class="n">Y1</span><span·class="p">,</span><span·class="n">Y2</span><span·class="p"·data-group-id="8559694890-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="2671463001-5">{</span><span·class="n">Y1</span><span·class="p">,</span><span·class="n">Y2</span><span·class="p"·data-group-id="2671463001-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="8559694890-2">]</span><span·class="p"·data-group-id="8559694890-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="2671463001-2">]</span><span·class="p"·data-group-id="2671463001-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="1955050120-1">(</span><span·class="p"·data-group-id="1955050120-2">[</span><span·class="p"·data-group-id="1955050120-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:·84,·SHA:·4215d481653455cf3b28b9d93cd3fc8275072307f58d0adfab918c7f1ed81cd8·...·]0-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="5451757290-1">(</span><span·class="p"·data-group-id="5451757290-2">[</span><span·class="p"·data-group-id="5451757290-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:·84,·SHA:·769ab48237d07e31a7955a9d1879b9c1f5e86504897643bb9651ce830dbb726c·...·]0-3">}</span><span·class="w">·</span><span·class="p">||</span><span·class="w">
314 ··········</span><span·class="p"·data-group-id="1955050120-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="1955050120-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="5451757290-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="5451757290-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="1955050120-5">{</span><span·class="n">Y1</span><span·class="p">,</span><span·class="n">Y2</span><span·class="p"·data-group-id="1955050120-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="5451757290-5">{</span><span·class="n">Y1</span><span·class="p">,</span><span·class="n">Y2</span><span·class="p"·data-group-id="5451757290-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="1955050120-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="5451757290-2">]</span><span·class="p">,</span><span·class="w">
317 ······</span><span·class="p"·data-group-id="1955050120-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="1955050120-6">}</span><span·class="p"·data-group-id="1955050120-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="5451757290-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="5451757290-6">}</span><span·class="p"·data-group-id="5451757290-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="1577630805-1">(</span><span·class="p"·data-group-id="1577630805-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:·e1e5ae4b572c3c7f1aeb2a8d23b3b59968f827e2fabf5057e1e09911c3bb65b6·...·]-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="2505981653-1">(</span><span·class="p"·data-group-id="2505981653-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:·7b6964eaa23c1ff7713383bd253a918acc320b82181d8ee18004db8c37216afc·...·]-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="1296160459-1">(</span><span·class="ss">gb_table</span><span·class="p"·data-group-id="1296160459-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="9397238563-1">(</span><span·class="ss">gb_table</span><span·class="p"·data-group-id="9397238563-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="1296160459-2">(</span><span·class="p"·data-group-id="1296160459-3">[</span><span·class="ss">table</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="1296160459-3">]</span><span·class="p"·data-group-id="1296160459-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="9397238563-2">(</span><span·class="p"·data-group-id="9397238563-3">[</span><span·class="ss">table</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="9397238563-3">]</span><span·class="p"·data-group-id="9397238563-2">)</span><span·class="p">.</span><span·class="w">
  
356 </span><span·class="nf">table</span><span·class="p"·data-group-id="1296160459-4">(</span><span·class="n">T</span><span·class="p"·data-group-id="1296160459-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="9397238563-4">(</span><span·class="n">T</span><span·class="p"·data-group-id="9397238563-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="1296160459-5">(</span><span·class="p"·data-group-id="1296160459-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="1296160459-6">(</span><span·class="nc">gb_[·...·truncated·by·diffoscope;·len:·429,·SHA:·8687767555f16fbc4bc8356e2082368894c3d9a6f07687500e7ae44e24d132f7·...·]-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="9397238563-5">(</span><span·class="p"·data-group-id="9397238563-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="9397238563-6">(</span><span·class="nc">gb_[·...·truncated·by·diffoscope;·len:·429,·SHA:·ca57277a7a1c45ecc06aef603cbff2d8386abf826e69cc6c410e00027317f144·...·]-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="1296160459-9">(</span><span·class="ss">num_of_objects</span><span·class="p"·data-group-id="1296160459-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:·21492c4b08d449cbdd0bf89586edee2433be70719ac15872e294da869a4ca7d0·...·]-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="9397238563-9">(</span><span·class="ss">num_of_objects</span><span·class="p"·data-group-id="9397238563-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:·8f5a2e0115b9b859650f8daff8e7dd4d3fdae3e22ffd89c6fa1af61aa30119a2·...·]-10">)</span><span·class="p">;</span><span·class="w">
359 ·················</span><span·class="p"·data-group-id="1296160459-11">(</span><span·class="ss">keypos</span><span·class="p"·data-group-id="1296160459-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="9397238563-11">(</span><span·class="ss">keypos</span><span·class="p"·data-group-id="9397238563-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="1296160459-12">(</span><span·class="ss">is_sorted_key</span><span·class="p"·data-group-id="1296160459-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="9397238563-12">(</span><span·class="ss">is_sorted_key</span><span·class="p"·data-group-id="9397238563-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="1296160459-13">(</span><span·class="ss">is_unique_objects</span><span·class="p"·data-group-id="1296160459-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="9397238563-13">(</span><span·class="ss">is_unique_objects</span><span·class="p"·data-group-id="9397238563-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="1296160459-14">(</span><span·class="p">_</span><span·class="p"·data-group-id="1296160459-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="9397238563-14">(</span><span·class="p">_</span><span·class="p"·data-group-id="9397238563-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="1296160459-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="1296160459-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="9397238563-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="9397238563-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="1296160459-16">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="1296160459-17">(</span><span·class="n">K</span><span·class="p"·data-group-id="1296160459-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="9397238563-16">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="9397238563-17">(</span><span·class="n">K</span><span·class="p"·data-group-id="9397238563-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="1296160459-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="1296160459-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="9397238563-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="9397238563-18">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
368 ··········································</span><span·class="p"·data-group-id="1296160459-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="1296160459-19">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·273,·SHA:·7696b8cb41dda0783b832a4182e7f684fb0a5660fbc559c9faa6f28b98e12be5·...·]-20">]</span><span·class="p">;</span><span·class="w">368 ··········································</span><span·class="p"·data-group-id="9397238563-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="9397238563-19">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·273,·SHA:·07c1d4f48874e00cdd0a5a9ceb63a5c59dd85042a5c1c34344642a42199450eb·...·]-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="1296160459-22">[</span><span·class="p"·data-group-id="1296160459-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="9397238563-22">[</span><span·class="p"·data-group-id="9397238563-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="1296160459-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="9397238563-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="1296160459-23">(</span><span·class="p"·data-group-id="1296160459-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:·4b8484402bf5bdc392161dc6a82811d91061eae948ca4afc7001b5302f79c871·...·]-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="9397238563-23">(</span><span·class="p"·data-group-id="9397238563-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:·c1d17207023840e3bd7800c2839bef01678b07c42fa15250884a0e248b6a217a·...·]-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="1296160459-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="9397238563-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="1296160459-26">[</span><span·class="nf">gb_nodes</span><span·class="p"·data-group-id="1296160459-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:·1e1282d0ba51070f3800413eb114a9c15925bdf1522a12e02aac0ce62fb0bb7f·...·]-25">)</span><span·class="p">,</span><span·class="w">376 ······································</span><span·class="p"·data-group-id="9397238563-26">[</span><span·class="nf">gb_nodes</span><span·class="p"·data-group-id="9397238563-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:·035a94f619fe27a5378705745b4a86728b1e5bf0afdfbaae03ec23af3a5a802e·...·]-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="1296160459-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="1296160459-29">[</span><span·class="n">ValsS</span><sp[·...·truncated·by·diffoscope;·len:·92,·SHA:·542f5ab48e84c8764b2a182c6c29cd7fff15ab414fa5a912fad50708d4ba3f9e·...·]-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="9397238563-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="9397238563-29">[</span><span·class="n">ValsS</span><sp[·...·truncated·by·diffoscope;·len:·92,·SHA:·c97719f469143b0a7b5440766ddc4e72b0b19d26b90fc953eeab412844ad40c1·...·]-28">)</span><span·class="p">;</span><span·class="w">
378 ···········</span><span·class="p"·data-group-id="1296160459-30">(</span><span·class="p"·data-group-id="1296160459-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:·2108f2492b9bd540658ae474a5c7f3d370c9acb830ca26fd056ba965325d42b8·...·]-30">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">378 ···········</span><span·class="p"·data-group-id="9397238563-30">(</span><span·class="p"·data-group-id="9397238563-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:·f8d4306d008abc8dc0c53f9090e844881aa2812705c1a23f3df160df65378767·...·]-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="1296160459-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="9397238563-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="1296160459-33">[</span><span·class="nf">gb_nodes</span><span·class="p"·data-group-id="1296160459-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:·2260047cebd137d81fbc1999ee12f173d971180318d96746c16631e504d116a4·...·]-32">)</span><span·class="p">,</span><span·class="w">380 ······································</span><span·class="p"·data-group-id="9397238563-33">[</span><span·class="nf">gb_nodes</span><span·class="p"·data-group-id="9397238563-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:·e11b550460888bd101c03d72322dc712d8653217cd2a4c320a6248a6baabd5cf·...·]-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="1296160459-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="9397238563-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="1296160459-36">[</span><span·class="n">ValsS</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1296160459-37">[</span><span·class="n">ElementFun</span><span·class="p"·data-group-id="1296160459-38">(</span><span·class="n">[·...·truncated·by·diffoscope;·len:·418,·SHA:·df53bc8f006c3d6afc0d2e0cbf887bad87432718d1287b8ce100c83c8bce9978·...·]-35">)</span><span·class="w">385 ······························</span><span·class="p"·data-group-id="9397238563-36">[</span><span·class="n">ValsS</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9397238563-37">[</span><span·class="n">ElementFun</span><span·class="p"·data-group-id="9397238563-38">(</span><span·class="n">[·...·truncated·by·diffoscope;·len:·418,·SHA:·84aef161e910b1146afdad88cb47b83f20fbb30e879a97d6db8a6416d8693a05·...·]-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="1296160459-39">(</span><span·class="n">TF</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1296160459-40">[</span><span·class="p"·data-group-id="1296160459-41">{</span><span·class="ss">info_fun</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·369,·SHA:·99a10d52b7b3d5cc3c357a315b12e3d79184fbbb2249ab16a7c973e1e6fef280·...·]-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="9397238563-39">(</span><span·class="n">TF</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9397238563-40">[</span><span·class="p"·data-group-id="9397238563-41">{</span><span·class="ss">info_fun</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·369,·SHA:·b9f1963ad4f2cb1a03c5fe40a2288ad207f7c616e9dafce64e679fa4045cea57·...·]-42">}</span><span·class="p">,</span><span·class="w">
388 ···················</span><span·class="p"·data-group-id="1296160459-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="1296160459-43">}</span><span·class="p">,</span><span·class="p"·data-group-id="1296160459[·...·truncated·by·diffoscope;·len:·258,·SHA:·0ef96a0833a827a71b53d587fef9cb457116dc7c51ca1bb929a1964598268d51·...·]-39">)</span><span·class="p">.</span><span·class="w">388 ···················</span><span·class="p"·data-group-id="9397238563-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="9397238563-43">}</span><span·class="p">,</span><span·class="p"·data-group-id="9397238563[·...·truncated·by·diffoscope;·len:·258,·SHA:·5274576a8faa2baea03c91a08c0524cd81d8c509ed059b22846e4a45651e4cf6·...·]-39">)</span><span·class="p">.</span><span·class="w">
  
389 </span><span·class="nf">qlc_next</span><span·class="p"·data-group-id="1296160459-45">(</span><span·class="p"·data-group-id="1296160459-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:·a12e716ec92e55963be8bdc51bdd409d579c7a6ee5da3af8f32b3127e0dc0f5d·...·]-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="9397238563-45">(</span><span·class="p"·data-group-id="9397238563-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:·85fcde8277e526df2b6e2d2aa9a366c56ad9f8dd1c700a678bd5246d54d51ad8·...·]-45">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
390 ····</span><span·class="p"·data-group-id="1296160459-47">[</span><span·class="p"·data-group-id="1296160459-48">{</span><span·class="n">X</span><span·class="p">,</span><span·class="n">V</span><span·class="p"·data-group-id="1296160459-48">}</span><span·class="w">·</span><span·class="p">|</span><span[·...·truncated·by·diffoscope;·len:·677,·SHA:·eae627ca8bd56428015517ab17ca2d38216acb00c28b17c9fd237dae285fb694·...·]-47">]</span><span·class="p">;</span><span·class="w">390 ····</span><span·class="p"·data-group-id="9397238563-47">[</span><span·class="p"·data-group-id="9397238563-48">{</span><span·class="n">X</span><span·class="p">,</span><span·class="n">V</span><span·class="p"·data-group-id="9397238563-48">}</span><span·class="w">·</span><span·class="p">|</span><span[·...·truncated·by·diffoscope;·len:·677,·SHA:·a1b011716e61ff68542bfb9963b34907ed74940a78e9fcf6a39d111fae9cf928·...·]-47">]</span><span·class="p">;</span><span·class="w">
391 </span><span·class="nf">qlc_next</span><span·class="p"·data-group-id="1296160459-52">(</span><span·class="ss">none</span><span·class="p"·data-group-id="1296160459-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="9397238563-52">(</span><span·class="ss">none</span><span·class="p"·data-group-id="9397238563-52">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
392 ····</span><span·class="p"·data-group-id="1296160459-53">[</span><span·class="p"·data-group-id="1296160459-53">]</span><span·class="p">.</span><span·class="w">392 ····</span><span·class="p"·data-group-id="9397238563-53">[</span><span·class="p"·data-group-id="9397238563-53">]</span><span·class="p">.</span><span·class="w">
  
393 </span><span·class="nf">gb_nodes</span><span·class="p"·data-group-id="1296160459-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="1296160459-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="9397238563-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="9397238563-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="1296160459-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:·ce8005541f05e4e9a50dc2a3bed83bc864a89dbb36fe615fef72da598cba4ef3·...·]-55">)</span><span·class="p">;</span><span·class="w">394 ····</span><span·class="nf">gb_nodes</span><span·class="p"·data-group-id="9397238563-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:·d8135010eb2ae6e1d474686b1c205b5560b7bde50b8a1b0b41c81691c7bbf204·...·]-55">)</span><span·class="p">;</span><span·class="w">
395 </span><span·class="nf">gb_nodes</span><span·class="p"·data-group-id="1296160459-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="1296160459-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="9397238563-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="9397238563-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="1296160459-57">(</span><span·class="nc">gb_trees</span><span·class="p">:</span><span·class="nf">iterator</span><span·class="p"·data-group-id="1296160459-58">(</span><span·class="n">T</span><span·class="p"·data-group-id="1296160459-58">)</span><span·class="[·...·truncated·by·diffoscope;·len:·189,·SHA:·f18e61a455aab643d04d3718bf2a2e8732c585dba89ac848642076c3231147a7·...·]-57">)</span><span·class="p">.</span><span·class="w">396 ····</span><span·class="nf">gb_iter</span><span·class="p"·data-group-id="9397238563-57">(</span><span·class="nc">gb_trees</span><span·class="p">:</span><span·class="nf">iterator</span><span·class="p"·data-group-id="9397238563-58">(</span><span·class="n">T</span><span·class="p"·data-group-id="9397238563-58">)</span><span·class="[·...·truncated·by·diffoscope;·len:·189,·SHA:·ed52f8d12657a407661e045f633d2e24cf3e0a0638cd7aa61c75178c92295594·...·]-57">)</span><span·class="p">.</span><span·class="w">
  
397 </span><span·class="nf">gb_iter</span><span·class="p"·data-group-id="1296160459-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:·e67b7a585b97d171d4cc2c0ad65a0ef8a289cf8d6dd0e24b839e4816266f1941·...·]-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="9397238563-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:·a0e4e7f2cf4e4b206a2fb3d409c77f86bba342a0d003ce1b6c0b91c74834779c·...·]-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="1296160459-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="1296160459-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="9397238563-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="9397238563-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="1296160459-61">(</span><span·class="n">I0</span><span·class="p"·data-group-id="1296160459-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="9397238563-61">(</span><span·class="n">I0</span><span·class="p"·data-group-id="9397238563-61">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
401 ········</span><span·class="p"·data-group-id="1296160459-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="1296160459-62">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">401 ········</span><span·class="p"·data-group-id="9397238563-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="9397238563-62">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
402 ············</span><span·class="p"·data-group-id="1296160459-63">[</span><span·class="n">EFun</span><span·class="p"·data-group-id="1296160459-64">(</span><span·class="p"·data-group-id="1296160459-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:·80454df77681f129e98cbfdf14a0138cc42859dc5bf033562be6f3709b20278d·...·]-63">]</span><span·class="p">;</span><span·class="w">402 ············</span><span·class="p"·data-group-id="9397238563-63">[</span><span·class="n">EFun</span><span·class="p"·data-group-id="9397238563-64">(</span><span·class="p"·data-group-id="9397238563-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:·9675c0d363236e2116ce3f00f22d4b92cdba742d8e716efc70186112e179aa36·...·]-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="1296160459-67">[</span><span·class="p"·data-group-id="1296160459-67">]</span><span·class="w">404 ············</span><span·class="p"·data-group-id="9397238563-67">[</span><span·class="p"·data-group-id="9397238563-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.2/doc/html/queue.html
    
Offset 713, 18 lines modifiedOffset 713, 18 lines modified
713 ······<div·class="specs">713 ······<div·class="specs">
  
714 ··········<pre·translate="no"><span·class="attribute">-spec</span>·all(Pred,·Q·::·<a·href="#t:queue/1">queue</a>(Item))·->·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:boolean/0">boolean</a>()·when·Pred·::·fun((Item)·->·<a·href="../../../../erts-15.2.6/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.6/doc/html/erlang.html#t:boolean/0">boolean</a>()·when·Pred·::·fun((Item)·->·<a·href="../../../../erts-15.2.6/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="7954106349-1">(</span><span·class="p"·data-group-id="7954106349-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:·4a1e5ec8ad2860737b0e48a6e7f9b46f5efaa70ebab5d591e6d7b4209d049f0e·...·]-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="1498088165-1">(</span><span·class="p"·data-group-id="1498088165-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:·8d986b3307ff3e7183800fa88d3fd02d68832c5ba0775e8c3f548a01079a917a·...·]-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="7954106349-3">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="7954106349-4">(</span><span·class="n">E</span><span·class="p"·data-group-id="7954106349-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><[·...·truncated·by·diffoscope;·len:·314,·SHA:·376faefaa44fe85400f6f59c19fa8606bd3f2cd167fe41aa480f08f2712b2d76·...·]-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="1498088165-3">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="1498088165-4">(</span><span·class="n">E</span><span·class="p"·data-group-id="1498088165-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><[·...·truncated·by·diffoscope;·len:·314,·SHA:·2c938cd493941adcfc4623e7a070b3d6f355087573d8a4126203c5dc5fdc1688·...·]-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="7954106349-5">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="7954106349-6">(</span><span·class="n">E</span><span·class="p"·data-group-id="7954106349-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><[·...·truncated·by·diffoscope;·len:·314,·SHA:·e31bd6eae0f1783d9b8691716d7b31473de5f09375287d1c6cdc3922f3e925d2·...·]-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="1498088165-5">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="1498088165-6">(</span><span·class="n">E</span><span·class="p"·data-group-id="1498088165-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><[·...·truncated·by·diffoscope;·len:·314,·SHA:·434c957df38336963abef4e17c3142b591f6014665a60e7c24ed14f942d20b44·...·]-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.6/doc/html/erlang.html#t:boolean/0">boolean</a>()·when·Pred·::·fun((Item)·->·<a·href="../../../../erts-15.2.6/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.6/doc/html/erlang.html#t:boolean/0">boolean</a>()·when·Pred·::·fun((Item)·->·<a·href="../../../../erts-15.2.6/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="6231432002-1">(</span><span·class="p"·data-group-id="6231432002-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:·9846b19bf94d8654ccd3640d0c3d8bc5a6097e0804f043d4e5cb78c217fbe288·...·]-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="4855169285-1">(</span><span·class="p"·data-group-id="4855169285-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:·2f8231cbec83b55ade06bdec58f5db9d884cf901991b7aee01261b7fb8dfe2e8·...·]-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="6231432002-3">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="6231432002-4">(</span><span·class="n">E</span><span·class="p"·data-group-id="6231432002-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><[·...·truncated·by·diffoscope;·len:·315,·SHA:·a045e40ae4524446f0be97b0b10a92ce52f609565ddfb9607635f665642b5031·...·]-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="4855169285-3">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="4855169285-4">(</span><span·class="n">E</span><span·class="p"·data-group-id="4855169285-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><[·...·truncated·by·diffoscope;·len:·315,·SHA:·40c72ad07af7ac60fd91699c1a02c3d5918f268bae9e32c54ca7ebf679142ed0·...·]-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="6231432002-5">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="6231432002-6">(</span><span·class="n">E</span><span·class="p"·data-group-id="6231432002-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><[·...·truncated·by·diffoscope;·len:·314,·SHA:·fffde2a1c47dad5d495ea3fb3f73e635bb421f8ce74182d953f4f3ba8af8b6d1·...·]-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="4855169285-5">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="4855169285-6">(</span><span·class="n">E</span><span·class="p"·data-group-id="4855169285-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><[·...·truncated·by·diffoscope;·len:·314,·SHA:·004deef60ce61bfe7c6532ca6b5255e7e11b6998f3aaaa259da4ef642cf09030·...·]-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.6/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.6/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="7955386838-1">(</span><span·class="p"·data-group-id="7955386838-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:·4fa43daf31025df471a5f835b64f09bb689c754d514162b47fbf42341bc603d6·...·]-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="6061715327-1">(</span><span·class="p"·data-group-id="6061715327-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:·de2fd963b3f2cb251f8d5eedd25e0dae3ae1d61aca25405fa347dfc9d91dba33·...·]-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="7955386838-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="7955386838-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="6061715327-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="6061715327-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="7955386838-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="7955386838-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="6061715327-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="6061715327-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.6/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.6/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="4378534520-1">(</span><span·class="p"·data-group-id="4378534520-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:·22b81c2dfa1bac55410e3d761692a6ae6c8f2ec4abb7bad2d1886e3e93904a7e·...·]-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="7041991615-1">(</span><span·class="p"·data-group-id="7041991615-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:·4e84bf4a758c0d5cce72d6ef3900010c515fba2b6694ca4b8737d69ab46f9b9e·...·]-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="4378534520-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="4378534520-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="7041991615-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="7041991615-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="4378534520-4">(</span><span·class="n">Queue1</span><span·class="p"·data-group-id="4378534520-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="7041991615-4">(</span><span·class="n">Queue1</span><span·class="p"·data-group-id="7041991615-4">)</span><span·class="p">.</span><span·class="w">
818 </span><span·class="p"·data-group-id="4378534520-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:·f5695a67a3581b22c879819a146262c76fcdcc7c65df2183604c917df451a2fd·...·]-5">]</span></code></pre>818 </span><span·class="p"·data-group-id="7041991615-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:·fea658e5e1ae0e5cb5339e4b121099fe910234fd15547c9e060e4fd04e6e2997·...·]-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.6/doc/html/erlang.html#t:term/0">term</a>().</pre>850 ·························Item·::·<a·href="../../../../erts-15.2.6/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="1967046170-1">(</span><span·class="p"·data-group-id="1967046170-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:·f4437f67bb31c1cc7709860c1a078712ecff13371a1029cbfd224d8e9576c44a·...·]-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="5047670377-1">(</span><span·class="p"·data-group-id="5047670377-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:·3717527bb2fc1383b6894a4569ee2e38f795d0aafd047014c68ee76f508a6fb0·...·]-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="1967046170-3">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="1967046170-4">(</span><span·class="n">E</span><span·class="p"·data-group-id="1967046170-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><[·...·truncated·by·diffoscope;·len:·264,·SHA:·9da9a3e286d8db4bc1e21735e883ded00e882fa1ecb0c1d1521752d0797214f7·...·]-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="5047670377-3">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="5047670377-4">(</span><span·class="n">E</span><span·class="p"·data-group-id="5047670377-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><[·...·truncated·by·diffoscope;·len:·264,·SHA:·c3cf60c8c95f47dc57740d81fa530f8ae800be8acb742edc03bd26d6f546537c·...·]-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="1967046170-5">(</span><span·class="n">Queue1</span><span·class="p"·data-group-id="1967046170-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="5047670377-5">(</span><span·class="n">Queue1</span><span·class="p"·data-group-id="5047670377-5">)</span><span·class="p">.</span><span·class="w">
856 </span><span·class="p"·data-group-id="1967046170-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:·91f9c443c425a7c025fbddce2281848815a11e49c665866058feb8255abb86d9·...·]-6">]</span></code></pre>856 </span><span·class="p"·data-group-id="5047670377-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:·fa20107c367406ec6e8ae75e0b10775a8df105112f11b9358379996aab0efbe4·...·]-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.6/doc/html/erlang.html#t:term/0">term</a>().</pre>887 ···························Item·::·<a·href="../../../../erts-15.2.6/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="3282793060-1">(</span><span·class="p"·data-group-id="3282793060-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:·97efb435ab68c6dfd06975a4f768ba24ce4941a2f03627336c176349993fc2b6·...·]-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="6565864011-1">(</span><span·class="p"·data-group-id="6565864011-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:·a859c219290bf26ff6858358342755ed2ddf363f20a1c0513f9b2b7fa26f13b6·...·]-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="3282793060-3">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="3282793060-4">(</span><span·class="n">E</span><span·class="p"·data-group-id="3282793060-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><[·...·truncated·by·diffoscope;·len:·265,·SHA:·002b867f6cc8edda73a7b3e63eec452d01f3c07febbca5586d2ceec1bf4bf6cf·...·]-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="6565864011-3">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="6565864011-4">(</span><span·class="n">E</span><span·class="p"·data-group-id="6565864011-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><[·...·truncated·by·diffoscope;·len:·265,·SHA:·f3fced066f03b17f6fad2cd17cb573cfc0a25a74dea72b6fe60614fffa5b0f2f·...·]-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="3282793060-5">(</span><span·class="n">Queue1</span><span·class="p"·data-group-id="3282793060-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="6565864011-5">(</span><span·class="n">Queue1</span><span·class="p"·data-group-id="6565864011-5">)</span><span·class="p">.</span><span·class="w">
893 </span><span·class="p"·data-group-id="3282793060-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:·59d696d7e17eb8a5da585617c4931b13410de07c8580c6ab24b662715a56cead·...·]-6">]</span></code></pre>893 </span><span·class="p"·data-group-id="6565864011-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:·058509d6a7c09b529467c1462ee5e1717a4b430bff996774042e2c35c33523de·...·]-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.6/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.6/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="6708240327-1">(</span><span·class="p"·data-group-id="6708240327-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:·fc21011879268c7651cd66df87e48babce84ce313c794da7fb31988f5063dbdf·...·]-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="7119540600-1">(</span><span·class="p"·data-group-id="7119540600-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:·02a75c8aa53e4d85c4dd26b34ca75d70d5cfffd791780e7bfc9c0d6ce4e39728·...·]-1">)</span><span·class="p">.</span><span·class="w">
923 </span><span·class="p"·data-group-id="6708240327-3">{</span><span·class="p"·data-group-id="6708240327-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="6708240327-4">]</span><span[·...·truncated·by·diffoscope;·len:·240,·SHA:·2a7f37a4d2be8cce78e3ba16eb2f30c3c11d2ab594a5c4911200677a82ecad2a·...·]-3">}</span><span·class="gp·unselectable">923 </span><span·class="p"·data-group-id="7119540600-3">{</span><span·class="p"·data-group-id="7119540600-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="7119540600-4">]</span><span[·...·truncated·by·diffoscope;·len:·240,·SHA:·c41a2e54f42e0020375128fd88633814bc2d6e1dd22b6928f78f906f21f25ad8·...·]-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="6708240327-6">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="6708240327-7">(</span><span·class="n">E</span><span·class="p"·data-group-id="6708240327-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><[·...·truncated·by·diffoscope;·len:·314,·SHA:·c2c04e9a07db63f56420503ec34d236dcfefacd84c81452e6024977bae42b4ed·...·]-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="7119540600-6">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="7119540600-7">(</span><span·class="n">E</span><span·class="p"·data-group-id="7119540600-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><[·...·truncated·by·diffoscope;·len:·314,·SHA:·27ee1b6b218356be12e5bf7e8b9912edebbac587fe3e264c81907530d7818fd1·...·]-6">)</span><span·class="p">.</span><span·class="w">
925 </span><span·class="p"·data-group-id="6708240327-8">{</span><span·class="p"·data-group-id="6708240327-9">[</span><span·class="mi">5</span><span·class="p"·data-group-id="6708240327-9">]</span><span·class="p">,</span><span·class="p"·data-group-id="6708240327-10">[</span><span·class="mi">3</span>[·...·truncated·by·diffoscope;·len:·144,·SHA:·b778f49c4e107521462648c160f3ebc39c86c781765d8b94cd7e6d3c9ab664b7·...·]-8">}</span><span·class="gp·unselectable">925 </span><span·class="p"·data-group-id="7119540600-8">{</span><span·class="p"·data-group-id="7119540600-9">[</span><span·class="mi">5</span><span·class="p"·data-group-id="7119540600-9">]</span><span·class="p">,</span><span·class="p"·data-group-id="7119540600-10">[</span><span·class="mi">3</span>[·...·truncated·by·diffoscope;·len:·144,·SHA:·a31da563d7f36837c7c658fa99b90de366afe3a9f6fd84b19e721f1f14e0b57b·...·]-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="6708240327-11">(</span><span·class="n">Queue1</span><span·class="p"·data-group-id="6708240327-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="7119540600-11">(</span><span·class="n">Queue1</span><span·class="p"·data-group-id="7119540600-11">)</span><span·class="p">.</span><span·class="w">
927 </span><span·class="p"·data-group-id="6708240327-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="6708240327-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="7119540600-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="7119540600-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.2/doc/html/rand.html
    
Offset 197, 32 lines modifiedOffset 197, 32 lines modified
197 or·be·an·explicit·argument·and·return·value.</p><p>The·functions·with·implicit·state·operates·on·a·state·stored197 or·be·an·explicit·argument·and·return·value.</p><p>The·functions·with·implicit·state·operates·on·a·state·stored
198 in·the·process·dictionary·under·the·key·<code·class="inline">rand_seed</code>.··If·that·key198 in·the·process·dictionary·under·the·key·<code·class="inline">rand_seed</code>.··If·that·key
199 doesn't·exist·when·the·function·is·called,·<a·href="#seed/1"><code·class="inline">seed/1</code></a>·is·called·automatically199 doesn't·exist·when·the·function·is·called,·<a·href="#seed/1"><code·class="inline">seed/1</code></a>·is·called·automatically
200 with·the·<a·href="#default-algorithm"><em>default·algorithm</em></a>·and·creates200 with·the·<a·href="#default-algorithm"><em>default·algorithm</em></a>·and·creates
201 a·reasonably·unpredictable·seed.</p><p>The·functions·with·explicit·state·don't·use·the·process·dictionary.</p><h4><em>Examples</em></h4><p>Simple·use;·create·and·seed·the201 a·reasonably·unpredictable·seed.</p><p>The·functions·with·explicit·state·don't·use·the·process·dictionary.</p><h4><em>Examples</em></h4><p>Simple·use;·create·and·seed·the
202 <a·href="#default-algorithm"><em>default·algorithm</em></a>·with·a·non-fixed·seed,202 <a·href="#default-algorithm"><em>default·algorithm</em></a>·with·a·non-fixed·seed,
203 if·not·already·done,·and·generate·two·uniformly·distibuted203 if·not·already·done,·and·generate·two·uniformly·distibuted
204 floating·point·numbers.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">R0</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">rand</span><span·class="p">:</span><span·class="nf">uniform</span><span·class="p"·data-group-id="5281750626-1">(</span><span·class="p"·data-group-id="5281750626-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="1145701188-1">(</span><span·class="p"·data-group-id="1145701188-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="5281750626-2">(</span><span·class="p"·data-group-id="5281750626-2">)</span><span·class="p">,</span></code></pre><p>Use·a·specified·algorithm:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">_</span><span·class="w">·</span><span·class="o"[·...·truncated·by·diffoscope;·len:·240,·SHA:·dd92f73c3bc4c005f369a269921311d9c2bb35e5cf2cb0e939ca05a1d210eadd·...·]-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="1145701188-2">(</span><span·class="p"·data-group-id="1145701188-2">)</span><span·class="p">,</span></code></pre><p>Use·a·specified·algorithm:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">_</span><span·class="w">·</span><span·class="o"[·...·truncated·by·diffoscope;·len:·240,·SHA:·18e0b454514e138adc40493bcc4cf4f72e947cbc6b5759ec0296b8a54d76be44·...·]-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="8058950699-2">(</span><span·class="p"·data-group-id="8058950699-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:·86709c9c6d2a040b64711a510b4fe83f53d54bf6003145a015fe6918cb764856·...·]-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="3403743453-2">(</span><span·class="p"·data-group-id="3403743453-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:·b235f6ce009170d2a9357a748e3c5cc4f0686963bf2bb3ec765f8cc4acf29cd2·...·]-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="0191401176-3">(</span><span·class="p"·data-group-id="0191401176-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:·e51e2f69a41be62c6de10cd7ba5350f476b48a51688b243691429c915405c205·...·]-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="8917490392-3">(</span><span·class="p"·data-group-id="8917490392-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:·21ef92f761c697f57d1ceb4cb056611941d8fae64e7b91b11b96eb03b16f355e·...·]-1">)</span><span·class="p">,</span><span·class="w">
208 </span><span·class="p"·data-group-id="3328959559-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="3328959559-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·654,·SHA:·b5ca8d8745d663d3eb741964aabcf7f066d758badd2c27e0828d092f3f9521e7·...·]-1">)</span><span·class="p">,</span><span·class="w">208 </span><span·class="p"·data-group-id="4583080807-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="4583080807-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·654,·SHA:·edec8da7e4aa19817dbd1cde76f88ec9dfd2ab08ec32609168a77dac35152ea0·...·]-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="2579594821-2">(</span><span·class="p"·data-group-id="2579594821-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="0418361628-2">(</span><span·class="p"·data-group-id="0418361628-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="2579594821-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="257[·...·truncated·by·diffoscope;·len:·2113,·SHA:·5063e134440afc33219f0cbbd9c764ecaf46d1a4c77b72eb77864ef93e7fe8f3·...·]-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="0418361628-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="041[·...·truncated·by·diffoscope;·len:·2113,·SHA:·289d84f02006d1f7e12d5ebe89bcb21ff34a75696e925e55a862ec5ea55cc656·...·]-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="0330157555-1">(</span><span·class="nc">rand</span><span·class="p">:</span><span·class="nf">uniform</span><span·class="p"·data-group-id="0330157555-2">(</span><span·class="mi">256</span><span·class="p"·data-group-id="0330157555-2">)</span><span·class="w">·<[·...·truncated·by·diffoscope;·len:·2110,·SHA:·4abf0db9d2ec8dc8cd5834594fffaa4e6800f0e3f65b1175239843f9c568774e·...·]-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="9086571440-1">(</span><span·class="nc">rand</span><span·class="p">:</span><span·class="nf">uniform</span><span·class="p"·data-group-id="9086571440-2">(</span><span·class="mi">256</span><span·class="p"·data-group-id="9086571440-2">)</span><span·class="w">·<[·...·truncated·by·diffoscope;·len:·2110,·SHA:·ce0e0404a70d9008afbe4687da669faa1706cb447e0462598a759d46a3e01e05·...·]-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.6/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.6/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="1468185699-1">(</span><span·class="p"·data-group-id="1468185699-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="5324781953-1">(</span><span·class="p"·data-group-id="5324781953-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="1468185699-2">(</span><span·class="p"·data-group-id="1468185699-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="5324781953-2">(</span><span·class="p"·data-group-id="5324781953-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="1468185699-3">(</span><span·class="p"·data-group-id="1468185699-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="5324781953-3">(</span><span·class="p"·data-group-id="5324781953-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="4226919990-1">(</span><span·class="p"·data-group-id="4226919990-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="4226919990-2">)</span[·...·truncated·by·diffoscope;·len:·91,·SHA:·b8ed1c2371f2bb2cdc26b0309c430c41cd3b33dc3e11cfba6fe4c45ccc6afcea·...·]-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="4333800821-1">(</span><span·class="p"·data-group-id="4333800821-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="4333800821-2">)</span[·...·truncated·by·diffoscope;·len:·91,·SHA:·7fc56cb68c9f90b34d06b48928ee5d24ec61f464d2ea5a854c0351159c927ea9·...·]-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.2/doc/html/random.html
    
Offset 458, 17 lines modifiedOffset 458, 17 lines modified
458 ······<div·class="specs">458 ······<div·class="specs">
  
459 ··········<pre·translate="no"><span·class="attribute">-spec</span>·seed(A1,·A2,·A3)·->·undefined·|·<a·href="#t:ran/0">ran</a>()·when·A1·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:integer/0">integer</a>(),·A2·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:integer/0">integer</a>(),·A3·::·<a·href="../../../../erts-15.2.6/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.6/doc/html/erlang.html#t:integer/0">integer</a>(),·A2·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:integer/0">integer</a>(),·A3·::·<a·href="../../../../erts-15.2.6/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="6089456727-1">(</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">phash2</span><span·class="p"·data-group-id="6089456727-2">(</span><span·class="p"·data-group-id="6089456727-3">[</span><span·class="nf">node</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·183,·SHA:·bcb54317422fedf4be98aa26e99754c25aa578bcc4bd9b14c7239d39d8d45014·...·]-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="6307446442-1">(</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">phash2</span><span·class="p"·data-group-id="6307446442-2">(</span><span·class="p"·data-group-id="6307446442-3">[</span><span·class="nf">node</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·183,·SHA:·214ed0f6484993ec45d025981558e8cbccff166c8abf92e630ef48570ea7f5a9·...·]-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="6089456727-5">(</span><span·class="p"·data-group-id="6089456727-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="6307446442-5">(</span><span·class="p"·data-group-id="6307446442-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="6089456727-6">(</span><span·class="p"·data-group-id="6089456727-6">)</span><span·class="p"·data-group-id="6089456727-1">)</span></code></pre><p>For·details,·see·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#phash2/1"><code·class="inline">erlang:phash2/1</code></a>,·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#node/0"><code·class="inline">erlang:node/0</code></a>,·<a·href="../../../../erts-15.2.6/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="6307446442-6">(</span><span·class="p"·data-group-id="6307446442-6">)</span><span·class="p"·data-group-id="6307446442-1">)</span></code></pre><p>For·details,·see·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#phash2/1"><code·class="inline">erlang:phash2/1</code></a>,·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#node/0"><code·class="inline">erlang:node/0</code></a>,·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#monotonic_time/0"><code·class="inline">erlang:monotonic_time/0</code></a>,
465 and·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#unique_integer/0"><code·class="inline">erlang:unique_integer/0</code></a>.</p>465 and·<a·href="../../../../erts-15.2.6/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.2/doc/html/re.html
    
Offset 1371, 17 lines modifiedOffset 1371, 17 lines modified
1371 been·passed,·<a·href="#run/2"><code·class="inline">run/2,3</code></a>·is·committed·to·find·a·match·at·the·current1371 been·passed,·<a·href="#run/2"><code·class="inline">run/2,3</code></a>·is·committed·to·find·a·match·at·the·current
1372 starting·point,·or·not·at·all,·for·example:</p><pre><code·class="text">a+(*COMMIT)b</code></pre><p>This·matches·&quot;xxaab&quot;·but·not·&quot;aacaab&quot;.·It·can·be·thought·of·as·a·kind·of·dynamic1372 starting·point,·or·not·at·all,·for·example:</p><pre><code·class="text">a+(*COMMIT)b</code></pre><p>This·matches·&quot;xxaab&quot;·but·not·&quot;aacaab&quot;.·It·can·be·thought·of·as·a·kind·of·dynamic
1373 anchor,·or·&quot;I've·started,·so·I·must·finish&quot;.·The·name·of·the·most·recently1373 anchor,·or·&quot;I've·started,·so·I·must·finish&quot;.·The·name·of·the·most·recently
1374 passed·(<em>MARK)·in·the·path·is·passed·back·when·(</em>COMMIT)·forces·a·match·failure.</p><p>If·more·than·one·backtracking·verb·exists·in·a·pattern,·a·different·one·that1374 passed·(<em>MARK)·in·the·path·is·passed·back·when·(</em>COMMIT)·forces·a·match·failure.</p><p>If·more·than·one·backtracking·verb·exists·in·a·pattern,·a·different·one·that
1375 follows·(<em>COMMIT)·can·be·triggered·first,·so·merely·passing·(</em>COMMIT)·during·a1375 follows·(<em>COMMIT)·can·be·triggered·first,·so·merely·passing·(</em>COMMIT)·during·a
1376 match·does·not·always·guarantee·that·a·match·must·be·at·this·starting·point.</p><p>Notice·that·(*COMMIT)·at·the·start·of·a·pattern·is·not·the·same·as·an·anchor,1376 match·does·not·always·guarantee·that·a·match·must·be·at·this·starting·point.</p><p>Notice·that·(*COMMIT)·at·the·start·of·a·pattern·is·not·the·same·as·an·anchor,
1377 unless·the·PCRE·start-of-match·optimizations·are·turned·off,·as·shown·in·the1377 unless·the·PCRE·start-of-match·optimizations·are·turned·off,·as·shown·in·the
1378 following·example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">re</span><span·class="p">:</span><span·class="nf">run</span><span·class="p"·data-group-id="2087075152-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="2087075152-2">[</span><span·class="p"·data-group-id="2087075152-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="2087075152-3">}</span><span·class="p"·data-group-id="2087075152-2">]</span><span·class="p"·data-group-id="2087075152-1">)</span><span·class="p">.</span><span·class="w"> 
1379 </span><span·class="p"·data-group-id="2087075152-4">{</span><span·class="ss">match</span><span·class="p">,</span><span·class="p"·data-group-id="2087075152-5">[</span><span·class="s">&quot;abc&quot;</span><span·class="p"·data-group-id="2087075152-5">]</span><span·class="p"·data-group-id="2087075152-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="2087075152-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:·c69b5429a65f9ca7e8d6773c56a202e23040dafccc690d22ac502b647855e330·...·]">)</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="7000890846-1">(</span><span·class="[·...·truncated·by·diffoscope;·len:·512,·SHA:·a7fa1bdc8b65ad9a13fd20a15840f1ed89271f04c2f074405821c5ddaba5bf92·...·]">)</span><span·class="p">.</span><span·class="w">
 1379 </span><span·class="p"·data-group-id="7000890846-4">{</span><span·class="ss">match</span><span·class="p">,</span><span·class="p"·data-group-id="7000890846-5">[</span><span·class="s">&quot;abc&quot;</span><span·class="p"·data-group-id="7000890846-5">]</span><span·class="p"·data-group-id="7000890846-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="7000890846-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="7000890846-7">[</span><span·class="p"·data-group-id="7000890846-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="7000890846-8">}</span><span·class="p">,</span><span·class="ss">no_start_optimize</span><span·class="p"·data-group-id="7000890846-7">]</span><span·class="p"·data-group-id="7000890846-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.6/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.6/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="3742825363-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">MP</span><span·class="p"·data-group-id="3742825363-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:·0ce0333be595b1b50be28470c03a707dc0de921852b1c4a393e67b49d348c399·...·]-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="7611566090-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">MP</span><span·class="p"·data-group-id="7611566090-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:·3a838e882f372244f0d6f0ba759c34fdc5b4e240068fdf54f4b65b170240bf9b·...·]-2">)</span><span·class="p">.</span><span·class="w">
2089 </span><span·class="p"·data-group-id="3742825363-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="3742825363-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="7611566090-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="7611566090-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="3742825363-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="7611566090-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="3742825363-5">&gt;&gt;</span><span·class="p"·data-group-id="3742825363-4">}</span><span·class="p"·data-group-id="3742825363-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="7611566090-5">&gt;&gt;</span><span·class="p"·data-group-id="7611566090-4">}</span><span·class="p"·data-group-id="7611566090-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="3742825363-6">(</span><span·class="n">MP</span><span·class="p">,</span><span·class="ss">namelist</span><span·class="p"·data-group-id="3742825363-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="7611566090-6">(</span><span·class="n">MP</span><span·class="p">,</span><span·class="ss">namelist</span><span·class="p"·data-group-id="7611566090-6">)</span><span·class="p">.</span><span·class="w">
2093 </span><span·class="p"·data-group-id="3742825363-7">{</span><span·class="ss">namelist</span><span·class="p">,</span><span·class="p"·data-group-id="3742825363-8">[</span><span·class="p"·data-group-id="3742825363-9">&lt;&lt;</span><span·class="s">&quot;A&quot;</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·489,·SHA:·c158cf35957fa21e9d7bad341b0ee8ae4dd0bf978732e51d084eec75dab3807a·...·]-7">}</span><span·class="gp·unselectable">2093 </span><span·class="p"·data-group-id="7611566090-7">{</span><span·class="ss">namelist</span><span·class="p">,</span><span·class="p"·data-group-id="7611566090-8">[</span><span·class="p"·data-group-id="7611566090-9">&lt;&lt;</span><span·class="s">&quot;A&quot;</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·489,·SHA:·bcf561f340ef97f0fc5dcb4d3937e0859c0c6fa6706f67e7c90ab908dff80122·...·]-7">}</span><span·class="gp·unselectable">
2094 3&gt;·</span><span·class="p"·data-group-id="3742825363-12">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">MPD</span><span·class="p"·data-group-id="3742825363-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:·cb21791e58537b7d38ff87ba2c3a1cbd7e3b7d80851d7225f9564af18cfb2016·...·]-13">)</span><span·class="p">.</span><span·class="w">2094 3&gt;·</span><span·class="p"·data-group-id="7611566090-12">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">MPD</span><span·class="p"·data-group-id="7611566090-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:·e75c20e81c979b4ed44a1fcced7ad24d99e270c32409fb0e84405371f755788e·...·]-13">)</span><span·class="p">.</span><span·class="w">
2095 </span><span·class="p"·data-group-id="3742825363-15">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="3742825363-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="7611566090-15">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="7611566090-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="3742825363-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="7611566090-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="3742825363-17">&gt;&gt;</span><span·class="p"·data-group-id="3742825363-16">}</span><span·class="p"·data-group-id="3742825363-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="7611566090-17">&gt;&gt;</span><span·class="p"·data-group-id="7611566090-16">}</span><span·class="p"·data-group-id="7611566090-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="3742825363-18">(</span><span·class="n">MPD</span><span·class="p">,</span><span·class="ss">namelist</span><span·class="p"·data-group-id="3742825363-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="7611566090-18">(</span><span·class="n">MPD</span><span·class="p">,</span><span·class="ss">namelist</span><span·class="p"·data-group-id="7611566090-18">)</span><span·class="p">.</span><span·class="w">
2099 </span><span·class="p"·data-group-id="3742825363-19">{</span><span·class="ss">namelist</span><span·class="p">,</span><span·class="p"·data-group-id="3742825363-20">[</span><span·class="p"·data-group-id="3742825363-21">&lt;&lt;</span><span·class="s">&quot;B&quot;</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·312,·SHA:·b4aa95aa30b537b0f442ec1e97b769629141b04d6b22de6ba4aede2ffc2f756c·...·]-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="7611566090-19">{</span><span·class="ss">namelist</span><span·class="p">,</span><span·class="p"·data-group-id="7611566090-20">[</span><span·class="p"·data-group-id="7611566090-21">&lt;&lt;</span><span·class="s">&quot;B&quot;</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·312,·SHA:·a724550ae8538b8b343e9b79b81ffd3c36535d25d46aea8f91df599fc12167d6·...·]-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="1299429586-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">MP</span><span·class="p"·data-group-id="1299429586-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:·92fbaa99de132d9b989d274e336d4d1f9de711dff0ef57444059266a0eb64ae4·...·]-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="2595006104-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">MP</span><span·class="p"·data-group-id="2595006104-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:·d096d59d98b2aea98688f3c6a5ca96bc421566e08651a8fea781b32093804944·...·]-2">)</span><span·class="p">.</span><span·class="w">
2105 </span><span·class="p"·data-group-id="1299429586-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="1299429586-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="2595006104-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2595006104-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="1299429586-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="2595006104-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="1299429586-5">&gt;&gt;</span><span·class="p"·data-group-id="1299429586-4">}</span><span·class="p"·data-group-id="1299429586-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="2595006104-5">&gt;&gt;</span><span·class="p"·data-group-id="2595006104-4">}</span><span·class="p"·data-group-id="2595006104-3">}</span><span·class="gp·unselectable">
2108 2&gt;·</span><span·class="p"·data-group-id="1299429586-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="1299429586-6">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·251,·SHA:·768d429e3e02715abb064492bbaa097937639b2781f2762fa9ecc4d31c35e19a·...·]-7">)</span><span·class="p">.</span><span·class="w">2108 2&gt;·</span><span·class="p"·data-group-id="2595006104-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="2595006104-6">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·251,·SHA:·9ffbac939e52476ffc1cd60eff2f8b7d2fa20023f7c06864aa82d2318792e2f7·...·]-7">)</span><span·class="p">.</span><span·class="w">
2109 </span><span·class="p"·data-group-id="1299429586-8">{</span><span·class="ss">namelist</span><span·class="p">,</span><span·class="p"·data-group-id="1299429586-9">[</span><span·class="p"·data-group-id="1299429586-10">&lt;&lt;</span><span·class="s">&quot;A&quot;</span><span·class="p"·data-group-id="1299429586-10">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="1299429586-11">&lt;&lt;</span><span·class="s">&quot;B&quot;</span><span·class="p"·data-group-id="1299429586-11">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="1299429586-12">&lt;&lt;</span><span·class="s">&quot;C&quot;</span><span·class="p"·data-group-id="1299429586-12">&gt;&gt;</span><span·class="p"·data-group-id="1299429586-9">]</span><span·class="p"·data-group-id="1299429586-8">}</span><span·class="gp·unselectable"> 
2110 3&gt;·</span><span·class="p"·data-group-id="1299429586-13">{</span><span·class="ss">match</span><span·class="p">,</span><span·class="n">L</span><span·class="p"·data-group-id="1299429586-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="1299429586-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="1299429586-15">[</span><span·class="p"·data-group-id="1299429586-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="1299429586-16">}</span><span·class="p"·data-group-id="1299429586-15">]</span><span·class="p"·data-group-id="1299429586-14">)</span><span·class="p">.</span><span·class="w"> 
2111 </span><span·class="p"·data-group-id="1299429586-17">{</span><span·class="ss">match</span><span·class="p">,</span><span·class="p"·data-group-id="1299429586-18">[</span><span·class="p"·data-group-id="1299429586-19">&lt;&lt;</span><span·class="s">&quot;A&quot;</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·422,·SHA:·5ba1b712542c0a4c0777b86ff9ec596ea97c24354ea071e190e9ef7a452f9205·...·]">}</span><span·class="gp·unselectable">2109 </span><span·class="p"·data-group-id="2595006104-8">{</span><span·class="ss">namelist</span><span·class="p">,</span><span·class="p"·data-group-id="2595006104-9">[</span><span·class="p"·data-group-id="2595006104-10">&lt;&lt;</span><span·class="s">&quot;A&quot;</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·493,·SHA:·3704b8b13c46cb718fca800130581ae5bc02489c7c7b0922c9a4137613b7a266·...·]">}</span><span·class="gp·unselectable">
 2110 3&gt;·</span><span·class="p"·data-group-id="2595006104-13">{</span><span·class="ss">match</span><span·class="p">,</span><span·class="n">L</span><span·class="p"·data-group-id="2595006104-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="2595006104-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="2595006104-15">[</span><span·class="p"·data-group-id="2595006104-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="2595006104-16">}</span><span·class="p"·data-group-id="2595006104-15">]</span><span·class="p"·data-group-id="2595006104-14">)</span><span·class="p">.</span><span·class="w">
 2111 </span><span·class="p"·data-group-id="2595006104-17">{</span><span·class="ss">match</span><span·class="p">,</span><span·class="p"·data-group-id="2595006104-18">[</span><span·class="p"·data-group-id="2595006104-19">&lt;&lt;</span><span·class="s">&quot;A&quot;</span><span·class="p"·data-group-id="2595006104-19">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="2595006104-20">&lt;&lt;</span><span·class="p"·data-group-id="2595006104-20">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="2595006104-21">&lt;&lt;</span><span·class="p"·data-group-id="2595006104-21">&gt;&gt;</span><span·class="p"·data-group-id="2595006104-18">]</span><span·class="p"·data-group-id="2595006104-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="1299429586-22">(</span><span·class="n">N</span><span·class="p">,</span><span·class="n">L</span><span·class="p"·data-group-id="1299429586-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="2595006104-22">(</span><span·class="n">N</span><span·class="p">,</span><span·class="n">L</span><span·class="p"·data-group-id="2595006104-22">)</span><span·class="p">.</span><span·class="w">
2113 </span><span·class="p"·data-group-id="1299429586-23">[</span><span·class="p"·data-group-id="1299429586-24">{</span><span·class="p"·data-group-id="1299429586-25">&lt;&lt;</span><span·class="s">&quot;A&quot;</span><span·class="p"·data-group-id="1299429586-25">&gt;&gt;</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·1128,·SHA:·5fcd19bd42ea08ec03cc60dde12fd62c6d1809c524a9e5842404b8e941a001c6·...·]-23">]</span></code></pre>2113 </span><span·class="p"·data-group-id="2595006104-23">[</span><span·class="p"·data-group-id="2595006104-24">{</span><span·class="p"·data-group-id="2595006104-25">&lt;&lt;</span><span·class="s">&quot;A&quot;</span><span·class="p"·data-group-id="2595006104-25">&gt;&gt;</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·1128,·SHA:·ae671b30a65715252af1f38e648867b90f1abf90bc4f73f47a18426044db511c·...·]-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="3277163564-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="3277163564-2">[</span><span·class="p"·data-group-id="3277163564-3">{</span><span·class="ss">return</span><span·class="p">,</span><span·class="ss">list</span><span·class="p"·data-group-id="3277163564-3">}</span><span·class="p"·data-group-id="3277163564-2">]</span><span·class="p"·data-group-id="3277163564-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[·...·truncated·by·diffoscope;·len:·568,·SHA:·844c9329a5261a93723926b5cf2f60b839d99ee0d462e45d6c55ccb355e4fdf5·...·]-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·clas[·...·truncated·by·diffoscope;·len:·648,·SHA:·dae89f4f2d397b0aedf29accc1f6109e201ae8b948284fd26d89f9fce40c8ee9·...·]-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="7052880125-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="7052880125-2">[</span><span·class="p"·data-group-id="7052880125-3">{</span><span·class="ss">return</span><span·class="p">,</span><span·class="ss">list</span><span·class="p"·data-group-id="7052880125-3">}</span><span·class="p"·data-group-id="7052880125-2">]</span><span·class="p"·data-group-id="7052880125-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="1214313240-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="3298258577-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="1214313240-2">(</span><span·class="n">Whole</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1214313240-3">[</span><span·class="p"·data-group-id="1214313240-4">&lt;&lt;</span><span·class="n">C</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·133,·SHA:·e64341f66d4e5d8d68694c66da63b2f07a9d2e47a1167387c2296b35a3a1c501·...·]-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="3298258577-2">(</span><span·class="n">Whole</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3298258577-3">[</span><span·class="p"·data-group-id="3298258577-4">&lt;&lt;</span><span·class="n">C</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·133,·SHA:·c37f9131487b25bb152db0975a55f59ab9be57730020d226874854b639c1fd86·...·]-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
2212 ·········</span><span·class="p"·data-group-id="1214313240-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:·88c6a23bfe8421e39ddfa1ad24d3d6b8844b2a306524c3444b14ca21d3320754·...·]-5">&gt;&gt;</span><span·class="w">2212 ·········</span><span·class="p"·data-group-id="3298258577-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:·3fe66eed345300ac453fa51bdfbaab5d6ce95f3a76e90da238f26c0a906ddbfd·...·]-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="1214313240-7">[</span><span·class="p"·data-group-id="1214313240-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="1214313240-8">}</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·72,·SHA:·2b1b57ba79e74a7a49a971f81c119a3e36037c3b65c2215b67868b687899dce2·...·]-1">)</span><span·class="p">.</span><span·class="w">2214 ····</span><span·class="p"·data-group-id="3298258577-7">[</span><span·class="p"·data-group-id="3298258577-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="3298258577-8">}</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·72,·SHA:·6d45a9280e410aeefc96c10333c1f8773bcf1f2e2a11d42ff5c77d35a7d9a942·...·]-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.6/doc/html/erlang.html#t:list/0"><code·class="inline">list/0</code></a>·of·<a·href="../../../../erts-15.2.6/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.6/doc/html/erlang.html#t:list/0"><code·class="inline">list/0</code></a>·of·<a·href="../../../../erts-15.2.6/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="1219170233-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="1219170233-2">[</span><span·class="ss">global</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·69,·SHA:·e03bbb27a3c8d7d0aee607c78953828b5a039b8a4dddd18655e15bc4599b8838·...·]-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="7166868970-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="7166868970-2">[</span><span·class="ss">global</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·69,·SHA:·e2a39c2a47bc5b6cc36e0a95c56d65f048cefd72e08267d565dee1754c682f4d·...·]-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="2230033747-1">{</span><span·class="ss">match</span><span·class="p">,</span><span·class="p"·data-group-id="2230033747-2">[</span><span·class="p"·data-group-id="2230033747-3">[</span><span·class="p"·data-group-id="2230033747-4">{</span><span·class="mi">0</sp[·...·truncated·by·diffoscope;·len:·2008,·SHA:·f3847abb46f9bb8bde24b6a107ffd308f3bdad17350f0673dd87c0c9706b103a·...·]-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="0971725190-1">{</span><span·class="ss">match</span><span·class="p">,</span><span·class="p"·data-group-id="0971725190-2">[</span><span·class="p"·data-group-id="0971725190-3">[</span><span·class="p"·data-group-id="0971725190-4">{</span><span·class="mi">0</sp[·...·truncated·by·diffoscope;·len:·2008,·SHA:·cfa73899d2e55c2c2a900bb9ac82a57a3602460473ee590562f3a2614624ff3b·...·]-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="3957943443-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="3957943443-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="0123846514-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="0123846514-1">)</span><span·class="p">.</span><span·class="w">
2411 </span><span·class="p"·data-group-id="3957943443-2">{</span><span·class="ss">match</span><span·class="p">,</span><span·class="p"·data-group-id="3957943443-3">[</span><span·class="p"·data-group-id="3957943443-4">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">14</span>[·...·truncated·by·diffoscope;·len:·352,·SHA:·2dad47eddd8562e73448327458af15a1327a8497b94872a27b2f7384a4f1a1a9·...·]-2">}</span><span·class="gp·unselectable">2411 </span><span·class="p"·data-group-id="0123846514-2">{</span><span·class="ss">match</span><span·class="p">,</span><span·class="p"·data-group-id="0123846514-3">[</span><span·class="p"·data-group-id="0123846514-4">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">14</span>[·...·truncated·by·diffoscope;·len:·352,·SHA:·2cb4bc88648fb9f5022a228983bfd65ece59bbd21088745c57d28ad17cfaa56a·...·]-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="3957943443-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="3957943443-7">[</span><span·class="p"·data-group-id="3957943443-8[·...·truncated·by·diffoscope;·len:·251,·SHA:·7894fda14f39327b450660c41253c360a03252f20f2fe2643ae0df75eff9f1c2·...·]-6">)</span><span·class="p">.</span><span·class="w">2412 2&gt;·</span><span·class="nc">re</span><span·class="p">:</span><span·class="nf">run</span><span·class="p"·data-group-id="0123846514-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="0123846514-7">[</span><span·class="p"·data-group-id="0123846514-8[·...·truncated·by·diffoscope;·len:·251,·SHA:·688177a90d5123cf951804543a7238c1c39dd65932d7c2296fd03b6452d7820a·...·]-6">)</span><span·class="p">.</span><span·class="w">
Max diff block lines reached; 53928/116526 bytes (46.28%) of diff not shown.
7.13 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2.2/doc/html/sets.html
    
Offset 152, 19 lines modifiedOffset 152, 19 lines modified
152 <p>The·following·functions·in·this·module·also·exist·and·provide·the·same152 <p>The·following·functions·in·this·module·also·exist·and·provide·the·same
153 functionality·in·the·<a·href="gb_sets.html"><code·class="inline">gb_sets</code></a>·and·<a·href="ordsets.html"><code·class="inline">ordsets</code></a>·modules.·That·is,·by·only153 functionality·in·the·<a·href="gb_sets.html"><code·class="inline">gb_sets</code></a>·and·<a·href="ordsets.html"><code·class="inline">ordsets</code></a>·modules.·That·is,·by·only
154 changing·the·module·name·for·each·call,·you·can·try·out·different·set154 changing·the·module·name·for·each·call,·you·can·try·out·different·set
155 representations.</p><ul><li><a·href="#add_element/2"><code·class="inline">add_element/2</code></a></li><li><a·href="#del_element/2"><code·class="inline">del_element/2</code></a></li><li><a·href="#filter/2"><code·class="inline">filter/2</code></a></li><li><a·href="#filtermap/2"><code·class="inline">filtermap/2</code></a></li><li><a·href="#fold/3"><code·class="inline">fold/3</code></a></li><li><a·href="#from_list/1"><code·class="inline">from_list/1</code></a></li><li><a·href="#intersection/1"><code·class="inline">intersection/1</code></a></li><li><a·href="#intersection/2"><code·class="inline">intersection/2</code></a></li><li><a·href="#is_element/2"><code·class="inline">is_element/2</code></a></li><li><a·href="#is_empty/1"><code·class="inline">is_empty/1</code></a></li><li><a·href="#is_equal/2"><code·class="inline">is_equal/2</code></a></li><li><a·href="#is_set/1"><code·class="inline">is_set/1</code></a></li><li><a·href="#is_subset/2"><code·class="inline">is_subset/2</code></a></li><li><a·href="#map/2"><code·class="inline">map/2</code></a></li><li><a·href="#new/0"><code·class="inline">new/0</code></a></li><li><a·href="#size/1"><code·class="inline">size/1</code></a></li><li><a·href="#subtract/2"><code·class="inline">subtract/2</code></a></li><li><a·href="#to_list/1"><code·class="inline">to_list/1</code></a></li><li><a·href="#union/1"><code·class="inline">union/1</code></a></li><li><a·href="#union/2"><code·class="inline">union/2</code></a></li></ul><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>While·the·three·set·implementations·offer·the·same·<em>functionality</em>·with155 representations.</p><ul><li><a·href="#add_element/2"><code·class="inline">add_element/2</code></a></li><li><a·href="#del_element/2"><code·class="inline">del_element/2</code></a></li><li><a·href="#filter/2"><code·class="inline">filter/2</code></a></li><li><a·href="#filtermap/2"><code·class="inline">filtermap/2</code></a></li><li><a·href="#fold/3"><code·class="inline">fold/3</code></a></li><li><a·href="#from_list/1"><code·class="inline">from_list/1</code></a></li><li><a·href="#intersection/1"><code·class="inline">intersection/1</code></a></li><li><a·href="#intersection/2"><code·class="inline">intersection/2</code></a></li><li><a·href="#is_element/2"><code·class="inline">is_element/2</code></a></li><li><a·href="#is_empty/1"><code·class="inline">is_empty/1</code></a></li><li><a·href="#is_equal/2"><code·class="inline">is_equal/2</code></a></li><li><a·href="#is_set/1"><code·class="inline">is_set/1</code></a></li><li><a·href="#is_subset/2"><code·class="inline">is_subset/2</code></a></li><li><a·href="#map/2"><code·class="inline">map/2</code></a></li><li><a·href="#new/0"><code·class="inline">new/0</code></a></li><li><a·href="#size/1"><code·class="inline">size/1</code></a></li><li><a·href="#subtract/2"><code·class="inline">subtract/2</code></a></li><li><a·href="#to_list/1"><code·class="inline">to_list/1</code></a></li><li><a·href="#union/1"><code·class="inline">union/1</code></a></li><li><a·href="#union/2"><code·class="inline">union/2</code></a></li></ul><section·role="note"·class="admonition·info"><h4·class="admonition-title·info">Note</h4><p>While·the·three·set·implementations·offer·the·same·<em>functionality</em>·with
156 respect·to·the·aforementioned·functions,·their·overall·<em>behavior</em>·may·differ.156 respect·to·the·aforementioned·functions,·their·overall·<em>behavior</em>·may·differ.
157 As·mentioned,·this·module·considers·elements·as·different·if·and·only·if·they157 As·mentioned,·this·module·considers·elements·as·different·if·and·only·if·they
158 do·not·match·(<code·class="inline">=:=</code>),·while·both·<a·href="ordsets.html"><code·class="inline">ordsets</code></a>·and·<a·href="gb_sets.html"><code·class="inline">gb_sets</code></a>·consider·elements158 do·not·match·(<code·class="inline">=:=</code>),·while·both·<a·href="ordsets.html"><code·class="inline">ordsets</code></a>·and·<a·href="gb_sets.html"><code·class="inline">gb_sets</code></a>·consider·elements
159 as·different·if·and·only·if·they·do·not·compare·equal·(<code·class="inline">==</code>).</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">sets</span><span·class="p">:</span><span·class="nf">is_element</span><span·class="p"·data-group-id="4168753197-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="4168753197-2">(</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·204,·SHA:·fb562f69ab23c7ebcde206b9b86b26b36ac037dfa14e99c3be73b1eb7355c16a·...·]-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="7056181339-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="7056181339-2">(</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·204,·SHA:·645f4049f5936be4acd8d298446112fccefd2a304621bff21924ec04f373ed41·...·]-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="4168753197-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="4168753197-5">(</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·207,·SHA:·552b4de4fbf74242a5c46c6bd43d8b3f6665a4fb12213ecd72444d9a34329eb4·...·]-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="7056181339-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="7056181339-5">(</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·207,·SHA:·22b28702063d81d133146c29f69f055fc232de594571f8a8120cd421a65180ff·...·]-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="4168753197-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="4168753197-8">(</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·207,·SHA:·ca16a3ac3d015d2c291745efc563a28ac8d01439253bc32e50bb49d17d0af04f·...·]-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="7056181339-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="7056181339-8">(</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·207,·SHA:·c90c5305afeb8e02e558800485c8aeca145ae873c7ae0dc4a010a0df9d823e16·...·]-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.2/doc/html/shell.html
    
Offset 162, 15 lines modifiedOffset 162, 15 lines modified
162 used·by·the·compiler·are·unavailable·at·runtime.·So,·to·read·the·record·syntax162 used·by·the·compiler·are·unavailable·at·runtime.·So,·to·read·the·record·syntax
163 and·print·tuples·as·records·when·possible,·record·definitions·must·be·maintained163 and·print·tuples·as·records·when·possible,·record·definitions·must·be·maintained
164 by·the·shell·itself.</p><p>The·shell·commands·for·reading,·defining,·forgetting,·listing,·and·printing164 by·the·shell·itself.</p><p>The·shell·commands·for·reading,·defining,·forgetting,·listing,·and·printing
165 records·are·described·below.·Notice·that·each·job·has·its·own·set·of·record165 records·are·described·below.·Notice·that·each·job·has·its·own·set·of·record
166 definitions.·To·facilitate·matters,·record·definitions·in·modules166 definitions.·To·facilitate·matters,·record·definitions·in·modules
167 <code·class="inline">shell_default</code>·and·<code·class="inline">user_default</code>·(if·loaded)·are·read·each·time·a·new·job·is167 <code·class="inline">shell_default</code>·and·<code·class="inline">user_default</code>·(if·loaded)·are·read·each·time·a·new·job·is
168 started.·For·example,·adding·the·following·line·to·<code·class="inline">user_default</code>·makes·the168 started.·For·example,·adding·the·following·line·to·<code·class="inline">user_default</code>·makes·the
169 definition·of·<code·class="inline">file_info</code>·readily·available·in·the·shell:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="6631880804-1">(</span><span·class="s">&quot;kernel/include/file.hrl&quot;</span><span·class="p"·data-group-id="6631880804-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="7167616062-1">(</span><span·class="s">&quot;kernel/include/file.hrl&quot;</span><span·class="p"·data-group-id="7167616062-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="0537325590-1">(</span><span·class="n">BEAM</span><span·class="p"·data-group-id="0537325590-1">)</span><span·class="w">·</span><span·class="ss">emulator</span><span·class="w">·</span><span·class="ss">version</span><span·class="w">·</span><span·class="mf">5.[·...·truncated·by·diffoscope;·len:·364,·SHA:·c7c4225963414b6de2dc219884356dfa031af8a010b064104d4d140502b2ce9e·...·]-3">]</span><span·class="w">237 </span><span·class="n">Erlang</span><span·class="w">·</span><span·class="p"·data-group-id="8498262456-1">(</span><span·class="n">BEAM</span><span·class="p"·data-group-id="8498262456-1">)</span><span·class="w">·</span><span·class="ss">emulator</span><span·class="w">·</span><span·class="ss">version</span><span·class="w">·</span><span·class="mf">5.[·...·truncated·by·diffoscope;·len:·364,·SHA:·734229fa6a40f89be41cdf5e40bee4b4809337f44c6cd737441126c786035d4e·...·]-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="0537325590-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="0537325590-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="8498262456-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="8498262456-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="0928074500-1">(</span><span·class="n">Str</span><span·class="p"·data-group-id="0928074500-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="4631616264-1">(</span><span·class="n">Str</span><span·class="p"·data-group-id="4631616264-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="6416962403-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="6416962403-2">(</span><span·class="n">Str</span><span·class="p"·data-group-id="6416962403-2">)</span><span·class="p"·data-group-id="6416962403-1">}</span><span·class="p">.</span><span·class="w"> 
242 </span><span·class="p"·data-group-id="6416962403-3">{</span><span·class="mi">4</span><span·class="p">,</span><span·class="ss">abcd</span><span·class="p"·data-group-id="6416962403-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:·6dbc08e948ecbc74bcd2e67ce802d7306878d5770e6c14bdb61314be16fc2a05·...·]
 242 </span><span·class="p"·data-group-id="2728617397-3">{</span><span·class="mi">4</span><span·class="p">,</span><span·class="ss">abcd</span><span·class="p"·data-group-id="2728617397-3">}</span></code></pre><p>Command·3·builds·the·tuple·<code·class="inline">Descriptor</code>,·evaluating·the·BIF
243 <a·href="../../../../erts-15.2.6/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.6/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="9389275139-1">(</span><span·class="p"·data-group-id="9389275139-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="5221033113-1">(</span><span·class="p"·data-group-id="5221033113-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="9389275139-2">{</span><span·class="mi">4</span><span·class="p">,</span><span·class="ss">abcd</span><span·class="p"·data-group-id="9389275139-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="5221033113-2">{</span><span·class="mi">4</span><span·class="p">,</span><span·class="ss">abcd</span><span·class="p"·data-group-id="5221033113-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="8337068669-1">(</span><span·class="n">L</span><span·class="p"·data-group-id="8337068669-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="0254869279-1">(</span><span·class="n">L</span><span·class="p"·data-group-id="0254869279-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="7193038330-1">(</span><span·class="p"·data-group-id="7193038330-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="7598914811-1">(</span><span·class="p"·data-group-id="7598914811-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="7193038330-2">{</span><span·class="mi">4</span><span·class="p">,</span><span·class="ss">abcd</span><span·class="p"·data-group-id="7193038330-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="7598914811-2">{</span><span·class="mi">4</span><span·class="p">,</span><span·class="ss">abcd</span><span·class="p"·data-group-id="7598914811-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="8971720069-1">(</span><span·class="n">L</span><span·class="p"·data-group-id="8971720069-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="6407898332-1">(</span><span·class="n">L</span><span·class="p"·data-group-id="6407898332-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="7628247791-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="7628247791-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="7950790210-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="7950790210-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="7628247791-2">{</span><span·class="mi">4</span><span·class="p">,</span><span·class="ss">abcd</span><span·class="p"·data-group-id="7628247791-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="7950790210-2">{</span><span·class="mi">4</span><span·class="p">,</span><span·class="ss">abcd</span><span·class="p"·data-group-id="7950790210-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="4475372416-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="4475372416-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="0735817748-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="0735817748-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="8297828375-1">{</span><span·class="mi">4</span><span·class="p">,</span><span·class="ss">abcd</span><span·class="p"·data-group-id="8297828375-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="4147774877-1">{</span><span·class="mi">4</span><span·class="p">,</span><span·class="ss">abcd</span><span·class="p"·data-group-id="4147774877-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="6815798324-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="6815798324-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="3467919091-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="3467919091-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="6815798324-2">{</span><span·class="mi">4</span><span·class="p">,</span><span·class="ss">abcd</span><span·class="p"·data-group-id="6815798324-2">}</span><span·class="gp·unselectable">270 </span><span·class="p"·data-group-id="3467919091-2">{</span><span·class="mi">4</span><span·class="p">,</span><span·class="ss">abcd</span><span·class="p"·data-group-id="3467919091-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="2704239442-1">(</span><span·class="p"·data-group-id="2704239442-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="6360327069-1">(</span><span·class="p"·data-group-id="6360327069-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="0549036053-1">(</span><span·class="n">X</span><span·class="p"·data-group-id="0549036053-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="5105588674-1">(</span><span·class="n">X</span><span·class="p"·data-group-id="5105588674-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="0549036053-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="0549036053-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="5105588674-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="5105588674-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="2782971386-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="2782971386-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="5132219362-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="5132219362-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="2782971386-2">(</span><span·class="ss">aa</span><span·class="p"·data-group-id="2782971386-2">)</span><span·class="p">.</span><span·class="w">278 18&gt;·</span><span·class="nf">get</span><span·class="p"·data-group-id="5132219362-2">(</span><span·class="ss">aa</span><span·class="p"·data-group-id="5132219362-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="1267188945-1">(</span><span·class="mi">1</span><span·class="p"·data-group-id="1267188945-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="2726523184-1">(</span><span·class="mi">1</span><span·class="p"·data-group-id="2726523184-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="6522696188-1">(</span><span·class="p"·data-group-id="6522696188-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="6890813640-1">(</span><span·class="p"·data-group-id="6890813640-1">)</span><span·class="p">.</span><span·class="w">
284 </span><span·class="p"·data-group-id="6522696188-2">[</span><span·class="p"·data-group-id="6522696188-3">{</span><span·class="ss">aa</span><span·class="p">,</span><span·class="ss">worked</span><span·class="p"·data-group-id="6522696188-3">}</span><span·class="p"·data-group-id="6522696188-2">]</span><span·class="gp·unselectable">284 </span><span·class="p"·data-group-id="6890813640-2">[</span><span·class="p"·data-group-id="6890813640-3">{</span><span·class="ss">aa</span><span·class="p">,</span><span·class="ss">worked</span><span·class="p"·data-group-id="6890813640-3">}</span><span·class="p"·data-group-id="6890813640-2">]</span><span·class="gp·unselectable">
285 21&gt;·</span><span·class="nf">put</span><span·class="p"·data-group-id="6522696188-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="6522696188-4">)</span><span·class="p">.</span><span·class="w">285 21&gt;·</span><span·class="nf">put</span><span·class="p"·data-group-id="6890813640-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="6890813640-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="6522696188-5">(</span><span·class="mi">2</span><span·class="p"·data-group-id="6522696188-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="6890813640-5">(</span><span·class="mi">2</span><span·class="p"·data-group-id="6890813640-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="3211448975-1">(</span><span·class="ss">aa</span><span·class="p"·data-group-id="3211448975-1">)</span><span·class="p">.</span><span·class="w">293 24&gt;·</span><span·class="nf">get</span><span·class="p"·data-group-id="8417757393-1">(</span><span·class="ss">aa</span><span·class="p"·data-group-id="8417757393-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="0675780746-1">(</span><span·class="p"·data-group-id="0675780746-1">)</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">put</span><span·class="p"·data-group-id="0675780746-2">(</span><span·class="ss">aa</span><span·class="p">,</span><sp[·...·truncated·by·diffoscope;·len:·91,·SHA:·a604cdbd086bf6b5095ee5046c39c13bc06f5c5645115a138dcb5eeb5446e62f·...·]-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="8020505127-1">(</span><span·class="p"·data-group-id="8020505127-1">)</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">put</span><span·class="p"·data-group-id="8020505127-2">(</span><span·class="ss">aa</span><span·class="p">,</span><sp[·...·truncated·by·diffoscope;·len:·91,·SHA:·6a5453222004ea3e8682debd3ceed2a5f4b6aa373364ebf6f89b9eacdbc8f8c7·...·]-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="0675780746-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="0675780746-4">[</span><span·class="mi">1</span><sp[·...·truncated·by·diffoscope;·len:·91,·SHA:·d20bd2cf03cb6c9ed23c83ac899b303a018ccdc7749f890cb8189ecaeca8a733·...·]-3">)</span><span·class="p">.</span><span·class="w">297 26&gt;·</span><span·class="nf">spawn</span><span·class="p"·data-group-id="8020505127-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="8020505127-4">[</span><span·class="mi">1</span><sp[·...·truncated·by·diffoscope;·len:·91,·SHA:·cecc86cc818935ae36d061b6d6d56e008cad0ef7360aadf47b1f7969db3256bd·...·]-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="0675780746-5">(</span><span·class="ss">aa</span><span·class="p"·data-group-id="0675780746-5">)</span><span·class="p">.</span><span·class="w">299 27&gt;·</span><span·class="nf">get</span><span·class="p"·data-group-id="8020505127-5">(</span><span·class="ss">aa</span><span·class="p"·data-group-id="8020505127-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="3278336345-1">(</span><span·class="s">&quot;hello·hello\n&quot;</span><span·class="p"·data-group-id="3278336345-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="9541293870-1">(</span><span·class="s">&quot;hello·hello\n&quot;</span><span·class="p"·data-group-id="9541293870-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="3278336345-2">(</span><span·class="mi">28</span><span·class="p"·data-group-id="3278336345-2">)</span><span·class="p">.</span><span·class="w">306 29&gt;·</span><span·class="nf">e</span><span·class="p"·data-group-id="9541293870-2">(</span><span·class="mi">28</span><span·class="p"·data-group-id="9541293870-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="3278336345-3">(</span><span·class="mi">28</span><span·class="p"·data-group-id="3278336345-3">)</span><span·class="p">.</span><span·class="w">309 30&gt;·</span><span·class="nf">v</span><span·class="p"·data-group-id="9541293870-3">(</span><span·class="mi">28</span><span·class="p"·data-group-id="9541293870-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="6134890598-1">(</span><span·class="ss">ex</span><span·class="p"·data-group-id="6134890598-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="1159528681-1">(</span><span·class="ss">ex</span><span·class="p"·data-group-id="1159528681-1">)</span><span·class="p">.</span><span·class="w">
315 </span><span·class="p"·data-group-id="6134890598-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">ex</span><span·class="p"·data-group-id="6134890598-2">}</span><span·class="gp·unselectable">315 </span><span·class="p"·data-group-id="1159528681-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">ex</span><span·class="p"·data-group-id="1159528681-2">}</span><span·class="gp·unselectable">
316 32&gt;·</span><span·class="nf">rr</span><span·class="p"·data-group-id="6134890598-3">(</span><span·class="ss">ex</span><span·class="p"·data-group-id="6134890598-3">)</span><span·class="p">.</span><span·class="w">316 32&gt;·</span><span·class="nf">rr</span><span·class="p"·data-group-id="1159528681-3">(</span><span·class="ss">ex</span><span·class="p"·data-group-id="1159528681-3">)</span><span·class="p">.</span><span·class="w">
317 </span><span·class="p"·data-group-id="6134890598-4">[</span><span·class="ss">rec</span><span·class="p"·data-group-id="6134890598-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="1159528681-4">[</span><span·class="ss">rec</span><span·class="p"·data-group-id="1159528681-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="9391951361-1">(</span><span·class="ss">rec</span><span·class="p"·data-group-id="9391951361-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="1952785310-1">(</span><span·class="ss">rec</span><span·class="p"·data-group-id="1952785310-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="9391951361-2">(</span><span·class="ss">rec</span><span·class="p">,</span><span·class="p"·data-group-id="9391951361-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:·1cbcc651fdca5923b9ef6b05fcd95858c51652640faf24a6263c0188c849aa98·...·]-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="1952785310-2">(</span><span·class="ss">rec</span><span·class="p">,</span><span·class="p"·data-group-id="1952785310-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:·f572036721b32f4f4f21cd26a99115b82c9994b133b5ca74d016b33e7814965c·...·]-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="1169370716-1">{</span><span·class="p"·data-group-id="1169370716-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="0106454437-1">{</span><span·class="p"·data-group-id="0106454437-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="6598864703-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="6598864703-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="7784907773-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="7784907773-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="6598864703-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:·82,·SHA:·96668e90e8b735fd8c779cf193d94cc54c1577180576013c83a7e7f5d5f9d35b·...·]3-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="7784907773-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:·82,·SHA:·70fbcea299a831e02931d0be5c7ea62deafc9eae5f384fbbf5b227d9daec711e·...·]3-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="4814933868-1">(</span><span·class="nf">v</span><span·class="p"·data-group-id="4814933868-2">(</span><span·class="o">-</span><span·class="mi">1</span><span·class="p"·data-group-id="4814933868-2">)</span><span·class="p"·data-group-id="4814933868-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="1225290457-1">(</span><span·class="nf">v</span><span·class="p"·data-group-id="1225290457-2">(</span><span·class="o">-</span><span·class="mi">1</span><span·class="p"·data-group-id="1225290457-2">)</span><span·class="p"·data-group-id="1225290457-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="4814933868-3">{</span><span·class="ss">a</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">undefined</span><span·class="p">,</span><span·class="ss">b</span><span·class="w">·</span><span·class="o">=</span><span·c[·...·truncated·by·diffoscope;·len:·83,·SHA:·4d4c52a07d7f6f32e9f8b687f1306cc73e7efa2e4bf283cfbf6bd188c7ffb5b9·...·]-3">}</span><span·class="w">326 </span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="1225290457-3">{</span><span·class="ss">a</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">undefined</span><span·class="p">,</span><span·class="ss">b</span><span·class="w">·</span><span·class="o">=</span><span·c[·...·truncated·by·diffoscope;·len:·83,·SHA:·481f242dedfe1e51a06fd65d0a572c17f8e7dc0b85ce3724af15c6bdb896c33f·...·]-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="2886729278-1">(</span><span·class="ss">rec</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2886729278-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:·272,·SHA:·d93c43a8328b49f81c821a61d089a2e7b296a433d9a2197bfaa1e0f787f99553·...·]8-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="4525210828-1">(</span><span·class="ss">rec</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4525210828-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:·272,·SHA:·3488bd0b89e4e92d300ad470d38f456edb836f82bbde40d436449e1a64499367·...·]8-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="1363361840-1">{</span><span·class="p"·data-group-id="1363361840-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="6568271601-1">{</span><span·class="p"·data-group-id="6568271601-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="1363361840-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="1363361840-3">[</span><span·class="p"·data-group-id="1363361840-3">]</span><span·class="p"·data-group-id="1363361840-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[·...·truncated·by·diffoscope;·len:·372,·SHA:·058a1c726b2092d57733ce7474bd6b58afba61a8efc1ae3330396fc483a2bb0d·...·]</span><span·class="w">331 </span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="6568271601-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="6568271601-3">[</span><span·class="p"[·...·truncated·by·diffoscope;·len:·84,·SHA:·f454c05c81a6c428d13bf1c9c415d2c0adf3751a684c2cbde0c5181d73839b4b·...·]</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="9848288540-1">(</span><span·class="ss">rec</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9848288540-2">{</span><span·class="ss">c</span><span·class="p"·data-group-id="9848288540-2">}</span><span·class="p"·data-group-id="9848288540-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="2240569734-3">{</span><span·class="p"·data-group-id="2240569734-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="9848288540-3">{</span><span·class="p"·data-group-id="9848288540-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="2240569734-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="2240569734-4">}</span><span·class="w">335 </span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="9848288540-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="9848288540-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
Max diff block lines reached; 22937/74685 bytes (30.71%) of diff not shown.
3.0 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2.2/doc/html/shell_default.html
    
Offset 125, 18 lines modifiedOffset 125, 18 lines modified
125 ····<small·class="app-vsn"·translate="no">(stdlib·v6.2.2)</small>125 ····<small·class="app-vsn"·translate="no">(stdlib·v6.2.2)</small>
  
126 ··</h1>126 ··</h1>
  
  
127 ····<section·id="moduledoc">127 ····<section·id="moduledoc">
128 <p>Customizing·the·Erlang·environment.</p><p>The·functions·in·this·module·are·called·when·no·module·name·is·specified·in·a128 <p>Customizing·the·Erlang·environment.</p><p>The·functions·in·this·module·are·called·when·no·module·name·is·specified·in·a
129 shell·command.</p><p>Consider·the·following·shell·dialog:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">reverse</span><span·class="p"·data-group-id="2317033100-1">(</span><span·class="s">&quot;abc&quot;</span><span·class="p"·data-group-id="2317033100-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="1841383211-1">(</span><span·class="s">&quot;abc&quot;</span><span·class="p"·data-group-id="1841383211-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="2317033100-2">(</span><span·class="ss">foo</span><span·class="p"·data-group-id="2317033100-2">)</span><span·class="p">.</span><span·class="w">131 2&gt;·</span><span·class="nf">c</span><span·class="p"·data-group-id="1841383211-2">(</span><span·class="ss">foo</span><span·class="p"·data-group-id="1841383211-2">)</span><span·class="p">.</span><span·class="w">
132 </span><span·class="p"·data-group-id="2317033100-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="2317033100-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="1841383211-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="1841383211-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.2/doc/html/slave.html
    
Offset 367, 15 lines modifiedOffset 367, 15 lines modified
367 ······</div>367 ······</div>
  
368 <p>Starts·a·number·of·pseudo·servers.·A·pseudo·server·is·a·server·with·a·registered368 <p>Starts·a·number·of·pseudo·servers.·A·pseudo·server·is·a·server·with·a·registered
369 name·that·does·nothing·but·pass·on·all·message·to·the·real·server·that·executes369 name·that·does·nothing·but·pass·on·all·message·to·the·real·server·that·executes
370 at·a·master·node.·A·pseudo·server·is·an·intermediary·that·only·has·the·same370 at·a·master·node.·A·pseudo·server·is·an·intermediary·that·only·has·the·same
371 registered·name·as·the·real·server.</p><p>For·example,·if·you·have·started·a·slave·node·<code·class="inline">N</code>·and·want·to·execute·<code·class="inline">pxw</code>371 registered·name·as·the·real·server.</p><p>For·example,·if·you·have·started·a·slave·node·<code·class="inline">N</code>·and·want·to·execute·<code·class="inline">pxw</code>
372 graphics·code·on·this·node,·you·can·start·server·<code·class="inline">pxw_server</code>·as·a·pseudo·server372 graphics·code·on·this·node,·you·can·start·server·<code·class="inline">pxw_server</code>·as·a·pseudo·server
373 at·the·slave·node.·This·is·illustrated·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">rpc</span><span·class="p">:</span><span·class="nf">call</span><span·class="p"·data-group-id="6605163605-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:·c44687ae607a12d6e672a3eafdc099594e5e00c26716d9fbd932bbc97a67c773·...·]-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="5850191053-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:·6f91d835ba442d035ca3b525c71537ec964122fd45614e84b629ea329045e91e·...·]-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.6/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.6/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="4164480326-1">(</span><span·class="p"·data-group-id="4164480326-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="0180702381-1">(</span><span·class="p"·data-group-id="0180702381-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="4164480326-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="4164480326-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="0180702381-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="0180702381-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.2/doc/html/sofs.html
    
Offset 258, 19 lines modifiedOffset 258, 19 lines modified
258 However,·this·optimization·can·only·be·used·when·the·elements·of·the·unordered258 However,·this·optimization·can·only·be·used·when·the·elements·of·the·unordered
259 set·are·atomic·or·ordered·sets.·It·must·also·be·the·case·that·the·type·of·the259 set·are·atomic·or·ordered·sets.·It·must·also·be·the·case·that·the·type·of·the
260 elements·matches·some·clause·of·Fun·(the·type·of·the·created·set·is·the·result260 elements·matches·some·clause·of·Fun·(the·type·of·the·created·set·is·the·result
261 of·applying·Fun·to·the·type·of·the·given·set),·and·that·Fun·does·nothing·but261 of·applying·Fun·to·the·type·of·the·given·set),·and·that·Fun·does·nothing·but
262 selecting,·duplicating,·or·rearranging·parts·of·the·elements.</li><li>Specifying·a·SetFun·as·an·integer·I·is·equivalent·to·specifying262 selecting,·duplicating,·or·rearranging·parts·of·the·elements.</li><li>Specifying·a·SetFun·as·an·integer·I·is·equivalent·to·specifying
263 <code·class="inline">{external,·fun(X) -&gt;·element(I, X) end}</code>,·but·is·to·be·preferred,·as·it·makes263 <code·class="inline">{external,·fun(X) -&gt;·element(I, X) end}</code>,·but·is·to·be·preferred,·as·it·makes
264 it·possible·to·handle·this·case·even·more·efficiently.</li></ul><p>Examples·of·SetFuns:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="k">fun</span><span·class="w">·</span><span·class="nc">sofs</span><span·class="p">:</span><span·class="ss">union</span><span·class="p">/</span><span·class="mi">1</span><span·class="w">264 it·possible·to·handle·this·case·even·more·efficiently.</li></ul><p>Examples·of·SetFuns:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="k">fun</span><span·class="w">·</span><span·class="nc">sofs</span><span·class="p">:</span><span·class="ss">union</span><span·class="p">/</span><span·class="mi">1</span><span·class="w">
265 </span><span·class="nf">fun</span><span·class="p"·data-group-id="8544469659-1">(</span><span·class="n">S</span><span·class="p"·data-group-id="8544469659-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:·6a4b3397667b056e93f346315d1b5f6b3a4fb1c1701931e80d8b49f48ca68081·...·]-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="5855417790-1">(</span><span·class="n">S</span><span·class="p"·data-group-id="5855417790-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:·520e80525fffc04351ee794bb4412d4b64ebb3fabb34d05b8d382044615da822·...·]-2">)</span><span·class="w">·</span><span·class="k">end</span><span·class="w">
266 </span><span·class="p"·data-group-id="8544469659-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="8544469659-4">(</span><span·class="n">A</span><span·class="p"·data-group-id="8544469659-4">)</sp[·...·truncated·by·diffoscope;·len:·194,·SHA:·7f2ef0c5ed68f3ca9159915d9d68994974dba75d7ffbabe4bcabeba267341387·...·]-3">}</span><span·class="w">266 </span><span·class="p"·data-group-id="5855417790-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="5855417790-4">(</span><span·class="n">A</span><span·class="p"·data-group-id="5855417790-4">)</sp[·...·truncated·by·diffoscope;·len:·194,·SHA:·c113241821ff39a54fe494664648cddaf99a1632d83a5b61cfb3a1bfb69a0b14·...·]-3">}</span><span·class="w">
267 </span><span·class="p"·data-group-id="8544469659-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="8544469659-6">(</span><span·class="p"·data-group-id="8544469659-7">{</span><span·class="n">A</sp[·...·truncated·by·diffoscope;·len:·550,·SHA:·511310018be85e54d1cb2f735527d2c9ff0e8f32ad14ae8a1f37773a25d90fdb·...·]-5">}</span><span·class="w">267 </span><span·class="p"·data-group-id="5855417790-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="5855417790-6">(</span><span·class="p"·data-group-id="5855417790-7">{</span><span·class="n">A</sp[·...·truncated·by·diffoscope;·len:·550,·SHA:·4fa5b77a9063250d52d49d52355848c8caa8e5e342b050a19f93ceb66dfa5e0d·...·]-5">}</span><span·class="w">
268 </span><span·class="p"·data-group-id="8544469659-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="8544469659-10">(</span><span·class="p"·data-group-id="8544469659-11">{</span><span·class="p">_</[·...·truncated·by·diffoscope;·len:·508,·SHA:·372c1d91a39872dcbf37713c3af66b5a1507c1120bf86387fcf7ef1af1c61dc5·...·]-9">}</span><span·class="w">268 </span><span·class="p"·data-group-id="5855417790-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="5855417790-10">(</span><span·class="p"·data-group-id="5855417790-11">{</span><span·class="p">_</[·...·truncated·by·diffoscope;·len:·508,·SHA:·86fbf4196375e24ed8a6f608cbd4c30454d8eb8eca724e3e73d4d1a8f756bba1·...·]-9">}</span><span·class="w">
269 </span><span·class="p"·data-group-id="8544469659-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="8544469659-14">(</span><span·class="p"·data-group-id="8544469659-15">{</span><span·class="p">_<[·...·truncated·by·diffoscope;·len:·1025,·SHA:·4c607ef34c203be1ea4a3912f8399436f75a65359fbf7fd7bee1f7c8d7fb47be·...·]-13">}</span><span·class="w">269 </span><span·class="p"·data-group-id="5855417790-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="5855417790-14">(</span><span·class="p"·data-group-id="5855417790-15">{</span><span·class="p">_<[·...·truncated·by·diffoscope;·len:·1025,·SHA:·fef0b9b98de03dd6910211fff7d6a82ff02a886f5a9e65af3add544f094d3fe1·...·]-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="5820742989-1">(</span><span·class="p"·data-group-id="5820742989-2">[</span><span·class="p"·data-group-id="5820742989-3">[</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">b</span><span·class="p"·data-group-id="5820742989-3">]</span><[·...·truncated·by·diffoscope;·len:·297,·SHA:·75a443e1ad73ae0e65fdfa924deb7df85e96cecae5f21e43dbb47b80174ae78f·...·]-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="3422139483-1">(</span><span·class="p"·data-group-id="3422139483-2">[</span><span·class="p"·data-group-id="3422139483-3">[</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">b</span><span·class="p"·data-group-id="3422139483-3">]</span><[·...·truncated·by·diffoscope;·len:·297,·SHA:·541c0ae4fb730405bbfe1e45f25698f45414db61ebe3d2d2d90dd9caeaf53ed5·...·]-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="5820742989-5">(</span><span·class="n">Ss</span><span·class="p"·data-group-id="5820742989-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="3422139483-5">(</span><span·class="n">Ss</span><span·class="p"·data-group-id="3422139483-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="5820742989-6">(</span><span·class="n">CR</span><span·class="p"·data-group-id="5820742989-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="3422139483-6">(</span><span·class="n">CR</span><span·class="p"·data-group-id="3422139483-6">)</span><span·class="p">.</span><span·class="w">
1804 </span><span·class="p"·data-group-id="5820742989-7">[</span><span·class="p"·data-group-id="5820742989-8">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="p"·data-group-id="5820742989-9">[</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">b</span><span[·...·truncated·by·diffoscope;·len:·1231,·SHA:·52601f42f77b277e98192b0e38efb378f5020f3f81e744aadbfc0ac04a3e3093·...·]-7">]</span></code></pre>1804 </span><span·class="p"·data-group-id="3422139483-7">[</span><span·class="p"·data-group-id="3422139483-8">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="p"·data-group-id="3422139483-9">[</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">b</span><span[·...·truncated·by·diffoscope;·len:·1231,·SHA:·35d6120730afeaabf1ccde5376c005c5746a6182cf97f4d390aa7a333e593e19·...·]-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="5061967414-1">(</span><span·class="p"·data-group-id="5061967414-2">[</span><span·class="p"·data-group-id="5061967414-3">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="5061967414-3">}</span><[·...·truncated·by·diffoscope;·len:·501,·SHA:·793c76daca62b31637ca2d7e9065b4077753a34dcdd57ce14fcd144b45c64c27·...·]-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="4920463680-1">(</span><span·class="p"·data-group-id="4920463680-2">[</span><span·class="p"·data-group-id="4920463680-3">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="4920463680-3">}</span><[·...·truncated·by·diffoscope;·len:·501,·SHA:·db2455987cdfe202db20c1ec7804d62e47b41500066df660e9a3266fcd682942·...·]-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="5061967414-6">(</span><span·class="p"·data-group-id="5061967414-7">[</span><span·class="p"·data-group-id="5061967414-8">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="ss">x</span><span·class="p"·data-group-id="5061967414-8">}</span><[·...·truncated·by·diffoscope;·len:·503,·SHA:·bb7b87526482a9ca57c700df93ce8c483eaf7fb8f282b7eeeb7de5cc3321961a·...·]-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="4920463680-6">(</span><span·class="p"·data-group-id="4920463680-7">[</span><span·class="p"·data-group-id="4920463680-8">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="ss">x</span><span·class="p"·data-group-id="4920463680-8">}</span><[·...·truncated·by·diffoscope;·len:·503,·SHA:·1dd031e8ffd48a3902be47cd88b483a85078217bbb9b789710c13895e5dd83dd·...·]-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="5061967414-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="5061967414-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="4920463680-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="4920463680-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="5061967414-12">(</span><span·class="n">F</span><span·class="p"·data-group-id="5061967414-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="4920463680-12">(</span><span·class="n">F</span><span·class="p"·data-group-id="4920463680-12">)</span><span·class="p">.</span><span·class="w">
1835 </span><span·class="p"·data-group-id="5061967414-13">[</span><span·class="p"·data-group-id="5061967414-14">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">x</span><span·class="p"·data-group-id="5061967414-14">}</span><span·class="p">,</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·402,·SHA:·1feba6cfa129171cced8d9cf58f5e5c77fcc524901841d50e0c0809a7eea4722·...·]-13">]</span></code></pre>1835 </span><span·class="p"·data-group-id="4920463680-13">[</span><span·class="p"·data-group-id="4920463680-14">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">x</span><span·class="p"·data-group-id="4920463680-14">}</span><span·class="p">,</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·402,·SHA:·11c8198458639dd79ab1d548d335f6f6283a529da78533c7f3d3b60d5ea58baa·...·]-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="8645059523-1">(</span><span·class="p"·data-group-id="8645059523-2">[</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">b</span><span·class="p"·data-group-id="8645059523-2">]</span><span·class="p"·data-group-id="8645059523-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="8715619992-1">(</span><span·class="p"·data-group-id="8715619992-2">[</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">b</span><span·class="p"·data-group-id="8715619992-2">]</span><span·class="p"·data-group-id="8715619992-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="8645059523-3">(</span><span·class="mi">1</span><span·class="p"·data-group-id="8645059523-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="8715619992-3">(</span><span·class="mi">1</span><span·class="p"·data-group-id="8715619992-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="8645059523-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="8645059523-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="8715619992-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="8715619992-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="8645059523-5">(</span><span·class="n">R</span><span·class="p"·data-group-id="8645059523-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="8715619992-5">(</span><span·class="n">R</span><span·class="p"·data-group-id="8715619992-5">)</span><span·class="p">.</span><span·class="w">
1867 </span><span·class="p"·data-group-id="8645059523-6">[</span><span·class="p"·data-group-id="8645059523-7">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="8645059523-7">}</span><span·class="p">,</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·190,·SHA:·d8ac1706c80c9779f58300156029cd6057efbaca4294c7254ace8e23b8ac6937·...·]-6">]</span></code></pre>1867 </span><span·class="p"·data-group-id="8715619992-6">[</span><span·class="p"·data-group-id="8715619992-7">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="8715619992-7">}</span><span·class="p">,</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·190,·SHA:·429edc222791ef7875ece01715ea353b00a51d430b0d1a00ca2605e863a43106·...·]-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="4020074144-1">(</span><span·class="p"·data-group-id="4020074144-2">[</span><span·class="p"·data-group-id="4020074144-3">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="ss">a</span><span·class="p"·data-group-id="4020074144-3">}</span><[·...·truncated·by·diffoscope;·len:·501,·SHA:·0da4f06253f31e01d3fefaacb88159b6617c0d8ccf1318da1ab1983b20fdd660·...·]-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="5806752999-1">(</span><span·class="p"·data-group-id="5806752999-2">[</span><span·class="p"·data-group-id="5806752999-3">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="ss">a</span><span·class="p"·data-group-id="5806752999-3">}</span><[·...·truncated·by·diffoscope;·len:·501,·SHA:·45d178ba6b8f4dbd5c3d70d7f3169d632f6535535d8cd6215fe61eddc0b2d74e·...·]-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="4020074144-6">(</span><span·class="n">R1</span><span·class="p"·data-group-id="4020074144-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="5806752999-6">(</span><span·class="n">R1</span><span·class="p"·data-group-id="5806752999-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="4020074144-7">(</span><span·class="n">R2</span><span·class="p"·data-group-id="4020074144-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="5806752999-7">(</span><span·class="n">R2</span><span·class="p"·data-group-id="5806752999-7">)</span><span·class="p">.</span><span·class="w">
1895 </span><span·class="p"·data-group-id="4020074144-8">[</span><span·class="p"·data-group-id="4020074144-9">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="4020074144-9">}</span><span·class="p">,</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·399,·SHA:·21e2ae70468ddc9189ac69078f307e6e45920af823ba50ac86df271c1ed28fc0·...·]-8">]</span></code></pre>1895 </span><span·class="p"·data-group-id="5806752999-8">[</span><span·class="p"·data-group-id="5806752999-9">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="5806752999-9">}</span><span·class="p">,</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·399,·SHA:·2823861835019fe419c41658ca466fa33d1a4c9d872c45dd233b59ac287e653a·...·]-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="7608753228-1">(</span><span·class="p"·data-group-id="7608753228-2">[</span><span·class="p"·data-group-id="7608753228-3">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="ss">a</span><span·class="p"·data-group-id="7608753228-3">}</span><s[·...·truncated·by·diffoscope;·len:·704,·SHA:·eaab09598fcef5ac4a346243f26bbdd9e22d301103a95a1f42f1a49f1f98cf14·...·]-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="7207454555-1">(</span><span·class="p"·data-group-id="7207454555-2">[</span><span·class="p"·data-group-id="7207454555-3">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="ss">a</span><span·class="p"·data-group-id="7207454555-3">}</span><s[·...·truncated·by·diffoscope;·len:·704,·SHA:·e20e21af103bccd9bb20fef85087d6792523836ceacac0e80e38b9c7c39f5cb5·...·]-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="7608753228-7">(</span><span·class="n">R</span><span·class="p"·data-group-id="7608753228-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="7207454555-7">(</span><span·class="n">R</span><span·class="p"·data-group-id="7207454555-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="7608753228-8">(</span><span·class="n">S</span><span·class="p"·data-group-id="7608753228-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="7207454555-8">(</span><span·class="n">S</span><span·class="p"·data-group-id="7207454555-8">)</span><span·class="p">.</span><span·class="w">
2008 </span><span·class="p"·data-group-id="7608753228-9">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="7608753228-9">]</span></code></pre>2008 </span><span·class="p"·data-group-id="7207454555-9">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="7207454555-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="5847224907-1">(</span><span·class="p"·data-group-id="5847224907-2">[</span><span·class="p"·data-group-id="5847224907-3">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="ss">a</span><span·class="p"·data-group-id="5847224907-3">}</span><[·...·truncated·by·diffoscope;·len:·501,·SHA:·1b7bfc25ba888be500c62e7d283a6fafae32840137f83b3b0d40c18bdc612c6b·...·]-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="3932480029-1">(</span><span·class="p"·data-group-id="3932480029-2">[</span><span·class="p"·data-group-id="3932480029-3">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="ss">a</span><span·class="p"·data-group-id="3932480029-3">}</span><[·...·truncated·by·diffoscope;·len:·501,·SHA:·1fef7407a85fab6b2cf76db2b2840203ea45b5127bd392bf6d70907bb9fdc983·...·]-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="5847224907-6">(</span><span·class="p"·data-group-id="5847224907-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="5847224907-7">]</span><span[·...·truncated·by·diffoscope;·len:·36,·SHA:·1b1987ce6afb5cbfa1e350db9fd5edabb77a31d18ca06522e69b26cf0c2cb4e7·...·]-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="3932480029-6">(</span><span·class="p"·data-group-id="3932480029-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="3932480029-7">]</span><span[·...·truncated·by·diffoscope;·len:·36,·SHA:·748bcba4e4be1f7c8132642e862c1169ef77fbd7ceed7404458eb7fd05f69da6·...·]-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="5847224907-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="5847224907-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="3932480029-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="3932480029-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.2/doc/html/stdlib.epub
13.0 KB
zipinfo {}
Max HTML report size reached
520 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,·Apr·18·2025·13: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,·Apr·18·2025·15:16:56,·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="2705319279-1">[</span><span·class="n">DEVELOPMENT</span><span·class="p"·data-group-id="2705319279-1">]</span><span·class="w">·</span><span·class="p"·data-group-id="2705319279-2">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">1[·...·truncated·by·diffoscope;·len:·1496,·SHA:·68a819bfca5ed9859961ca6b9eb8743b2f6d6f8284c5fc22a7ad86a70cd8be0a·...·]-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="4708632884-1">[</span><span·class="n">DEVELOPMENT</span><span·class="p"·data-group-id="4708632884-1">]</span><span·class="w">·</span><span·class="p"·data-group-id="4708632884-2">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">1[·...·truncated·by·diffoscope;·len:·1496,·SHA:·cc712460b1150862077eb8cb28355f71c0399533a6ef5f75779c41458ea2c379·...·]-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="0157626449-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="0157626449-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="7777692064-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="7777692064-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="8865197016-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:·ab80dac88d301d084221c703dda8ec091173b0734df272698beb53895aa617c2·...·]-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="5772340990-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:·b86ca6e6cc7f461ef89c7f4fdf22e909ce913110be0f73d15e50d715cdd83584·...·]-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="5861929413-1">(</samp><samp·class="p"·data-group-id="5861929413-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="8903995683-1">(</samp><samp·class="p"·data-group-id="8903995683-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="5861929413-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="5861929413-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="8903995683-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="8903995683-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="4408150161-1">(</samp><samp·class="s">&quot;abc&quot;</samp><samp·class="p"·data-group-id="4408150161-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="4808140885-1">(</samp><samp·class="s">&quot;abc&quot;</samp><samp·class="p"·data-group-id="4808140885-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="4408150161-2">(</samp><samp·class="ss">foo</samp><samp·class="p"·data-group-id="4408150161-2">)</samp><samp·class="p">.</samp><samp·class="w">27 2&gt;·</samp><samp·class="nf">c</samp><samp·class="p"·data-group-id="4808140885-2">(</samp><samp·class="ss">foo</samp><samp·class="p"·data-group-id="4808140885-2">)</samp><samp·class="p">.</samp><samp·class="w">
28 </samp><samp·class="p"·data-group-id="4408150161-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="4408150161-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="4808140885-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="4808140885-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="3947223527-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="3947223527-2">(</samp><samp·class="p"·data-g[·...·truncated·by·diffoscope;·len:·203,·SHA:·97451b540fa599ccef950f193265a30d5d9c3164f9800ad1459adfc7562f2fea·...·]-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="3140097345-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="3140097345-2">(</samp><samp·class="p"·data-g[·...·truncated·by·diffoscope;·len:·203,·SHA:·4ac02a1b0cca8a0868d39408239637762ccef113d5d026fe5864ca14cf741e76·...·]-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="3947223527-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="3947223527-5">(</samp><samp·class="p"·dat[·...·truncated·by·diffoscope;·len:·206,·SHA:·cf90222e5f77276ea0a7e733942252016bf95adaede5ac0d41e9dbc393caa1fa·...·]-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="3140097345-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="3140097345-5">(</samp><samp·class="p"·dat[·...·truncated·by·diffoscope;·len:·206,·SHA:·e17ef9c2cd9d43850743dbba60c3305c5e781a56bf8a03ac2e4f2a5085ecc06a·...·]-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="3947223527-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="3947223527-8">(</samp><samp·class="p"·dat[·...·truncated·by·diffoscope;·len:·206,·SHA:·08a2157bae6fa2859ba82e2c0ad9dc4ae2c7c0f1143b1edb90ec65547cdddb06·...·]-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="3140097345-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="3140097345-8">(</samp><samp·class="p"·dat[·...·truncated·by·diffoscope;·len:·206,·SHA:·0aa6fb9000daa08199cfe401152c31f15a1b58d8724d6f69a58be73bb8e95f49·...·]-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="4089705409-1">(</samp><samp·class="nc">erlang</samp><samp·class="p">:</samp><samp·class="nf">phash2</samp><samp·class="p"·data-group-id="4089705409-2">(</samp><samp·class="p"·data-group-id="4089705409-3">[</samp><samp·class="nf">node</samp><samp·class="p"·[·...·truncated·by·diffoscope;·len:·184,·SHA:·0e3f6b0c16f917526c3342a0b12519636d55f451a338743f70fc5ab564e8c688·...·]-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="1342730820-1">(</samp><samp·class="nc">erlang</samp><samp·class="p">:</samp><samp·class="nf">phash2</samp><samp·class="p"·data-group-id="1342730820-2">(</samp><samp·class="p"·data-group-id="1342730820-3">[</samp><samp·class="nf">node</samp><samp·class="p"·[·...·truncated·by·diffoscope;·len:·184,·SHA:·bd81a9c3a5fa87d6d371c3c173bd14b7d20365e54ef1432754dbd6b907f288a7·...·]-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="4089705409-5">(</samp><samp·class="p"·data-group-id="4089705409-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="1342730820-5">(</samp><samp·class="p"·data-group-id="1342730820-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="4089705409-6">(</samp><samp·class="p"·data-group-id="4089705409-6">)</samp><samp·class="p"·data-group-id="4089705409-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="1342730820-6">(</samp><samp·class="p"·data-group-id="1342730820-6">)</samp><samp·class="p"·data-group-id="1342730820-1">)</samp></code></pre><p>For·details,·see·<a·href="../../../../lib/../erts/doc/html/erlang.html#phash2/1"><code·class="inline">erlang:phash2/1</code></a>,·<a·href="../../../../lib/../erts/doc/html/erlang.html#node/0"><code·class="inline">erlang:node/0</code></a>,·<a·href="../../../../lib/../erts/doc/html/erlang.html#monotonic_time/0"><code·class="inline">erlang:monotonic_time/0</code></a>,
344 and·<a·href="../../../../lib/../erts/doc/html/erlang.html#unique_integer/0"><code·class="inline">erlang:unique_integer/0</code></a>.</p>344 and·<a·href="../../../../lib/../erts/doc/html/erlang.html#unique_integer/0"><code·class="inline">erlang:unique_integer/0</code></a>.</p>
345 ··</section>345 ··</section>
346 </section>346 </section>
347 <section·class="detail"·id="uniform/0">347 <section·class="detail"·id="uniform/0">
  
348 ··<div·class="detail-header">348 ··<div·class="detail-header">
349 ····<a·href="#uniform/0"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">349 ····<a·href="#uniform/0"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
28.1 KB
OEBPS/rand.xhtml
Max HTML report size reached
159 KB
OEBPS/queue.xhtml
Max HTML report size reached
216 KB
OEBPS/qlc.xhtml
Max HTML report size reached
30.4 KB
OEBPS/proplists.xhtml
Max HTML report size reached
18.9 KB
OEBPS/proc_lib.xhtml
Max HTML report size reached
90.2 KB
OEBPS/peer.xhtml
Max HTML report size reached
123 KB
OEBPS/orddict.xhtml
Max HTML report size reached
40.3 KB
OEBPS/notes.xhtml
Max HTML report size reached
140 KB
OEBPS/ms_transform.xhtml
Max HTML report size reached
205 KB
OEBPS/maps.xhtml
Max HTML report size reached
164 KB
OEBPS/lists.xhtml
Max HTML report size reached
47.8 KB
OEBPS/json.xhtml
Max HTML report size reached
184 KB
OEBPS/io_protocol.xhtml
Max HTML report size reached
13.2 KB
OEBPS/io_lib.xhtml
Max HTML report size reached
399 KB
OEBPS/io.xhtml
Max HTML report size reached
59.2 KB
OEBPS/gen_statem.xhtml
Max HTML report size reached
6.54 KB
OEBPS/gen_server.xhtml
    
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="7921796580-1">(</samp><samp·class="n">Status</samp><samp·class="p"·data-group-id="7921796580-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="7905027403-1">(</samp><samp·class="n">Status</samp><samp·class="p"·data-group-id="7905027403-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="7921796580-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="7905027403-2">(</samp><samp·class="w">
1135 ····</samp><samp·class="nf">fun</samp><samp·class="p"·data-group-id="7921796580-3">(</samp><samp·class="ss">state</samp><samp·class="p">,</samp><samp·class="n">State</samp><samp·class="p"·data-group-id="7921796580-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="7905027403-3">(</samp><samp·class="ss">state</samp><samp·class="p">,</samp><samp·class="n">State</samp><samp·class="p"·data-group-id="7905027403-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="7921796580-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="7921796580-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="7905027403-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="7905027403-4">)</samp><samp·class="p">;</samp><samp·class="w">
1137 ·······</samp><samp·class="p"·data-group-id="7921796580-5">(</samp><samp·class="ss">message</samp><samp·class="p">,</samp><samp·class="p"·data-group-id="7921796580-6">{</samp><samp·class="ss">password</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p">_</samp><samp·class="n">Pass</sa[·...·truncated·by·diffoscope;·len:·97,·SHA:·e3919809be63c40d682c6a9e66436561c5d33a7d97b71ba28859ee9007a2976b·...·]-5">)</samp><samp·class="w">·</samp><samp·class="p">-&gt;</samp><samp·class="w">1137 ·······</samp><samp·class="p"·data-group-id="7905027403-5">(</samp><samp·class="ss">message</samp><samp·class="p">,</samp><samp·class="p"·data-group-id="7905027403-6">{</samp><samp·class="ss">password</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p">_</samp><samp·class="n">Pass</sa[·...·truncated·by·diffoscope;·len:·97,·SHA:·e7c1f74c783bc2b5eaf63fb135fc72e6884e30ca1ee1c100184e9073ba6434f0·...·]-5">)</samp><samp·class="w">·</samp><samp·class="p">-&gt;</samp><samp·class="w">
1138 ············</samp><samp·class="p"·data-group-id="7921796580-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="7921796580-7">}</samp><samp·class="p">;</samp><samp·class="w">1138 ············</samp><samp·class="p"·data-group-id="7905027403-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="7905027403-7">}</samp><samp·class="p">;</samp><samp·class="w">
1139 ·······</samp><samp·class="p"·data-group-id="7921796580-8">(</samp><samp·class="p">_</samp><samp·class="p">,</samp><samp·class="n">Value</samp><samp·class="p"·data-group-id="7921796580-8">)</samp><samp·class="w">·</samp><samp·class="p">-&gt;</samp><samp·class="w">1139 ·······</samp><samp·class="p"·data-group-id="7905027403-8">(</samp><samp·class="p">_</samp><samp·class="p">,</samp><samp·class="n">Value</samp><samp·class="p"·data-group-id="7905027403-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="7921796580-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="7905027403-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="2570614835-1">(</samp><samp·class="n">Status</samp><samp·class="p"·data-group-id="2570614835-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="2049372792-1">(</samp><samp·class="n">Status</samp><samp·class="p"·data-group-id="2049372792-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="2570614835-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="2049372792-2">(</samp><samp·class="w">
1155 ····</samp><samp·class="nf">fun</samp><samp·class="p"·data-group-id="2570614835-3">(</samp><samp·class="ss">state</samp><samp·class="p">,</samp><samp·class="n">State</samp><samp·class="p"·data-group-id="2570614835-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="2049372792-3">(</samp><samp·class="ss">state</samp><samp·class="p">,</samp><samp·class="n">State</samp><samp·class="p"·data-group-id="2049372792-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="2570614835-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="2570614835-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="2049372792-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="2049372792-4">)</samp><samp·class="p">;</samp><samp·class="w">
1157 ·······</samp><samp·class="p"·data-group-id="2570614835-5">(</samp><samp·class="ss">message</samp><samp·class="p">,</samp><samp·class="p"·data-group-id="2570614835-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:·c44d3787fd372d4a2035c5590444f9e6550b1b28caa20d29d0847748c8d77f7a·...·]-5">)</samp><samp·class="w">·</samp><samp·class="p">-&gt;</samp><samp·class="w">1157 ·······</samp><samp·class="p"·data-group-id="2049372792-5">(</samp><samp·class="ss">message</samp><samp·class="p">,</samp><samp·class="p"·data-group-id="2049372792-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:·694f6cf058a3e42f2536a0f6a114094d1ac39f5b646d58eeb5cf87a8ac5ea559·...·]-5">)</samp><samp·class="w">·</samp><samp·class="p">-&gt;</samp><samp·class="w">
1158 ············</samp><samp·class="p"·data-group-id="2570614835-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="2570614835-7">}</samp><samp·class="p">;</samp><samp·class="w">1158 ············</samp><samp·class="p"·data-group-id="2049372792-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="2049372792-7">}</samp><samp·class="p">;</samp><samp·class="w">
1159 ·······</samp><samp·class="p"·data-group-id="2570614835-8">(</samp><samp·class="p">_</samp><samp·class="p">,</samp><samp·class="n">Value</samp><samp·class="p"·data-group-id="2570614835-8">)</samp><samp·class="w">·</samp><samp·class="p">-&gt;</samp><samp·class="w">1159 ·······</samp><samp·class="p"·data-group-id="2049372792-8">(</samp><samp·class="p">_</samp><samp·class="p">,</samp><samp·class="n">Value</samp><samp·class="p"·data-group-id="2049372792-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="2570614835-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="2049372792-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="6587482632-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="6587482632-1">}</samp><samp·class="w">·</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·cla[·...·truncated·by·diffoscope;·len:·168,·SHA:·8c3907d934dfdfbea0da90b36c86c946afe7726e3bb285a2c82d57c4ae68e235·...·]-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="9027374937-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="9027374937-1">}</samp><samp·class="w">·</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·cla[·...·truncated·by·diffoscope;·len:·168,·SHA:·eef6c836ca743190a92f77df9025ea6f0e55284360cefdacada9d6a0adabc35a·...·]-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="6587482632-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="6587482632-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="9027374937-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="9027374937-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="6587482632-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="6587482632-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="9027374937-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="9027374937-4">)</samp><samp·class="p">.</samp><samp·class="w">
875 </samp><samp·class="p"·data-group-id="6587482632-5">[</samp><samp·class="p"·data-group-id="6587482632-5">]</samp><samp·class="gp·unselectable">875 </samp><samp·class="p"·data-group-id="9027374937-5">[</samp><samp·class="p"·data-group-id="9027374937-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="6587482632-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="6587482632-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="9027374937-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="9027374937-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="6587482632-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="6587482632-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="9027374937-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="9027374937-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="2227703612-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="2227[·...·truncated·by·diffoscope;·len:·373,·SHA:·670833096830ee9d6770951c859d82cc11a0309164b3ad3646e43ad5ad5fcfd9·...·]-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="1103136679-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="1103[·...·truncated·by·diffoscope;·len:·373,·SHA:·8f0674d79448d27f7fcf241fd6fc64307e258bc046882685bebd9c46ee93a36b·...·]-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="1951587695-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="195158769[·...·truncated·by·diffoscope;·len:·368,·SHA:·0cda1d14da6f599d3332492ebb7dc61632cc9c1d51a60b957423a9346f593247·...·]-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="1071912770-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="107191277[·...·truncated·by·diffoscope;·len:·368,·SHA:·4ea7d70211b146302e6740b70f2582a063fb60dd45630c091f47d8aba3179a2c·...·]-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="8662985974-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="86629859[·...·truncated·by·diffoscope;·len:·369,·SHA:·c2febbc1bac983810449624beaec52fc2f68c75e2efe7f803ce480a93e6cfd7e·...·]-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="1289355312-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="12893553[·...·truncated·by·diffoscope;·len:·369,·SHA:·3ca39769fa5b9eb3bbcf2c5fd30aa9e776d5553a2ecc7ad493125b905dd5b148·...·]-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="8268652284-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="8268652284-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="3361529084-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="3361529084-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="3692732408-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="3692732408-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="9529999606-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="9529999606-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="2363726399-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="2363726399-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="0191665994-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="0191665994-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="6033909575-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="6033909575-1">)</samp></code></pre><p>or·three·arguments:</p><pre><code·class="makeup·erlang[·...·truncated·by·diffoscope;·len:·324,·SHA:·d7386edacf1bdfaad69c42e005c2de7864f5f4bd99e598a105c53bd0116551cc·...·]-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="7763263276-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="7763263276-1">)</samp></code></pre><p>or·three·arguments:</p><pre><code·class="makeup·erlang[·...·truncated·by·diffoscope;·len:·324,·SHA:·db559113dd32eae49d806ffdf7fd0dc18ac695aeaf764da5d68b4bb5f5be0dba·...·]-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="1110167775-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="11101677[·...·truncated·by·diffoscope;·len:·369,·SHA:·c9bfe7a4a31c0d4f9d006fa3012bd1b5283cb607abc6fa56ffb8087f94023ff9·...·]-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="3493203321-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="34932033[·...·truncated·by·diffoscope;·len:·369,·SHA:·3f3eea9d8129f7ea3ea9bbe7b986d740f8245a72c5523e4f75b6d35bf429e8d7·...·]-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="7225042488-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="7225042488-2">[</samp><sa[·...·truncated·by·diffoscope;·len:·215,·SHA:·9293735c655f2c95ad3a1de106dec2f5ac705dfe3a15450633a87c5395a9a3e7·...·]-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="4276698591-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="4276698591-2">[</samp><sa[·...·truncated·by·diffoscope;·len:·215,·SHA:·e37285b223ee398bcfb378c80fb079d560def4c01ec3cf90ccd1ed30e1e36938·...·]-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
    
Offset 528, 24 lines modifiedOffset 528, 24 lines modified
528 ····················Data·::·<a·href="../../../../lib/../erts/doc/html/erlang.html#t:binary/0">binary</a>().</pre>528 ····················Data·::·<a·href="../../../../lib/../erts/doc/html/erlang.html#t:binary/0">binary</a>().</pre>
  
529 ······</div>529 ······</div>
  
530 <p>Decodes·a·base64·string·encoded·using·the·standard·alphabet·according·to530 <p>Decodes·a·base64·string·encoded·using·the·standard·alphabet·according·to
531 <a·href="https://datatracker.ietf.org/doc/html/rfc4648#section-4">RFC·4648·Section·4</a>·to531 <a·href="https://datatracker.ietf.org/doc/html/rfc4648#section-4">RFC·4648·Section·4</a>·to
532 plain·ASCII.</p><p>The·function·will·strips·away·any·whitespace·characters·and·check·for·the532 plain·ASCII.</p><p>The·function·will·strips·away·any·whitespace·characters·and·check·for·the
533 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"><samp·class="gp·unselectable">1&gt;·</samp><samp·class="nc">base64</samp><samp·class="p">:</samp><samp·class="nf">decode</samp><samp·class="p"·data-group-id="0907030019-1">(</samp><samp·class="s">&quot;AQIDBA==&quot;</samp><samp·class="p"·data-group-id="0907030019-1">)</samp><samp·class="p">.</samp><samp·class="w">533 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"><samp·class="gp·unselectable">1&gt;·</samp><samp·class="nc">base64</samp><samp·class="p">:</samp><samp·class="nf">decode</samp><samp·class="p"·data-group-id="0682038947-1">(</samp><samp·class="s">&quot;AQIDBA==&quot;</samp><samp·class="p"·data-group-id="0682038947-1">)</samp><samp·class="p">.</samp><samp·class="w">
534 </samp><samp·class="p"·data-group-id="0907030019-2">&lt;&lt;</samp><samp·class="mi">1</samp><samp·class="p">,</samp><samp·class="mi">2</samp><samp·class="p">,</samp><samp·class="mi">3</samp><samp·class="p">,</samp><samp·class="mi">4</samp><samp·class="p"·data-group-id="0907030019-2">&gt;&gt;</samp><samp·class="gp·unselectable">534 </samp><samp·class="p"·data-group-id="0682038947-2">&lt;&lt;</samp><samp·class="mi">1</samp><samp·class="p">,</samp><samp·class="mi">2</samp><samp·class="p">,</samp><samp·class="mi">3</samp><samp·class="p">,</samp><samp·class="mi">4</samp><samp·class="p"·data-group-id="0682038947-2">&gt;&gt;</samp><samp·class="gp·unselectable">
535 2&gt;·</samp><samp·class="nc">base64</samp><samp·class="p">:</samp><samp·class="nf">decode</samp><samp·class="p"·data-group-id="0907030019-3">(</samp><samp·class="s">&quot;AQ·ID·BA==&quot;</samp><samp·class="p"·data-group-id="0907030019-3">)</samp><samp·class="p">.</samp><samp·class="w">535 2&gt;·</samp><samp·class="nc">base64</samp><samp·class="p">:</samp><samp·class="nf">decode</samp><samp·class="p"·data-group-id="0682038947-3">(</samp><samp·class="s">&quot;AQ·ID·BA==&quot;</samp><samp·class="p"·data-group-id="0682038947-3">)</samp><samp·class="p">.</samp><samp·class="w">
536 </samp><samp·class="p"·data-group-id="0907030019-4">&lt;&lt;</samp><samp·class="mi">1</samp><samp·class="p">,</samp><samp·class="mi">2</samp><samp·class="p">,</samp><samp·class="mi">3</samp><samp·class="p">,</samp><samp·class="mi">4</samp><samp·class="p"·data-group-id="0907030019-4">&gt;&gt;</samp><samp·class="gp·unselectable">536 </samp><samp·class="p"·data-group-id="0682038947-4">&lt;&lt;</samp><samp·class="mi">1</samp><samp·class="p">,</samp><samp·class="mi">2</samp><samp·class="p">,</samp><samp·class="mi">3</samp><samp·class="p">,</samp><samp·class="mi">4</samp><samp·class="p"·data-group-id="0682038947-4">&gt;&gt;</samp><samp·class="gp·unselectable">
537 3&gt;·</samp><samp·class="nc">base64</samp><samp·class="p">:</samp><samp·class="nf">decode</samp><samp·class="p"·data-group-id="0907030019-5">(</samp><samp·class="s">&quot;AQIDBA=&quot;</samp><samp·class="p"·data-group-id="0907030019-5">)</samp><samp·class="p">.</samp><samp·class="w">537 3&gt;·</samp><samp·class="nc">base64</samp><samp·class="p">:</samp><samp·class="nf">decode</samp><samp·class="p"·data-group-id="0682038947-5">(</samp><samp·class="s">&quot;AQIDBA=&quot;</samp><samp·class="p"·data-group-id="0682038947-5">)</samp><samp·class="p">.</samp><samp·class="w">
538 </samp><samp·class="gt">**·exception·error:·missing_padding538 </samp><samp·class="gt">**·exception·error:·missing_padding
539 ·····in·function··base64:decode_list/7·(base64.erl,·line·734)539 ·····in·function··base64:decode_list/7·(base64.erl,·line·734)
540 ········***·data·to·decode·is·missing·final·=·padding·characters,·if·this·is·intended,·use·the·`padding·=&gt;·false`·option</samp><samp·class="gp·unselectable">540 ········***·data·to·decode·is·missing·final·=·padding·characters,·if·this·is·intended,·use·the·`padding·=&gt;·false`·option</samp><samp·class="gp·unselectable">
541 4&gt;·</samp><samp·class="nc">base64</samp><samp·class="p">:</samp><samp·class="nf">decode</samp><samp·class="p"·data-group-id="0907030019-6">(</samp><samp·class="s">&quot;AQIDBA=&quot;</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="0907030019-7">#{</samp><samp·class="w">·</samp><samp·class="ss">padding</samp><samp·class="w">·</samp><samp·class=[·...·truncated·by·diffoscope;·len:·187,·SHA:·1a78f51000291b04ac99645359d3179d5611ef7a60d1072f86c3614117c07359·...·]-6">)</samp><samp·class="p">.</samp><samp·class="w">541 4&gt;·</samp><samp·class="nc">base64</samp><samp·class="p">:</samp><samp·class="nf">decode</samp><samp·class="p"·data-group-id="0682038947-6">(</samp><samp·class="s">&quot;AQIDBA=&quot;</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="0682038947-7">#{</samp><samp·class="w">·</samp><samp·class="ss">padding</samp><samp·class="w">·</samp><samp·class=[·...·truncated·by·diffoscope;·len:·187,·SHA:·7eac360b0cb35cb193ee95a52d2022dad64609fde17681f90b424fcc3802067a·...·]-6">)</samp><samp·class="p">.</samp><samp·class="w">
542 </samp><samp·class="p"·data-group-id="0907030019-8">&lt;&lt;</samp><samp·class="mi">1</samp><samp·class="p">,</samp><samp·class="mi">2</samp><samp·class="p">,</samp><samp·class="mi">3</samp><samp·class="p">,</samp><samp·class="mi">4</samp><samp·class="p"·data-group-id="0907030019-8">&gt;&gt;</samp></code></pre>542 </samp><samp·class="p"·data-group-id="0682038947-8">&lt;&lt;</samp><samp·class="mi">1</samp><samp·class="p">,</samp><samp·class="mi">2</samp><samp·class="p">,</samp><samp·class="mi">3</samp><samp·class="p">,</samp><samp·class="mi">4</samp><samp·class="p"·data-group-id="0682038947-8">&gt;&gt;</samp></code></pre>
543 ··</section>543 ··</section>
544 </section>544 </section>
545 <section·class="detail"·id="decode_to_string/1">545 <section·class="detail"·id="decode_to_string/1">
  
546 ··<div·class="detail-header">546 ··<div·class="detail-header">
547 ····<a·href="#decode_to_string/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">547 ····<a·href="#decode_to_string/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
548 ······<i·class="ri-link-m"·aria-hidden="true"></i>548 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 775, 18 lines modifiedOffset 775, 18 lines modified
775 ·························Data·::·<a·href="../../../../lib/../erts/doc/html/erlang.html#t:binary/0">binary</a>().</pre>775 ·························Data·::·<a·href="../../../../lib/../erts/doc/html/erlang.html#t:binary/0">binary</a>().</pre>
  
776 ······</div>776 ······</div>
  
777 <p>Decodes·a·base64·&quot;mime&quot;·string·encoded·using·the·standard·alphabet·according·to777 <p>Decodes·a·base64·&quot;mime&quot;·string·encoded·using·the·standard·alphabet·according·to
778 <a·href="https://datatracker.ietf.org/doc/html/rfc4648#section-4">RFC·4648·Section·4</a>·to778 <a·href="https://datatracker.ietf.org/doc/html/rfc4648#section-4">RFC·4648·Section·4</a>·to
779 plain·ASCII.</p><p>The·function·will·strips·away·any·illegal·characters.·It·does·<em>not</em>·check·for·the779 plain·ASCII.</p><p>The·function·will·strips·away·any·illegal·characters.·It·does·<em>not</em>·check·for·the
780 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"><samp·class="gp·unselectable">1&gt;·</samp><samp·class="nc">base64</samp><samp·class="p">:</samp><samp·class="nf">mime_decode</samp><samp·class="p"·data-group-id="6761202031-1">(</samp><samp·class="s">&quot;AQIDBA==&quot;</samp><samp·class="p"·data-group-id="6761202031-1">)</samp><samp·class="p">.</samp><samp·class="w">780 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"><samp·class="gp·unselectable">1&gt;·</samp><samp·class="nc">base64</samp><samp·class="p">:</samp><samp·class="nf">mime_decode</samp><samp·class="p"·data-group-id="3493036362-1">(</samp><samp·class="s">&quot;AQIDBA==&quot;</samp><samp·class="p"·data-group-id="3493036362-1">)</samp><samp·class="p">.</samp><samp·class="w">
781 </samp><samp·class="p"·data-group-id="6761202031-2">&lt;&lt;</samp><samp·class="mi">1</samp><samp·class="p">,</samp><samp·class="mi">2</samp><samp·class="p">,</samp><samp·class="mi">3</samp><samp·class="p">,</samp><samp·class="mi">4</samp><samp·class="p"·data-group-id="6761202031-2">&gt;&gt;</samp><samp·class="gp·unselectable">781 </samp><samp·class="p"·data-group-id="3493036362-2">&lt;&lt;</samp><samp·class="mi">1</samp><samp·class="p">,</samp><samp·class="mi">2</samp><samp·class="p">,</samp><samp·class="mi">3</samp><samp·class="p">,</samp><samp·class="mi">4</samp><samp·class="p"·data-group-id="3493036362-2">&gt;&gt;</samp><samp·class="gp·unselectable">
782 2&gt;·</samp><samp·class="nc">base64</samp><samp·class="p">:</samp><samp·class="nf">mime_decode</samp><samp·class="p"·data-group-id="6761202031-3">(</samp><samp·class="s">&quot;AQIDB=A=&quot;</samp><samp·class="p"·data-group-id="6761202031-3">)</samp><samp·class="p">.</samp><samp·class="w">782 2&gt;·</samp><samp·class="nc">base64</samp><samp·class="p">:</samp><samp·class="nf">mime_decode</samp><samp·class="p"·data-group-id="3493036362-3">(</samp><samp·class="s">&quot;AQIDB=A=&quot;</samp><samp·class="p"·data-group-id="3493036362-3">)</samp><samp·class="p">.</samp><samp·class="w">
783 </samp><samp·class="p"·data-group-id="6761202031-4">&lt;&lt;</samp><samp·class="mi">1</samp><samp·class="p">,</samp><samp·class="mi">2</samp><samp·class="p">,</samp><samp·class="mi">3</samp><samp·class="p">,</samp><samp·class="mi">4</samp><samp·class="p"·data-group-id="6761202031-4">&gt;&gt;</samp></code></pre>783 </samp><samp·class="p"·data-group-id="3493036362-4">&lt;&lt;</samp><samp·class="mi">1</samp><samp·class="p">,</samp><samp·class="mi">2</samp><samp·class="p">,</samp><samp·class="mi">3</samp><samp·class="p">,</samp><samp·class="mi">4</samp><samp·class="p"·data-group-id="3493036362-4">&gt;&gt;</samp></code></pre>
784 ··</section>784 ··</section>
785 </section>785 </section>
786 <section·class="detail"·id="mime_decode_to_string/1">786 <section·class="detail"·id="mime_decode_to_string/1">
  
787 ··<div·class="detail-header">787 ··<div·class="detail-header">
788 ····<a·href="#mime_decode_to_string/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">788 ····<a·href="#mime_decode_to_string/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
789 ······<i·class="ri-link-m"·aria-hidden="true"></i>789 ······<i·class="ri-link-m"·aria-hidden="true"></i>
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="6737492072-1">(</span><span·class="s">&quot;stdlib/include/assert.hrl&quot;</span><span·class="p"·data-group-id="6737492072-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="0987737094-1">(</span><span·class="s">&quot;stdlib/include/assert.hrl&quot;</span><span·class="p"·data-group-id="0987737094-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="1843052612-1">(</span><span·class="p"·data-group-id="1843052612-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="1843052612-2">}</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·391,·SHA:·7ef837ffa3a4bb7066f9dce6f32e51c3995a124b2e227f80044903283b7474bc·...·]-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="8486360624-1">(</span><span·class="p"·data-group-id="8486360624-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="8486360624-2">}</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·391,·SHA:·25d7c101f8516a59787ca62b7febce519358d7e6a5ca9f359ba1625f46664aa8·...·]-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.2/doc/html/stdlib_app.html
    
Offset 157, 21 lines modifiedOffset 157, 21 lines modified
157 string·and·returns·a·formatted·expressions·as·a·string.·See157 string·and·returns·a·formatted·expressions·as·a·string.·See
158 <a·href="shell.html#format_shell_func/1"><code·class="inline">shell:format_shell_func/1</code></a>·for·how·to·set·it·from·inside·the·shell.</p><p>If·instead·a·string·is·provided,·it·will·be·used·as·a·shell·command.·Your158 <a·href="shell.html#format_shell_func/1"><code·class="inline">shell:format_shell_func/1</code></a>·for·how·to·set·it·from·inside·the·shell.</p><p>If·instead·a·string·is·provided,·it·will·be·used·as·a·shell·command.·Your
159 command·must·include·<code·class="inline">${file}</code>·somewhere·in·the·string,·for·the·shell·to·know159 command·must·include·<code·class="inline">${file}</code>·somewhere·in·the·string,·for·the·shell·to·know
160 where·the·file·goes·in·the·command.</p><pre><code·class="text">-stdlib·format_shell_func·&quot;\&quot;emacs·-batch·\${file}·-l·~/erlang-format/emacs-format-file·-f·emacs-format-function\&quot;&quot;</code></pre><pre><code·class="text">-stdlib·format_shell_func·&quot;{shell,·erl_pp_format_func}&quot;</code></pre></li><li><p><strong><code·class="inline"·id="shell_prompt_func">shell_prompt_func·=·{Mod,·Func}·|·default</code></strong>·-·where</p><ul><li><code·class="inline">Mod·=·atom()</code></li><li><code·class="inline">Func·=·atom()</code></li></ul><p>Can·be·used·to·set·a·customized·Erlang·shell·prompt·function.</p></li><li><p><strong><code·class="inline"·id="shell_multiline_prompt">shell_multiline_prompt·=·{Mod,·Func}·|·string()·|·default</code></strong>·-·where</p><ul><li><code·class="inline">Mod·=·atom()</code></li><li><code·class="inline">Func·=·atom()</code></li></ul><p>Can·be·used·to·set·a·customized·multiline·shell·prompt·function.·The·multiline160 where·the·file·goes·in·the·command.</p><pre><code·class="text">-stdlib·format_shell_func·&quot;\&quot;emacs·-batch·\${file}·-l·~/erlang-format/emacs-format-file·-f·emacs-format-function\&quot;&quot;</code></pre><pre><code·class="text">-stdlib·format_shell_func·&quot;{shell,·erl_pp_format_func}&quot;</code></pre></li><li><p><strong><code·class="inline"·id="shell_prompt_func">shell_prompt_func·=·{Mod,·Func}·|·default</code></strong>·-·where</p><ul><li><code·class="inline">Mod·=·atom()</code></li><li><code·class="inline">Func·=·atom()</code></li></ul><p>Can·be·used·to·set·a·customized·Erlang·shell·prompt·function.</p></li><li><p><strong><code·class="inline"·id="shell_multiline_prompt">shell_multiline_prompt·=·{Mod,·Func}·|·string()·|·default</code></strong>·-·where</p><ul><li><code·class="inline">Mod·=·atom()</code></li><li><code·class="inline">Func·=·atom()</code></li></ul><p>Can·be·used·to·set·a·customized·multiline·shell·prompt·function.·The·multiline
161 prompt·function·takes·the·main·prompt·as·its·only·parameter.</p></li><li><p><strong><code·class="inline"·id="shell_saved_results">shell_saved_results·=·integer()·&gt;=·0</code></strong>·-·Can·be161 prompt·function·takes·the·main·prompt·as·its·only·parameter.</p></li><li><p><strong><code·class="inline"·id="shell_saved_results">shell_saved_results·=·integer()·&gt;=·0</code></strong>·-·Can·be
162 used·to·determine·how·many·results·are·saved·by·the·Erlang·shell.</p></li><li><p><strong><code·class="inline"·id="shell_session_slogan">shell_session_slogan·=·string()·|·fun()·-&gt;·string())</code></strong>·-·The·slogan·printed·when·starting·an·Erlang·shell.162 used·to·determine·how·many·results·are·saved·by·the·Erlang·shell.</p></li><li><p><strong><code·class="inline"·id="shell_session_slogan">shell_session_slogan·=·string()·|·fun()·-&gt;·string())</code></strong>·-·The·slogan·printed·when·starting·an·Erlang·shell.
163 Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="sc">$·</span><span·class="ss">erl</span><span·class="w">·</span><span·class="o">-</span><span·class="ss">stdlib</span><span·class="w">·</span><span·class="ss">shell_session_slogan</span><span·class="w">·</span><span·class="ss">&#39;&quot;Test·slogan&quot;&#39;</span><span·class="w">163 Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="sc">$·</span><span·class="ss">erl</span><span·class="w">·</span><span·class="o">-</span><span·class="ss">stdlib</span><span·class="w">·</span><span·class="ss">shell_session_slogan</span><span·class="w">·</span><span·class="ss">&#39;&quot;Test·slogan&quot;&#39;</span><span·class="w">
164 </span><span·class="n">Erlang</span><span·class="o">/</span><span·class="n">OTP</span><span·class="w">·</span><span·class="mi">26</span><span·class="w">·</span><span·class="p"·data-group-id="7282366244-1">[</span><span·class="n">DEVELOPMENT</span><span·class="p"·data-group-id="7282366244-1">]</span><span·class="w">·</span><span·class="p"·data-group-id="7282366244-2">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">1[·...·truncated·by·diffoscope;·len:·1496,·SHA:·7434c548d474f52a115f6a1fca34208304bda0964ad686d7fc5b0e787d8c865a·...·]-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="4237035607-1">[</span><span·class="n">DEVELOPMENT</span><span·class="p"·data-group-id="4237035607-1">]</span><span·class="w">·</span><span·class="p"·data-group-id="4237035607-2">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">1[·...·truncated·by·diffoscope;·len:·1496,·SHA:·c9d7c48274abb8cdb7e9b357dcb998715698fc8fcd73e1f4b285f7261667005f·...·]-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="1128305761-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="1128305761-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="7632872666-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="7632872666-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.6/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.6/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.2/doc/html/string.html
    
Offset 145, 22 lines modifiedOffset 145, 22 lines modified
145 <a·href="#replace/3"><code·class="inline">replace/3</code></a>,·<a·href="#split/2"><code·class="inline">split/2</code></a>,·<a·href="#split/3"><code·class="inline">split/3</code></a>·and·<a·href="#trim/3"><code·class="inline">trim/3</code></a>.</p><p>Splitting·and·appending·strings·is·to·be·done·on·grapheme·clusters·borders.145 <a·href="#replace/3"><code·class="inline">replace/3</code></a>,·<a·href="#split/2"><code·class="inline">split/2</code></a>,·<a·href="#split/3"><code·class="inline">split/3</code></a>·and·<a·href="#trim/3"><code·class="inline">trim/3</code></a>.</p><p>Splitting·and·appending·strings·is·to·be·done·on·grapheme·clusters·borders.
146 There·is·no·verification·that·the·results·of·appending·strings·are·valid·or146 There·is·no·verification·that·the·results·of·appending·strings·are·valid·or
147 normalized.</p><p>Most·of·the·functions·expect·all·input·to·be·normalized·to·one·form,·see·for147 normalized.</p><p>Most·of·the·functions·expect·all·input·to·be·normalized·to·one·form,·see·for
148 example·<a·href="unicode.html#characters_to_nfc_list/1"><code·class="inline">unicode:characters_to_nfc_list/1</code></a>.</p><p>Language·or·locale·specific·handling·of·input·is·not·considered·in·any·function.</p><p>The·functions·can·crash·for·non-valid·input·strings.·For·example,·the·functions148 example·<a·href="unicode.html#characters_to_nfc_list/1"><code·class="inline">unicode:characters_to_nfc_list/1</code></a>.</p><p>Language·or·locale·specific·handling·of·input·is·not·considered·in·any·function.</p><p>The·functions·can·crash·for·non-valid·input·strings.·For·example,·the·functions
149 expect·UTF-8·binaries·but·not·all·functions·verify·that·all·binaries·are·encoded149 expect·UTF-8·binaries·but·not·all·functions·verify·that·all·binaries·are·encoded
150 correctly.</p><p>Unless·otherwise·specified·the·return·value·type·is·the·same·as·the·input·type.150 correctly.</p><p>Unless·otherwise·specified·the·return·value·type·is·the·same·as·the·input·type.
151 That·is,·binary·input·returns·binary·output,·list·input·returns·a·list·output,151 That·is,·binary·input·returns·binary·output,·list·input·returns·a·list·output,
152 and·mixed·input·can·return·a·mixed·output.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">string</span><span·class="p">:</span><span·class="nf">trim</span><span·class="p"·data-group-id="4784599783-1">(</span><span·class="s">&quot;··sarah··&quot;</span><span·class="p"·data-group-id="4784599783-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="5883909132-1">(</span><span·class="s">&quot;··sarah··&quot;</span><span·class="p"·data-group-id="5883909132-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="4784599783-2">(</span><span·class="p"·data-group-id="4784599783-3">&lt;&lt;</span><span·class="s">&quot;··sarah··&quot;</span><span·class="p"·data-group-id="4784599783-3">&gt;&gt;</span><span·class="p"·data-group-id="4784599783-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="5883909132-2">(</span><span·class="p"·data-group-id="5883909132-3">&lt;&lt;</span><span·class="s">&quot;··sarah··&quot;</span><span·class="p"·data-group-id="5883909132-3">&gt;&gt;</span><span·class="p"·data-group-id="5883909132-2">)</span><span·class="p">.</span><span·class="w">
155 </span><span·class="p"·data-group-id="4784599783-4">&lt;&lt;</span><span·class="s">&quot;sarah&quot;</span><span·class="p"·data-group-id="4784599783-4">&gt;&gt;</span><span·class="gp·unselectable">155 </span><span·class="p"·data-group-id="5883909132-4">&lt;&lt;</span><span·class="s">&quot;sarah&quot;</span><span·class="p"·data-group-id="5883909132-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="4784599783-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="4784599783-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="5883909132-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="5883909132-5">)</span><span·class="p">.</span><span·class="w">
157 </span><span·class="p"·data-group-id="4784599783-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="4784599783-6">]</span><span·class="gp·unselectable">157 </span><span·class="p"·data-group-id="5883909132-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="5883909132-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="4784599783-7">(</span><span·class="p"·data-group-id="4784599783-8">&lt;&lt;</span><span·class="s">&quot;foo·bar&quot;</span><span·class="p"·data-group-id="4784599783-8">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;·&[·...·truncated·by·diffoscope;·len:·53,·SHA:·0488fdc22af6237e1bece0f59c4a29eaed28f57bc6b81c597e40536eac3cefad·...·]-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="5883909132-7">(</span><span·class="p"·data-group-id="5883909132-8">&lt;&lt;</span><span·class="s">&quot;foo·bar&quot;</span><span·class="p"·data-group-id="5883909132-8">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;·&[·...·truncated·by·diffoscope;·len:·53,·SHA:·83fa18ab2b99f4bc2b3f06675b3d08fa2b03312058b6ccddcd2580058279c119·...·]-7">)</span><span·class="p">.</span><span·class="w">
159 </span><span·class="p"·data-group-id="4784599783-9">[</span><span·class="p"·data-group-id="4784599783-10">&lt;&lt;</span><span·class="s">&quot;foo&quot;</span><span·class="p"·data-group-id="4784599783-10">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="4784599783-11">&lt;[·...·truncated·by·diffoscope;·len:·151,·SHA:·5e042addd286f569617c5c9d732d49e6d394605cbb7bc870797a993400087da6·...·]-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="5883909132-9">[</span><span·class="p"·data-group-id="5883909132-10">&lt;&lt;</span><span·class="s">&quot;foo&quot;</span><span·class="p"·data-group-id="5883909132-10">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="5883909132-11">&lt;[·...·truncated·by·diffoscope;·len:·151,·SHA:·58aa128afb2031d355dcf19003f74b14ed5ddf34f5243c323e71a2c530eaf362·...·]-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="5796347714-1">(</span><span·class="s">&quot;Ω·and··SHARP·S&quot;</span><span·class="p"·data-group-id="5796347714-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="5564570256-1">(</span><span·class="s">&quot;Ω·and··SHARP·S&quot;</span><span·class="p"·data-group-id="5564570256-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="6471909981-1">(</span><span·class="p"·data-group-id="6471909981-2">&lt;&lt;</span><span·class="s">&quot;\nHello\n\n&quot;</span><span·class="p"·data-group-id="6471909981-2">&gt;&gt;</span><span·class="p"·data-group-id="6471909981-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="3799513686-1">(</span><span·class="p"·data-group-id="3799513686-2">&lt;&lt;</span><span·class="s">&quot;\nHello\n\n&quot;</span><span·class="p"·data-group-id="3799513686-2">&gt;&gt;</span><span·class="p"·data-group-id="3799513686-1">)</span><span·class="p">.</span><span·class="w">
1097 </span><span·class="p"·data-group-id="6471909981-3">&lt;&lt;</span><span·class="s">&quot;\nHello&quot;</span><span·class="p"·data-group-id="6471909981-3">&gt;&gt;</span><span·class="gp·unselectable">1097 </span><span·class="p"·data-group-id="3799513686-3">&lt;&lt;</span><span·class="s">&quot;\nHello&quot;</span><span·class="p"·data-group-id="3799513686-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="6471909981-4">(</span><span·class="s">&quot;\nHello\r\r\n&quot;</span><span·class="p"·data-group-id="6471909981-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="3799513686-4">(</span><span·class="s">&quot;\nHello\r\r\n&quot;</span><span·class="p"·data-group-id="3799513686-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="6604188627-1">(</span><span·class="s">&quot;åäö&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6604188627-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:·93937983f52ac76cf32c09d7b071641438ec517f9c63e49ac853c80bb2a4f182·...·]-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="5274814170-1">(</span><span·class="s">&quot;åäö&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5274814170-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:·f08634bb091b85b0e21a548713b7908a5e672183da802d94b092833064b2e133·...·]-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="6604188627-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="6604188627-4">[·...·truncated·by·diffoscope;·len:·140,·SHA:·776e57785b5c3c0353d235a5d1713d2411ac2857d127b2d10a88cbff4a4024f4·...·]-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="5274814170-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="5274814170-4">[·...·truncated·by·diffoscope;·len:·140,·SHA:·14319c50369673ce0842e6246fd9afbda31c64ece88590202a679d4f82904543·...·]-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="6604188627-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="6604188627-6">[·...·truncated·by·diffoscope;·len:·291,·SHA:·e7f96b5c6b686384bcf11247668ab2e03be7297c0114920f616cf01a9761018f·...·]-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="5274814170-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="5274814170-6">[·...·truncated·by·diffoscope;·len:·291,·SHA:·d3b0682c8666f39e0f8d44bde430ac6aecefe3a73134e54cf7186ca6f47a68ea·...·]-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="7664436251-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="7664436251-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="5605463347-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="5605463347-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="7664436251-2">(</span><span·class="p"·data-group-id="7664436251-3">&lt;&lt;</span><span·class="s">&quot;ab..cd..ef&quot;</span><span·class="p"·data-group-id="7664436251-3">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot[·...·truncated·by·diffoscope;·len:·137,·SHA:·0ac47a010afaeb845fcdf48706e368981aadff792d455200efd499b8f4d23269·...·]-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="5605463347-2">(</span><span·class="p"·data-group-id="5605463347-3">&lt;&lt;</span><span·class="s">&quot;ab..cd..ef&quot;</span><span·class="p"·data-group-id="5605463347-3">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot[·...·truncated·by·diffoscope;·len:·137,·SHA:·3a978e1a8fc839d1c501195ce493881159c15f1be48dd1632c4597d80094522f·...·]-2">)</span><span·class="p">.</span><span·class="w">
1263 </span><span·class="p"·data-group-id="7664436251-4">&lt;&lt;</span><span·class="s">&quot;..ef&quot;</span><span·class="p"·data-group-id="7664436251-4">&gt;&gt;</span><span·class="gp·unselectable">1263 </span><span·class="p"·data-group-id="5605463347-4">&lt;&lt;</span><span·class="s">&quot;..ef&quot;</span><span·class="p"·data-group-id="5605463347-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="7664436251-5">(</span><span·class="p"·data-group-id="7664436251-6">&lt;&lt;</span><span·class="s">&quot;ab..cd..ef&quot;</span><span·class="p"·data-group-id="7664436251-6">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot[·...·truncated·by·diffoscope;·len:·135,·SHA:·37aab9b0f0b0d8e5cfded158667175e5f1afdfce3c5fb4047befed8fd5910fb2·...·]-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="5605463347-5">(</span><span·class="p"·data-group-id="5605463347-6">&lt;&lt;</span><span·class="s">&quot;ab..cd..ef&quot;</span><span·class="p"·data-group-id="5605463347-6">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot[·...·truncated·by·diffoscope;·len:·135,·SHA:·5d1dbab0709947dd7dba2acf4d4e9c9ca13de7502f6355c60394ee89f72e3707·...·]-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="7664436251-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:·15aaa796e4473f8d2abf7aef38fa0d21bdae4e564d0e42828b6207cf6a7520f0·...·]-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="5605463347-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:·fc1fc26282ff9e775a3bc5a6c8a8c1a0d32a521bd962f670ab46cf73d0cfa13c·...·]-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.6/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.6/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="2899369796-1">(</span><span·class="s">&quot;foo&quot;</span><span·class="p"·data-group-id="2899369796-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="3089517466-1">(</span><span·class="s">&quot;foo&quot;</span><span·class="p"·data-group-id="3089517466-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="2899369796-2">(</span><span·class="p"·data-group-id="2899369796-3">[</span><span·class="s">&quot;&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="2899369796-4">&lt;&lt;</span><span·class="p"·data-group-id="2899369796-4">&gt;&gt;</span><s[·...·truncated·by·diffoscope;·len:·91,·SHA:·659fbe2323d978bb89a66f211c87975eb4e4b9d99899aeaba4681eabc3f42768·...·]6-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="3089517466-2">(</span><span·class="p"·data-group-id="3089517466-3">[</span><span·class="s">&quot;&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="3089517466-4">&lt;&lt;</span><span·class="p"·data-group-id="3089517466-4">&gt;&gt;</span><s[·...·truncated·by·diffoscope;·len:·91,·SHA:·b09aefbae60e1bccbcbd6721653e233e65399c03b80fcf5c3de48a74de2c3329·...·]6-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.6/doc/html/erlang.html#t:float/0">float</a>().</pre>1328 ·····························Similarity·::·<a·href="../../../../erts-15.2.6/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="4967851936-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="4967851936-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="9669783470-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="9669783470-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="4967851936-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="4967851936-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="9669783470-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="9669783470-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.2/doc/html/supervisor.html
    
Offset 154, 18 lines modifiedOffset 154, 18 lines modified
154 left.</p><p><a·href=""·id="sup_flags"></a></p><h3·id="module-supervisor-flags"·class="section-heading">154 left.</p><p><a·href=""·id="sup_flags"></a></p><h3·id="module-supervisor-flags"·class="section-heading">
155 ··<a·href="#module-supervisor-flags"·class="hover-link">155 ··<a·href="#module-supervisor-flags"·class="hover-link">
156 ····<i·class="ri-link-m"·aria-hidden="true"></i>156 ····<i·class="ri-link-m"·aria-hidden="true"></i>
157 ··</a>157 ··</a>
158 ··<span·class="text">Supervisor·flags</span>158 ··<span·class="text">Supervisor·flags</span>
159 </h3>159 </h3>
160 <p>The·supervisor·properties·are·defined·by·the·supervisor·flags.·The·type160 <p>The·supervisor·properties·are·defined·by·the·supervisor·flags.·The·type
161 definition·for·the·supervisor·flags·is·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">sup_flags</span><span·class="p"·data-group-id="0058176463-1">(</span><span·class="p"·data-group-id="0058176463-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="0058176463-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="0058176463-3">(</span><span·class="p"·data-group-id="0058176463-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="0058176463-4">(</span><span·class="p"·data-group-id="0058176463-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="0058176463-5">(</span><span·class="p"·data-group-id="0058176463-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="0058176463-6">(</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·262,·SHA:·f3804dee5baea81aa8303afb44ae99e63a306c3aefcee71ba9343b4a40c7d772·...·]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="5656767622-1">(</span><span·class="p"·data-group-id="5656767622-1">)</span><span·class="w"[·...·truncated·by·diffoscope;·len:·465,·SHA:·d7729b8d62414cddd21bc87e0cd56edef8dc11006f23a189a1b94219c20fdc55·...·]
 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="5656767622-4">(</span><span·class="p"·data-group-id="5656767622-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="5656767622-5">(</span><span·class="p"·data-group-id="5656767622-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="5656767622-6">(</span><span·class="p"·data-group-id="5656767622-6">)</span><span·class="p"·data-group-id="5656767622-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="5452593055-1">(</span><span·class="p"·data-group-id="5452593055-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="5452593055-2">#{</span><span·class="ss">id</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·173,·SHA:·83de00541909865dc31fdec101b6ff14ebf09c3383c9195731158ad1b8e0a5c8·...·]-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="0986477632-1">(</span><span·class="p"·data-group-id="0986477632-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="0986477632-2">#{</span><span·class="ss">id</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·173,·SHA:·1df6a400b2f371dff535bd436d4a0d6bf126a5c64567846f1057692acb4a83b3·...·]-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="5452593055-4">(</span><span·class="p"·data-group-id="5452593055-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="0986477632-4">(</span><span·class="p"·data-group-id="0986477632-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="5452593055-5">(</span><span·class="p"·data-group-id="5452593055-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="0986477632-5">(</span><span·class="p"·data-group-id="0986477632-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="5452593055-6">(</span><span·class="p"·data-group-id="5452593055-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="0986477632-6">(</span><span·class="p"·data-group-id="0986477632-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="5452593055-7">(</span><span·class="p"·data-group-id="5452593055-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="0986477632-7">(</span><span·class="p"·data-group-id="0986477632-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="5452593055-8">(</span><span·class="p"·data-group-id="5452593055-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="0986477632-8">(</span><span·class="p"·data-group-id="0986477632-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="5452593055-9">(</span><span·class="p"·data-group-id="5452593055-9">)</span><span·class="p"·data-group-id="5452593055-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="0986477632-9">(</span><span·class="p"·data-group-id="0986477632-9">)</span><span·class="p"·data-group-id="0986477632-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.6/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.6/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.2/doc/html/timer.html
    
Offset 142, 23 lines modifiedOffset 142, 23 lines modified
142 <a·href="../../../../erts-15.2.6/doc/html/time_correction.html"><em>Time·and·Time·Correction·in·Erlang</em></a>142 <a·href="../../../../erts-15.2.6/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="1464618467-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:·7ab38c10f221c99cd7ba602a355d2268d8aed90a301e69f40ad73029240cc7a3·...·]-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="5988731278-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:·5335016f930aa5e71715b4a40c70807591a1f82339403561b81f4a1c6e553087·...·]-1">)</span><span·class="p">.</span><span·class="w">
150 </span><span·class="p"·data-group-id="1464618467-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">TRef</span><span·class="p"·data-group-id="1464618467-4">}</span><span·class="w">150 </span><span·class="p"·data-group-id="5988731278-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">TRef</span><span·class="p"·data-group-id="5988731278-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="2817588711-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="2817588711-2">[</span><span·class="ss">foo</span><span[·...·truncated·by·diffoscope;·len:·164,·SHA:·cb7c0b7c048fa550b169c7b89053b6e4415f428bfd390e8fb2c8f6d61562cfb4·...·]-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="9043910566-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="9043910566-2">[</span><span·class="ss">foo</span><span[·...·truncated·by·diffoscope;·len:·164,·SHA:·42168be14fd1aad2aed5f45bc631bbca531e8bc6db515c427b8c477f6f3b9c5e·...·]-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="2817588711-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="2817588711-3">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·460,·SHA:·b6d30e31204fcad7f31ddbcfae68c880f5ec9632ecb6178a4fcabce5d4e213db·...·]-4">)</span><span·class="p">,</span><span·class="w">154 </span><span·class="p"·data-group-id="9043910566-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="9043910566-3">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·460,·SHA:·4cc584160862726acd028540aba0a51ca71023538af8d93da9c0ab823e926491·...·]-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="2817588711-6">(</span><span·class="n">R</span><span·class="p"·data-group-id="2817588711-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="9043910566-6">(</span><span·class="n">R</span><span·class="p"·data-group-id="9043910566-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.6/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.6/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.6/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.6/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="4360123926-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="4360123926-2">(</span><span·class="p"·data-group-id="4360123926-2">)</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·566,·SHA:·9fce170bc0e67a021c5555924154392ac26f80a33cd6964ed5be9db58cd5fa09·...·]-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="0544612697-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="0544612697-2">(</span><span·class="p"·data-group-id="0544612697-2">)</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·566,·SHA:·1d61f5bf34085806c89a39edaf6181ef2a51c325faa886aeaa797263cf0948af·...·]-1">)</span><span·class="p">.</span><span·class="w">
185 </span><span·class="p"·data-group-id="4360123926-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">TRef</span><span·class="p"·data-group-id="4360123926-5">}</span><span·class="gp·unselectable">185 </span><span·class="p"·data-group-id="0544612697-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">TRef</span><span·class="p"·data-group-id="0544612697-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.6/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.6/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="1562391304-1">(</span><span·class="p"·data-group-id="1562391304-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="6112240441-1">(</span><span·class="p"·data-group-id="6112240441-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="1562391304-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="1562391304-3">(</span><span·class="p"·data-group-id="1562391304-3">)</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·461,·SHA:·d7d706395b5b7fb40b0ebb12e2ea240da1e41a5c5825b29701f6ac606443c846·...·]-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="6112240441-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="6112240441-3">(</span><span·class="p"·data-group-id="6112240441-3">)</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·461,·SHA:·3cc04da8bab16fb2b945e3eb2cad9f3103dd5797cd73531a706a3d305e318f4e·...·]-2">)</span><span·class="p">.</span><span·class="w">
193 </span><span·class="p"·data-group-id="1562391304-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">TRef</span><span·class="p"·data-group-id="1562391304-5">}</span><span·class="gp·unselectable">193 </span><span·class="p"·data-group-id="6112240441-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">TRef</span><span·class="p"·data-group-id="6112240441-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="9336969968-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="9336969968-2">(</span><span·class="n">Target</span><span·class="p"·data-group-id="9336969968-2">)</s[·...·truncated·by·diffoscope;·len:·778,·SHA:·f2e0ceafa13b3a730fbf16619c3fd28fcefe4492633595d33f8c3c7b514fe6c7·...·]-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="6550413352-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="6550413352-2">(</span><span·class="n">Target</span><span·class="p"·data-group-id="6550413352-2">)</s[·...·truncated·by·diffoscope;·len:·778,·SHA:·2bf41b858a6f3f8194036655a513aae7c7cf91da7912523567af61d226742519·...·]-1">)</span><span·class="p">.</span><span·class="w">
197 </span><span·class="p"·data-group-id="9336969968-6">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">TRef</span><span·class="p"·data-group-id="9336969968-6">}</span><span·class="gp·unselectable">197 </span><span·class="p"·data-group-id="6550413352-6">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">TRef</span><span·class="p"·data-group-id="6550413352-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.2/doc/html/unicode.html
    
Offset 1031, 21 lines modifiedOffset 1031, 21 lines modified
1031 binaries·in·other·ways·are·split·on·non-UTF·character·boundaries.·An1031 binaries·in·other·ways·are·split·on·non-UTF·character·boundaries.·An
1032 <code·class="inline">incomplete</code>·tuple·is·then·returned·instead·of·the·<code·class="inline">error</code>·tuple.·It·consists·of1032 <code·class="inline">incomplete</code>·tuple·is·then·returned·instead·of·the·<code·class="inline">error</code>·tuple.·It·consists·of
1033 the·same·parts·as·the·<code·class="inline">error</code>·tuple,·but·the·tag·is·<code·class="inline">incomplete</code>·instead·of1033 the·same·parts·as·the·<code·class="inline">error</code>·tuple,·but·the·tag·is·<code·class="inline">incomplete</code>·instead·of
1034 <code·class="inline">error</code>·and·the·last·element·is·always·guaranteed·to·be·a·binary·consisting·of1034 <code·class="inline">error</code>·and·the·last·element·is·always·guaranteed·to·be·a·binary·consisting·of
1035 the·first·part·of·a·(so·far)·valid·UTF·character.</p><p>If·one·UTF·character·is·split·over·two·consecutive·binaries·in·the·<code·class="inline">Data</code>,·the1035 the·first·part·of·a·(so·far)·valid·UTF·character.</p><p>If·one·UTF·character·is·split·over·two·consecutive·binaries·in·the·<code·class="inline">Data</code>,·the
1036 conversion·succeeds.·This·means·that·a·character·can·be·decoded·from·a·range·of1036 conversion·succeeds.·This·means·that·a·character·can·be·decoded·from·a·range·of
1037 binaries·as·long·as·the·whole·range·is·specified·as·input·without·errors1037 binaries·as·long·as·the·whole·range·is·specified·as·input·without·errors
1038 occurring.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">decode_data</span><span·class="p"·data-group-id="8800791923-1">(</span><span·class="n">Data</span><span·class="p"·data-group-id="8800791923-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="1999705459-1">(</span><span·class="n">Data</span><span·class="p"·data-group-id="1999705459-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="8800791923-2">(</span><span·class="n">Data</span><span·class="p">,</span><span·class="ss">unicode</span><span·class="p"·data-group-id="8800791923-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="1999705459-2">(</span><span·class="n">Data</span><span·class="p">,</span><span·class="ss">unicode</span><span·class="p"·data-group-id="1999705459-2">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
1040 ······</span><span·class="p"·data-group-id="8800791923-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="8800791923-3">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">1040 ······</span><span·class="p"·data-group-id="1999705459-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="1999705459-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="8800791923-4">(</span><span·class="p"·data-group-id="8800791923-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="1999705459-4">(</span><span·class="p"·data-group-id="1999705459-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="8800791923-5">(</span><span·class="p"·data-group-id="8800791923-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="8800791923-6">]</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·2392dacc3f22610d77a23ee4d9b1c10fced38f6d0fc4a5d7cd80f6f3c4630e8a·...·]-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="1999705459-5">(</span><span·class="p"·data-group-id="1999705459-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="1999705459-6">]</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·9dde97fac8cf95a9c3d0d125bee7cfa6894638a38d08c63e24eb058c51fedb97·...·]-5">)</span><span·class="p">;</span><span·class="w">
1043 ······</span><span·class="p"·data-group-id="8800791923-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="8800791923-7">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">1043 ······</span><span·class="p"·data-group-id="1999705459-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="1999705459-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="8800791923-8">(</span><span·class="n">Encoded</span><span·class="p">,</span><span·class="n">Rest</span><span·class="p"·data-group-id="8800791923-8">)</span><span·class="p">;</span><span·class="w">1044 ············</span><span·class="nf">handle_error</span><span·class="p"·data-group-id="1999705459-8">(</span><span·class="n">Encoded</span><span·class="p">,</span><span·class="n">Rest</span><span·class="p"·data-group-id="1999705459-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="7937348360-1">(</span><span·class="p"·data-group-id="7937348360-2">[</span><span·class="p"·data-group-id="7937348360-3">&lt;&lt;</span><span·class="s">&quot;abc..a&quot;</span><span·class="p"·data-group-id="7937348360-3">&gt;&gt;</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·645,·SHA:·f1e5003821700e233f560414452acf9e561c6565f72b0fff2b3a3313b70848d2·...·]-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="1396107535-1">(</span><span·class="p"·data-group-id="1396107535-2">[</span><span·class="p"·data-group-id="1396107535-3">&lt;&lt;</span><span·class="s">&quot;abc..a&quot;</span><span·class="p"·data-group-id="1396107535-3">&gt;&gt;</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·645,·SHA:·8cda455d02ff4a874dc344b729fc67d6b67bc315603564985c270376cf3fdd18·...·]-1">)</span><span·class="p">.</span><span·class="w">
1075 </span><span·class="p"·data-group-id="7937348360-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="7937348360-7">&gt;&gt;</span></code></pre>1075 </span><span·class="p"·data-group-id="1396107535-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="1396107535-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.6/doc/html/erlang.html#t:char/0">char</a>()]·|·{error,·[<a·href="../../../../erts-15.2.6/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.6/doc/html/erlang.html#t:char/0">char</a>()]·|·{error,·[<a·href="../../../../erts-15.2.6/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="4712764011-1">(</span><span·class="p"·data-group-id="4712764011-2">[</span><span·class="p"·data-group-id="4712764011-3">&lt;&lt;</span><span·class="s">&quot;abc..a&quot;</span><span·class="p"·data-group-id="4712764011-3">&gt;&gt;</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·645,·SHA:·733993bb4f6661dc00aa32266638a024672b4c417a98fbeac6f550caaf98e09a·...·]-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="9160333702-1">(</span><span·class="p"·data-group-id="9160333702-2">[</span><span·class="p"·data-group-id="9160333702-3">&lt;&lt;</span><span·class="s">&quot;abc..a&quot;</span><span·class="p"·data-group-id="9160333702-3">&gt;&gt;</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·645,·SHA:·0eb58f595bd153700ef08f4b0953413be7f0b340825f4341a5efe6fd94054e91·...·]-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="0750780381-1">(</span><span·class="s">&quot;abc..åäö&quot;</span><span·class="p"·data-group-id="0750780381-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="8700368437-1">(</span><span·class="s">&quot;abc..åäö&quot;</span><span·class="p"·data-group-id="8700368437-1">)</span><span·class="p">.</span><span·class="w">
1135 </span><span·class="p"·data-group-id="0750780381-2">&lt;&lt;</span><span·class="mi">97</span><span·class="p">,</span><span·class="mi">98</span><span·class="p">,</span><span·class="mi">99</span><span·class="p">,</span><span·class="mi">46</span><span·class="p">,</span><span·class="mi">46</span><[·...·truncated·by·diffoscope;·len:·497,·SHA:·8cfc6b44083acef6ad8b76991a9e8ab1c9ad1e61a127777f595ea42d03729d83·...·]-2">&gt;&gt;</span></code></pre>1135 </span><span·class="p"·data-group-id="8700368437-2">&lt;&lt;</span><span·class="mi">97</span><span·class="p">,</span><span·class="mi">98</span><span·class="p">,</span><span·class="mi">99</span><span·class="p">,</span><span·class="mi">46</span><span·class="p">,</span><span·class="mi">46</span><[·...·truncated·by·diffoscope;·len:·497,·SHA:·b7f5cfc3a32feecd7e44bfb704e1cd10da317f52a7742a5a1f7e7f1f0b7a96dd·...·]-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.6/doc/html/erlang.html#t:char/0">char</a>()]·|·{error,·[<a·href="../../../../erts-15.2.6/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.6/doc/html/erlang.html#t:char/0">char</a>()]·|·{error,·[<a·href="../../../../erts-15.2.6/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="6371406356-1">(</span><span·class="s">&quot;abc..åäö&quot;</span><span·class="p"·data-group-id="6371406356-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="7896577497-1">(</span><span·class="s">&quot;abc..åäö&quot;</span><span·class="p"·data-group-id="7896577497-1">)</span><span·class="p">.</span><span·class="w">
1165 </span><span·class="p"·data-group-id="6371406356-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:·9c4cce43df7e226380d80f1ebbb2cc5e95cc6a429f789d9f9a2cdbbaef8cd240·...·]-2">]</span></code></pre>1165 </span><span·class="p"·data-group-id="7896577497-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:·1a7316be9fe913a46906c76c0476f691846c1dcf79130929aba5da311c4933a1·...·]-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="6174665183-1">(</span><span·class="p"·data-group-id="6174665183-2">[</span><span·class="p"·data-group-id="6174665183-3">&lt;&lt;</span><span·class="s">&quot;abc..a&quot;</span><span·class="p"·data-group-id="6174665183-3">&gt;&gt;</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·857,·SHA:·c82fd84522cd75fff856d364e1f490420ff67d237a9dcb0f3ffb9d7c6513597f·...·]-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="5333219648-1">(</span><span·class="p"·data-group-id="5333219648-2">[</span><span·class="p"·data-group-id="5333219648-3">&lt;&lt;</span><span·class="s">&quot;abc..a&quot;</span><span·class="p"·data-group-id="5333219648-3">&gt;&gt;</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·857,·SHA:·6cb9ad17aee21457d2df66a74b7bf78d94771f2d3b6860d6a0d3b899f7124eec·...·]-1">)</span><span·class="p">.</span><span·class="w">
1195 </span><span·class="p"·data-group-id="6174665183-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="6174665183-8">&gt;&gt;</span></code></pre>1195 </span><span·class="p"·data-group-id="5333219648-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="5333219648-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.6/doc/html/erlang.html#t:char/0">char</a>()]·|·{error,·[<a·href="../../../../erts-15.2.6/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.6/doc/html/erlang.html#t:char/0">char</a>()]·|·{error,·[<a·href="../../../../erts-15.2.6/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="8398919516-1">(</span><span·class="p"·data-group-id="8398919516-2">[</span><span·class="p"·data-group-id="8398919516-3">&lt;&lt;</span><span·class="s">&quot;abc..a&quot;</span><span·class="p"·data-group-id="8398919516-3">&gt;&gt;</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·857,·SHA:·3b45bfd24a370c6fd24539d8f9cd2e8eb2e5b26b7e45bc77e3e673385221afab·...·]-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="0108956929-1">(</span><span·class="p"·data-group-id="0108956929-2">[</span><span·class="p"·data-group-id="0108956929-3">&lt;&lt;</span><span·class="s">&quot;abc..a&quot;</span><span·class="p"·data-group-id="0108956929-3">&gt;&gt;</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·857,·SHA:·41e3b37a40c9f481bdd500a0b007511698efb407dcfad7281cbc357afa7579d6·...·]-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.2/doc/html/unicode_usage.html
    
Offset 335, 28 lines modifiedOffset 335, 28 lines modified
335 communicating·externally.·Functions·and·bit·syntax·exist·to·encode·and·decode335 communicating·externally.·Functions·and·bit·syntax·exist·to·encode·and·decode
336 both·UTF-8,·UTF-16,·and·UTF-32·in·binaries.·However,·library·functions·dealing336 both·UTF-8,·UTF-16,·and·UTF-32·in·binaries.·However,·library·functions·dealing
337 with·binaries·and·Unicode·in·general·only·deal·with·the·default·encoding.</p><p>Character·data·can·be·combined·from·many·sources,·sometimes·available·in·a·mix337 with·binaries·and·Unicode·in·general·only·deal·with·the·default·encoding.</p><p>Character·data·can·be·combined·from·many·sources,·sometimes·available·in·a·mix
338 of·strings·and·binaries.·Erlang·has·for·long·had·the·concept·of·<code·class="inline">iodata</code>·or338 of·strings·and·binaries.·Erlang·has·for·long·had·the·concept·of·<code·class="inline">iodata</code>·or
339 <code·class="inline">iolist</code>s,·where·binaries·and·lists·can·be·combined·to·represent·a·sequence·of339 <code·class="inline">iolist</code>s,·where·binaries·and·lists·can·be·combined·to·represent·a·sequence·of
340 bytes.·In·the·same·way,·the·Unicode-aware·modules·often·allow·for·combinations340 bytes.·In·the·same·way,·the·Unicode-aware·modules·often·allow·for·combinations
341 of·binaries·and·lists,·where·the·binaries·have·characters·encoded·in·UTF-8·and341 of·binaries·and·lists,·where·the·binaries·have·characters·encoded·in·UTF-8·and
342 the·lists·contain·such·binaries·or·numbers·representing·Unicode·code·points:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">unicode_binary</span><span·class="p"·data-group-id="0658292726-1">(</span><span·class="p"·data-group-id="0658292726-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="0658292726-2">(</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·14,·SHA:·b77c0b418a0c8e6f58e43c61e37ef92a739023d12231c61e1e6e9e547d7cd443·...·]6-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="2466431066-1">(</span><span·class="p"·data-group-id="2466431066-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="2466431066-2">(</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·14,·SHA:·8f33d32e5532e311c63cb50d324ca0eeba4de3cb6c6296b3eb37ffd62379112d·...·]6-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="0658292726-3">(</span><span·class="p"·data-group-id="0658292726-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="0658292726-4">(</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·232,·SHA:·f3bc552b840103e0351f8bcdf221d3c5cc2b690d2f3b5794875bb265bc1f2545·...·]6-5">)</span><span·class="w">343 </span><span·class="nf">chardata</span><span·class="p"·data-group-id="2466431066-3">(</span><span·class="p"·data-group-id="2466431066-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="2466431066-4">(</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·232,·SHA:·410f847fae87e243682855bf479f28ec1461b25961316ff840ea4acd2ad79565·...·]6-5">)</span><span·class="w">
  
344 </span><span·class="nf">charlist</span><span·class="p"·data-group-id="0658292726-6">(</span><span·class="p"·data-group-id="0658292726-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="0658292726-7">(</span><span·class="[·...·truncated·by·diffoscope;·len:·535,·SHA:·e710761a37327dd75596f840a66d19c556f1cdba83dcb6c17238e34ce14ddc23·...·]6-10">)</span><span·class="p">,</span><span·class="w">344 </span><span·class="nf">charlist</span><span·class="p"·data-group-id="2466431066-6">(</span><span·class="p"·data-group-id="2466431066-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="2466431066-7">(</span><span·class="[·...·truncated·by·diffoscope;·len:·535,·SHA:·1c4a2b8a889f95a89e2134aeb50b276e96fff791e6eacdcacab19a72160415ad·...·]6-10">)</span><span·class="p">,</span><span·class="w">
345 ··</span><span·class="nf">unicode_binary</span><span·class="p"·data-group-id="0658292726-11">(</span><span·class="p"·data-group-id="0658292726-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="0658292726-12">(</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·68,·SHA:·7792a0d4ed5c246b98310a1c5aae5d451986a4831484e0aacf625c98700f5762·...·]6-7">)</span></code></pre><p>The·module·<a·href="unicode.html"><code·class="inline">unicode</code></a>·even·supports·similar·mixes·with·binaries·containing345 ··</span><span·class="nf">unicode_binary</span><span·class="p"·data-group-id="2466431066-11">(</span><span·class="p"·data-group-id="2466431066-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="2466431066-12">(</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·68,·SHA:·41b8ee959d0ce2570f44237a8e5f9ab7021e527410eab28a848ccf2eaeb23d64·...·]6-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="3430476293-1">(</span><span·class="p"·data-group-id="3430476293-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="3430476293-2">(</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·6ad8653eb4151caf656dd208cba1eb34f618a7238af85b409d318013b1a9eeb7·...·]-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="4405056015-1">(</span><span·class="p"·data-group-id="4405056015-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="4405056015-2">(</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·ac4c8dd7988e7f3880730347ff84f6c4357da99b97df8a5df727abba8f7a0cff·...·]-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="3430476293-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:·266a85ad8fea81ecc327773c0de55776331032dcf0e0ebe4aa12df0c6834d200·...·]-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="4405056015-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:·04a16c5e33c96096e5fc68f2cb5fd9695bb05682ae52c87306f4c2f1a9fd4aa3·...·]-3">)</span><span·class="w">
  
349 </span><span·class="nf">external_chardata</span><span·class="p"·data-group-id="3430476293-4">(</span><span·class="p"·data-group-id="3430476293-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="3430476293-5">(</span><span·class="p"[·...·truncated·by·diffoscope;·len:·251,·SHA:·0766f7e834ccd54bad4f772a0a889982b100193d8d78c50e2f24dec186baa7bb·...·]-6">)</span><span·class="w">349 </span><span·class="nf">external_chardata</span><span·class="p"·data-group-id="4405056015-4">(</span><span·class="p"·data-group-id="4405056015-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="4405056015-5">(</span><span·class="p"[·...·truncated·by·diffoscope;·len:·251,·SHA:·55df8960fb8721c64993a0dd5b2bb2aae2ce949e50692ad90cf09484dbf7714b·...·]-6">)</span><span·class="w">
  
350 </span><span·class="nf">external_charlist</span><span·class="p"·data-group-id="3430476293-7">(</span><span·class="p"·data-group-id="3430476293-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="3430476293-8">(</span><span·class="[·...·truncated·by·diffoscope;·len:·335,·SHA:·fafbd405635058aff6f224424e3244c8f9d913d06e9bc5093440cd2689da7062·...·]-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="4405056015-7">(</span><span·class="p"·data-group-id="4405056015-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="4405056015-8">(</span><span·class="[·...·truncated·by·diffoscope;·len:·335,·SHA:·ed69d48b71a2956c1371d317e885a6e6a546b32d1b8a63f0968c95f7f9b0230a·...·]-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="3430476293-11">(</span><span·class="p"·data-group-id="3430476293-11">)</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">external_unicode_binary</span><span·class="p"·data-group-id="3430476293-12">(</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·272,·SHA:·152caa4bcba1e02a7b7fbfacc1a9ad885f8db05f4b8a4707863f39944c17d48f·...·]-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="4405056015-11">(</span><span·class="p"·data-group-id="4405056015-11">)</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">external_unicode_binary</span><span·class="p"·data-group-id="4405056015-12">(</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·272,·SHA:·f463edb9802a2eb7bc2dbb4dee28479e4e6d77378f2f0454d8c8d83b16b7894e·...·]-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="0734476792-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="0734476792-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="8589096219-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="8589096219-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="0734476792-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="0734476792-2">&gt;&gt;</span><span·class="p">.</span><span·class="w">405 2&gt;·</span><span·class="p"·data-group-id="8589096219-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="8589096219-2">&gt;&gt;</span><span·class="p">.</span><span·class="w">
406 </span><span·class="p"·data-group-id="0734476792-3">&lt;&lt;</span><span·class="s">&quot;abc&quot;</span><span·class="p"·data-group-id="0734476792-3">&gt;&gt;</span><span·class="gp·unselectable">406 </span><span·class="p"·data-group-id="8589096219-3">&lt;&lt;</span><span·class="s">&quot;abc&quot;</span><span·class="p"·data-group-id="8589096219-3">&gt;&gt;</span><span·class="gp·unselectable">
407 3&gt;·</span><span·class="p"·data-group-id="0734476792-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:·5bc9d20b1832793170305d23cbc228b771507b8468f01022bf40d8fd72cb0ef0·...·]-4">&gt;&gt;</span><span·class="p">.</span><span·class="w">407 3&gt;·</span><span·class="p"·data-group-id="8589096219-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:·03492f33c94e434fd69d22c757b9546ad6d3be4fae23278acb3a32ea5c04c0f3·...·]-4">&gt;&gt;</span><span·class="p">.</span><span·class="w">
408 </span><span·class="p"·data-group-id="0734476792-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="0734476792-5">&gt;&gt;</span></code></pre><p>Here·the·shell·detects·lists·containing·printable·characters·or·binaries408 </span><span·class="p"·data-group-id="8589096219-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="8589096219-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="2836113438-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="2836113438-1">)</span><span·class="w">·</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·782,·SHA:·10a1bbd4384ff4c5c49e3fa89a660f00839ff2d82c1ab93c89a2ea7d14bfd8df·...·]-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="8011542444-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="8011542444-1">)</span><span·class="w">·</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·782,·SHA:·c9a6fc10fd9a7a49d45c6bdaff15cc54482d8f5f8acedd138b7233a10c15b6a7·...·]-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="2836113438-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="2836113438-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="8011542444-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="8011542444-6">)</span><span·class="gp·unselectable">
425 1&gt;·</span><span·class="p"·data-group-id="2836113438-7">[</span><span·class="mi">1024</span><span·class="p"·data-group-id="2836113438-7">]</span><span·class="p">.</span><span·class="w">425 1&gt;·</span><span·class="p"·data-group-id="8011542444-7">[</span><span·class="mi">1024</span><span·class="p"·data-group-id="8011542444-7">]</span><span·class="p">.</span><span·class="w">
426 </span><span·class="p"·data-group-id="2836113438-8">[</span><span·class="mi">1024</span><span·class="p"·data-group-id="2836113438-8">]</span><span·class="gp·unselectable">426 </span><span·class="p"·data-group-id="8011542444-8">[</span><span·class="mi">1024</span><span·class="p"·data-group-id="8011542444-8">]</span><span·class="gp·unselectable">
427 2&gt;·</span><span·class="p"·data-group-id="2836113438-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:·fe6d6e1ebce7d6439f6ad6f9087c283070506acd660be4ccac9931edff1ab7a3·...·]-9">]</span><span·class="p">.</span><span·class="w">427 2&gt;·</span><span·class="p"·data-group-id="8011542444-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:·aa62e13bf777a785331be74caa9f4fe8c35d17c4ce9b3e32b25138d5f673d7a4·...·]-9">]</span><span·class="p">.</span><span·class="w">
428 </span><span·class="p"·data-group-id="2836113438-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:·57078da4553b92087c992d04f0cda956d5cbd1332c217a5a60a0905a70772e39·...·]-10">]</span><span·class="gp·unselectable">428 </span><span·class="p"·data-group-id="8011542444-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:·b1938e60b373d64a55a13bf976abf13047e66014b4169de149e22fc47782896e·...·]-10">]</span><span·class="gp·unselectable">
429 3&gt;·</span><span·class="p"·data-group-id="2836113438-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="2836113438-11">]</span><span·class="p">.</span><span·class="w">429 3&gt;·</span><span·class="p"·data-group-id="8011542444-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="8011542444-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="2836113438-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:·595f4b54b971bda95d2fd4579938f7c7c95d97ff0840616f8381d4acb0d8082b·...·]-12">&gt;&gt;</span><span·class="p">.</span><span·class="w">431 4&gt;·</span><span·class="p"·data-group-id="8011542444-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:·2b6f904d857af5ae544a58cbaa6d9fb9b05a10c9f3fac4616eefdb66cabd6347·...·]-12">&gt;&gt;</span><span·class="p">.</span><span·class="w">
432 </span><span·class="p"·data-group-id="2836113438-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:·595f4b54b971bda95d2fd4579938f7c7c95d97ff0840616f8381d4acb0d8082b·...·]-13">&gt;&gt;</span><span·class="gp·unselectable">432 </span><span·class="p"·data-group-id="8011542444-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:·2b6f904d857af5ae544a58cbaa6d9fb9b05a10c9f3fac4616eefdb66cabd6347·...·]-13">&gt;&gt;</span><span·class="gp·unselectable">
433 5&gt;·</span><span·class="p"·data-group-id="2836113438-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:·942dba47619c02ad732698d28b25dbbc4c6741af11f8fd43a0006c2115a2638e·...·]-14">&gt;&gt;</span><span·class="p">.</span><span·class="w">433 5&gt;·</span><span·class="p"·data-group-id="8011542444-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:·8b45265efe9b0d7ff0a22562ba71eb6b109bd16ffc3cf1ff0878cb375d0fa0d3·...·]-14">&gt;&gt;</span><span·class="p">.</span><span·class="w">
434 </span><span·class="p"·data-group-id="2836113438-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="2836113438-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="8011542444-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="8011542444-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="5184661344-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="5184661344-1">)</span><span·class="w">·</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·782,·SHA:·81201a9d339507a9033963ca2ec9a7aeaf9d256d48c61fa346550cc80d5ef010·...·]-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="2508809487-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="2508809487-1">)</span><span·class="w">·</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·782,·SHA:·decedc2bb98ab8c4a6fdd6671ba1b403ee3da9b8e2f61e8b317f191589afef8e·...·]-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="5184661344-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="5184661344-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="2508809487-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="2508809487-6">)</span><span·class="gp·unselectable">
437 1&gt;·</span><span·class="p"·data-group-id="5184661344-7">[</span><span·class="mi">1024</span><span·class="p"·data-group-id="5184661344-7">]</span><span·class="p">.</span><span·class="w">437 1&gt;·</span><span·class="p"·data-group-id="2508809487-7">[</span><span·class="mi">1024</span><span·class="p"·data-group-id="2508809487-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="5184661344-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:·69a11f525054f60cf14e29369666c15ecfff8f362c0bf059ecbb0449dc1ea78b·...·]-8">]</span><span·class="p">.</span><span·class="w">439 2&gt;·</span><span·class="p"·data-group-id="2508809487-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:·790ec682b2fb545bf033c9943a9f728a0afc634d42ac3b8f34aed1129d2d343f·...·]-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="5184661344-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="5184661344-9">]</span><span·class="p">.</span><span·class="w">441 3&gt;·</span><span·class="p"·data-group-id="2508809487-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="2508809487-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="5184661344-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:·5c6aa6922cab7e87e66c047e91b2f8fe16ccfb7620cf8a874b97b0d4770c9c39·...·]-10">&gt;&gt;</span><span·class="p">.</span><span·class="w">443 4&gt;·</span><span·class="p"·data-group-id="2508809487-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:·0eb8ecfce4714e35c42a13643fca63a2c623ee4bbb8ece17f8672a0ffed9d97d·...·]-10">&gt;&gt;</span><span·class="p">.</span><span·class="w">
444 </span><span·class="p"·data-group-id="5184661344-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="5184661344-11">&gt;&gt;</span><span·class="gp·unselectable">444 </span><span·class="p"·data-group-id="2508809487-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="2508809487-11">&gt;&gt;</span><span·class="gp·unselectable">
445 5&gt;·</span><span·class="p"·data-group-id="5184661344-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:·ec8ff1ddb8ac8e4be47cae316f1d664489853604ba567540081b3d43f616cc24·...·]-12">&gt;&gt;</span><span·class="p">.</span><span·class="w">445 5&gt;·</span><span·class="p"·data-group-id="2508809487-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:·805bb529b5f82f34d40dd8c9f33bad014109e3b0e1f243c3d9f5207363870701·...·]-12">&gt;&gt;</span><span·class="p">.</span><span·class="w">
446 </span><span·class="p"·data-group-id="5184661344-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="5184661344-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="2508809487-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="2508809487-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="8270566880-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="8270566880-1">)</span><span·class="w">·</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·782,·SHA:·4863f4af75d379f2c4fcbb973af5361943e5ca3aa9d8f83327b4ecaeeaab7dac·...·]-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="3936622352-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="3936622352-1">)</span><span·class="w">·</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·782,·SHA:·9e9c1d639842686f3ce370286fd6a49abaf47eb6ee2b22e67e8a85bf34c07878·...·]-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="8270566880-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="8270566880-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="3936622352-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="3936622352-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="8270566880-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="8270566880-8">[</span><span·class="p"·data-group-id="8270566880-9">{</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·1308,·SHA:·393143b0db358f61419cadd01fd585c8e9e71a7dc0f7bb83704c0ba108990ce2·...·]-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="3936622352-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="3936622352-8">[</span><span·class="p"·data-group-id="3936622352-9">{</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·1308,·SHA:·65fd2283cc8f8cba4191d37580db94b30bd215cc6c30c67af70a58c8aaa6075e·...·]-7">)</span><span·class="p">.</span><span·class="w">
457 </span><span·class="p"·data-group-id="8270566880-13">{</span><span·class="p"·data-group-id="8270566880-14">&lt;&lt;</span><span·class="s">&quot;åäö&quot;</span><span·class="p"·data-group-id="8270566880-14">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="8270566880-15">&lt[·...·truncated·by·diffoscope;·len:·938,·SHA:·997e696e0d122cd820d4b5422f6cfae55c48726c025aa0693d919e6961a937b6·...·]-13">}</span><span·class="w">457 </span><span·class="p"·data-group-id="3936622352-13">{</span><span·class="p"·data-group-id="3936622352-14">&lt;&lt;</span><span·class="s">&quot;åäö&quot;</span><span·class="p"·data-group-id="3936622352-14">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="3936622352-15">&lt[·...·truncated·by·diffoscope;·len:·938,·SHA:·583e8a873ac2c7a6632ce0f162bd6edf33aecbba79e2b8e76b615c086f98ba95·...·]-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="6570503672-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="6570503672-1">)</span><span·class="w">·</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·782,·SHA:·9175a96e5590258ce02fd087491bf1e108815739133d121874c049b4aa5681d7·...·]-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="1240793364-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="1240793364-1">)</span><span·class="w">·</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·782,·SHA:·08f6a01649af4c915d421283db012d38d4f137b5bf05bd1aa16e22f6799acbd7·...·]-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="6570503672-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="6570503672-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="1240793364-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="1240793364-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="6570503672-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="6570503672-8">[</span><span·class="p"·data-group-id="6570503672-9">{</span><span·class="p"·data-group-id="6570503672-10">&lt;&lt;</span><span·class="s">&quot;åäö&quot;</span><span·class="p"·data-group-id="6570503672-10">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6570503672-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="6570503672-11">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6570503672-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</span><span·class="p">,</span><span·class="mi">184</span><span·class="p">,</span><span·class="mi">208</span><span·class="p">,</span><span·class="mi">186</span><span·class="p">,</span><span·class="mi">208</span><span·class="p">,</span><span·class="mi">190</span><span·class="p">,</span><span·class="mi">208</span><span·class="p">,</span><span·class="mi">180</span><span·class="p"·data-group-id="6570503672-12">&gt;&gt;</span><span·class="p"·data-group-id="6570503672-9">}</span><span·class="p"·data-group-id="6570503672-8">]</span><span·class="p"·data-group-id="6570503672-7">)</span><span·class="p">.</span><span·class="w"> 
462 </span><span·class="p"·data-group-id="6570503672-13">{</span><span·class="p"·data-group-id="6570503672-14">&lt;&lt;</span><span·class="s">&quot;åäö&quot;</span><span·class="p"·data-group-id="6570503672-14">&gt;&gt;</span><span·class="p">,</span><span·class[·...·truncated·by·diffoscope;·len:·487,·SHA:·d8eef6cbc921340aa31f1ba7e1d12cf25c5aa805281712e42b9b66377a1ae75d·...·]</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="1240793364-7">(</span><span·class="s">&quot;~tp</span><span·class="si">~n</span><span·class="s">&quot;</span><span·class="p">,</span[·...·truncated·by·diffoscope;·len:·1461,·SHA:·41938c620b5a21bd662d350e993d555bf7e859279902cfc428268f08bfb5d4fa·...·]</span><span·class="w">
 462 </span><span·class="p"·data-group-id="1240793364-13">{</span><span·class="p"·data-group-id="1240793364-14">&lt;&lt;</span><span·class="s">&quot;åäö&quot;</span><span·class="p"·data-group-id="1240793364-14">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="1240793364-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="1240793364-15">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="1240793364-16">&lt;&lt;</span><span·class="s">&quot;Юникод&quot;</span><span·class="o">/</span><span·class="ss">utf8</span><span·class="p"·data-group-id="1240793364-16">&gt;&gt;</span><span·class="p"·data-group-id="1240793364-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="5853094123-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="5853094123-1">)</span><span·class="w">·</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·782,·SHA:·99df2536d344d25a39d039dd046c1a50a9189c05083fbd8c91770dd353275866·...·]-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="6460823684-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="6460823684-1">)</span><span·class="w">·</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·782,·SHA:·298e3ae12501667daf52c05f1104b44b0cf3a07c1d6d89c2fc7c2e1c0f44aed7·...·]-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="5853094123-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="5853094123-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="6460823684-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="6460823684-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="5853094123-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:·e177daa64d6650dafb672144b1ef9d02d363418af553e1db42c69551576a5fc2·...·]-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="6460823684-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:·edde24a41716e1530a534b16a5bfec66b091005a79ddcf1cedd33c2d9a9aa224·...·]-7">)</span><span·class="p">.</span><span·class="w">
492 </span><span·class="p"·data-group-id="5853094123-9">{</span><span·class="ss">encoding</span><span·class="p">,</span><span·class="ss">latin1</span><span·class="p"·data-group-id="5853094123-9">}</span><span·class="gp·unselectable">492 </span><span·class="p"·data-group-id="6460823684-9">{</span><span·class="ss">encoding</span><span·class="p">,</span><span·class="ss">latin1</span><span·class="p"·data-group-id="6460823684-9">}</span><span·class="gp·unselectable">
493 2&gt;·</span><span·class="nf">q</span><span·class="p"·data-group-id="5853094123-10">(</span><span·class="p"·data-group-id="5853094123-10">)</span><span·class="p">.</span><span·class="w">493 2&gt;·</span><span·class="nf">q</span><span·class="p"·data-group-id="6460823684-10">(</span><span·class="p"·data-group-id="6460823684-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="5853094123-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="5853094123-11">)</span><span·class="w">·</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·791,·SHA:·8acecfd68740eec6d63fc3f040c5562a75aee71b70e7dff6ddd4bc4ac202d962·...·]-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="6460823684-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="6460823684-11">)</span><span·class="w">·</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·791,·SHA:·c298fc46a51bb54059d05872450f7453bd7fd455c15c6c4c58a86fe6b40c7467·...·]-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="5853094123-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="5853094123-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="6460823684-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="6460823684-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.2/doc/html/uri_string.html
    
Offset 587, 19 lines modifiedOffset 587, 19 lines modified
587 ···························QueryString·::·<a·href="#t:uri_string/0">uri_string</a>()·|·<a·href="#t:error/0">error</a>().</pre>587 ···························QueryString·::·<a·href="#t:uri_string/0">uri_string</a>()·|·<a·href="#t:error/0">error</a>().</pre>
  
588 ······</div>588 ······</div>
  
589 <p>Composes·a·form-urlencoded·<code·class="inline">QueryString</code>·based·on·a·<code·class="inline">QueryList</code>,·a·list·of589 <p>Composes·a·form-urlencoded·<code·class="inline">QueryString</code>·based·on·a·<code·class="inline">QueryList</code>,·a·list·of
590 non-percent-encoded·key-value·pairs.</p><p>Form-urlencoding·is·defined·in·section·4.10.21.6·of·the·<a·href="https://www.w3.org/TR/html52/">HTML·5.2</a>590 non-percent-encoded·key-value·pairs.</p><p>Form-urlencoding·is·defined·in·section·4.10.21.6·of·the·<a·href="https://www.w3.org/TR/html52/">HTML·5.2</a>
591 specification·and·in·section·4.10.22.6·of·the·<a·href="https://www.w3.org/TR/html50/">HTML·5.0</a>591 specification·and·in·section·4.10.22.6·of·the·<a·href="https://www.w3.org/TR/html50/">HTML·5.0</a>
592 specification·for·non-UTF-8·encodings.</p><p>See·also·the·opposite·operation·<a·href="#dissect_query/1"><code·class="inline">dissect_query/1</code></a>.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">1&gt;·</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">compose_query</span><span·class="p"·data-group-id="0489752476-1">(</span><span·class="p"·data-group-id="0489752476-2">[</span><span·class="p"·data-group-id="0489752476-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:·c30d22e4550bb24d7173aac7d599966eabbeb13926de483f61ce065bf04cd663·...·]-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="4607232308-1">(</span><span·class="p"·data-group-id="4607232308-2">[</span><span·class="p"·data-group-id="4607232308-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:·cb6bd448d75b005dfe3649680ff7df81f4f36cc8619f07f2861ccf7a1b548c8b·...·]-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="0489752476-5">(</span><span·class="p"·data-group-id="0489752476-6">[</span><span·class="p"·data-group-id="0489752476-7">{</span><span·class="p"·data-group-id="0489752476-8">&lt;&lt;</span><span·class="s">&quot;foo·bar&quot;</span><span·class="p"·data-group-id="0489752476-8">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="0489752476-9">&lt;&lt;</span><span·class="s">&quot;1&quot;</span><span·class="p"·data-group-id="0489752476-9">&gt;&gt;</span><span·class="p"·data-group-id="0489752476-7">}</span><span·class="p">,</span><span·class="gp·unselectable"> 
595 2&gt;·</span><span·class="p"·data-group-id="0489752476-10">{</span><span·class="p"·data-group-id="0489752476-11">&lt;&lt;</span><span·class="s">&quot;city&quot;</span><span·class="p"·data-group-id="0489752476-11">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·383,·SHA:·017eb44952ef3e9c2ee77c34bcba35fc58b399a37bc667627d8e5b00cdd61d1e·...·]">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="4607232308-5">(</span><span·class="p"·data-group-id="4607232308-6">[</span><span·class="p"·data-group-id="4607232308-7">{</span><span·class="p"[·...·truncated·by·diffoscope;·len:·432,·SHA:·e5cf56d836dc58f5dabcc7f88abd75f0ff9b786fe4b7408ebe88bea362a73acc·...·]">
 595 2&gt;·</span><span·class="p"·data-group-id="4607232308-10">{</span><span·class="p"·data-group-id="4607232308-11">&lt;&lt;</span><span·class="s">&quot;city&quot;</span><span·class="p"·data-group-id="4607232308-11">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="4607232308-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="4607232308-12">&gt;&gt;</span><span·class="p"·data-group-id="4607232308-10">}</span><span·class="p"·data-group-id="4607232308-6">]</span><span·class="p"·data-group-id="4607232308-5">)</span><span·class="p">.</span><span·class="w">
596 </span><span·class="p"·data-group-id="0489752476-13">&lt;&lt;</span><span·class="s">&quot;foo+bar=1&amp;city=%C3%B6rebro&quot;</span><span·class="p"·data-group-id="0489752476-13">&gt;&gt;</span></code></pre>596 </span><span·class="p"·data-group-id="4607232308-13">&lt;&lt;</span><span·class="s">&quot;foo+bar=1&amp;city=%C3%B6rebro&quot;</span><span·class="p"·data-group-id="4607232308-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="3814815330-1">(</span><span·class="p"·data-group-id="3814815330-2">[</span><span·class="p"·data-group-id="3814815330-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:·ba5a7e436d144a2ee62c7650135bb41ba6963493291f26b065d46e756af5b9d2·...·]0-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="6179207670-1">(</span><span·class="p"·data-group-id="6179207670-2">[</span><span·class="p"·data-group-id="6179207670-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:·87dc7a5e27285c8d6d5da59f2bfd62991cb3dfa1a26782f85dfca65910cc40c5·...·]0-2">]</span><span·class="p">,</span><span·class="gp·unselectable">
640 1&gt;·</span><span·class="p"·data-group-id="3814815330-5">[</span><span·class="p"·data-group-id="3814815330-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="3814815330-6">}</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·75,·SHA:·783c503bea1bd3b7106de8f0e28453fd38c0c375dcf3d1cc6bbd7775e5881a12·...·]0-1">)</span><span·class="p">.</span><span·class="w">640 1&gt;·</span><span·class="p"·data-group-id="6179207670-5">[</span><span·class="p"·data-group-id="6179207670-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="6179207670-6">}</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·75,·SHA:·7ce13ec4755185beb2e39c08f939c66691fdc9aa797321c3c9db77fa954bacb1·...·]0-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="3814815330-7">(</span><span·class="p"·data-group-id="3814815330-8">[</span><span·class="p"·data-group-id="3814815330-9">{</span><span·class="p"·data-group-id="3814815330-10">&lt;&lt;</span><span·class="s">&quot;foo·bar&quot;</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·258,·SHA:·c2d7d97ead0bfe47852a2ce71232eb890bc7ba3a73f0e2460deed82e3e13a3b3·...·]0-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="6179207670-7">(</span><span·class="p"·data-group-id="6179207670-8">[</span><span·class="p"·data-group-id="6179207670-9">{</span><span·class="p"·data-group-id="6179207670-10">&lt;&lt;</span><span·class="s">&quot;foo·bar&quot;</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·258,·SHA:·828029b9b17bdb23daf25ca86c9064b387e36759e0065d4282dd448a1826ab6d·...·]0-9">}</span><span·class="p">,</span><span·class="gp·unselectable">
643 2&gt;·</span><span·class="p"·data-group-id="3814815330-12">{</span><span·class="p"·data-group-id="3814815330-13">&lt;&lt;</span><span·class="s">&quot;city&quot;</span><span·class="p"·data-group-id="3814815330-13">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="3814815330-14">&lt;&lt;</span><span·class="s">&quot;東京&quot;</span><span·class="o">/</span><span·class="ss">utf8</span><span·class="p"·data-group-id="3814815330-14">&gt;&gt;</span><span·class="p"·data-group-id="3814815330-12">}</span><span·class="p"·data-group-id="3814815330-8">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3814815330-15">[</span><span·class="p"·data-group-id="3814815330-16">{</span><span·class="ss">encoding</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">latin1</span><span·class="p"·data-group-id="3814815330-16">}</span><span·class="p"·data-group-id="3814815330-15">]</span><span·class="p"·data-group-id="3814815330-7">)</span><span·class="p">.</span><span·class="w"> 
644 </span><span·class="p"·data-group-id="3814815330-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="3814815330-17">&gt;&gt;</span></code></pre>643 2&gt;·</span><span·class="p"·data-group-id="6179207670-12">{</span><span·class="p"·data-group-id="6179207670-13">&lt;&lt;</span><span·class="s">&quot;city&quot;</span><span·class="p"·data-group-id="6179207670-13">&gt;&gt;</span><span·class="p">,</span><spa[·...·truncated·by·diffoscope;·len:·780,·SHA:·12c906d35e051fd66eae4c947ce9e2aeac49cd1faf56f44d6dc3574c465efadf·...·]>
 644 </span><span·class="p"·data-group-id="6179207670-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="6179207670-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="4698698333-1">(</span><span·class="s">&quot;foo+bar=1&amp;city=%C3%B6rebro&quot;</span><span·class="p"·data-group-id="4698698333-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="0962864589-1">(</span><span·class="s">&quot;foo+bar=1&amp;city=%C3%B6rebro&quot;</span><span·class="p"·data-group-id="0962864589-1">)</span><span·class="p">.</span><span·class="w">
677 </span><span·class="p"·data-group-id="4698698333-2">[</span><span·class="p"·data-group-id="4698698333-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="4698698333-3">}</span><span·class="p">,</span><s[·...·truncated·by·diffoscope;·len:·249,·SHA:·85e2a234f15c08bc521ee8c41df7d6c518e4a35cd87a45bc0d7e4978774b47c7·...·]-2">]</span><span·class="gp·unselectable">677 </span><span·class="p"·data-group-id="0962864589-2">[</span><span·class="p"·data-group-id="0962864589-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="0962864589-3">}</span><span·class="p">,</span><s[·...·truncated·by·diffoscope;·len:·249,·SHA:·4bb12ac3cd8b09b0e17c838b0a948b55d20694d3a3c5b7a97264f1f5e5f17f44·...·]-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="4698698333-5">(</span><span·class="p"·data-group-id="4698698333-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="4698698333-6">&gt;&gt;</span><span·class="p"·data-group-id="4[·...·truncated·by·diffoscope;·len:·9,·SHA:·075cd2b4baf306b37b0716d30e5e17cc84fc417127e8cc975921178ea4190c6b·...·]-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="0962864589-5">(</span><span·class="p"·data-group-id="0962864589-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="0962864589-6">&gt;&gt;</span><span·class="p"·data-group-id="0[·...·truncated·by·diffoscope;·len:·9,·SHA:·0b9bfb311a806d8b5a26be223a7961fc852ea9d163e0a6717725a56c9c59e127·...·]-5">)</span><span·class="p">.</span><span·class="w">
679 </span><span·class="p"·data-group-id="4698698333-7">[</span><span·class="p"·data-group-id="4698698333-8">{</span><span·class="p"·data-group-id="4698698333-9">&lt;&lt;</span><span·class="s">&quot;foo·bar&quot;</span><span·class="p"·data-group-id="4698698333-9">&gt;&gt;</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·204,·SHA:·299c0b35e58380c505c638096a145e5985dd225c795179c409bce12aa6277543·...·]-8">}</span><span·class="p">,</span><span·class="w">679 </span><span·class="p"·data-group-id="0962864589-7">[</span><span·class="p"·data-group-id="0962864589-8">{</span><span·class="p"·data-group-id="0962864589-9">&lt;&lt;</span><span·class="s">&quot;foo·bar&quot;</span><span·class="p"·data-group-id="0962864589-9">&gt;&gt;</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·204,·SHA:·f1ebcefa1b41f6de146c9afc9b62e08da0fcef371d8db38a21d827a82a5c0342·...·]-8">}</span><span·class="p">,</span><span·class="w">
680 ·</span><span·class="p"·data-group-id="4698698333-11">{</span><span·class="p"·data-group-id="4698698333-12">&lt;&lt;</span><span·class="s">&quot;city&quot;</span><span·class="p"·data-group-id="4698698333-12">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="4698698333-13">&l[·...·truncated·by·diffoscope;·len:·451,·SHA:·0025ea5d5950f174d5dee3334d57523b058023f61873da5269db77667d274ff7·...·]-7">]</span></code></pre>680 ·</span><span·class="p"·data-group-id="0962864589-11">{</span><span·class="p"·data-group-id="0962864589-12">&lt;&lt;</span><span·class="s">&quot;city&quot;</span><span·class="p"·data-group-id="0962864589-12">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="0962864589-13">&l[·...·truncated·by·diffoscope;·len:·451,·SHA:·9eb99d5c39e0a9e11aa8631c41a40df434896a8fa0c7c3ddc392b14468113fc5·...·]-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="3487767862-1">(</span><span·class="s">&quot;/a/b/c/./../../g&quot;</span><span·class="p"·data-group-id="3487767862-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="6646791715-1">(</span><span·class="s">&quot;/a/b/c/./../../g&quot;</span><span·class="p"·data-group-id="6646791715-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="3487767862-2">(</span><span·class="p"·data-group-id="3487767862-3">&lt;&lt;</span><span·class="s">&quot;mid/content=5/../6&quot;</span><span·class="p"·data-group-id="3487767862-3">&gt;&gt;</span><span·class="p"·data-group-id="3487767862-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="6646791715-2">(</span><span·class="p"·data-group-id="6646791715-3">&lt;&lt;</span><span·class="s">&quot;mid/content=5/../6&quot;</span><span·class="p"·data-group-id="6646791715-3">&gt;&gt;</span><span·class="p"·data-group-id="6646791715-2">)</span><span·class="p">.</span><span·class="w">
715 </span><span·class="p"·data-group-id="3487767862-4">&lt;&lt;</span><span·class="s">&quot;mid/6&quot;</span><span·class="p"·data-group-id="3487767862-4">&gt;&gt;</span><span·class="gp·unselectable">715 </span><span·class="p"·data-group-id="6646791715-4">&lt;&lt;</span><span·class="s">&quot;mid/6&quot;</span><span·class="p"·data-group-id="6646791715-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="3487767862-5">(</span><span·class="s">&quot;http://localhost:80&quot;</span><span·class="p"·data-group-id="3487767862-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="6646791715-5">(</span><span·class="s">&quot;http://localhost:80&quot;</span><span·class="p"·data-group-id="6646791715-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="3487767862-6">(</span><span·class="p"·data-group-id="3487767862-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="6646791715-6">(</span><span·class="p"·data-group-id="6646791715-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="3487767862-7">}</span><span·class="p"·data-group-id="3487767862-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="6646791715-7">}</span><span·class="p"·data-group-id="6646791715-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="6584693262-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="6584693262-2">[</span><span·class="ss">return_map</span><span·class="p"·data-group-id="6584693262-2">]</s[·...·truncated·by·diffoscope;·len:·45,·SHA:·94f3f722f4ceafeecae62cea6edbfadd6942891ecf4b560966dd82bc9e731278·...·]-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="6983815970-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="6983815970-2">[</span><span·class="ss">return_map</span><span·class="p"·data-group-id="6983815970-2">]</s[·...·truncated·by·diffoscope;·len:·45,·SHA:·2e2060d16bc2a34ba7f7f6d07d2ae801d98b5604691bc22c3c333b1cc1dbe6b6·...·]-1">)</span><span·class="p">.</span><span·class="w">
755 </span><span·class="p"·data-group-id="6584693262-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="6584693262-3">}</span><span·class="gp·unselectable">755 </span><span·class="p"·data-group-id="6983815970-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="6983815970-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="6584693262-4">(</span><span·class="p"·data-group-id="6584693262-5">&lt;&lt;</span><span·class="s">&quot;mid/content=5/../6&quot;</span><span·class="p"·data-group-id="6584693262-5">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="p[·...·truncated·by·diffoscope;·len:·167,·SHA:·1e6f9b252e6324995ff9f97ccda75d9bcd67a163cf2c9c3491f24adc9253c25f·...·]-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="6983815970-4">(</span><span·class="p"·data-group-id="6983815970-5">&lt;&lt;</span><span·class="s">&quot;mid/content=5/../6&quot;</span><span·class="p"·data-group-id="6983815970-5">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="p[·...·truncated·by·diffoscope;·len:·167,·SHA:·4a184eb593e1eab5bd681b7ed0462ecbe067b5a0be7dcdc172b59225b98e1f7b·...·]-4">)</span><span·class="p">.</span><span·class="w">
757 </span><span·class="p"·data-group-id="6584693262-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="6584693262-8">&lt;&lt;</span><span·class="s">&quot;mid/6&quot;</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·71,·SHA:·e294c132ac9f630587b654bc3c41b47331ef55c1a93e3d23d4f2e604c464c25f·...·]-7">}</span><span·class="gp·unselectable">757 </span><span·class="p"·data-group-id="6983815970-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="6983815970-8">&lt;&lt;</span><span·class="s">&quot;mid/6&quot;</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·71,·SHA:·bf98e093c7f9c7d4cb14c3029b1e79487f8346a34875a2969403f662ea20241b·...·]-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="6584693262-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="6584693262-10">[</span><span·class="ss">return_map</span><span·class="p"·data-group-id="6584693262-10"[·...·truncated·by·diffoscope;·len:·50,·SHA:·e6e1d00bd0df04f56f54949cc22432d9a75bdca291bf6fa174356def56695cc3·...·]-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="6983815970-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="6983815970-10">[</span><span·class="ss">return_map</span><span·class="p"·data-group-id="6983815970-10"[·...·truncated·by·diffoscope;·len:·50,·SHA:·4c642c090399af38e1fde26b1d89fc8aa03011fa4b2540f92d81bfda29759159·...·]-9">)</span><span·class="p">.</span><span·class="w">
759 </span><span·class="p"·data-group-id="6584693262-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:·289,·SHA:·187a3a5e074d49dbabf8690772ef4ed5a925ed6d9c2c61051e2dac4048f0db31·...·]-11">}</span><span·class="gp·unselectable">759 </span><span·class="p"·data-group-id="6983815970-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:·289,·SHA:·3bd02a5bcb654d9857f819beac78159aafb4e8419f8378ea53f760f7340a794a·...·]-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="6584693262-12">(</span><span·class="p"·data-group-id="6584693262-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="6983815970-12">(</span><span·class="p"·data-group-id="6983815970-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="6584693262-13">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6584693262-14">[</span><span·class="ss">return_map</span><span·class="p"·data-group-id="6584693262-14">]</span><span·class="p"·data-group-id="6584693262-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="6983815970-13">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6983815970-14">[</span><span·class="ss">return_map</span><span·class="p"·data-group-id="6983815970-14">]</span><span·class="p"·data-group-id="6983815970-12">)</span><span·class="p">.</span><span·class="w">
762 </span><span·class="p"·data-group-id="6584693262-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:·299,·SHA:·2140c9318e4f97f0d02f9b6ff9eda2a805f1baef04c36c676c9e4bc807ef1e5f·...·]-15">}</span></code></pre>762 </span><span·class="p"·data-group-id="6983815970-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:·299,·SHA:·7c83a309ac8e8d0f02e1d845d830f6e3792b23adae353d3869633c1b5106f83e·...·]-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="8833233108-1">(</span><span·class="s">&quot;foo://user@example.com:8042/over/there?name=ferret#nose&quot;</span><span·class="p"·data-group-id="8833233108-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="5021163263-1">(</span><span·class="s">&quot;foo://user@example.com:8042/over/there?name=ferret#nose&quot;</span><span·class="p"·data-group-id="5021163263-1">)</span><span·class="p">.</span><span·class="w">
792 </span><span·class="p"·data-group-id="8833233108-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="5021163263-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="8833233108-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="5021163263-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="8833233108-3">(</span><span·class="p"·data-group-id="8833233108-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="8833233108-4">&gt;&gt;</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·12,·SHA:·d96fafc72cac47ab986178fbbd2643125d14f9074f21054e2613d0b507a6e293·...·]-3">)</span><span·class="p">.</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="5021163263-3">(</span><span·class="p"·data-group-id="5021163263-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="5021163263-4">&gt;&gt;</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·12,·SHA:·ed78d4dd8fde7d16b71d07904688d85422d9f38adb4b9ae05fcdc01bededb5be·...·]-3">)</span><span·class="p">.</span><span·class="w">
796 </span><span·class="p"·data-group-id="8833233108-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="8833233108-6">&lt;&lt;</span><span·class="s">&quot;example.com&quot;</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·312,·SHA:·1a8c29449b4fec77d25a443beca47e6fcc304f3e9e90bebc5239860eb6c0f58c·...·]-7">&gt;&gt;</span><span·class="p">,</span><span·class="w">796 </span><span·class="p"·data-group-id="5021163263-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="5021163263-6">&lt;&lt;</span><span·class="s">&quot;example.com&quot;</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·312,·SHA:·131f76a671d9eb2076891e5d38e620a8d936883bf880c4dab6be1c12a4e8d73a·...·]-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="8833233108-8">&lt;&lt;</span><span·class="s">&quot;name=ferret&quot;</span><span·class="p"·data-group-id="8833233108-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:·7137e67aed694be92aee5a5daba96d24a788e21cc33be56b5eb4193822292a5b·...·]-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="5021163263-8">&lt;&lt;</span><span·class="s">&quot;name=ferret&quot;</span><span·class="p"·data-group-id="5021163263-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:·87cd3de2eb81e9f79820f2cfb97b594a0a1108889881037efb2dd0369fee5393·...·]-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="8833233108-10">&lt;&lt;</span><span·class="s">&quot;user&quot;</span><span·class="p"·data-group-id="8833233108-10">&gt;&gt;</span><span·class="p"·data-group-id="8833233108-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="5021163263-10">&lt;&lt;</span><span·class="s">&quot;user&quot;</span><span·class="p"·data-group-id="5021163263-10">&gt;&gt;</span><span·class="p"·data-group-id="5021163263-5">}</span></code></pre>
799 ··</section>799 ··</section>
800 </section>800 </section>
Max diff block lines reached; 45398/91571 bytes (49.58%) of diff not shown.
39.0 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2.2/doc/html/uri_string_usage.html
    
Offset 190, 27 lines modifiedOffset 190, 27 lines modified
190 URI·components·using·<a·href="unicode_usage.html#what-unicode-is">Unicode</a>·characters.190 URI·components·using·<a·href="unicode_usage.html#what-unicode-is">Unicode</a>·characters.
191 <a·href="uri_string.html#t:uri_map/0"><code·class="inline">uri_map()</code></a>·is·a·convenient·choice·for·enabling191 <a·href="uri_string.html#t:uri_map/0"><code·class="inline">uri_map()</code></a>·is·a·convenient·choice·for·enabling
192 operations·such·as·producing·standard·compliant·URIs·out·of·components·that·have192 operations·such·as·producing·standard·compliant·URIs·out·of·components·that·have
193 special·or·<a·href="unicode_usage.html#what-unicode-is">Unicode</a>·characters.·It·is·easier193 special·or·<a·href="unicode_usage.html#what-unicode-is">Unicode</a>·characters.·It·is·easier
194 to·explain·this·by·an·example.</p><p>Let's·say·that·we·would·like·to·create·the·following·URI·and·send·it·over·the194 to·explain·this·by·an·example.</p><p>Let's·say·that·we·would·like·to·create·the·following·URI·and·send·it·over·the
195 network:·<code·class="inline">http://cities/örebro?foo·bar</code>.·This·is·not·a·valid·URI·as·it·contains195 network:·<code·class="inline">http://cities/örebro?foo·bar</code>.·This·is·not·a·valid·URI·as·it·contains
196 characters·that·are·not·allowed·in·a·URI·such·as·&quot;ö&quot;·and·the·space.·We·can196 characters·that·are·not·allowed·in·a·URI·such·as·&quot;ö&quot;·and·the·space.·We·can
197 verify·this·by·parsing·the·URI:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">··</span><span·class="mi">1</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">parse</span><span·class="p"·data-group-id="7754073826-1">(</span><span·class="s">&quot;http://cities/örebro?foo·bar&quot;</span><span·class="p"·data-group-id="7754073826-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="6072220523-1">(</span><span·class="s">&quot;http://cities/örebro?foo·bar&quot;</span><span·class="p"·data-group-id="6072220523-1">)</span><span·class="p">.</span><span·class="w">
198 ··</span><span·class="p"·data-group-id="7754073826-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="7754073826-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="6072220523-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="6072220523-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="4629352291-1">(</span><span·class="p"·data-group-id="4629352291-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="3789514045-1">(</span><span·class="p"·data-group-id="3789514045-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="4629352291-2">}</span><span·class="p"·data-group-id="4629352291-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="3789514045-2">}</span><span·class="p"·data-group-id="3789514045-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="9809323312-1">(</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">parse</span><span·class="p"·data-group-id="9809323312-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:·22f864274dd4d6218bb6e1934887c31365a5b0705aa7b333eb5e5eaf5b8d9a4e·...·]-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="6627008860-1">(</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">parse</span><span·class="p"·data-group-id="6627008860-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:·99216780a84937f4a423b3c336514f61f6cb3be3e2d73116f54d7d9ba4900732·...·]-1">)</span><span·class="p">.</span><span·class="w">
208 ··</span><span·class="p"·data-group-id="9809323312-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="6627008860-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="9809323312-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="6627008860-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="3592055212-1">(</span><span·class="p"·data-group-id="3592055212-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="5102236521-1">(</span><span·class="p"·data-group-id="5102236521-1">)</span><span·class="p">.</span><span·class="w">
233 ····</span><span·class="p"·data-group-id="3592055212-2">[</span><span·class="p"·data-group-id="3592055212-3">{</span><span·class="ss">scheme</span><span·class="p">,</span><span·class="w">233 ····</span><span·class="p"·data-group-id="5102236521-2">[</span><span·class="p"·data-group-id="5102236521-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="3592055212-3">}</span><span·class="p">,</span><span·class="w">234 ·····</span><span·class="s">&quot;+-.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz&quot;</span><span·class="p"·data-group-id="5102236521-3">}</span><span·class="p">,</span><span·class="w">
235 ····</span><span·class="p"·data-group-id="3592055212-4">{</span><span·class="ss">userinfo</span><span·class="p">,</span><span·class="w">235 ····</span><span·class="p"·data-group-id="5102236521-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="3592055212-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="5102236521-4">}</span><span·class="p">,</span><span·class="w">
237 ····</span><span·class="p"·data-group-id="3592055212-5">{</span><span·class="ss">host</span><span·class="p">,</span><span·class="w">237 ····</span><span·class="p"·data-group-id="5102236521-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="3592055212-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="5102236521-5">}</span><span·class="p">,</span><span·class="w">
239 ····</span><span·class="p"·data-group-id="3592055212-6">{</span><span·class="ss">ipv4</span><span·class="p">,</span><span·class="s">&quot;.0123456789&quot;</span><span·class="p"·data-group-id="3592055212-6">}</span><span·class="p">,</span><span·class="w">239 ····</span><span·class="p"·data-group-id="5102236521-6">{</span><span·class="ss">ipv4</span><span·class="p">,</span><span·class="s">&quot;.0123456789&quot;</span><span·class="p"·data-group-id="5102236521-6">}</span><span·class="p">,</span><span·class="w">
240 ····</span><span·class="p"·data-group-id="3592055212-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="3592055212-7">}</span><span·class="p">,</span><span·class="w">240 ····</span><span·class="p"·data-group-id="5102236521-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="5102236521-7">}</span><span·class="p">,</span><span·class="w">
241 ····</span><span·class="p"·data-group-id="3592055212-8">{</span><span·class="ss">regname</span><span·class="p">,</span><span·class="w">241 ····</span><span·class="p"·data-group-id="5102236521-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="3592055212-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="5102236521-8">}</span><span·class="p">,</span><span·class="w">
243 ····</span><span·class="p"·data-group-id="3592055212-9">{</span><span·class="ss">path</span><span·class="p">,</span><span·class="w">243 ····</span><span·class="p"·data-group-id="5102236521-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="3592055212-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="5102236521-9">}</span><span·class="p">,</span><span·class="w">
245 ····</span><span·class="p"·data-group-id="3592055212-10">{</span><span·class="k">query</span><span·class="p">,</span><span·class="w">245 ····</span><span·class="p"·data-group-id="5102236521-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="3592055212-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="5102236521-10">}</span><span·class="p">,</span><span·class="w">
247 ····</span><span·class="p"·data-group-id="3592055212-11">{</span><span·class="ss">fragment</span><span·class="p">,</span><span·class="w">247 ····</span><span·class="p"·data-group-id="5102236521-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="3592055212-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="5102236521-11">}</span><span·class="p">,</span><span·class="w">
249 ····</span><span·class="p"·data-group-id="3592055212-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="3592055212-12">}</span><span·class="p">,</span><span·class="w">249 ····</span><span·class="p"·data-group-id="5102236521-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="5102236521-12">}</span><span·class="p">,</span><span·class="w">
250 ····</span><span·class="p"·data-group-id="3592055212-13">{</span><span·class="ss">unreserved</span><span·class="p">,</span><span·class="w">250 ····</span><span·class="p"·data-group-id="5102236521-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="3592055212-13">}</span><span·class="p"·data-group-id="3592055212-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="5102236521-13">}</span><span·class="p"·data-group-id="5102236521-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="1152987795-1">(</span><span·class="p"·data-group-id="1152987795-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:·1f69175101d2ce7051c163f7844dd389acb24a2f601b361bf63385e393fabc7e·...·]-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="5491571469-1">(</span><span·class="p"·data-group-id="5491571469-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:·2a5537ba2ac899843c71372c75c78fd48132fa44ce64b8f6a0c5b04016feef68·...·]-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="4739580620-1">(</span><span·class="s">&quot;http://%6C%6Fcal%23host/%F6re%26bro%20&quot;</span><span·class="p"·data-group-id="4739580620-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="1875044560-1">(</span><span·class="s">&quot;http://%6C%6Fcal%23host/%F6re%26bro%20&quot;</span><span·class="p"·data-group-id="1875044560-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="4739580620-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="4739580620-3">[</span><span·class="ss">return_map</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·67,·SHA:·fc93e4dc687dd4904b981388f72d51f3e8726a4286996a562cb9ad943b3b27a4·...·]0-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="1875044560-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="1875044560-3">[</span><span·class="ss">return_map</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·67,·SHA:·c85af3b55b7a750dc6c6f3aebe1d332b665a7d014e06510db24a596e81501f00·...·]0-2">)</span><span·class="p">.</span><span·class="w">
267 ····</span><span·class="p"·data-group-id="4739580620-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="1875044560-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="4739580620-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="1875044560-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="8953015612-1">(</span><span·class="s">&quot;local%23host&quot;</span><span·class="p"·data-group-id="8953015612-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="5653667765-1">(</span><span·class="s">&quot;local%23host&quot;</span><span·class="p"·data-group-id="5653667765-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="8953015612-2">(</span><span·class="s">&quot;/%F6re%26bro%20&quot;</span><span·class="p"·data-group-id="8953015612-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="5653667765-2">(</span><span·class="s">&quot;/%F6re%26bro%20&quot;</span><span·class="p"·data-group-id="5653667765-2">)</span><span·class="p">.</span><span·class="w">
275 ····</span><span·class="p"·data-group-id="8953015612-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="8953015612-4">&lt;&lt;</span><span·class="s">&quot;/öre&amp;bro·&quot;</span><span·class="[·...·truncated·by·diffoscope;·len:·88,·SHA:·0f82c2a6048ae4bcd8f26b8b4b0901ffd241fbee1c042e6249f2421ecc994fce·...·]-3">}</span><span·class="w">275 ····</span><span·class="p"·data-group-id="5653667765-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="5653667765-4">&lt;&lt;</span><span·class="s">&quot;/öre&amp;bro·&quot;</span><span·class="[·...·truncated·by·diffoscope;·len:·88,·SHA:·546a7261b29bc36ba9143ee3424ccc57c8e8ef9b48a3388b72c30a6bc6d642df·...·]-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="8953015612-5">(</span><span·class="p"·data-group-id="8953015612-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="5653667765-5">(</span><span·class="p"·data-group-id="5653667765-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="8953015612-6">}</span><span·class="p"·data-group-id="8953015612-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="5653667765-6">}</span><span·class="p"·data-group-id="5653667765-5">)</span><span·class="p">.</span><span·class="w">
278 ····</span><span·class="p"·data-group-id="8953015612-7">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="p"·data-group-id="8953015612-8">{</span><span·class="ss">invalid</span><span·class="p">,</span><span·class="p"·data-group-id="8953015612-9">{</span><span·class="ss">pat[·...·truncated·by·diffoscope;·len:·517,·SHA:·4a6190d943a4ae6a8aa85369ceac632f994ace84b2046992c41a692b94cbbe3f·...·]-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="5653667765-7">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="p"·data-group-id="5653667765-8">{</span><span·class="ss">invalid</span><span·class="p">,</span><span·class="p"·data-group-id="5653667765-9">{</span><span·class="ss">pat[·...·truncated·by·diffoscope;·len:·517,·SHA:·a315be4418e704a63837a4176c047a12919afd97327432dce08a7610f18c087f·...·]-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="2252760777-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="2252760777-2">[</span><span·class="p"·data-group-id="2252760777-3">{</span><span·class="ss">in_encoding</[·...·truncated·by·diffoscope;·len:·230,·SHA:·65cce807781357c3c310afa63fccbf7cc8f3b64c65d1629a9ce4787db6d8b95d·...·]-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="1616111783-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="1616111783-2">[</span><span·class="p"·data-group-id="1616111783-3">{</span><span·class="ss">in_encoding</[·...·truncated·by·diffoscope;·len:·230,·SHA:·f4d46e64d59117b6906d80393550081f3d9e52245cf7d5ffaf2efde9a0839909·...·]-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="2252760777-4">(</span><span·class="s">&quot;/%C3%B6re%26bro%20&quot;</span><span·class="p"·data-group-id="2252760777-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="1616111783-4">(</span><span·class="s">&quot;/%C3%B6re%26bro%20&quot;</span><span·class="p"·data-group-id="1616111783-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="9781574341-1">(</span><span·class="s">&quot;http://%6C%6Fcal%23host/%C3%B6re%26bro%20&quot;</span><span·class="p"·data-group-id="9781574341-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="9767984315-1">(</span><span·class="s">&quot;http://%6C%6Fcal%23host/%C3%B6re%26bro%20&quot;</span><span·class="p"·data-group-id="9767984315-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="9781574341-2">(</span><span·class="s">&quot;http://local#host/öre&amp;bro·&quot;</span><span·class="p"·data-group-id="9781574341-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="9767984315-2">(</span><span·class="s">&quot;http://local#host/öre&amp;bro·&quot;</span><span·class="p"·data-group-id="9767984315-2">)</span><span·class="p">.</span><span·class="w">
289 ····</span><span·class="p"·data-group-id="9781574341-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="9781574341-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="9767984315-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="9767984315-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.2/doc/html/zip.html
    
Offset 1020, 37 lines modifiedOffset 1020, 37 lines modified
1020 <code·class="inline">Archive</code>,·starting·with·<code·class="inline">AccIn·==·Acc0</code>.</p><p><code·class="inline">FileInArchive</code>·is·the·name·that·the·file·has·in·the·archive.</p><p><code·class="inline">GetInfo</code>·is·a·fun·that·returns·information·about·the·file.</p><p><code·class="inline">GetBin</code>·returns·the·file·contents.</p><p>Both·<code·class="inline">GetInfo</code>·and·<code·class="inline">GetBin</code>·must·be·called·within·the·<code·class="inline">Fun</code>.·Their·behavior·is1020 <code·class="inline">Archive</code>,·starting·with·<code·class="inline">AccIn·==·Acc0</code>.</p><p><code·class="inline">FileInArchive</code>·is·the·name·that·the·file·has·in·the·archive.</p><p><code·class="inline">GetInfo</code>·is·a·fun·that·returns·information·about·the·file.</p><p><code·class="inline">GetBin</code>·returns·the·file·contents.</p><p>Both·<code·class="inline">GetInfo</code>·and·<code·class="inline">GetBin</code>·must·be·called·within·the·<code·class="inline">Fun</code>.·Their·behavior·is
1021 undefined·if·they·are·called·outside·the·context·of·<code·class="inline">Fun</code>.</p><p>The·<code·class="inline">Fun</code>·must·return·a·new·accumulator,·which·is·passed·to·the·next·call.1021 undefined·if·they·are·called·outside·the·context·of·<code·class="inline">Fun</code>.</p><p>The·<code·class="inline">Fun</code>·must·return·a·new·accumulator,·which·is·passed·to·the·next·call.
1022 <a·href="#foldl/3"><code·class="inline">foldl/3</code></a>·returns·the·final·accumulator·value.·<code·class="inline">Acc0</code>·is·returned1022 <a·href="#foldl/3"><code·class="inline">foldl/3</code></a>·returns·the·final·accumulator·value.·<code·class="inline">Acc0</code>·is·returned
1023 if·the·archive·is·empty.·It·is·not·necessary·to·iterate·over·all·files·in·the1023 if·the·archive·is·empty.·It·is·not·necessary·to·iterate·over·all·files·in·the
1024 archive.·The·iteration·can·be·ended·prematurely·in·a·controlled·manner·by1024 archive.·The·iteration·can·be·ended·prematurely·in·a·controlled·manner·by
1025 throwing·an·exception.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="n">Name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;dummy.zip&quot;</span><span·class="p">.</span><span·class="w">1025 throwing·an·exception.</p><p><em>Example:</em></p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="n">Name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;dummy.zip&quot;</span><span·class="p">.</span><span·class="w">
1026 </span><span·class="s">&quot;dummy.zip&quot;</span><span·class="gp·unselectable">1026 </span><span·class="s">&quot;dummy.zip&quot;</span><span·class="gp·unselectable">
1027 &gt;·</span><span·class="p"·data-group-id="7319760733-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7319760733-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:·a2e0b085579f82ba7c2560cba5335f44774b72802fd08a74491628714e2c416f·...·]-3">)</span><span·class="p">.</span><span·class="w">1027 &gt;·</span><span·class="p"·data-group-id="1876634590-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1876634590-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:·868dfc1461e82287ceaee4b38e6f5b1becfd18e14c4bd2eac60c79dae8a2c2cf·...·]-3">)</span><span·class="p">.</span><span·class="w">
1028 </span><span·class="p"·data-group-id="7319760733-10">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="7319760733-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="1876634590-10">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="1876634590-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="7319760733-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="1876634590-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="7319760733-12">&gt;&gt;</span><span·class="p"·data-group-id="7319760733-11">}</span><span·class="p"·data-group-id="7319760733-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="1876634590-12">&gt;&gt;</span><span·class="p"·data-group-id="1876634590-11">}</span><span·class="p"·data-group-id="1876634590-10">}</span><span·class="gp·unselectable">
1031 &gt;·</span><span·class="p"·data-group-id="7319760733-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="7319760733-13">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·1787,·SHA:·8db4b4ad9ef43d211f719c5ec9ec7cfdecc937efb72001e12b61361a9a9af4aa·...·]-14">)</span><span·class="p">.</span><span·class="w">1031 &gt;·</span><span·class="p"·data-group-id="1876634590-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="1876634590-13">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·1787,·SHA:·ab2bdb44a337c911d5f88ff5eed50583e46105dd9f143fa89a31941036adcfaa·...·]-14">)</span><span·class="p">.</span><span·class="w">
1032 </span><span·class="p"·data-group-id="7319760733-22">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="7319760733-23">[</span><span·class="p"·data-group-id="7319760733-24">{</span><span·class="s">&quot;bar&quot;</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·127,·SHA:·9a0b84a2744dcb16da3988e7fd8c66aad7bf943d600b9aa9eb5f8b2a8499480a·...·]-25">&gt;&gt;</span><span·class="p">,</span><span·class="w">1032 </span><span·class="p"·data-group-id="1876634590-22">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="1876634590-23">[</span><span·class="p"·data-group-id="1876634590-24">{</span><span·class="s">&quot;bar&quot;</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·127,·SHA:·7228f476d4ebb2c3453da8bfd35aa12b145a32f4846e725887539d9158a88234·...·]-25">&gt;&gt;</span><span·class="p">,</span><span·class="w">
1033 ······</span><span·class="p"·data-group-id="7319760733-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="1876634590-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="7319760733-27">{</span><span·class="p"·data-group-id="7319760733-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="7319760733-28">}</span[·...·truncated·by·diffoscope;·len:·299,·SHA:·5df4e7d62c843bd093ffd906cadf7283b59395c8951758084c7571e0d5ace35c·...·]-27">}</span><span·class="p">,</span><span·class="w">1034 ·················</span><span·class="p"·data-group-id="1876634590-27">{</span><span·class="p"·data-group-id="1876634590-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="1876634590-28">}</span[·...·truncated·by·diffoscope;·len:·299,·SHA:·79e149b24625bed102d581b25bd5f88aa1c3febe68ef5cf078505690bbc506f6·...·]-27">}</span><span·class="p">,</span><span·class="w">
1035 ·················</span><span·class="p"·data-group-id="7319760733-30">{</span><span·class="p"·data-group-id="7319760733-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="7319760733-31">}</span[·...·truncated·by·diffoscope;·len:·299,·SHA:·31c7a8e08102d04099a424eeeaae0423b4c010c49b88077e021b2c0b5de8a9b8·...·]-30">}</span><span·class="p">,</span><span·class="w">1035 ·················</span><span·class="p"·data-group-id="1876634590-30">{</span><span·class="p"·data-group-id="1876634590-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="1876634590-31">}</span[·...·truncated·by·diffoscope;·len:·299,·SHA:·3e9d804f4c88aaa39ead1b973b5d7e7285d8ee106e884c70b6319173773ac82c·...·]-30">}</span><span·class="p">,</span><span·class="w">
1036 ·················</span><span·class="p"·data-group-id="7319760733-33">{</span><span·class="p"·data-group-id="7319760733-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="7319760733-34">}</span[·...·truncated·by·diffoscope;·len:·299,·SHA:·863f629c9defb398a428cf3c6d075704f41f0242c0b2ab24ed8dcd7d65c1c156·...·]-33">}</span><span·class="p">,</span><span·class="w">1036 ·················</span><span·class="p"·data-group-id="1876634590-33">{</span><span·class="p"·data-group-id="1876634590-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="1876634590-34">}</span[·...·truncated·by·diffoscope;·len:·299,·SHA:·c7a1650739714a1337833b891bd4add26a5598b830cf2939f22f07195744fa15·...·]-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="7319760733-26">}</span><span·class="p"·data-group-id="7319760733-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="1876634590-26">}</span><span·class="p"·data-group-id="1876634590-24">}</span><span·class="p">,</span><span·class="w">
1038 ·····</span><span·class="p"·data-group-id="7319760733-36">{</span><span·class="s">&quot;foo&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="7319760733-37">&lt;&lt;</span><span·class="s">&quot;FOO&quot;</span><span·class="p"·data-group-id="7319760733-37">&gt;&gt;</span><span·class="p">,</span><span·class="w">1038 ·····</span><span·class="p"·data-group-id="1876634590-36">{</span><span·class="s">&quot;foo&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="1876634590-37">&lt;&lt;</span><span·class="s">&quot;FOO&quot;</span><span·class="p"·data-group-id="1876634590-37">&gt;&gt;</span><span·class="p">,</span><span·class="w">
1039 ······</span><span·class="p"·data-group-id="7319760733-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="1876634590-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="7319760733-39">{</span><span·class="p"·data-group-id="7319760733-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="7319760733-40">}</span[·...·truncated·by·diffoscope;·len:·299,·SHA:·46f43b9d947585bdd7650803b9d70a0e39eaff4969eeecf36d52aae98964ccdc·...·]-39">}</span><span·class="p">,</span><span·class="w">1040 ·················</span><span·class="p"·data-group-id="1876634590-39">{</span><span·class="p"·data-group-id="1876634590-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="1876634590-40">}</span[·...·truncated·by·diffoscope;·len:·299,·SHA:·caee4f5fd8c012cc87cf306d6dc6895fafdf9d05c559d8df12d52404dde2ca1c·...·]-39">}</span><span·class="p">,</span><span·class="w">
1041 ·················</span><span·class="p"·data-group-id="7319760733-42">{</span><span·class="p"·data-group-id="7319760733-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="7319760733-43">}</span[·...·truncated·by·diffoscope;·len:·299,·SHA:·c3de2bd8ea148956c65d1ec4d3ac347488dd431597bdb5dc67ddf9f4aa7cb874·...·]-42">}</span><span·class="p">,</span><span·class="w">1041 ·················</span><span·class="p"·data-group-id="1876634590-42">{</span><span·class="p"·data-group-id="1876634590-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="1876634590-43">}</span[·...·truncated·by·diffoscope;·len:·299,·SHA:·746616f89cfefb471e763507c1588553a0c2fd7e61e10ea66e50d710317ea836·...·]-42">}</span><span·class="p">,</span><span·class="w">
1042 ·················</span><span·class="p"·data-group-id="7319760733-45">{</span><span·class="p"·data-group-id="7319760733-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="7319760733-46">}</span[·...·truncated·by·diffoscope;·len:·299,·SHA:·05255832db28943944fff24b0ede32dc83123fe63937d18be4f24ec84e09970b·...·]-45">}</span><span·class="p">,</span><span·class="w">1042 ·················</span><span·class="p"·data-group-id="1876634590-45">{</span><span·class="p"·data-group-id="1876634590-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="1876634590-46">}</span[·...·truncated·by·diffoscope;·len:·299,·SHA:·74da0d062a87370302895643161d998d24f648b51fcf1c69c5c26c70d0b83bc7·...·]-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="7319760733-38">}</span><span·class="p"·data-group-id="7319760733-36">}</span><span·class="p"·data-group-id="7319760733-23">]</span><span·class="p"·data-group-id="7319760733-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="1876634590-38">}</span><span·class="p"·data-group-id="1876634590-36">}</span><span·class="p"·data-group-id="1876634590-23">]</span><span·class="p"·data-group-id="1876634590-22">}</span><span·class="gp·unselectable">
1044 &gt;·</span><span·class="p"·data-group-id="7319760733-48">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7319760733-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:·1973792a77d0846a4d4766cf0c64f7f6243363b92cb4b371ce7c511cd5573861·...·]-50">)</span><span·class="p">.</span><span·class="w">1044 &gt;·</span><span·class="p"·data-group-id="1876634590-48">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1876634590-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:·3c304ee0713d4d4604f96989d7564435c3753a6eb888884651c26a93c8bd4870·...·]-50">)</span><span·class="p">.</span><span·class="w">
1045 </span><span·class="p"·data-group-id="7319760733-53">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="7319760733-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="1876634590-53">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="1876634590-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="7319760733-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="1876634590-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="7319760733-55">&gt;&gt;</span><span·class="p"·data-group-id="7319760733-54">}</span><span·class="p"·data-group-id="7319760733-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="1876634590-55">&gt;&gt;</span><span·class="p"·data-group-id="1876634590-54">}</span><span·class="p"·data-group-id="1876634590-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="7319760733-56">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="7319760733-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:·a2f217cac1918f8d42d33b0e475d05de9543a480cb6389861f54289bda1a9575·...·]-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="1876634590-56">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="1876634590-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:·91730102d01bfa8206777ae9afdf3dde48ad0052ddd0f63f7d7b8e5089ff1ec2·...·]-56">)</span><span·class="p">.</span><span·class="w">
1049 </span><span·class="p"·data-group-id="7319760733-63">&lt;&lt;</span><span·class="s">&quot;FOO&quot;</span><span·class="p"·data-group-id="7319760733-63">&gt;&gt;</span></code></pre>1049 </span><span·class="p"·data-group-id="1876634590-63">&lt;&lt;</span><span·class="s">&quot;FOO&quot;</span><span·class="p"·data-group-id="1876634590-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="7465623443-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="7465623443-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="4187892960-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="4187892960-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="7050556256-1">(</span><span·class="p"·data-group-id="7050556256-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="7050556256-2">]</span><span·c[·...·truncated·by·diffoscope;·len:·106,·SHA:·e9be689229a2cce6647551b7cea366e4959705f394a718e7173308db7e486fad·...·]-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="9670509521-1">(</span><span·class="p"·data-group-id="9670509521-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="9670509521-2">]</span><span·c[·...·truncated·by·diffoscope;·len:·106,·SHA:·5296832c8dcac3508bb97e41992a1919ff73128b4a0c2443f9f70cabd1966ab0·...·]-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="7050556256-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="7050556256-4">(</span><span·class="n">X</span><span·class="p"·data-group-id="7050556256-4">)</span><spa[·...·truncated·by·diffoscope;·len:·37,·SHA:·5cc858ab9fa2de80e114abb2f4db5a9d728995bb2acdd61fe43dc0ff29375110·...·]-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="9670509521-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="9670509521-4">(</span><span·class="n">X</span><span·class="p"·data-group-id="9670509521-4">)</span><spa[·...·truncated·by·diffoscope;·len:·37,·SHA:·111a812122da61a537f4d1215da02864e7b6cbce878972e7477298a73aadf1e6·...·]-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="1508053108-1">(</span><span·class="n">X</span><span·class="p"·data-group-id="1508053108-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="1508053108-2">{</span><span·class="ss">bar</span><span·class="p">,</span><span·class="w">·</span><span·class="n">X</span><span·class="p"·data-group-id="1508053108-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="2494152605-1">(</span><span·class="p"·data-group-id="2494152605-2">[</span><span·class="n">X</span><span·[·...·truncated·by·diffoscope;·len:·265,·SHA:·9da57361f56f485ead6c2ed9ccaf989d7c47383d3a00518fa320057313929be6·...·]6641 </span><span·class="nf">foo</span><span·class="p"·data-group-id="4113823426-1">(</span><span·class="n">X</span><span·class="p"·data-group-id="4113823426-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·300,·SHA:·e1ee466111290eae6afedb8aba97e0126f1a1d635a9264e882cc44068d3fe56b·...·]
 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="3160335297-1">(</span><span·class="p"·data-group-id="3160335297-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="3160335297-2">]</span><span·class="p"·data-group-id="3160335297-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="2494152605-3">[</span><span·class="nf">bar</span><span·class="p"·data-group-id="2494152605-4">(</span><span·class="n">X</span><span·class="p"·data-group-id="2494152605-4">)</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·194,·SHA:·86afa3746b1aff8ce17528fa2db46cd487dc72a9c38c4cd8f8c4d02008cd1ae1·...·]-3">]</span><span·class="p">;</span><span·class="w">6644 ····</span><span·class="p"·data-group-id="3160335297-3">[</span><span·class="nf">bar</span><span·class="p"·data-group-id="3160335297-4">(</span><span·class="n">X</span><span·class="p"·data-group-id="3160335297-4">)</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·194,·SHA:·3d634376bbefe39b46917eab4fa9059db7e5731760b975ccc986ad0c48a79bd1·...·]-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="3206978156-1">(</span><span·class="s">&quot;syntax_tools/include/merl.hrl&quot;</span><span·class="p"·data-group-id="3206978156-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="0370450444-1">(</span><span·class="s">&quot;syntax_tools/include/merl.hrl&quot;</span><span·class="p"·data-group-id="0370450444-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="0173448354-1">(</span><span·class="s">&quot;{foo,·42}&quot;</span><span·class="p"·data-group-id="0173448354-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="0121745815-1">(</span><span·class="s">&quot;{foo,·42}&quot;</span><span·class="p"·data-group-id="0121745815-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="0173448354-2">(</span><span·class="s">&quot;{foo,·_@Number}&quot;</span><span·class="p"·data-group-id="0173448354-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="0121745815-2">(</span><span·class="s">&quot;{foo,·_@Number}&quot;</span><span·class="p"·data-group-id="0121745815-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="0173448354-3">(</span><span·class="s">&quot;foo:bar(_@Number)&quot;</span><span·class="p"·data-group-id="0173448354-3">)</span></code></pre><p>Calling·<code·class="inline">merl:print(Call)</code>·will·then·print·the·following·code:</p><pre><code·class="makeu[·...·truncated·by·diffoscope;·len:·223,·SHA:·bc32f7955f3c66172afd3e1d7e48b0e61bfa27d609b5c37d1eb8676dadc04110·...·]-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="0121745815-3">(</span><span·class="s">&quot;foo:bar(_@Number)&quot;</span><span·class="p"·data-group-id="0121745815-3">)</span></code></pre><p>Calling·<code·class="inline">merl:print(Call)</code>·will·then·print·the·following·code:</p><pre><code·class="makeu[·...·truncated·by·diffoscope;·len:·223,·SHA:·2b855da2c74e2576ccdb83cb3b089b11bffd33692ded0e21bdfb7e8b60f2849a·...·]-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="1523765335-1">(</span><span·class="s">&quot;{foo,·_@Foo}&quot;</span><span·class="p"·data-group-id="1523765335-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:·35e255816a7a22cf7c61e211615fa0893868c43bac6b6e14fe29b687dd04a79d·...·]-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="3056003326-1">(</span><span·class="s">&quot;{foo,·_@Foo}&quot;</span><span·class="p"·data-group-id="3056003326-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:·d46c1f0a23d44ed56eef092d68b39918be34924f85263b0af3740a56e7d66366·...·]-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="1523765335-3">(</span><span·class="s">&quot;{bar,·_@Bar}&quot;</span><span·class="p"·data-group-id="1523765335-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:·cba9f24fee3a5cc08f8abbf8d0424af40fcd656915bfa8c0deae71b601e91ce0·...·]-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="3056003326-3">(</span><span·class="s">&quot;{bar,·_@Bar}&quot;</span><span·class="p"·data-group-id="3056003326-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:·fb4ccde6b947eebb58099f35f2c7bbc7d645dbf9630945e86616d649a123e7f2·...·]-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="1523765335-6">(</span><span·class="p"·data-group-id="1523765335-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="3056003326-6">(</span><span·class="p"·data-group-id="3056003326-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="6801849702-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="6801849702-2">[</span><span·class="p"·data-group-id="6801849702-3">{</span><span·class="ss">bar</span[·...·truncated·by·diffoscope;·len:·453,·SHA:·0e063477567ee5ec5375846e45a9301e6fc6f18e0f30eb72d1e153768a380e59·...·]-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="1883411816-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="1883411816-2">[</span><span·class="p"·data-group-id="1883411816-3">{</span><span·class="ss">bar</span[·...·truncated·by·diffoscope;·len:·453,·SHA:·f8b66727b97a70cb567db7b471e24890d3b1c31359cea4c241acb8af0675a945·...·]-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="9227179829-1">(</span><span·class="p"·data-group-id="9227179829-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="3014080667-1">(</span><span·class="p"·data-group-id="3014080667-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="9227179829-2">]</span><span·class="p"·data-group-id="9227179829-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="3014080667-2">]</span><span·class="p"·data-group-id="3014080667-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="3177747133-1">(</span><span·class="s">&quot;{foo,·_@Number}&quot;</span><span·class="p"·data-group-id="3177747133-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:·6a5e3d8ccf29bb3f2aea3138281684c2efc7112dc1a8ae7c7d1166a10b40e084·...·]-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="2024837149-1">(</span><span·class="s">&quot;{foo,·_@Number}&quot;</span><span·class="p"·data-group-id="2024837149-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:·f599cef09e384f12ff321a97ab7ee32ed7ccb244a5edfaaf6ea4cc5f37bec7fc·...·]-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="7358805881-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="7358805881-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="2872084222-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="2872084222-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="7358805881-2">(</span><span·class="s">&quot;{foo,·_@Bar@}&quot;</span><span·class="p"·data-group-id="7358805881-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="2872084222-2">(</span><span·class="s">&quot;{foo,·_@Bar@}&quot;</span><span·class="p"·data-group-id="2872084222-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="4471304525-1">(</span><span·class="n">Bar</span><span·class="p"·data-group-id="4471304525-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="5713464219-1">(</span><span·class="n">Bar</span><span·class="p"·data-group-id="5713464219-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="4471304525-2">(</span><span·class="s">&quot;{foo,·_@TmpBar}&quot;</span><span·class="p"·data-group-id="4471304525-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="5713464219-2">(</span><span·class="s">&quot;{foo,·_@TmpBar}&quot;</span><span·class="p"·data-group-id="5713464219-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="2186310348-1">(</span><span·class="s">&quot;-export([f/90919]).&quot;</span><span·class="p"·data-group-id="2186310348-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="6583442818-1">(</span><span·class="s">&quot;-export([f/90919]).&quot;</span><span·class="p"·data-group-id="6583442818-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="2186310348-2">(</span><span·class="n">Q1</span><span·class="p"·data-group-id="2186310348-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="6583442818-2">(</span><span·class="n">Q1</span><span·class="p"·data-group-id="6583442818-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="2186310348-3">(</span><span·class="s">&quot;-export([f/909299]).&quot;</span><span·class="p"·data-group-id="2186310348-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="6583442818-3">(</span><span·class="s">&quot;-export([f/909299]).&quot;</span><span·class="p"·data-group-id="6583442818-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="5740674573-1">(</span><span·class="s">&quot;f(_@Arg)&quot;</span><span·class="p"·data-group-id="5740674573-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="7573750568-1">(</span><span·class="s">&quot;f(_@Arg)&quot;</span><span·class="p"·data-group-id="7573750568-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="7713321024-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="2760664564-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="4136057693-1">(</span><span·class="s">&quot;-file(\&quot;&#39;@File\&quot;,·9090).&quot;</span><span·class="p"·data-group-id="4136057693-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">?</span><span·class="[·...·truncated·by·diffoscope;·len:·172,·SHA:·fef87bedbf7329662c494aa2f98ddd632518c8b899d841b2a886f64d7b84c27d·...·]3-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="4065871813-1">(</span><span·class="s">&quot;-file(\&quot;&#39;@File\&quot;,·9090).&quot;</span><span·class="p"·data-group-id="4065871813-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">?</span><span·class="[·...·truncated·by·diffoscope;·len:·172,·SHA:·2c28485ef403fe047d9af7d97522b6d37f9f68e02061039ef58a4a669509dc7f·...·]3-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="4537767681-1">(</span><span·class="s">&quot;{_@@Elements}&quot;</span><span·class="p"·data-group-id="4537767681-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:·5063616a8513d09c7492e68bc6b6a2fe37c6f79cdb91aa9c3fd7d00f99871442·...·]-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="0458649117-1">(</span><span·class="s">&quot;{_@@Elements}&quot;</span><span·class="p"·data-group-id="0458649117-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:·8e6dcca6fde4189929ca69778ee1e5825efc000280e789f26083eca62c00c30b·...·]-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="8520354392-1">(</span><span·class="s">&quot;{a,·b,·_@@Elements}&quot;</span><span·class="p"·data-group-id="8520354392-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="8520354392-2">(</span><span·class="p"·data-group-id="8520354392-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="8520354392-3">}</span><span·class="p"·data-group-id="8520354392-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="8938201369-1">(</span><span·class="s">&quot;{_@@Elements,·c,·d}&quot;</span><span·class="p"·data-group-id="8938201369-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="8938201369-2">(</span><span·class="p"·data-group-id="8938201369-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="8938201369-3">}</span><span·class="p"·data-group-id="8938201369-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="5962326303-1">(</span><span·class="s">&quot;{_@First,·_@@Rest}&quot;</span><span·[·...·truncated·by·diffoscope;·len:·1421,·SHA:·bd3fe47d91ed2b3b87db3da0de22f947347ba1d02d0b150c8562e6ca0d333285·...·]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="6900859470-1">(</span><span·class="s">&quot;{a,·b,·_@@Elements}&quot;</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·1720,·SHA:·7cdacc16eec1541dce6c6ffe493a27cf1c108330e9372e3012d75980bd69b79e·...·]
 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="0738766108-1">(</span><span·class="s">&quot;{_@First,·_@@Rest}&quot;</span><span·class="p"·data-group-id="0738766108-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="0738766108-2">(</span><span·class="p"·data-group-id="0738766108-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="0738766108-3">}</span><span·class="p"·data-group-id="0738766108-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="6510934239-1">(</span><span·class="s">&quot;{_@@_,·_@Last}&quot;</span><span·class="p"·data-group-id="6510934239-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="6510934239-2">(</span><span·class="p"·data-group-id="6510934239-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="6510934239-3">}</span><span·class="p"·data-group-id="6510934239-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="0191590890-1">(</span><span·class="s">&quot;-export([_@@Name]).&quot;</span><span·class="p"·data-group-id="0191590890-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="5663889008-1">(</span><span·class="s">&quot;-export([_@@Name]).&quot;</span><span·class="p"·data-group-id="5663889008-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="7546070112-1">(</span><span·class="s">&quot;-export([&#39;@_@Name&#39;/0]).&quot;</span><span·class="p"·data-group-id="7546070112-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="8042829944-1">(</span><span·class="s">&quot;-export([&#39;@_@Name&#39;/0]).&quot;</span><span·class="p"·data-group-id="8042829944-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="2522520252-1">(</span><span·class="s">&quot;-export([&#39;@__Name&#39;/0]).&quot;</span><span·class="p"·data-group-id="2522520252-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="1666865480-1">(</span><span·class="s">&quot;-export([&#39;@__Name&#39;/0]).&quot;</span><span·class="p"·data-group-id="1666865480-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="8319282661-1">(</span><span·class="p"·data-group-id="8319282661-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="6619315245-1">(</span><span·class="p"·data-group-id="6619315245-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="7525912312-1">(</span><span·class="nc">merl</span><span·class="p">:</span><span·class="nf">quote</span><span·class="p"·data-group-id="7525912312-2">(</span><span·class="s">&quot;inc(X,·Y)·when·Y·&gt;·0·-&gt;·X·+·Y.&quot;</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·65,·SHA:·752c5b7279128bc65c114f5f5eed2d8153c5b98877a332a8bf4da18789c57122·...·]-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="3210131598-1">(</span><span·class="nc">merl</span><span·class="p">:</span><span·class="nf">quote</span><span·class="p"·data-group-id="3210131598-2">(</span><span·class="s">&quot;inc(X,·Y)·when·Y·&gt;·0·-&gt;·X·+·Y.&quot;</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·65,·SHA:·c645a2d00d1b7012a74187e01f6b3f5a096463789834a4c49dbb3ba4f73625ef·...·]-1">)</span></code></pre><p>in·the·Erlang·shell·will·print·the·following·(where·the·<code·class="inline">+</code>·signs·separate
246 groups·of·subtrees·on·the·same·level):</p><pre><code·class="text">function:·inc(X,·Y)·when·...·-&gt;·X·+·Y.246 groups·of·subtrees·on·the·same·level):</p><pre><code·class="text">function:·inc(X,·Y)·when·...·-&gt;·X·+·Y.
247 ··atom:·inc247 ··atom:·inc
248 ··+248 ··+
249 ··clause:·(X,·Y)·when·...·-&gt;·X·+·Y249 ··clause:·(X,·Y)·when·...·-&gt;·X·+·Y
250 ····variable:·X250 ····variable:·X
251 ····variable:·Y251 ····variable:·Y
252 ····+252 ····+
6.24 KB
./usr/share/doc/erlang-doc/html/lib/tftp-1.2.2/doc/html/getting_started.html
    
Offset 124, 17 lines modifiedOffset 124, 17 lines modified
  
124 ····<span>Examples</span>124 ····<span>Examples</span>
125 ··</h1>125 ··</h1>
  
126 <p>The·<a·href="tftp.html#start/1">start/1</a>·function·starts·a·daemon·process·listening·for·UDP126 <p>The·<a·href="tftp.html#start/1">start/1</a>·function·starts·a·daemon·process·listening·for·UDP
127 packets·on·a·port.·When·it·receives·a·request·for·read·or·write,·it·spawns·a127 packets·on·a·port.·When·it·receives·a·request·for·read·or·write,·it·spawns·a
128 temporary·server·process·handling·the·transfer.</p><p>This·is·a·simple·example·of·starting·the·TFTP·server·and·reading·the·content·of128 temporary·server·process·handling·the·transfer.</p><p>This·is·a·simple·example·of·starting·the·TFTP·server·and·reading·the·content·of
129 a·sample·file·using·the·TFTP·client.</p><p><em>Step·1.</em>·Create·a·sample·file·to·be·used·for·the·transfer:</p><pre><code·class="text">······$·echo·&quot;Erlang/OTP·21&quot;·&gt;·file.txt</code></pre><p><em>Step·2.</em>·Start·the·TFTP·server:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">······</span><span·class="mi">1</span><span·class="o">&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="0752180933-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="0752180933-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="0752180933-2">(</span><span·class="p"·data-group-id="0752180933-3">[</span><span·class="p"·data-group-id="0752180933-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="0752180933-4">}</span><span·class="p"·data-group-id="0752180933-3">]</span><span·class="p"·data-group-id="0752180933-2">)</span><span·class="p">.</span><span·class="w"> 
130 ······</span><span·class="p"·data-group-id="0752180933-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:·eb6f4dff37bf918e97845b5a5e0a37ac214acfa1fe69d0cc262eb49431477d40·...·]">)</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><co[·...·truncated·by·diffoscope;·len:·917,·SHA:·60ba6473055e1f528083084a4f88bf3974ad8f9f4fcde027512c91e7455e42a1·...·]">)</span><span·class="p">.</span><span·class="w">
 130 ······</span><span·class="p"·data-group-id="3997092856-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="3997092856-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="9889666204-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="9889666204-2">[</span><span·class="p"·data-group-id="9889666204-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="9889666204-3">}</span><span·class="p"·data-group-id="9889666204-2">]</span><span·class="p"·data-group-id="9889666204-1">)</span><span·class="p">.</span><span·class="w">
131 ······</span><span·class="p"·data-group-id="2663738973-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2663738973-5">&lt;&lt;</span><span·class="s">&quot;Erlang/OTP·21\n&quot;</span><span·class="p"·data-group-id="2663738973-5">&gt;&gt;</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·4f0772d00a291c44ae46057a5ea771e9295b1a48384feb95988dcf31e13730c3·...·]-4">}</span></code></pre>131 ······</span><span·class="p"·data-group-id="9889666204-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9889666204-5">&lt;&lt;</span><span·class="s">&quot;Erlang/OTP·21\n&quot;</span><span·class="p"·data-group-id="9889666204-5">&gt;&gt;</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·5dc301ac62796839fd1040130dff786a9e20b73e0eee2baf70fc6ca5a91ae84c·...·]-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">
65.0 KB
./usr/share/doc/erlang-doc/html/lib/tftp-1.2.2/doc/html/tftp.epub
2.27 KB
zipinfo {}
    
Offset 1, 16 lines modifiedOffset 1, 16 lines modified
1 Zip·file·size:·28824·bytes,·number·of·entries:·141 Zip·file·size:·28824·bytes,·number·of·entries:·14
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Apr-18·14:03·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Apr-18·15:32·mimetype
3 ?rw-r--r--··6.1·unx······712·bx·defN·25-Apr-18·14:03·OEBPS/title.xhtml3 ?rw-r--r--··6.1·unx······712·bx·defN·25-Apr-18·15:32·OEBPS/title.xhtml
4 ?rw-r--r--··6.1·unx·····5937·bx·defN·25-Apr-18·14:03·OEBPS/tftp_logger.xhtml4 ?rw-r--r--··6.1·unx·····5937·bx·defN·25-Apr-18·15:32·OEBPS/tftp_logger.xhtml
5 ?rw-r--r--··6.1·unx····38407·bx·defN·25-Apr-18·14:03·OEBPS/tftp.xhtml5 ?rw-r--r--··6.1·unx····38407·bx·defN·25-Apr-18·15:32·OEBPS/tftp.xhtml
6 ?rw-r--r--··6.1·unx·····8733·bx·defN·25-Apr-18·14:03·OEBPS/notes.xhtml6 ?rw-r--r--··6.1·unx·····8733·bx·defN·25-Apr-18·15:32·OEBPS/notes.xhtml
7 ?rw-r--r--··6.1·unx·····1184·bx·defN·25-Apr-18·14:03·OEBPS/nav.xhtml7 ?rw-r--r--··6.1·unx·····1184·bx·defN·25-Apr-18·15:32·OEBPS/nav.xhtml
8 ?rw-r--r--··6.1·unx·····1908·bx·defN·25-Apr-18·14:03·OEBPS/introduction.xhtml8 ?rw-r--r--··6.1·unx·····1908·bx·defN·25-Apr-18·15:32·OEBPS/introduction.xhtml
9 ?rw-r--r--··6.1·unx·····3736·bx·defN·25-Apr-18·14:03·OEBPS/getting_started.xhtml9 ?rw-r--r--··6.1·unx·····3736·bx·defN·25-Apr-18·15:32·OEBPS/getting_started.xhtml
10 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Apr-18·14:03·OEBPS/dist/epub-erlang-ESPT6BQV.css10 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Apr-18·15:32·OEBPS/dist/epub-erlang-ESPT6BQV.css
11 ?rw-r--r--··6.1·unx······499·bx·defN·25-Apr-18·14:03·OEBPS/dist/epub-LSJCIYTM.js11 ?rw-r--r--··6.1·unx······499·bx·defN·25-Apr-18·15:32·OEBPS/dist/epub-LSJCIYTM.js
12 ?rw-r--r--··6.1·unx·····1787·bx·defN·25-Apr-18·14:03·OEBPS/content.opf12 ?rw-r--r--··6.1·unx·····1787·bx·defN·25-Apr-18·15:32·OEBPS/content.opf
13 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Apr-18·14:03·OEBPS/assets/logo.png13 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Apr-18·15:32·OEBPS/assets/logo.png
14 ?rw-r--r--··6.1·unx······252·bx·defN·25-Apr-18·14:03·META-INF/container.xml14 ?rw-r--r--··6.1·unx······252·bx·defN·25-Apr-18·15:32·META-INF/container.xml
15 ?rw-r--r--··6.1·unx······162·bx·defN·25-Apr-18·14:03·META-INF/com.apple.ibooks.display-options.xml15 ?rw-r--r--··6.1·unx······162·bx·defN·25-Apr-18·15:32·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,·26382·bytes·compressed:··68.5%
52.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,·Apr·18·2025·14:03: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,·Apr·18·2025·15:32:20,·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="6806347125-1">(</samp><samp·class="ss">revision</samp><samp·class="w">·</samp><samp·class="mi">2</samp><samp·class="p"·data-group-id="6806347125-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="8789144664-1">(</samp><samp·class="ss">revision</samp><samp·class="w">·</samp><samp·class="mi">2</samp><samp·class="p"·data-group-id="8789144664-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="0337554699-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="0337554699-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·483,·SHA:·3fa2f5c3b242045d756f49d298635517481abb701195edca610228ee03e8c94f·...·]-2">)</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><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="6432531203-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="6432531203-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·483,·SHA:·4018b837f9df30454e2fcb8e0df2f9052396225e85b9dcc0a5844f4f10efa1cd·...·]-2">)</span><span·class="p">.</span><span·class="w">
26 ······</span><span·class="p"·data-group-id="0337554699-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="0337554699-5">}</span>[·...·truncated·by·diffoscope;·len:·896,·SHA:·46a402693fb62e8df5dd0d59cb05bd51b9b63bfb3634b12ebc91ff5027c934f6·...·]-1">)</span><span·class="p">.</span><span·class="w">26 ······</span><span·class="p"·data-group-id="6432531203-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="6432531203-5">}</span>[·...·truncated·by·diffoscope;·len:·896,·SHA:·f054bd3e5a25a1a19db018ed35c1bb9c0966fd052b2d587c2e61085ce63d1a9a·...·]-1">)</span><span·class="p">.</span><span·class="w">
27 ······</span><span·class="p"·data-group-id="8051111186-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="8051111186-5">&lt;&lt;</span><span·class="s">&quot;Erlang/OTP·21\n&quot;</span><span·class="p"·data-group-id="8051111186-5">&gt;&gt;</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·78a581c36632611d1eb99deaa574497977aa3d7e05ed667a5ff5ccf7f9f19af5·...·]-4">}</span></code></pre>27 ······</span><span·class="p"·data-group-id="6881338692-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="6881338692-5">&lt;&lt;</span><span·class="s">&quot;Erlang/OTP·21\n&quot;</span><span·class="p"·data-group-id="6881338692-5">&gt;&gt;</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·c2055f7b4279c7325a9b7112a7ce556fc40afe0896515ca776b4010d96838a66·...·]-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="4099135308-1">(</span><span·class="ss">revision</span><span·class="w">·</span><span·class="mi">2</span><span·class="p"·data-group-id="4099135308-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="4166225035-1">(</span><span·class="ss">revision</span><span·class="w">·</span><span·class="mi">2</span><span·class="p"·data-group-id="4166225035-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="1126200482-1">(</span><span·class="p"·data-group-id="1126200482-2">[</span><span·class="ss">calls</span><span·class="p"·data-group-id="1126200482-2">]</span><span·class="p"·data-group-id="1126200482-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="1048632978-1">(</span><span·class="p"·data-group-id="1048632978-2">[</span><span·class="ss">calls</span><span·class="p"·data-group-id="1048632978-2">]</span><span·class="p"·data-group-id="1048632978-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="5841375552-1">(</span><span·class="p"·data-group-id="5841375552-2">[</span><span·class="ss">calls</span><span·class="p"·data-group-id="5841375552-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:·f81c9c2f91987198f403dea3b34334d2d66a14cfda6f2ef089e9df8126b7fc42·...·]-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="2216300861-1">(</span><span·class="p"·data-group-id="2216300861-2">[</span><span·class="ss">calls</span><span·class="p"·data-group-id="2216300861-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:·26cf8a314b2f4a42588946546f856b01f6561c7ea9842264c1bd0f0216f8e292·...·]-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="1155861293-1">(</span><span·class="p"·data-group-id="1155861293-2">[</span><span·class="ss">html</span><span·class="p"·data-group-id="1155861293-2">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1155861293-3">[</span[·...·truncated·by·diffoscope;·len:·95,·SHA:·8cdca68ea9bc17dad9fc014993afd424127427d97f104a53ed6c4c121d6a3337·...·]-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="3868047290-1">(</span><span·class="p"·data-group-id="3868047290-2">[</span><span·class="ss">html</span><span·class="p"·data-group-id="3868047290-2">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3868047290-3">[</span[·...·truncated·by·diffoscope;·len:·95,·SHA:·b533c5dfecfc481d887221aabfa0338d8ebe3ca48b715db543eb8a103d68a9af·...·]-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="2047513920-1">(</span><span·class="ss">channel</span><span·class="p"·data-group-id="2047513920-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="5205502915-1">(</span><span·class="ss">channel</span><span·class="p"·data-group-id="5205502915-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="2047513920-2">(</span><span·class="ss">gen_server</span><span·class="p"·data-group-id="2047513920-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="5205502915-2">(</span><span·class="ss">gen_server</span><span·class="p"·data-group-id="5205502915-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="2047513920-3">(</span><span·class="p"·data-group-id="2047513920-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:·97,·SHA:·b46b339ff406b2c5af7e4e6a47dfc2adbed56c094a366f912798ffe542807baf·...·]-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="5205502915-3">(</span><span·class="p"·data-group-id="5205502915-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:·97,·SHA:·8f0cf77a1c21ed576f4e225ae10e4bf15edb84d1484d5f6ad5637720787ca34b·...·]-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="2047513920-5">(</span><span·class="p"·data-group-id="2047513920-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:·92,·SHA:·1b81538c32af22d3c5ad4682b7cede25a559b3008042e41df040d3cc3d7266fc·...·]-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="5205502915-5">(</span><span·class="p"·data-group-id="5205502915-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:·92,·SHA:·f0f9319a61b02cb20591a61fc3bcf328434379cec7e34fdd3babf1321bdb2c35·...·]-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="2047513920-7">(</span><span·class="p"·data-group-id="2047513920-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:·204,·SHA:·a413d2176bf5021a5228489c85c9b8ff7bdf79a21512885951b650db489b182d·...·]-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="5205502915-7">(</span><span·class="p"·data-group-id="5205502915-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:·204,·SHA:·fa3da41fc24532d520c9fc9a0cfc9e9e0d7ff624410f4ea469c1bcc3fd9d3ead·...·]-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="2047513920-9">(</span><span·class="p"·data-group-id="2047513920-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="5205502915-9">(</span><span·class="p"·data-group-id="5205502915-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="2047513920-10">(</span><span·class="p"·data-group-id="2047513920-11">{</span><span·class="ss">local</span><span·class="p">,</span><span·class="ss">channel</span><span·class="p"·data-group-id="2047513920-11">}</span><span·class="p">,</span><span·class="w">·[·...·truncated·by·diffoscope;·len:·391,·SHA:·78e0a3393a964127e60ca62f0ffa256d8c9c02f46ae2e8765bee5d4339e627e2·...·]-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="5205502915-10">(</span><span·class="p"·data-group-id="5205502915-11">{</span><span·class="ss">local</span><span·class="p">,</span><span·class="ss">channel</span><span·class="p"·data-group-id="5205502915-11">}</span><span·class="p">,</span><span·class="w">·[·...·truncated·by·diffoscope;·len:·391,·SHA:·54baae56c16636006c56e0e0d6ef6f696853ab2bfc06018ea8588f8ee383655a·...·]-10">)</span><span·class="p">.</span><span·class="w">
  
157 </span><span·class="nf">stop</span><span·class="p"·data-group-id="2047513920-14">(</span><span·class="p"·data-group-id="2047513920-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="5205502915-14">(</span><span·class="p"·data-group-id="5205502915-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="2047513920-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="2047513920-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="5205502915-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="5205502915-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="2047513920-16">(</span><span·class="p"·data-group-id="2047513920-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="5205502915-16">(</span><span·class="p"·data-group-id="5205502915-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="2047513920-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="2047513920-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="5205502915-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="5205502915-17">)</span><span·class="p">.</span><span·class="w">
  
162 </span><span·class="nf">free</span><span·class="p"·data-group-id="2047513920-18">(</span><span·class="n">Channel</span><span·class="p"·data-group-id="2047513920-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="5205502915-18">(</span><span·class="n">Channel</span><span·class="p"·data-group-id="5205502915-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="2047513920-19">(</span><span·class="ss">channel</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2047513920-20">{</span><span·class="ss">free</span><span·class="p">,</span><span·class="n">Channel</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·77,·SHA:·47827a865bf16924106ad289c226ea074c9104399708276f8896d3f4107baf35·...·]-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="5205502915-19">(</span><span·class="ss">channel</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5205502915-20">{</span><span·class="ss">free</span><span·class="p">,</span><span·class="n">Channel</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·77,·SHA:·336d5f0f211bde6fc3210a7a3611eb56ad0c38b9e931462920163884512fa3e7·...·]-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="2047513920-21">(</span><span·class="p">_</span><span·class="n">Arg</span><span·class="p"·data-group-id="2047513920-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="5205502915-21">(</span><span·class="p">_</span><span·class="n">Arg</span><span·class="p"·data-group-id="5205502915-21">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
166 ····</span><span·class="p"·data-group-id="2047513920-22">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="nf">channels</span><span·class="p"·data-group-id="2047513920-23">(</span><span·class="p"·data-group-id="2047513920-23">)</span><span·class="p"·data-group-id="2047513920-22">}</span><span·class="p">.</span><span·class="w">166 ····</span><span·class="p"·data-group-id="5205502915-22">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="nf">channels</span><span·class="p"·data-group-id="5205502915-23">(</span><span·class="p"·data-group-id="5205502915-23">)</span><span·class="p"·data-group-id="5205502915-22">}</span><span·class="p">.</span><span·class="w">
  
167 </span><span·class="nf">handle_call</span><span·class="p"·data-group-id="2047513920-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:·16,·SHA:·104e00ab12c3360be3f6f65d54687b182782c55283b16163bcd9718ea5d930fb·...·]-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="5205502915-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:·16,·SHA:·3f86ba4fa9c7baf779d126420a2a63beb7a0d69337dfcd0e25c7a025e1138381·...·]-24">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
168 ····</span><span·class="p"·data-group-id="2047513920-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="2047513920-25">}</span><span·class="p">;</span><span·class="w">168 ····</span><span·class="p"·data-group-id="5205502915-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="5205502915-25">}</span><span·class="p">;</span><span·class="w">
  
169 </span><span·class="nf">handle_call</span><span·class="p"·data-group-id="2047513920-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:·17,·SHA:·353c526f2ae43b04afa6c5a4d9795a473d200d46dc38902d102450b6e58f456d·...·]-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="5205502915-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:·17,·SHA:·4f8cd4614204e90b5f87ceb9f7a6dd3bb37cca1b8f9318f8ae66cf059f2192ea·...·]-26">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
170 ····</span><span·class="p"·data-group-id="2047513920-27">{</span><span·class="n">Ch</span><span·class="p">,</span><span·class="n">Channels2</span><span·class="p"·data-group-id="2047513920-27">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">alloc</sp[·...·truncated·by·diffoscope;·len:·129,·SHA:·de71324935a2d89332f16f8d5adf6816eccf6e56f4c88b5307d4a8ddc2ce8f65·...·]-28">)</span><span·class="p">,</span><span·class="w">170 ····</span><span·class="p"·data-group-id="5205502915-27">{</span><span·class="n">Ch</span><span·class="p">,</span><span·class="n">Channels2</span><span·class="p"·data-group-id="5205502915-27">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">alloc</sp[·...·truncated·by·diffoscope;·len:·129,·SHA:·eaafa4aef54a2c7ea0ebb09923018792071f8e7db6f3983f397ae6d224e7797f·...·]-28">)</span><span·class="p">,</span><span·class="w">
171 ····</span><span·class="p"·data-group-id="2047513920-29">{</span><span·class="ss">reply</span><span·class="p">,</span><span·class="p"·data-group-id="2047513920-30">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Ch</span><span·class="p"·data-group-id="2047513920-30">}</sp[·...·truncated·by·diffoscope;·len:·100,·SHA:·b96710a69c1ac4cd93443a2f6fa2c16ae1f9beac2ff4038f46ee0b4375db3c26·...·]-29">}</span><span·class="p">;</span><span·class="w">171 ····</span><span·class="p"·data-group-id="5205502915-29">{</span><span·class="ss">reply</span><span·class="p">,</span><span·class="p"·data-group-id="5205502915-30">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Ch</span><span·class="p"·data-group-id="5205502915-30">}</sp[·...·truncated·by·diffoscope;·len:·100,·SHA:·fc68550c097b88b0ed588f2a1e6fd5533a38865483a3618adb01a28937e4d782·...·]-29">}</span><span·class="p">;</span><span·class="w">
  
172 </span><span·class="nf">handle_call</span><span·class="p"·data-group-id="2047513920-31">(</span><span·class="p"·data-group-id="2047513920-32">{</span><span·class="ss">free</span><span·class="p">,</span><span·class="n">Channel</span><span·class="p"·data-group-id="2047513920-32">}</span><span·class="p">,</span><span·class="w">·</[·...·truncated·by·diffoscope;·len:·178,·SHA:·cf9126514e394a0a6e8b735d9745ac7935bc0fce59c7d356e9226e6c0a7f98bd·...·]-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="5205502915-31">(</span><span·class="p"·data-group-id="5205502915-32">{</span><span·class="ss">free</span><span·class="p">,</span><span·class="n">Channel</span><span·class="p"·data-group-id="5205502915-32">}</span><span·class="p">,</span><span·class="w">·</[·...·truncated·by·diffoscope;·len:·178,·SHA:·53737fdecf15b59a2facc9334cca5bb01208761f5d70ba5085fa70e308e10b8c·...·]-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="2047513920-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="2047513920-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="5205502915-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="5205502915-33">)</span><span·class="p">,</span><span·class="w">
174 ····</span><span·class="p"·data-group-id="2047513920-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="2047513920-34">}</span><span·class="p">.</span><span·class="w">174 ····</span><span·class="p"·data-group-id="5205502915-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="5205502915-34">}</span><span·class="p">.</span><span·class="w">
  
175 </span><span·class="nf">terminate</span><span·class="p"·data-group-id="2047513920-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="2047513920-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="5205502915-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="5205502915-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="2047513920-36">(</span><span·class="p"·data-group-id="2047513920-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="5205502915-36">(</span><span·class="p"·data-group-id="5205502915-36">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
179 ····</span><span·class="p"·data-group-id="2047513920-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="2047513920-37">]</span><span·class="p">.</span><span·class="w">179 ····</span><span·class="p"·data-group-id="5205502915-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="5205502915-37">]</span><span·class="p">.</span><span·class="w">
  
180 </span><span·class="nf">alloc</span><span·class="p"·data-group-id="2047513920-38">(</span><span·class="p"·data-group-id="2047513920-39">[</span><span·class="n">Channel</span><span·class="p">|</span><span·class="n">Channels</span><span·class="p"·data-group-id="2047513920-39">]</span><span·class="p"·data-group-id="204751392[·...·truncated·by·diffoscope;·len:·1,·SHA:·5feceb66ffc86f38d952786c6d696c79c2dbc239dd4e91b46729d73a27fb57e9·...·]-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="5205502915-38">(</span><span·class="p"·data-group-id="5205502915-39">[</span><span·class="n">Channel</span><span·class="p">|</span><span·class="n">Channels</span><span·class="p"·data-group-id="5205502915-39">]</span><span·class="p"·data-group-id="520550291[·...·truncated·by·diffoscope;·len:·1,·SHA:·ef2d127de37b942baad06145e54b0c619a1f22327b2ebbcfbec78f5564afe39d·...·]-38">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
181 ····</span><span·class="p"·data-group-id="2047513920-40">{</span><span·class="n">Channel</span><span·class="p">,</span><span·class="n">Channels</span><span·class="p"·data-group-id="2047513920-40">}</span><span·class="p">;</span><span·class="w">181 ····</span><span·class="p"·data-group-id="5205502915-40">{</span><span·class="n">Channel</span><span·class="p">,</span><span·class="n">Channels</span><span·class="p"·data-group-id="5205502915-40">}</span><span·class="p">;</span><span·class="w">
182 </span><span·class="nf">alloc</span><span·class="p"·data-group-id="2047513920-41">(</span><span·class="p"·data-group-id="2047513920-42">[</span><span·class="p"·data-group-id="2047513920-42">]</span><span·class="p"·data-group-id="2047513920-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="5205502915-41">(</span><span·class="p"·data-group-id="5205502915-42">[</span><span·class="p"·data-group-id="5205502915-42">]</span><span·class="p"·data-group-id="5205502915-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="2047513920-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="2047513920-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="5205502915-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="5205502915-43">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
185 ····</span><span·class="p"·data-group-id="2047513920-44">[</span><span·class="n">Channel</span><span·class="p">|</span><span·class="n">Channels</span><span·class="p"·data-group-id="2047513920-44">]</span><span·class="p">.</span></code></pre><p>The·test·case·is·implemented·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="8008683141-1">(</span><span·class="ss">test</span><span·class="p"·data-group-id="8008683141-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="8008683141-2">(</span><span·class="p"·data-group-id="8008683141-3">[</span><span·class="ss">s</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"[·...·truncated·by·diffoscope;·len:·81,·SHA:·869359783aead964579af4bd407e739178d61c4bc3db90fd17e76bdeaa589218·...·]">)</span><span·class="p">.</span><span·class="w">185 ····</span><span·class="p"·data-group-id="5205502915-44">[</span><span·class="n">Channel</span><span·class="p">|</span><span·class="n">Channels</span><span·class="p"·data-group-id="5205502915-44">]</span><span·class="p">.</span></code></pre><p>The·test·cas[·...·truncated·by·diffoscope;·len:·258,·SHA:·3f621de1f588d710ed60cb57c685a25ec6d197d7a9bfc8fa8b97391d4d5c4a4a·...·]">)</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="3721331376-2">(</span><span·class="p"·data-group-id="3721331376-3">[</span><span·class="ss">s</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="3721331376-3">]</span><span·class="p"·data-group-id="3721331376-2">)</span><span·class="p">.</span><span·class="w">
  
187 </span><span·class="nf">s</span><span·class="p"·data-group-id="8008683141-4">(</span><span·class="p"·data-group-id="8008683141-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="3721331376-4">(</span><span·class="p"·data-group-id="3721331376-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
188 ····</span><span·class="p"·data-group-id="8008683141-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Pid</span><span·class="p"·data-group-id="8008683141-5">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">channel</span><s[·...·truncated·by·diffoscope;·len:·150,·SHA:·3060542a35d52354bcc3f6c0160f2be017f28f1b86ceaf51c3a347bb8eae163c·...·]-6">)</span><span·class="p">,</span><span·class="w">188 ····</span><span·class="p"·data-group-id="3721331376-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Pid</span><span·class="p"·data-group-id="3721331376-5">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">channel</span><s[·...·truncated·by·diffoscope;·len:·150,·SHA:·722017a0a4bcbab30b92c40c6cae0a5451237fddbbd36c3a03765a9a98b98245·...·]-6">)</span><span·class="p">,</span><span·class="w">
189 ····</span><span·class="p"·data-group-id="8008683141-7">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Ch1</span><span·class="p"·data-group-id="8008683141-7">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">channel</span><s[·...·truncated·by·diffoscope;·len:·145,·SHA:·0300b67b0f8e8bfbd4fd511e43fa68004c2ec52773be3b28b7d7a3b165571655·...·]-8">)</span><span·class="p">,</span><span·class="w">189 ····</span><span·class="p"·data-group-id="3721331376-7">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Ch1</span><span·class="p"·data-group-id="3721331376-7">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">channel</span><s[·...·truncated·by·diffoscope;·len:·145,·SHA:·f5b989b4a8d79e7b04f216f04d28017b8019c7ad562c9fea40d97a02d9cc087b·...·]-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="8008683141-9">(</span><span·class="n">Ch1</span><span·class="p"·data-group-id="8008683141-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="3721331376-9">(</span><span·class="n">Ch1</span><span·class="p"·data-group-id="3721331376-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="8008683141-10">(</span><span·class="p"·data-group-id="8008683141-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="3721331376-10">(</span><span·class="p"·data-group-id="3721331376-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="9494896059-1">(</span><span·class="p"·data-group-id="9494896059-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="5678770575-1">(</span><span·class="p"·data-group-id="5678770575-1">)</span><span·class="p">.</span><span·class="w">
199 </span><span·class="p"·data-group-id="9494896059-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="9494896059-2">}</span></code></pre><p>To·include·other·nodes·in·the·coverage·analysis,·use199 </span><span·class="p"·data-group-id="5678770575-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="5678770575-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="5613425466-1">(</span><span·class="ss">channel</span><span·class="p"·data-group-id="5613425466-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="8287841661-1">(</span><span·class="ss">channel</span><span·class="p"·data-group-id="8287841661-1">)</span><span·class="p">.</span><span·class="w">
207 </span><span·class="p"·data-group-id="5613425466-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">channel</span><span·class="p"·data-group-id="5613425466-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="8287841661-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">channel</span><span·class="p"·data-group-id="8287841661-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="7597944759-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="7597944759-1">)</span><span·class="p">.</span><span·class="w"> 
242 </span><span·class="p"·data-group-id="7597944759-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="7597944759-3">{</span><span·class="ss">channel</span><span·class="p">,</span><span·class="p"·data-group-id="7597944[·...·truncated·by·diffoscope;·len:·370,·SHA:·db842bf7aae6e2f61b33e1cc3a3f56a50f5778bd61ccd80e98fefd29c1bba3e4·...·]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·cla[·...·truncated·by·diffoscope;·len:·326,·SHA:·017dc7f01f700db8d04842aa39386fa3d1440b3c6fca8188df49d8aeeaeaad68·...·]
 242 </span><span·class="p"·data-group-id="5919913776-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="5919913776-3">{</span><span·class="ss">channel</span><span·class="p">,</span><span·class="p"·data-group-id="5919913776-4">{</span><span·class="mi">14</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="5919913776-4">}</span><span·class="p"·data-group-id="5919913776-3">}</span><span·class="p"·data-group-id="5919913776-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="9592023290-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="9592023290-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="4002084509-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="4002084509-1">)</span><span·class="p">.</span><span·class="w">
246 </span><span·class="p"·data-group-id="9592023290-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9592023290-3">[</span><span·class="p"·data-group-id="9592023290-4">{</span><span·class="p"·data-group-id="9592023290-5">{</span><span·class="ss">channel<[·...·truncated·by·diffoscope;·len:·411,·SHA:·268cbf0af5e1edca5d93c125ec57fe1de2f44a9915ad383fa4fe11c87652ce04·...·]-4">}</span><span·class="p">,</span><span·class="w">246 </span><span·class="p"·data-group-id="4002084509-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="4002084509-3">[</span><span·class="p"·data-group-id="4002084509-4">{</span><span·class="p"·data-group-id="4002084509-5">{</span><span·class="ss">channel<[·...·truncated·by·diffoscope;·len:·411,·SHA:·0d586d1e02135c05d8fe11c3390b7e97f012883bdffe0bc64eeb261046bf215c·...·]-4">}</span><span·class="p">,</span><span·class="w">
247 ·····</span><span·class="p"·data-group-id="9592023290-7">{</span><span·class="p"·data-group-id="9592023290-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="9592023290-8">}</s[·...·truncated·by·diffoscope;·len:·249,·SHA:·366dc655a84733785ecb59c0496f3a3959e13568e051f4a61e1985426ed09914·...·]-7">}</span><span·class="p">,</span><span·class="w">247 ·····</span><span·class="p"·data-group-id="4002084509-7">{</span><span·class="p"·data-group-id="4002084509-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="4002084509-8">}</s[·...·truncated·by·diffoscope;·len:·249,·SHA:·8cc40b62c77bbc6c91a930a8676ab16e2dff75db20e8b25e7373c9c9577f22ca·...·]-7">}</span><span·class="p">,</span><span·class="w">
248 ·····</span><span·class="p"·data-group-id="9592023290-10">{</span><span·class="p"·data-group-id="9592023290-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="9592023290-11">[·...·truncated·by·diffoscope;·len:·255,·SHA:·79ae696d995362a63b76347bb930e5baac646c3c08ef9f3a780daa25e2dc6d0a·...·]-10">}</span><span·class="p">,</span><span·class="w">248 ·····</span><span·class="p"·data-group-id="4002084509-10">{</span><span·class="p"·data-group-id="4002084509-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="4002084509-11">[·...·truncated·by·diffoscope;·len:·255,·SHA:·75b4540b45d6c05db73b1d7222b4d90c374f834db32080430743ec0353228aaa·...·]-10">}</span><span·class="p">,</span><span·class="w">
249 ·····</span><span·class="p"·data-group-id="9592023290-13">{</span><span·class="p"·data-group-id="9592023290-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="9592023290-14">}[·...·truncated·by·diffoscope;·len:·254,·SHA:·67b06e61051a187d694727be69f53cf3eba871c4b548e9d9b0ecc6cbd0920ac9·...·]-13">}</span><span·class="p">,</span><span·class="w">249 ·····</span><span·class="p"·data-group-id="4002084509-13">{</span><span·class="p"·data-group-id="4002084509-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="4002084509-14">}[·...·truncated·by·diffoscope;·len:·254,·SHA:·e889a2c88bfc424c673c9e29c4a5246fb623f3a08f4e1896a5c6c591b060656f·...·]-13">}</span><span·class="p">,</span><span·class="w">
250 ·····</span><span·class="p"·data-group-id="9592023290-16">{</span><span·class="p"·data-group-id="9592023290-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="9592023290-17">}[·...·truncated·by·diffoscope;·len:·254,·SHA:·1d4265f2a1939e5ecfba3899ee57ec6b52aa50042040b8c7db7b591fba546864·...·]-16">}</span><span·class="p">,</span><span·class="w">250 ·····</span><span·class="p"·data-group-id="4002084509-16">{</span><span·class="p"·data-group-id="4002084509-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="4002084509-17">}[·...·truncated·by·diffoscope;·len:·254,·SHA:·c1b1b31e550b1e06066646aef3f511ec6489d104fa9a3ce264c22012a697e160·...·]-16">}</span><span·class="p">,</span><span·class="w">
251 ·····</span><span·class="p"·data-group-id="9592023290-19">{</span><span·class="p"·data-group-id="9592023290-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="959202329[·...·truncated·by·diffoscope;·len:·261,·SHA:·926545db740ac93334b0533b5a96baea1369c55f8e1495e3b7cd24ba52fd1769·...·]-19">}</span><span·class="p">,</span><span·class="w">251 ·····</span><span·class="p"·data-group-id="4002084509-19">{</span><span·class="p"·data-group-id="4002084509-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="400208450[·...·truncated·by·diffoscope;·len:·261,·SHA:·c57ddc2fbb70e23991c27f66cdbad8a35c956444de2e971d981de5e545fc062d·...·]-19">}</span><span·class="p">,</span><span·class="w">
252 ·····</span><span·class="p"·data-group-id="9592023290-22">{</span><span·class="p"·data-group-id="9592023290-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="9592023290-[·...·truncated·by·diffoscope;·len:·259,·SHA:·911e86597c8ee12cae6b0c7b2ceabc860c36a86a9b8baf695b7191755a12c8fc·...·]-22">}</span><span·class="p">,</span><span·class="w">252 ·····</span><span·class="p"·data-group-id="4002084509-22">{</span><span·class="p"·data-group-id="4002084509-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="4002084509-[·...·truncated·by·diffoscope;·len:·259,·SHA:·0988ea0426c2bf6420c861671429995a3552c9019421bd6f69cca3eb0dbf889f·...·]-22">}</span><span·class="p">,</span><span·class="w">
253 ·····</span><span·class="p"·data-group-id="9592023290-25">{</span><span·class="p"·data-group-id="9592023290-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="9592023290-2[·...·truncated·by·diffoscope;·len:·258,·SHA:·bffa0553bc337f56f5199156c60309c9e58e45c5248dca103499322256f38bd4·...·]-25">}</span><span·class="p">,</span><span·class="w">253 ·····</span><span·class="p"·data-group-id="4002084509-25">{</span><span·class="p"·data-group-id="4002084509-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="4002084509-2[·...·truncated·by·diffoscope;·len:·258,·SHA:·b12f26125dbb554d75622bfb1204cead62e809637584e3106c4fa4668e9d4e68·...·]-25">}</span><span·class="p">,</span><span·class="w">
254 ·····</span><span·class="p"·data-group-id="9592023290-28">{</span><span·class="p"·data-group-id="9592023290-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="9592023290-29">[·...·truncated·by·diffoscope;·len:·255,·SHA:·c3580720aa4d53cd483cfd7d22568cc37af418b42b987aad02248a47df74f93d·...·]-28">}</span><span·class="p">,</span><span·class="w">254 ·····</span><span·class="p"·data-group-id="4002084509-28">{</span><span·class="p"·data-group-id="4002084509-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="4002084509-29">[·...·truncated·by·diffoscope;·len:·255,·SHA:·ea15d87fa21b333d12cc598882a7ff271673183fa92555c393956b6d89c140c7·...·]-28">}</span><span·class="p">,</span><span·class="w">
255 ·····</span><span·class="p"·data-group-id="9592023290-31">{</span><span·class="p"·data-group-id="9592023290-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="9592023290-32">}[·...·truncated·by·diffoscope;·len:·361,·SHA:·dd4849145ba77e0d649b92e4e0c929d338442dc2313c664fa0e53b7fae4b4e14·...·]-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="4002084509-31">{</span><span·class="p"·data-group-id="4002084509-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="4002084509-32">}[·...·truncated·by·diffoscope;·len:·361,·SHA:·432757bda0693cbfd875f89231344aa17e1b4bcf2afcc9bf7635460026416f1a·...·]-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="8758770990-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="8758770990-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="1340790526-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="1340790526-1">)</span><span·class="p">.</span><span·class="w">
260 </span><span·class="p"·data-group-id="8758770990-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="8758770990-3">[</span><span·class="p"·data-group-id="8758770990-4">{</span><span·class="p"·data-group-id="8758770990-5">{</span><span·class="ss">channel<[·...·truncated·by·diffoscope;·len:·460,·SHA:·7765ecb7233f2a7c85514235117953b644d0e10579a7c843a7ab348d122613b7·...·]-4">}</span><span·class="p">,</span><span·class="w">260 </span><span·class="p"·data-group-id="1340790526-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="1340790526-3">[</span><span·class="p"·data-group-id="1340790526-4">{</span><span·class="p"·data-group-id="1340790526-5">{</span><span·class="ss">channel<[·...·truncated·by·diffoscope;·len:·460,·SHA:·8fd1e67fe6e621d080438870961dda57f533935964555f42d73708d565b16cbd·...·]-4">}</span><span·class="p">,</span><span·class="w">
261 ·····</span><span·class="p"·data-group-id="8758770990-7">{</span><span·class="p"·data-group-id="8758770990-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:·c0a6d15d2eac85c703fd6219d27d07b099d1b276fcaaaa3f3834a3cef11b7c90·...·]-7">}</span><span·class="p">,</span><span·class="w">261 ·····</span><span·class="p"·data-group-id="1340790526-7">{</span><span·class="p"·data-group-id="1340790526-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:·b1554af9a82a4a4ba1793f91dbcb5e1231d3ba7c21b29242496dd18c4cd80793·...·]-7">}</span><span·class="p">,</span><span·class="w">
262 ·····</span><span·class="p"·data-group-id="8758770990-10">{</span><span·class="p"·data-group-id="8758770990-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:·61d5e6bc41e6a4e3a2f5bfb506e3bb4b94567ba452e4fccc8701c480cd4d5c99·...·]-10">}</span><span·class="p">,</span><span·class="w">262 ·····</span><span·class="p"·data-group-id="1340790526-10">{</span><span·class="p"·data-group-id="1340790526-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:·e65d3f3be0357cf89ee6e68be5419da6e3c419196f442ab7e8442a3df71156dd·...·]-10">}</span><span·class="p">,</span><span·class="w">
263 ·····</span><span·class="p"·data-group-id="8758770990-13">{</span><span·class="p"·data-group-id="8758770990-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:·4feb7bd52d20dc3afb7f908471b911d6851e596e60aaf69e38c90d5b8da21a2c·...·]-13">}</span><span·class="p">,</span><span·class="w">263 ·····</span><span·class="p"·data-group-id="1340790526-13">{</span><span·class="p"·data-group-id="1340790526-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:·7529df6fe8e6e1010ccc0d0c4937dae7806a2ff4704b92a8bdef3894ff3596c5·...·]-13">}</span><span·class="p">,</span><span·class="w">
264 ·····</span><span·class="p"·data-group-id="8758770990-16">{</span><span·class="p"·data-group-id="8758770990-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:·4e91d2dee2bc90ac04603f6c9ddd899ee0e4f6246a9c029b0fc9188f62f55e4d·...·]-16">}</span><span·class="p">,</span><span·class="w">264 ·····</span><span·class="p"·data-group-id="1340790526-16">{</span><span·class="p"·data-group-id="1340790526-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:·1212f82db3b2ae9328c2ceda676faba6c249111e82b0af35dd0683733ff549c7·...·]-16">}</span><span·class="p">,</span><span·class="w">
265 ·····</span><span·class="p"·data-group-id="8758770990-19">{</span><span·class="p"·data-group-id="8758770990-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:·bd97248c96a3208fd315eafec53031e77a87bfe5e19b031d363893e5277290f7·...·]-19">}</span><span·class="p">,</span><span·class="w">265 ·····</span><span·class="p"·data-group-id="1340790526-19">{</span><span·class="p"·data-group-id="1340790526-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:·ac6ba5e7a263dc2651c8bca8027c2d93037340e9ccbac5232530b46beb168480·...·]-19">}</span><span·class="p">,</span><span·class="w">
266 ·····</span><span·class="p"·data-group-id="8758770990-22">{</span><span·class="p"·data-group-id="8758770990-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:·cacd8ce1ce04ad9cec14b76b7a6686866372b4c20ff8be7c1779ad5ec2467f9d·...·]-22">}</span><span·class="p">,</span><span·class="w">266 ·····</span><span·class="p"·data-group-id="1340790526-22">{</span><span·class="p"·data-group-id="1340790526-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:·265366b3d100fff75d9a9cd25be5f962597d226de942e21d5c7bf2b765f82635·...·]-22">}</span><span·class="p">,</span><span·class="w">
267 ·····</span><span·class="p"·data-group-id="8758770990-25">{</span><span·class="p"·data-group-id="8758770990-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:·896f36becf1b6442c63acf02e3b6ae5cf727a29745724ff00811fdc0a97c84be·...·]-25">}</span><span·class="p">,</span><span·class="w">267 ·····</span><span·class="p"·data-group-id="1340790526-25">{</span><span·class="p"·data-group-id="1340790526-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:·1f0e85b88f489e39d080a4c97e7a011288f2c0fb787b3fd76a7fb891862a1b20·...·]-25">}</span><span·class="p">,</span><span·class="w">
268 ·····</span><span·class="p"·data-group-id="8758770990-28">{</span><span·class="p"·data-group-id="8758770990-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:·d3d51ef8d377a433416b27a1fce4c5e1e0edc1fdbbc034d27033de0225bb8c09·...·]-28">}</span><span·class="p">,</span><span·class="w">268 ·····</span><span·class="p"·data-group-id="1340790526-28">{</span><span·class="p"·data-group-id="1340790526-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:·55354926fde9275fe9b71c6b1e1ad31c5eed900f2d7d9155c7d9ce1a8cf71c73·...·]-28">}</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.6/doc/html/erlang.html#t:module/0">module</a>(),·Limit·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:non_neg_integer/0">non_neg_integer</a>().</pre>576 ·················when·Mod·::·<a·href="../../../../erts-15.2.6/doc/html/erlang.html#t:module/0">module</a>(),·Limit·::·<a·href="../../../../erts-15.2.6/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="2466806238-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="24668[·...·truncated·by·diffoscope;·len:·650,·SHA:·dcd6172681f09ec2f3ddee485edf0f9276ae2b442b6bba735bb78a633c5c6141·...·]4-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="5817393207-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="58173[·...·truncated·by·diffoscope;·len:·650,·SHA:·03cb6df6399bda9e7630855bf14a9fe6cba86e8757998237b40f310edace0041·...·]4-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="3784051416-1">(</span><span·class="p"·data-group-id="3784051416-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="3784051416-2">(</spa[·...·truncated·by·diffoscope;·len:·42,·SHA:·a14859073f904578c1044eebcc61f5dce3fd5c90566355b98de24fa7c733828f·...·]6-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="0820239046-1">(</span><span·class="p"·data-group-id="0820239046-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="0820239046-2">(</spa[·...·truncated·by·diffoscope;·len:·42,·SHA:·2c08072a49714582cd0d34ad57674e53f39978dd23d35362af7e26bed6da82fb·...·]6-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="3784051416-3">(</span><span·class="p"·data-group-id="3784051416-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="0820239046-3">(</span><span·class="p"·data-group-id="0820239046-3">)</span><span·class="p">.</span><span·class="w">
162 </span><span·class="p"·data-group-id="3784051416-4">{</span><span·class="mi">539</span><span·class="p">,</span><span·class="w">162 </span><span·class="p"·data-group-id="0820239046-4">{</span><span·class="mi">539</span><span·class="p">,</span><span·class="w">
163 ·</span><span·class="p"·data-group-id="3784051416-5">[</span><span·class="p"·data-group-id="3784051416-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="0820239046-5">[</span><span·class="p"·data-group-id="0820239046-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="3784051416-7">[</span><span·class="p"·data-group-id="3784051416-8">{</span><span·class="p"·data-group-id="3784051416-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:·151,·SHA:·decf59b5effb6709628bf4828f5d5b421c487ded2aaf6820186f63f17d9d0a15·...·]6-8">}</span><span·class="p">,</span><span·class="w">164 ·········</span><span·class="p"·data-group-id="0820239046-7">[</span><span·class="p"·data-group-id="0820239046-8">{</span><span·class="p"·data-group-id="0820239046-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:·151,·SHA:·473a8a5d4caff6b656e443bdea615ca4b2a18829543c37907040628c63cd1a1e·...·]6-8">}</span><span·class="p">,</span><span·class="w">
165 ··········</span><span·class="p"·data-group-id="3784051416-10">{</span><span·class="p"·data-group-id="3784051416-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="3784051416[·...·truncated·by·diffoscope;·len:·103,·SHA:·d46db6691c44ac0228feb431901b4a7a8233bc4ee3ae3aa7f9fe2f1cf02afff4·...·]6-10">}</span><span·class="p">,</span><span·class="w">165 ··········</span><span·class="p"·data-group-id="0820239046-10">{</span><span·class="p"·data-group-id="0820239046-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="0820239046[·...·truncated·by·diffoscope;·len:·103,·SHA:·53bb5408fa54e29a40a4e0aa2b5fd17e381b775b90d8ed9750c1c3115524bea3·...·]6-10">}</span><span·class="p">,</span><span·class="w">
166 ··········</span><span·class="p"·data-group-id="3784051416-12">{</span><span·class="p"·data-group-id="3784051416-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="3784051416[·...·truncated·by·diffoscope;·len:·103,·SHA:·e18b2e059b09765d18dc2c879339901ad3e4306208d8d1497307072af1357d96·...·]6-12">}</span><span·class="p">,</span><span·class="w">166 ··········</span><span·class="p"·data-group-id="0820239046-12">{</span><span·class="p"·data-group-id="0820239046-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="0820239046[·...·truncated·by·diffoscope;·len:·103,·SHA:·f0a3a56754978fa71f9a670699047c8e44c4fc069e19b4cc16c7246770f60429·...·]6-12">}</span><span·class="p">,</span><span·class="w">
167 ··········</span><span·class="p"·data-group-id="3784051416-14">{</span><span·class="p"·data-group-id="3784051416-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="378405[·...·truncated·by·diffoscope;·len:·106,·SHA:·283c5cbcf971d6c95675640ddde623ccdd3f3c0a3bde658fa2841e45e03d1f51·...·]6-14">}</span><span·class="p">,</span><span·class="w">167 ··········</span><span·class="p"·data-group-id="0820239046-14">{</span><span·class="p"·data-group-id="0820239046-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="082023[·...·truncated·by·diffoscope;·len:·106,·SHA:·0fd6a7ed9b9c24510448d27eb8e7ab433290e9cbab1e698ead395804d2a98b94·...·]6-14">}</span><span·class="p">,</span><span·class="w">
168 ··········</span><span·class="p"·data-group-id="3784051416-16">{</span><span·class="p"·data-group-id="3784051416-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="3784051416-[·...·truncated·by·diffoscope;·len:·101,·SHA:·61aea3ea1ee23610f26600aff9603a14fd7e79d5ccdbe257371e31c65edf3e78·...·]6-16">}</span><span·class="p">,</span><span·class="w">168 ··········</span><span·class="p"·data-group-id="0820239046-16">{</span><span·class="p"·data-group-id="0820239046-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="0820239046-[·...·truncated·by·diffoscope;·len:·101,·SHA:·a7a9a66b34781e196e9d08fdb4e0d66c859bfd5b46d86460a28098b09609c02e·...·]6-16">}</span><span·class="p">,</span><span·class="w">
169 ··········</span><span·class="p"·data-group-id="3784051416-18">{</span><span·class="p"·data-group-id="3784051416-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="3784051[·...·truncated·by·diffoscope;·len:·105,·SHA:·4af5760eb79981d29666f5c9e022ab9591387176b4069b4e11e304823cd63821·...·]6-18">}</span><span·class="p">,</span><span·class="w">169 ··········</span><span·class="p"·data-group-id="0820239046-18">{</span><span·class="p"·data-group-id="0820239046-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="0820239[·...·truncated·by·diffoscope;·len:·105,·SHA:·ab064987d38aba5a0d97324bcb925d959fba1baad74eb968662770628d2f3796·...·]6-18">}</span><span·class="p">,</span><span·class="w">
170 ··········</span><span·class="p"·data-group-id="3784051416-20">{</span><span·class="p"·data-group-id="3784051416-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="3784051416-21">}<[·...·truncated·by·diffoscope;·len:·95,·SHA:·d4e2211b4e8646071f4ea4fd1b12d6758b0a24fc40953b3844752ca2c08771d4·...·]6-20">}</span><span·class="p">,</span><span·class="w">170 ··········</span><span·class="p"·data-group-id="0820239046-20">{</span><span·class="p"·data-group-id="0820239046-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="0820239046-21">}<[·...·truncated·by·diffoscope;·len:·95,·SHA:·6af3da3297af47f8a655c839e14e1d49d6bd2f7270e39b2bdec7a0d0b29dc710·...·]6-20">}</span><span·class="p">,</span><span·class="w">
171 ··········</span><span·class="p"·data-group-id="3784051416-22">{</span><span·class="p"·data-group-id="3784051416-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="3784051416-23">}</[·...·truncated·by·diffoscope;·len:·94,·SHA:·2cecf3369335fc0026c411904ee61009e2cd4479b081bac7f9c8e092881c4f0e·...·]6-22">}</span><span·class="p">,</span><span·class="w">171 ··········</span><span·class="p"·data-group-id="0820239046-22">{</span><span·class="p"·data-group-id="0820239046-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="0820239046-23">}</[·...·truncated·by·diffoscope;·len:·94,·SHA:·6efdc6bafce84363dde3d4048532a26cee7b419a089b8b0833de1705f87105c3·...·]6-22">}</span><span·class="p">,</span><span·class="w">
172 ··········</span><span·class="p"·data-group-id="3784051416-24">{</span><span·class="p"·data-group-id="3784051416-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="37840514[·...·truncated·by·diffoscope;·len:·104,·SHA:·12f21c368027a74c5d2eaac522a721c43fd14ded740075780802c27b845f6a60·...·]6-24">}</span><span·class="p">,</span><span·class="w">172 ··········</span><span·class="p"·data-group-id="0820239046-24">{</span><span·class="p"·data-group-id="0820239046-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="08202390[·...·truncated·by·diffoscope;·len:·104,·SHA:·8340a8ce541f1bd2b53b006ee2523b8d65a610980e8b64fe4026356f241ddbc3·...·]6-24">}</span><span·class="p">,</span><span·class="w">
173 ··········</span><span·class="p"·data-group-id="3784051416-26">{</span><span·class="p"·data-group-id="3784051416-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="378405141[·...·truncated·by·diffoscope;·len:·103,·SHA:·7538e4a5c8c5732f55dc4b5b21d5f3d02baf90ea2b8b592c328dd5fc108a083a·...·]6-26">}</span><span·class="p">,</span><span·class="w">173 ··········</span><span·class="p"·data-group-id="0820239046-26">{</span><span·class="p"·data-group-id="0820239046-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="082023904[·...·truncated·by·diffoscope;·len:·103,·SHA:·3cc2fb0f7dd1cd37b73c0bf0b9b9a60681f23a5921d39bf68d8058e174e9eae4·...·]6-26">}</span><span·class="p">,</span><span·class="w">
174 ··········</span><span·class="p"·data-group-id="3784051416-28">{</span><span·class="p"·data-group-id="3784051416-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="3784051416-29[·...·truncated·by·diffoscope;·len:·99,·SHA:·08f9b29b78c18ab1ecdfa996873ca9c6b3c4030462a6975dfeb3af63a2e241bb·...·]6-28">}</span><span·class="p">,</span><span·class="w">174 ··········</span><span·class="p"·data-group-id="0820239046-28">{</span><span·class="p"·data-group-id="0820239046-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="0820239046-29[·...·truncated·by·diffoscope;·len:·99,·SHA:·db01eba8322776b26b7cf6fc9d94ce2c03df9711063977176353fe5fd5267d05·...·]6-28">}</span><span·class="p">,</span><span·class="w">
175 ··········</span><span·class="p"·data-group-id="3784051416-30">{</span><span·class="p"·data-group-id="3784051416-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:·119,·SHA:·06ab01a949bdfbefa467329c42e82f4ff4a621c034bac32f8d680331bff4f734·...·]6-30">}</span><span·class="p">,</span><span·class="w">175 ··········</span><span·class="p"·data-group-id="0820239046-30">{</span><span·class="p"·data-group-id="0820239046-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:·119,·SHA:·423a1703d7c75d14f7297fbc7b063d3e92710f286db2fc556c06699223d9c527·...·]6-30">}</span><span·class="p">,</span><span·class="w">
176 ··········</span><span·class="p"·data-group-id="3784051416-32">{</span><span·class="p"·data-group-id="3784051416-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:·226,·SHA:·d730bb0e9b4d50fc0e65cec4d16d8cd09e98aa2c143de13cd9b7fc777df59abd·...·]6-6">}</span><span·class="p">,</span><span·class="w">176 ··········</span><span·class="p"·data-group-id="0820239046-32">{</span><span·class="p"·data-group-id="0820239046-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:·226,·SHA:·304feeef1e8f7b0ad74f4a66c091bb601936f1fbf56547254df99ab7ae11c5f9·...·]6-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="3784051416-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="3784051416-35">[</span><span·class="p"·data-group-id="3784051416-36">{</span><span·class="p"[·...·truncated·by·diffoscope;·len:·437,·SHA:·7b46d080b4544a76cfa8b074b3cd69626e5a6e5f1a21854e446fe009e40c4e64·...·]6-34">}</span><span·class="p">,</span><span·class="w">182 ··</span><span·class="p"·data-group-id="0820239046-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="0820239046-35">[</span><span·class="p"·data-group-id="0820239046-36">{</span><span·class="p"[·...·truncated·by·diffoscope;·len:·437,·SHA:·a9dc4fa890ce4213af48497a147d09e0bdaff64cbeb49ba1541683a3afba5baa·...·]6-34">}</span><span·class="p">,</span><span·class="w">
183 ··</span><span·class="p"·data-group-id="3784051416-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="3784051416-39">[</span><span·class="p"·data-group-id="3784051416-40">{</span><span·class="p"·data-group-id="3784051416-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="3784051416-41">}</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="3784051416-40">}</span><span·class="p"·data-group-id="3784051416-39">]</span><span·class="p"·data-group-id="3784051416-38">}</span><span·class="p">,</span><span·class="w"> 
184 ··</span><span·class="p"·data-group-id="3784051416-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="3784051416-43">[</span><span·class="p"·data-group-id="3784051416-44">{</span><span·class="p"·data-group-id="3784051416-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="3784051416-45">}</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="3784051416-44">}</span><span·class="p"·data-group-id="3784051416-43">]</span><span·class="p"·data-group-id="3784051416-42">}</span><span·class="p">,</span><span·class="w"> 
185 ··</span><span·class="p"·data-group-id="3784051416-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="3784051416-47">[</span><span·class="p"·data-group-id="3784051416-48">{</span><span·class="p"·data-group-id="3784051416-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="3784051416-49">}</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="3784051416-48">}</span><span·class="p"·data-group-id="3784051416-47">]</span><span·class="p"·data-group-id="3784051416-46">}</span><span·class="p"·data-group-id="3784051416-5">]</span><span·class="p"·data-group-id="3784051416-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="3784051416-50">(</span><span·class="ss">cprof</span><span·class="p"·data-group-id="3784051416-50">)</span><span·class="p">.</span><span·class="w"> 
187 </span><span·class="p"·data-group-id="3784051416-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="3784051416-52">[</span><span·class="p"·data-group-id="37840514[·...·truncated·by·diffoscope;·len:·910,·SHA:·27747db4f2d675d44710ec49036552019207a6dbbfcf25788f036565d6edc045·...·]">183 ··</span><span·class="p"·data-group-id="0820239046-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="0820239046-39">[</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·522,·SHA:·0c8c9fba97b44ad72e2a357fefb9fd3e82b7da7d81cd3f80d7a4bd1a97e39158·...·]">
 184 ··</span><span·class="p"·data-group-id="0820239046-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="0820239046-43">[</span><span·class="p"·data-group-id="0820239046-44">{</span><span·class="p"·data-group-id="0820239046-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="0820239046-45">}</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="0820239046-44">}</span><span·class="p"·data-group-id="0820239046-43">]</span><span·class="p"·data-group-id="0820239046-42">}</span><span·class="p">,</span><span·class="w">
 185 ··</span><span·class="p"·data-group-id="0820239046-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="0820239046-47">[</span><span·class="p"·data-group-id="0820239046-48">{</span><span·class="p"·data-group-id="0820239046-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="0820239046-49">}</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="0820239046-48">}</span><span·class="p"·data-group-id="0820239046-47">]</span><span·class="p"·data-group-id="0820239046-46">}</span><span·class="p"·data-group-id="0820239046-5">]</span><span·class="p"·data-group-id="0820239046-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="0820239046-50">(</span><span·class="ss">cprof</span><span·class="p"·data-group-id="0820239046-50">)</span><span·class="p">.</span><span·class="w">
 187 </span><span·class="p"·data-group-id="0820239046-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="0820239046-52">[</span><span·class="p"·data-group-id="0820239046-53">{</span><span·class="p"·data-group-id="0820239046-54">{</span><span·class="ss">cprof</span><span·class="p">,</span><span·class="ss">tr</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="0820239046-54">}</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="0820239046-53">}</span><span·class="p">,</span><span·class="p"·data-group-id="0820239046-55">{</span><span·class="p"·data-group-id="0820239046-56">{</span><span·class="ss">cprof</span><span·class="p">,</span><span·class="ss">pause</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="0820239046-56">}</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="0820239046-55">}</span><span·class="p"·data-group-id="0820239046-52">]</span><span·class="p"·data-group-id="0820239046-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="3784051416-57">(</span><span·class="p"·data-group-id="3784051416-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="0820239046-57">(</span><span·class="p"·data-group-id="0820239046-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="7776204648-1">(</span><span·class="p"·data-group-id="7776204648-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:·7c4fb79fca9a28ffb2ff253eaa8114bfa5f2471f632638fedd528c1fc303f47f·...·]-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="6538908514-1">(</span><span·class="p"·data-group-id="6538908514-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:·9d16c5c69243bad88710b161750e4356be0976fb0279d3a0ec793d19c9cc616a·...·]-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="7776204648-4">(</span><span·class="ss">calendar</span><span·class="p"·data-group-id="7776204648-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="6538908514-4">(</span><span·class="ss">calendar</span><span·class="p"·data-group-id="6538908514-4">)</span><span·class="p">.</span><span·class="w">
201 </span><span·class="p"·data-group-id="7776204648-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="6538908514-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="7776204648-6">[</span><span·class="p"·data-group-id="7776204648-7">{</span><span·class="p"·data-group-id="7776204648-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:·7816de1daeb1b4ee74798db3b159c66dbaeac8cbfec59e898dbd1d58ca2c93c2·...·]-7">}</span><span·class="p">,</span><span·class="w">202 ··········</span><span·class="p"·data-group-id="6538908514-6">[</span><span·class="p"·data-group-id="6538908514-7">{</span><span·class="p"·data-group-id="6538908514-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:·8ff3229f845e49c03cc090cf8dc6c9d488fe4f937cf772d7f82219dccff03546·...·]-7">}</span><span·class="p">,</span><span·class="w">
203 ···········</span><span·class="p"·data-group-id="7776204648-9">{</span><span·class="p"·data-group-id="7776204648-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:·f96326ec2dc7da65cc391437df1afa52d6a43fbf8575cb2f90fdfc849b12f12c·...·]-9">}</span><span·class="p">,</span><span·class="w">203 ···········</span><span·class="p"·data-group-id="6538908514-9">{</span><span·class="p"·data-group-id="6538908514-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:·c93164a983c6a71890aeca7f1bde76f77e1c3e8687e10b750bce9044ef653509·...·]-9">}</span><span·class="p">,</span><span·class="w">
204 ···········</span><span·class="p"·data-group-id="7776204648-11">{</span><span·class="p"·data-group-id="7776204648-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="777620[·...·truncated·by·diffoscope;·len:·107,·SHA:·0d24e3ff452577212fc8f5f5e9e9b0514cf92c8f6a6051af86c3d10f43af80de·...·]-11">}</span><span·class="p">,</span><span·class="w">204 ···········</span><span·class="p"·data-group-id="6538908514-11">{</span><span·class="p"·data-group-id="6538908514-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="653890[·...·truncated·by·diffoscope;·len:·107,·SHA:·60f109f41c33d7a7be9bf1b9390a9e523794cf7a58c9dd88cdfa62e7d574bd21·...·]-11">}</span><span·class="p">,</span><span·class="w">
205 ···········</span><span·class="p"·data-group-id="7776204648-13">{</span><span·class="p"·data-group-id="7776204648-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="7776204[·...·truncated·by·diffoscope;·len:·106,·SHA:·5c44c126d743e96f39d6b8c4f6ea7fa3a67bf4d4a094f42b9c9ccb43d1c8ce59·...·]-13">}</span><span·class="p">,</span><span·class="w">205 ···········</span><span·class="p"·data-group-id="6538908514-13">{</span><span·class="p"·data-group-id="6538908514-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="6538908[·...·truncated·by·diffoscope;·len:·106,·SHA:·605d86aaa6a45aa7863add940d966c26b1ead55200124a0d778a74fa81680572·...·]-13">}</span><span·class="p">,</span><span·class="w">
206 ···········</span><span·class="p"·data-group-id="7776204648-15">{</span><span·class="p"·data-group-id="7776204648-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="7776204648-16">}<[·...·truncated·by·diffoscope;·len:·96,·SHA:·3681f71e945d5f76e292df165417c8d9f5a168c327f8499e468524d95409b112·...·]-15">}</span><span·class="p">,</span><span·class="w">206 ···········</span><span·class="p"·data-group-id="6538908514-15">{</span><span·class="p"·data-group-id="6538908514-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="6538908514-16">}<[·...·truncated·by·diffoscope;·len:·96,·SHA:·3413494dd609d744920e5619e0748ca33f2f1662b1457d9f38beaba5fef82f12·...·]-15">}</span><span·class="p">,</span><span·class="w">
207 ···········</span><span·class="p"·data-group-id="7776204648-17">{</span><span·class="p"·data-group-id="7776204648-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="7776204648-18">}<[·...·truncated·by·diffoscope;·len:·96,·SHA:·3681f71e945d5f76e292df165417c8d9f5a168c327f8499e468524d95409b112·...·]-17">}</span><span·class="p">,</span><span·class="w">207 ···········</span><span·class="p"·data-group-id="6538908514-17">{</span><span·class="p"·data-group-id="6538908514-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="6538908514-18">}<[·...·truncated·by·diffoscope;·len:·96,·SHA:·3413494dd609d744920e5619e0748ca33f2f1662b1457d9f38beaba5fef82f12·...·]-17">}</span><span·class="p">,</span><span·class="w">
208 ···········</span><span·class="p"·data-group-id="7776204648-19">{</span><span·class="p"·data-group-id="7776204648-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="7776204648-20">}<[·...·truncated·by·diffoscope;·len:·96,·SHA:·3681f71e945d5f76e292df165417c8d9f5a168c327f8499e468524d95409b112·...·]-19">}</span><span·class="p">,</span><span·class="w">208 ···········</span><span·class="p"·data-group-id="6538908514-19">{</span><span·class="p"·data-group-id="6538908514-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="6538908514-20">}<[·...·truncated·by·diffoscope;·len:·96,·SHA:·3413494dd609d744920e5619e0748ca33f2f1662b1457d9f38beaba5fef82f12·...·]-19">}</span><span·class="p">,</span><span·class="w">
209 ···········</span><span·class="p"·data-group-id="7776204648-21">{</span><span·class="p"·data-group-id="7776204648-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="7776[·...·truncated·by·diffoscope;·len:·109,·SHA:·4495b5b78c18a46bad233e697685feb82fadd85fac002cae9e14cd5b81a5405c·...·]-21">}</span><span·class="p">,</span><span·class="w">209 ···········</span><span·class="p"·data-group-id="6538908514-21">{</span><span·class="p"·data-group-id="6538908514-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="6538[·...·truncated·by·diffoscope;·len:·109,·SHA:·b2a435258b39803af9b0dd17193a3dada7bbd106acd730c16f40ee281570f67b·...·]-21">}</span><span·class="p">,</span><span·class="w">
210 ···········</span><span·class="p"·data-group-id="7776204648-23">{</span><span·class="p"·data-group-id="7776204648-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:·38db1c2ce57a8067366bf2f53d449e38042f1e7ac2c049307cb6a375d55b23ca·...·]-5">}</span><span·class="gp·unselectable">210 ···········</span><span·class="p"·data-group-id="6538908514-23">{</span><span·class="p"·data-group-id="6538908514-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:·a35c2d4b59a49ff3af228c16d199c1b4fbe77972745f86e588c4812a1797afc4·...·]-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="7776204648-25">(</span><span·class="p"·data-group-id="7776204648-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="6538908514-25">(</span><span·class="p"·data-group-id="6538908514-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="1259147679-1">(</span><span·class="ss">sort</span><span·class="p"·data-group-id="1259147679-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="1259147679-2">(</span><span·class="p"·data-group-id="1259147679-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:·41578e9ff3d392f47760763557091a5d0e852821eb9dc1a92707e67ce8228c11·...·]">)</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="5208438526-1">(</span><span·class="ss">sort</span><span·class="p"·data-group-id="5208438526-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="5208438526-2">(</span><span·class="p"·data-group-id="5208438526-3">[</span><span·class="ss">do</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="5208438526-3">]</span><span·class="p"·data-group-id="5208438526-2">)</span><span·class="p">.</span><span·class="w">
  
223 </span><span·class="nf">do</span><span·class="p"·data-group-id="1259147679-4">(</span><span·class="n">N</span><span·class="p"·data-group-id="1259147679-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="5208438526-4">(</span><span·class="n">N</span><span·class="p"·data-group-id="5208438526-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="1259147679-5">(</span><span·class="p"·data-group-id="1259147679-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="5208438526-5">(</span><span·class="p"·data-group-id="5208438526-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="1259147679-6">(</span><span·class="p"·data-group-id="1259147679-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="5208438526-6">(</span><span·class="p"·data-group-id="5208438526-6">)</span><span·class="p">,</span><span·class="w">
226 ····</span><span·class="nf">do</span><span·class="p"·data-group-id="1259147679-7">(</span><span·class="n">N</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1259147679-8">[</span><span·class="p"·data-group-id="1259147679-8">]</span><span·class="p"·data-group-id="1259147679-7">)</span><span·class="p">.</span><span·class="w">226 ····</span><span·class="nf">do</span><span·class="p"·data-group-id="5208438526-7">(</span><span·class="n">N</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5208438526-8">[</span><span·class="p"·data-group-id="5208438526-8">]</span><span·class="p"·data-group-id="5208438526-7">)</span><span·class="p">.</span><span·class="w">
  
227 </span><span·class="nf">do</span><span·class="p"·data-group-id="1259147679-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="1259147679-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="5208438526-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="5208438526-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="1259147679-10">(</span><span·class="n">L</span><span·class="p"·data-group-id="1259147679-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="5208438526-10">(</span><span·class="n">L</span><span·class="p"·data-group-id="5208438526-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="1259147679-11">(</span><span·class="p"·data-group-id="1259147679-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="5208438526-11">(</span><span·class="p"·data-group-id="5208438526-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="1259147679-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="1259147679-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="5208438526-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="5208438526-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="1259147679-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="1259147679-14">[</span><span·class="nc">rand</span><span·class="p">:</span><span·[·...·truncated·by·diffoscope;·len:·717,·SHA:·33a1234f3609c5928a982bff47a8f1952970ca647a0a5cb82336b937eb8a064c·...·]-1">)</span><span·class="p">.</span><span·class="w">232 ····</span><span·class="nf">do</span><span·class="p"·data-group-id="5208438526-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="5208438526-14">[</span><span·class="nc">rand</span><span·class="p">:</span><span·[·...·truncated·by·diffoscope;·len:·717,·SHA:·a1d47bbed147d18cb71632bfcd0df91759cc08ed6d5d9681dc3f2247bc79cfe4·...·]-1">)</span><span·class="p">.</span><span·class="w">
233 </span><span·class="p"·data-group-id="3960455274-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">sort</span><span·class="p"·data-group-id="3960455274-2">}</span><span·class="gp·unselectable">233 </span><span·class="p"·data-group-id="0362169783-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">sort</span><span·class="p"·data-group-id="0362169783-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="3960455274-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="3960455274-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="0362169783-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="0362169783-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="3960455274-4">(</span><span·class="mi">1000</span><span·class="p"·data-group-id="3960455274-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="0362169783-4">(</span><span·class="mi">1000</span><span·class="p"·data-group-id="0362169783-4">)</span><span·class="p">.</span><span·class="w">
237 </span><span·class="p"·data-group-id="3960455274-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:·24751bf15ea2090f816312173ae158ca166688faef7fd3da25ca16303a917cda·...·]-5">]</span><span·class="gp·unselectable">237 </span><span·class="p"·data-group-id="0362169783-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:·168b2946e9530d95ad8044be6365847e69e8aecb221d9bfa6cd2ddedbf7ee0c6·...·]-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="3960455274-6">(</span><span·class="p"·data-group-id="3960455274-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="0362169783-6">(</span><span·class="p"·data-group-id="0362169783-6">)</span><span·class="p">.</span><span·class="w">
239 </span><span·class="p"·data-group-id="3960455274-7">{</span><span·class="mi">13180</span><span·class="p">,</span><span·class="w">239 </span><span·class="p"·data-group-id="0362169783-7">{</span><span·class="mi">13180</span><span·class="p">,</span><span·class="w">
240 ·</span><span·class="p"·data-group-id="3960455274-8">[</span><span·class="p"·data-group-id="3960455274-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="0362169783-8">[</span><span·class="p"·data-group-id="0362169783-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="3960455274-10">[</span><span·class="p"·data-group-id="3960455274-11">{</span><span·class="p"·data-group-id="3960455274-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:·5507516c7400bd01b3c2d9accce10b1e1ad95171b9b0afd28ac1bcce708a05f7·...·]-11">}</span><span·class="p">,</span><span·class="w">241 ·········</span><span·class="p"·data-group-id="0362169783-10">[</span><span·class="p"·data-group-id="0362169783-11">{</span><span·class="p"·data-group-id="0362169783-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:·ff4617e49419a00abfef195a88b2c5c132d7b2ca63ddb74f2c196a9fa5bfdb4a·...·]-11">}</span><span·class="p">,</span><span·class="w">
242 ··········</span><span·class="p"·data-group-id="3960455274-13">{</span><span·class="p"·data-group-id="3960455274-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="3960455274-14[·...·truncated·by·diffoscope;·len:·102,·SHA:·e6701fc405b088bad97f2e1c6333e5c526450d1f1d8cab38e0f8be1eb57429d9·...·]-13">}</span><span·class="p">,</span><span·class="w">242 ··········</span><span·class="p"·data-group-id="0362169783-13">{</span><span·class="p"·data-group-id="0362169783-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="0362169783-14[·...·truncated·by·diffoscope;·len:·102,·SHA:·07bd5a6ff1b26a428d317371f81f74163a937ce6c66a49515d8c63275dc5bcd3·...·]-13">}</span><span·class="p">,</span><span·class="w">
243 ··········</span><span·class="p"·data-group-id="3960455274-15">{</span><span·class="p"·data-group-id="3960455274-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="3960455274-16">[·...·truncated·by·diffoscope;·len:·100,·SHA:·f6efa83e37a0e2d8fd13f467b2af41d3e88f186ecaedd3127235f9cdc5f12a55·...·]-15">}</span><span·class="p">,</span><span·class="w">243 ··········</span><span·class="p"·data-group-id="0362169783-15">{</span><span·class="p"·data-group-id="0362169783-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="0362169783-16">[·...·truncated·by·diffoscope;·len:·100,·SHA:·e00367df28066d3a437a63f6c42720331f6096483329f6c990f69f6bf7b4b654·...·]-15">}</span><span·class="p">,</span><span·class="w">
244 ··········</span><span·class="p"·data-group-id="3960455274-17">{</span><span·class="p"·data-group-id="3960455274-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="3960455274-18"[·...·truncated·by·diffoscope;·len:·101,·SHA:·892b2425e0da725c14e75a1c0fa68789498e305cea16285ccd5ebc411a8c40e7·...·]-17">}</span><span·class="p">,</span><span·class="w">244 ··········</span><span·class="p"·data-group-id="0362169783-17">{</span><span·class="p"·data-group-id="0362169783-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="0362169783-18"[·...·truncated·by·diffoscope;·len:·101,·SHA:·8a04c2a84ebf521e59af0ab16abba71e8fe159087ad1b717ff790b0f8cfac1b9·...·]-17">}</span><span·class="p">,</span><span·class="w">
245 ··········</span><span·class="p"·data-group-id="3960455274-19">{</span><span·class="p"·data-group-id="3960455274-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="3960455274-20"[·...·truncated·by·diffoscope;·len:·101,·SHA:·236a4a23ee1fc9f85a480dbe17aec49017c3d37a7bf5fcabded25d67bb905e00·...·]-19">}</span><span·class="p">,</span><span·class="w">245 ··········</span><span·class="p"·data-group-id="0362169783-19">{</span><span·class="p"·data-group-id="0362169783-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="0362169783-20"[·...·truncated·by·diffoscope;·len:·101,·SHA:·f00939ceb0ea9d0c63ae1e07e36c0a143f531ff18ceb6988193b305f56cef3bc·...·]-19">}</span><span·class="p">,</span><span·class="w">
246 ··········</span><span·class="p"·data-group-id="3960455274-21">{</span><span·class="p"·data-group-id="3960455274-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="3960455274[·...·truncated·by·diffoscope;·len:·105,·SHA:·07e3c316fe91d38f5690dcaeef4687b118ccade275c31ab2491c6981a41d494b·...·]-21">}</span><span·class="p">,</span><span·class="w">246 ··········</span><span·class="p"·data-group-id="0362169783-21">{</span><span·class="p"·data-group-id="0362169783-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="0362169783[·...·truncated·by·diffoscope;·len:·105,·SHA:·51f1e8e64297374fb39bce530dffb68b2ee416c62ffaa48aa0fee6d4f149034f·...·]-21">}</span><span·class="p">,</span><span·class="w">
247 ··········</span><span·class="p"·data-group-id="3960455274-23">{</span><span·class="p"·data-group-id="3960455274-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="3960455274-24[·...·truncated·by·diffoscope;·len:·102,·SHA:·2d0817d8df8dd03f69ff462f780e8ef650f8c8cd6499ade560ee1d8d0475b97b·...·]-23">}</span><span·class="p">,</span><span·class="w">247 ··········</span><span·class="p"·data-group-id="0362169783-23">{</span><span·class="p"·data-group-id="0362169783-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="0362169783-24[·...·truncated·by·diffoscope;·len:·102,·SHA:·75db811f150f4f8453416126b9345b711f9c2ded28964216d8ed7591cf155c8a·...·]-23">}</span><span·class="p">,</span><span·class="w">
248 ··········</span><span·class="p"·data-group-id="3960455274-25">{</span><span·class="p"·data-group-id="3960455274-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="3960455274-[·...·truncated·by·diffoscope;·len:·104,·SHA:·d9771c3cddd9a8904ce16f8c1aba5362196dbc90e73741f6cc71754faaf516e6·...·]-25">}</span><span·class="p">,</span><span·class="w">248 ··········</span><span·class="p"·data-group-id="0362169783-25">{</span><span·class="p"·data-group-id="0362169783-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="0362169783-[·...·truncated·by·diffoscope;·len:·104,·SHA:·ff9f521e56dcf84e0833f6bd9cfc99c03ad98f45935152c36e7ae99f6ef69ab1·...·]-25">}</span><span·class="p">,</span><span·class="w">
249 ··········</span><span·class="p"·data-group-id="3960455274-27">{</span><span·class="p"·data-group-id="3960455274-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="3960455274[·...·truncated·by·diffoscope;·len:·105,·SHA:·b2deaed80c14c91388abce4fe5b1f9ae39295c03bdcff8e2b506a80916df3b51·...·]-27">}</span><span·class="p">,</span><span·class="w">249 ··········</span><span·class="p"·data-group-id="0362169783-27">{</span><span·class="p"·data-group-id="0362169783-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="0362169783[·...·truncated·by·diffoscope;·len:·105,·SHA:·8c3b9583f6e1d968c2c029675036fa9003f0e24e072f143070bf40b91ef18e05·...·]-27">}</span><span·class="p">,</span><span·class="w">
250 ··········</span><span·class="p"·data-group-id="3960455274-29">{</span><span·class="p"·data-group-id="3960455274-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="3960455274-[·...·truncated·by·diffoscope;·len:·104,·SHA:·5ab2c2e48d03ed4becdab605138282c0808387b4f0c5991e954f017db536e037·...·]-29">}</span><span·class="p">,</span><span·class="w">250 ··········</span><span·class="p"·data-group-id="0362169783-29">{</span><span·class="p"·data-group-id="0362169783-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="0362169783-[·...·truncated·by·diffoscope;·len:·104,·SHA:·92776bfab3c6f5902ec90d35a4655573acf926874a3b5ca2812418aad1aae523·...·]-29">}</span><span·class="p">,</span><span·class="w">
251 ··········</span><span·class="p"·data-group-id="3960455274-31">{</span><span·class="p"·data-group-id="3960455274-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="3960455274-32"[·...·truncated·by·diffoscope;·len:·101,·SHA:·610004d49c93177f037c6502986f190a03b54f0ed2f9f4c6b3f859113aca8aa8·...·]-31">}</span><span·class="p">,</span><span·class="w">251 ··········</span><span·class="p"·data-group-id="0362169783-31">{</span><span·class="p"·data-group-id="0362169783-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="0362169783-32"[·...·truncated·by·diffoscope;·len:·101,·SHA:·3058f436252d2eb727f1d64503833e84d3bb5603c7709c91256f683f995c2d6e·...·]-31">}</span><span·class="p">,</span><span·class="w">
252 ··········</span><span·class="p"·data-group-id="3960455274-33">{</span><span·class="p"·data-group-id="3960455274-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="3960455274-34"[·...·truncated·by·diffoscope;·len:·101,·SHA:·54607409d7eeb083d004197ee0944f286722af0b2b7b26da1ae998b7aff4cf0c·...·]-33">}</span><span·class="p">,</span><span·class="w">252 ··········</span><span·class="p"·data-group-id="0362169783-33">{</span><span·class="p"·data-group-id="0362169783-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="0362169783-34"[·...·truncated·by·diffoscope;·len:·101,·SHA:·acfffb9ec113eb30285e7f8df41a92fe4d18dbdb381a18d955ffd3df784b4607·...·]-33">}</span><span·class="p">,</span><span·class="w">
253 ··········</span><span·class="p"·data-group-id="3960455274-35">{</span><span·class="p"·data-group-id="3960455274-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="3960455274-36">[·...·truncated·by·diffoscope;·len:·100,·SHA:·6a16d7211b228be096a011a0245a8cdc95a7d0acfb8f420a4edf67ce5a3b1f23·...·]-35">}</span><span·class="p">,</span><span·class="w">253 ··········</span><span·class="p"·data-group-id="0362169783-35">{</span><span·class="p"·data-group-id="0362169783-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="0362169783-36">[·...·truncated·by·diffoscope;·len:·100,·SHA:·0a4e7bfe14611e4acde4221eb3c5e8ec3f5cc1f412d36d0f7f7cf6085ae20304·...·]-35">}</span><span·class="p">,</span><span·class="w">
254 ··········</span><span·class="p"·data-group-id="3960455274-37">{</span><span·class="p"·data-group-id="3960455274-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="3960455274-38[·...·truncated·by·diffoscope;·len:·101,·SHA:·cb3b2102ed305565e4775e87c94f859f5f331ec9de6134b7ec7170970d925bd5·...·]-37">}</span><span·class="p">,</span><span·class="w">254 ··········</span><span·class="p"·data-group-id="0362169783-37">{</span><span·class="p"·data-group-id="0362169783-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="0362169783-38[·...·truncated·by·diffoscope;·len:·101,·SHA:·b65065c4e67fcfcb5fbbe1bbfa58052c5412f8bb4675a27c0746a404a3d73cf4·...·]-37">}</span><span·class="p">,</span><span·class="w">
255 ··········</span><span·class="p"·data-group-id="3960455274-39">{</span><span·class="p"·data-group-id="3960455274-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="3960455274-40">[·...·truncated·by·diffoscope;·len:·99,·SHA:·f34091da22629c9da9c1cd47f101d64edc709eab8270e0567f9dcf32abd24f13·...·]-39">}</span><span·class="p">,</span><span·class="w">255 ··········</span><span·class="p"·data-group-id="0362169783-39">{</span><span·class="p"·data-group-id="0362169783-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="0362169783-40">[·...·truncated·by·diffoscope;·len:·99,·SHA:·39495cd754dd06e6fe3721bbb3520df4ffd57e557e566f85e6f3373bfcb1b388·...·]-39">}</span><span·class="p">,</span><span·class="w">
256 ··········</span><span·class="p"·data-group-id="3960455274-41">{</span><span·class="p"·data-group-id="3960455274-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="3960455274-42[·...·truncated·by·diffoscope;·len:·101,·SHA:·4ad3fbfe9881a5e3e62e28326e3d05532388c560b6b5617d3604172d616a85b7·...·]-41">}</span><span·class="p">,</span><span·class="w">256 ··········</span><span·class="p"·data-group-id="0362169783-41">{</span><span·class="p"·data-group-id="0362169783-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="0362169783-42[·...·truncated·by·diffoscope;·len:·101,·SHA:·27e3f431745d52cf9def6bcafc7ac188f6678aa65b2216fd8d4702b2ae96a34b·...·]-41">}</span><span·class="p">,</span><span·class="w">
257 ··········</span><span·class="p"·data-group-id="3960455274-43">{</span><span·class="p"·data-group-id="3960455274-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="3960455274-44">}[·...·truncated·by·diffoscope;·len:·98,·SHA:·9425f1a29cadc279f9302d955cace76cb1c1f87523a5e95ef97bd236ddebb9d8·...·]-43">}</span><span·class="p">,</span><span·class="w">257 ··········</span><span·class="p"·data-group-id="0362169783-43">{</span><span·class="p"·data-group-id="0362169783-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="0362169783-44">}[·...·truncated·by·diffoscope;·len:·98,·SHA:·746e798f37f23df1498b4fcb35e7692dda7c8a4e1534c6422ce3a0279ba094cf·...·]-43">}</span><span·class="p">,</span><span·class="w">
258 ··········</span><span·class="p"·data-group-id="3960455274-45">{</span><span·class="p"·data-group-id="3960455274-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="3960455274-46">[·...·truncated·by·diffoscope;·len:·98,·SHA:·035cd0b679a11ec08f3b234d318840d0ee7660adbb2325480e98349d746a54f0·...·]-45">}</span><span·class="p">,</span><span·class="w">258 ··········</span><span·class="p"·data-group-id="0362169783-45">{</span><span·class="p"·data-group-id="0362169783-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="0362169783-46">[·...·truncated·by·diffoscope;·len:·98,·SHA:·dbff909997f3ef5a2f5d5287b745b6348b5ca4eff5422505a883c1bb60ce993e·...·]-45">}</span><span·class="p">,</span><span·class="w">
259 ··········</span><span·class="p"·data-group-id="3960455274-47">{</span><span·class="p"·data-group-id="3960455274-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="3960455274-48">}</[·...·truncated·by·diffoscope;·len:·203,·SHA:·366072f90c8cc47039e832cf5770e48a3af3623d965b430e59cc29ec42b90b1b·...·]-9">}</span><span·class="p">,</span><span·class="w">259 ··········</span><span·class="p"·data-group-id="0362169783-47">{</span><span·class="p"·data-group-id="0362169783-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="0362169783-48">}</[·...·truncated·by·diffoscope;·len:·203,·SHA:·7f35cfce31396450521bb74dddf810e9296248eb802e758f5f552c21d2e87352·...·]-9">}</span><span·class="p">,</span><span·class="w">
260 ··</span><span·class="p"·data-group-id="3960455274-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="0362169783-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="3960455274-50">[</span><span·class="p"·data-group-id="3960455274-51">{</span><span·class="p"·data-group-id="3960455274-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:·a0c0107f2f2c98749498cf48c27fe2c04d8ad8903056c13e776c749034abd5ca·...·]-51">}</span><span·class="p">,</span><span·class="w">261 ········</span><span·class="p"·data-group-id="0362169783-50">[</span><span·class="p"·data-group-id="0362169783-51">{</span><span·class="p"·data-group-id="0362169783-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:·bff62c02cb2be497e12760cb0836f8425ba30bede759033e74ef0b0b7a3b386a·...·]-51">}</span><span·class="p">,</span><span·class="w">
262 ·········</span><span·class="p"·data-group-id="3960455274-53">{</span><span·class="p"·data-group-id="3960455274-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="3960455274-54">}[·...·truncated·by·diffoscope;·len:·100,·SHA:·a0c25d8144ac9950744da84c074e35fd50355cc3f9ee49d1b31e65e53bb1d67b·...·]-53">}</span><span·class="p">,</span><span·class="w">262 ·········</span><span·class="p"·data-group-id="0362169783-53">{</span><span·class="p"·data-group-id="0362169783-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="0362169783-54">}[·...·truncated·by·diffoscope;·len:·100,·SHA:·7dd196a04938ba44ccc3c30afac61e8cbdb8ee30fb5bd654911b09b8cfb4b1f2·...·]-53">}</span><span·class="p">,</span><span·class="w">
263 ·········</span><span·class="p"·data-group-id="3960455274-55">{</span><span·class="p"·data-group-id="3960455274-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="3960455274-56">[·...·truncated·by·diffoscope;·len:·101,·SHA:·87a7db3df01586d645451f428007f194636555c26a7653e99004e4c77585180e·...·]-55">}</span><span·class="p">,</span><span·class="w">263 ·········</span><span·class="p"·data-group-id="0362169783-55">{</span><span·class="p"·data-group-id="0362169783-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="0362169783-56">[·...·truncated·by·diffoscope;·len:·101,·SHA:·68ca16ec74d89b06950393086ed060d64398c79d42138acc363e8fac1ad30a17·...·]-55">}</span><span·class="p">,</span><span·class="w">
264 ·········</span><span·class="p"·data-group-id="3960455274-57">{</span><span·class="p"·data-group-id="3960455274-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="3960455274-58">[·...·truncated·by·diffoscope;·len:·101,·SHA:·87a7db3df01586d645451f428007f194636555c26a7653e99004e4c77585180e·...·]-57">}</span><span·class="p">,</span><span·class="w">264 ·········</span><span·class="p"·data-group-id="0362169783-57">{</span><span·class="p"·data-group-id="0362169783-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="0362169783-58">[·...·truncated·by·diffoscope;·len:·101,·SHA:·68ca16ec74d89b06950393086ed060d64398c79d42138acc363e8fac1ad30a17·...·]-57">}</span><span·class="p">,</span><span·class="w">
265 ·········</span><span·class="p"·data-group-id="3960455274-59">{</span><span·class="p"·data-group-id="3960455274-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="3960455274[·...·truncated·by·diffoscope;·len:·214,·SHA:·b7f19268f3d54392e59253dab37e9d15b2d9f7d9a5ad105c5c5c9b39fdd05e10·...·]-49">}</span><span·class="p">,</span><span·class="w">265 ·········</span><span·class="p"·data-group-id="0362169783-59">{</span><span·class="p"·data-group-id="0362169783-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="0362169783[·...·truncated·by·diffoscope;·len:·214,·SHA:·bb5e88b4c80c44390897a33ff12f350be8a40e0b7086d142949e7e3b5696f9cd·...·]-49">}</span><span·class="p">,</span><span·class="w">
266 ··</span><span·class="p"·data-group-id="3960455274-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="0362169783-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="3960455274-62">[</span><span·class="p"·data-group-id="3960455274-63">{</span><span·class="p"·data-group-id="3960455274-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:·8995cae41ed7e583c9317d862e10d1358f73dcebadb5ee2e7fbc215b2c73b954·...·]-63">}</span><span·class="p">,</span><span·class="w">267 ··········</span><span·class="p"·data-group-id="0362169783-62">[</span><span·class="p"·data-group-id="0362169783-63">{</span><span·class="p"·data-group-id="0362169783-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:·e5c866deccac60d431525cd6c11b77a637e28c1dbf4d48a13d3bc956cacf4da0·...·]-63">}</span><span·class="p">,</span><span·class="w">
268 ···········</span><span·class="p"·data-group-id="3960455274-65">{</span><span·class="p"·data-group-id="3960455274-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="39604552[·...·truncated·by·diffoscope;·len:·105,·SHA:·78528bf2955bf666b6a48e8e415071d86c05c7b99a5c86aeaa06093b2a724071·...·]-65">}</span><span·class="p">,</span><span·class="w">268 ···········</span><span·class="p"·data-group-id="0362169783-65">{</span><span·class="p"·data-group-id="0362169783-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="03621697[·...·truncated·by·diffoscope;·len:·105,·SHA:·57cfdc574862282b6f583454997a4fca78c9b5fe97fba00f993da0207f281b6a·...·]-65">}</span><span·class="p">,</span><span·class="w">
269 ···········</span><span·class="p"·data-group-id="3960455274-67">{</span><span·class="p"·data-group-id="3960455274-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:·4c698a5b778fe1cdd2ebf7df83e5845da5cf9dc2d644145c09611161ac0bd780·...·]-61">}</span><span·class="p">,</span><span·class="w">269 ···········</span><span·class="p"·data-group-id="0362169783-67">{</span><span·class="p"·data-group-id="0362169783-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:·243704f153b9801a21a0d747c0f1cbf017f9645e30f00bbc5ac9da0c9929ca1c·...·]-61">}</span><span·class="p">,</span><span·class="w">
270 ··</span><span·class="p"·data-group-id="3960455274-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="3960455274-70">[</span><span·class="p"·data-group-id="3960455274-71">{</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·415,·SHA:·d1ef251f8a5797440ef9c860a409c33fea9399ae6a01930c7008a377bf75b28c·...·]-69">}</span><span·class="p">,</span><span·class="w">270 ··</span><span·class="p"·data-group-id="0362169783-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="0362169783-70">[</span><span·class="p"·data-group-id="0362169783-71">{</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·415,·SHA:·223c6f6885b2619bacd34f611c981659ecdb9589b9b340eb481eb999c7cbfe66·...·]-69">}</span><span·class="p">,</span><span·class="w">
271 ··</span><span·class="p"·data-group-id="3960455274-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="3960455274-74">[</span><span·class="p"·data-group-id="3960455274-75">{</span><span·class="p"[·...·truncated·by·diffoscope;·len:·545,·SHA:·e7fbb7c0e7cdaabca533c1d7452cd2f7eee5b09412a7e2a8c584f57175b5139d·...·]-7">}</span><span·class="gp·unselectable">271 ··</span><span·class="p"·data-group-id="0362169783-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="0362169783-74">[</span><span·class="p"·data-group-id="0362169783-75">{</span><span·class="p"[·...·truncated·by·diffoscope;·len:·545,·SHA:·03fdf7837fb5c1962335d3dea9c1849d59581c8c6a6094bf717b77c3256a31e9·...·]-7">}</span><span·class="gp·unselectable">
Max diff block lines reached; 416/84913 bytes (0.49%) of diff not shown.
14.7 KB
./usr/share/doc/erlang-doc/html/lib/tools-4.1.1/doc/html/erlang-el.html
    
Offset 207, 31 lines modifiedOffset 207, 31 lines modified
207 ····<i·class="ri-link-m"·aria-hidden="true"></i>207 ····<i·class="ri-link-m"·aria-hidden="true"></i>
208 ··</a>208 ··</a>
209 ··<span·class="text">Edit·-·Alignment</span>209 ··<span·class="text">Edit·-·Alignment</span>
210 </h2>210 </h2>
211 <ul><li>··<em><code·class="inline">C-c·C-a</code></em>·(<code·class="inline">align-current</code>)·-·aligns·comments,·arrows,·assignments,211 <ul><li>··<em><code·class="inline">C-c·C-a</code></em>·(<code·class="inline">align-current</code>)·-·aligns·comments,·arrows,·assignments,
212 and·type·annotations·around·the·cursor.</li></ul><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Example</span><span·class="p">:</span><span·class="w">212 and·type·annotations·around·the·cursor.</li></ul><pre><code·class="makeup·erlang"·translate="no"><span·class="n">Example</span><span·class="p">:</span><span·class="w">
  
213 </span><span·class="nf">sum</span><span·class="p"·data-group-id="6879642002-1">(</span><span·class="n">L</span><span·class="p"·data-group-id="6879642002-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="6879642002-2">(</span><[·...·truncated·by·diffoscope;·len:·137,·SHA:·c89dcc74e0f583610b2da441ead383ac0591856c027ff7003b417cd80de9d222·...·]-2">)</span><span·class="p">.</span><span·class="w">213 </span><span·class="nf">sum</span><span·class="p"·data-group-id="7355407243-1">(</span><span·class="n">L</span><span·class="p"·data-group-id="7355407243-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="7355407243-2">(</span><[·...·truncated·by·diffoscope;·len:·137,·SHA:·a3ad050036865cebe444be57ee5fc1707957245f916a1e167a29fe28e1e46e4f·...·]-2">)</span><span·class="p">.</span><span·class="w">
214 </span><span·class="nf">sum</span><span·class="p"·data-group-id="6879642002-3">(</span><span·class="p"·data-group-id="6879642002-4">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="6879642002-4">]</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·462,·SHA:·cf7aedfbfd012c0a59db4ad9cb7abe255106c93aca9a5b9bd2eadc247808c9d8·...·]-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="7355407243-3">(</span><span·class="p"·data-group-id="7355407243-4">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="7355407243-4">]</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·462,·SHA:·9404ed69ff0becd6108cc6c3446d4f1de834daf148e19881afcdcef433607b9e·...·]-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="6879642002-6">(</span><span·class="p"·data-group-id="6879642002-7">[</span><span·class="p"·data-group-id="6879642002-7">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Sum</span><span·class="p"·data-group-id="6879642002-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="7355407243-6">(</span><span·class="p"·data-group-id="7355407243-7">[</span><span·class="p"·data-group-id="7355407243-7">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Sum</span><span·class="p"·data-group-id="7355407243-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="6879642002-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="6879642002-9">(</span><span·c[·...·truncated·by·diffoscope;·len:·34,·SHA:·1897a3e1a0c4f863a8742a25f6ad7038774163cca44b76394bbb92b9a6187014·...·]-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="7355407243-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="7355407243-9">(</span><span·c[·...·truncated·by·diffoscope;·len:·34,·SHA:·9b8e27e7055868a3787c6559528d6b4855c00068b01c2a5d5296eb0ce207517e·...·]-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="6879642002-10">(</span><span·class="p"·data-group-id="6879642002-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="7355407243-10">(</span><span·class="p"·data-group-id="7355407243-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="6879642002-11">(</span><span·class="p"·data-group-id="6879642002-11">)</span><span·class="w">·</span><span·class="p"·data-group-id="6879642002-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="7355407243-11">(</span><span·class="p"·data-group-id="7355407243-11">)</span><span·class="w">·</span><span·class="p"·data-group-id="7355407243-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="6879642002-12">(</span><span·class="n">L</span><span·class="p"·data-group-id="6879642002-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="6879642002-13">(</spa[·...·truncated·by·diffoscope;·len:·140,·SHA:·ed60b55d73dcaa2f602c8b166b9998d2bad36e1b9f4256f178b4a5cb0b620fc0·...·]-13">)</span><span·class="p">.</span><span·class="w">221 </span><span·class="nf">sum</span><span·class="p"·data-group-id="7355407243-12">(</span><span·class="n">L</span><span·class="p"·data-group-id="7355407243-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="7355407243-13">(</spa[·...·truncated·by·diffoscope;·len:·140,·SHA:·439c543d38259c81d5f75577aba05da174b959ec55247e7754b08f6d7a823e92·...·]-13">)</span><span·class="p">.</span><span·class="w">
222 </span><span·class="nf">sum</span><span·class="p"·data-group-id="6879642002-14">(</span><span·class="p"·data-group-id="6879642002-15">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="6879642002-15">]</span><span·class="p">,</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·467,·SHA:·b9c39a164926d6a182befb909726943ebb7bbb79d1ff652a32d834e978f4b630·...·]-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="7355407243-14">(</span><span·class="p"·data-group-id="7355407243-15">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="7355407243-15">]</span><span·class="p">,</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·467,·SHA:·a743918e765e7d07319e97d965be7e1b16c820eef78d56b6699ee4685575a77e·...·]-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="6879642002-17">(</span><span·class="p"·data-group-id="6879642002-18">[</span><span·class="p"·data-group-id="6879642002-18">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Sum</span><span·class="p"·data-group-id="6879642002-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="7355407243-17">(</span><span·class="p"·data-group-id="7355407243-18">[</span><span·class="p"·data-group-id="7355407243-18">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Sum</span><span·class="p"·data-group-id="7355407243-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="6879642002-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="6879642002-20">(</[·...·truncated·by·diffoscope;·len:·46,·SHA:·66a081b9ff5304d392b904e04d67bf5c80e11f7abbe37095103a64dc364426b9·...·]-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="7355407243-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="7355407243-20">(</[·...·truncated·by·diffoscope;·len:·46,·SHA:·b431e4be7ca7b031bfdb89a46228ca2980230ea53e4acb92c63567b13e8f268f·...·]-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="6879642002-21">(</span><span·class="p"·data-group-id="6879642002-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="7355407243-21">(</span><span·class="p"·data-group-id="7355407243-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="6879642002-22">(</span><span·class="p"·data-group-id="6879642002-22">)</span><span·class="w">·</span><span·class="p"·data-group-id="6879642002-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="7355407243-22">(</span><span·class="p"·data-group-id="7355407243-22">)</span><span·class="w">·</span><span·class="p"·data-group-id="7355407243-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.2/doc/html/erl_scan.html"><code·class="inline">erl_scan</code></a>·and·<a·href="../../../../lib/stdlib-6.2.2/doc/html/erl_parse.html"><code·class="inline">erl_parse</code></a>,·<a·href="../../../../lib/kernel-10.2.6/doc/html/file.html#consult/1"><code·class="inline">file:consult/1</code></a>,·or·<a·href="../../../../lib/stdlib-6.2.2/doc/html/io.html#read/2"><code·class="inline">io:read/2</code></a>.·The173 <a·href="../../../../lib/stdlib-6.2.2/doc/html/erl_scan.html"><code·class="inline">erl_scan</code></a>·and·<a·href="../../../../lib/stdlib-6.2.2/doc/html/erl_parse.html"><code·class="inline">erl_parse</code></a>,·<a·href="../../../../lib/kernel-10.2.6/doc/html/file.html#consult/1"><code·class="inline">file:consult/1</code></a>,·or·<a·href="../../../../lib/stdlib-6.2.2/doc/html/io.html#read/2"><code·class="inline">io:read/2</code></a>.·The
174 parse·format·is·not·described·here··it·should·be·easy·enough·for·the174 parse·format·is·not·described·here··it·should·be·easy·enough·for·the
175 interested·reader·to·try·it·out.·Note·that·some·flags·to175 interested·reader·to·try·it·out.·Note·that·some·flags·to
176 <a·href="#analyse/1"><code·class="inline">analyse/1</code></a>·will·affect·the·format.</p><p>The·following·example·was·run·on·Erlang/OTP·R8·on·Solaris·8;·all·OTP176 <a·href="#analyse/1"><code·class="inline">analyse/1</code></a>·will·affect·the·format.</p><p>The·following·example·was·run·on·Erlang/OTP·R8·on·Solaris·8;·all·OTP
177 internals·in·this·example·are·version·dependent.</p><p>As·an·example,·we·will·use·the·following·function,·which·is·a177 internals·in·this·example·are·version·dependent.</p><p>As·an·example,·we·will·use·the·following·function,·which·is·a
178 slightly·modified·benchmark·function·from·module·<a·href="../../../../lib/kernel-10.2.6/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="1679010252-1">(</span><span·class="ss">foo</span><span·class="p"·data-group-id="1679010252-1">)</span><span·class="p">.</span><span·class="w">178 slightly·modified·benchmark·function·from·module·<a·href="../../../../lib/kernel-10.2.6/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="1690898239-1">(</span><span·class="ss">foo</span><span·class="p"·data-group-id="1690898239-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="1679010252-2">(</span><span·class="p"·data-group-id="1679010252-3">[</span><span·class="ss">create_file_slow</span><span·class="p">/</span><span·class="mi">2</span><span·class="p"·data-group-id="1679010252-3">]</span><span·class="p"·data-group-id="1679010252-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="1690898239-2">(</span><span·class="p"·data-group-id="1690898239-3">[</span><span·class="ss">create_file_slow</span><span·class="p">/</span><span·class="mi">2</span><span·class="p"·data-group-id="1690898239-3">]</span><span·class="p"·data-group-id="1690898239-2">)</span><span·class="p">.</span><span·class="w">
  
180 </span><span·class="nf">create_file_slow</span><span·class="p"·data-group-id="1679010252-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="1679010252-4">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·143,·SHA:·905a4aca83b95182820ad089eacb09ff8ac08de36c7fd4db8f6a923ad37abfa1·...·]-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="1690898239-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="1690898239-4">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·143,·SHA:·0b2976c617e4fdf249224e408408ff3dfde6a3538f3a01348c4000d6b4bf3e30·...·]-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="1679010252-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="1679010252-6">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">181 ····</span><span·class="p"·data-group-id="1690898239-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="1690898239-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="1679010252-7">(</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1679010252-8">[</span><span·class="ss">raw</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">write</span><spa[·...·truncated·by·diffoscope;·len:·253,·SHA:·e89bbf71d7c1b9c66ebd95b20e87bdb7013469c50522629f58e7f75312108f9c·...·]-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="1690898239-7">(</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1690898239-8">[</span><span·class="ss">raw</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">write</span><spa[·...·truncated·by·diffoscope;·len:·253,·SHA:·0ccdc50c4f4568021b0cde7646df9f774e719b0f222b43808d60bd4116f05c85·...·]-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="1679010252-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="1690898239-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="1679010252-10">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="1679010252-11">(</span><span·class="n">X</span><span·class="p"·data-group-id="1679010252-11">)</span><span·class="w">·</span><span·class="p">-&gt;</span>[·...·truncated·by·diffoscope;·len:·256,·SHA:·c54c198586df8e3174ed86a8b4e4764155c89ebb56d0ca856014b6ef4703f105·...·]-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="1690898239-10">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="1690898239-11">(</span><span·class="n">X</span><span·class="p"·data-group-id="1690898239-11">)</span><span·class="w">·</span><span·class="p">-&gt;</span>[·...·truncated·by·diffoscope;·len:·256,·SHA:·6de8f455145b21c12e86d3377400113616a5182cb140d8e7c3327d30fbf90d82·...·]-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="1679010252-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="1679010252-13">)</span><span·class="p"·data-group-id="1679010252-10">)</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·14,·SHA:·7d0dddee9480df380a71dbd763fb884a7fe148070e26110605f7c7cc0b9c32ef·...·]-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="1690898239-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="1690898239-13">)</span><span·class="p"·data-group-id="1690898239-10">)</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·14,·SHA:·34336fe619cd464113181f84935356441545513c4b78c5b3f59b3cf457054a4d·...·]-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="1679010252-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="1679010252-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="1690898239-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="1690898239-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="1679010252-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="1679010252-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="1690898239-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="1690898239-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="1679010252-16">(</span><span·class="n">FD</span><span·class="p"·data-group-id="1679010252-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="1690898239-16">(</span><span·class="n">FD</span><span·class="p"·data-group-id="1690898239-16">)</span><span·class="p">.</span><span·class="w">
  
192 </span><span·class="nf">create_file_slow</span><span·class="p"·data-group-id="1679010252-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="1679010252-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="1690898239-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="1690898239-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="1679010252-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="1679010252-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="1690898239-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="1690898239-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="1679010252-19">(</span><span·class="n">FD</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1679010252-20">&lt;&lt;</span><span·class="n">M</span><span·class="p">:</span><span·class="mi">32</span><span·class="o">/</span><sp[·...·truncated·by·diffoscope;·len:·131,·SHA:·dd05cd267c69a432fccea2d0bfcef248a9da7933fcd78c7539d9d1345e0d1c08·...·]-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="1690898239-19">(</span><span·class="n">FD</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1690898239-20">&lt;&lt;</span><span·class="n">M</span><span·class="p">:</span><span·class="mi">32</span><span·class="o">/</span><sp[·...·truncated·by·diffoscope;·len:·131,·SHA:·e3b841ab2978a76d7e124fc0b96ac78ad31de036047fa63e98b7732e3fa4a2e3·...·]-19">)</span><span·class="p">,</span><span·class="w">
196 ····</span><span·class="nf">create_file_slow</span><span·class="p"·data-group-id="1679010252-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"·d[·...·truncated·by·diffoscope;·len:·770,·SHA:·05d056789c14a9e68d857bff041a0d6c6d000324b451f4cfe40fe9ff7299f680·...·]-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="1690898239-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"·d[·...·truncated·by·diffoscope;·len:·770,·SHA:·8c341ece36fdd53ec4c9d204de87659b0f5f400b4a5d89e96d0315b5cbb41a28·...·]-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="6439360943-3">(</span><span·class="p"·data-group-id="6439360943-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="2431951888-3">(</span><span·class="p"·data-group-id="2431951888-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="6439360943-4">(</span><span·class="p"·data-group-id="6439360943-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="2431951888-4">(</span><span·class="p"·data-group-id="2431951888-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="1729388313-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="7286975247-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="1729388313-2">[</span><span·class="p"·data-group-id="1729388313-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="1729388313-3">}</span><span·class="p">,</span><span·class="w">200 ·</span><span·class="p"·data-group-id="7286975247-2">[</span><span·class="p"·data-group-id="7286975247-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="7286975247-3">}</span><span·class="p">,</span><span·class="w">
201 ··</span><span·class="p"·data-group-id="1729388313-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="1729388313-4">}</span><span·class="p">,</span><span·class="w">201 ··</span><span·class="p"·data-group-id="7286975247-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="7286975247-4">}</span><span·class="p">,</span><span·class="w">
202 ··</span><span·class="p"·data-group-id="1729388313-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="1729388313-5">}</span><span·class="p">,</span><span·class="w">202 ··</span><span·class="p"·data-group-id="7286975247-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="7286975247-5">}</span><span·class="p">,</span><span·class="w">
203 ··</span><span·class="p"·data-group-id="1729388313-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="1729388313-6">}</span><span·class="p"·data-group-id="1729388313-2">]</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·4be20fef4027ddc99292b83494a0f72509916cd5589618396644c5e102d04c60·...·]-1">}</span><span·class="p">.</span><span·class="w">203 ··</span><span·class="p"·data-group-id="7286975247-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="7286975247-6">}</span><span·class="p"·data-group-id="7286975247-2">]</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·9722e134836eda6ca539980d32ebab365d087e2d6625199abb7537c5d36ac525·...·]-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="1729388313-7">[</span><span·class="p"·data-group-id="1729388313-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:·16c9eb2a22c821b70ea9167cbeee4c3d96c5918aac6c99b8fcdc27b54fdb675f·...·]-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="7286975247-7">[</span><span·class="p"·data-group-id="7286975247-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:·70a2386063290b0056872621ef63594baea84fc7c3b9abd03cd0b61eea90dfe8·...·]-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="5333653809-1">[</span><span·class="p"·data-group-id="5333653809-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:·f2b697176f7ebabc794335814838092111f671992521df610855bf9f087d7939·...·]-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="3216186504-1">[</span><span·class="p"·data-group-id="3216186504-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:·935519c05672a17d7e893cbf02e27aeddaba5dcce1a5432e16e9fbec0a392d42·...·]-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="7279559557-1">{</span><span·class="p"·data-group-id="7279559557-2">[</span><span·class="p"·data-group-id="7279559557-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:·a5e7261cbf2188706d70b273268893ee224bdeb6f918b417de1b7b816d008678·...·]-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="7490099740-1">{</span><span·class="p"·data-group-id="7490099740-2">[</span><span·class="p"·data-group-id="7490099740-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:·6dc83dd3c24e0cdf8c06592c92f35f1025ceab77bd33d605b75211657a91b141·...·]-2">]</span><span·class="p">,</span><span·class="w">
218 ·</span><span·class="p"·data-group-id="7279559557-4">{</span><span·class="w">·</span><span·class="p"·data-group-id="7279559557-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:·42c2cf08a30fbb9ed2f892356419b8ad3e500e392e8f8f144548640bebb1cadb·...·]-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="7490099740-4">{</span><span·class="w">·</span><span·class="p"·data-group-id="7490099740-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:·85714544e8ac6a887b30d3a8882a9c232e91b2272aec644a725c750d9b087b83·...·]-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="7279559557-6">[</span><span·class="p"·data-group-id="7279559557-7">{</span><span·class="p"·data-group-id="7279559557-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:·7e10b58c7478b4d9cec4f641b0e621fe3793856ae059f0167b3f087fb3ea5945·...·]-7">}</span><span·class="p">,</span><span·class="w">219 ·</span><span·class="p"·data-group-id="7490099740-6">[</span><span·class="p"·data-group-id="7490099740-7">{</span><span·class="p"·data-group-id="7490099740-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:·3e83f200dc2127d2395475f479c12f0035b097d4e17bdc9d122e07cd0776ec5f·...·]-7">}</span><span·class="p">,</span><span·class="w">
220 ··</span><span·class="p"·data-group-id="7279559557-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:·0aefb1180c86e46bb9f4ce205f2ad6bf423af6191324e980fdad44483fe5fc4f·...·]-1">}</span><span·class="p">.</span><span·class="w">220 ··</span><span·class="p"·data-group-id="7490099740-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:·b8b7dd7f8749815241d17386790399d5ea19d16a352ab3a9f22e61aa60f97269·...·]-1">}</span><span·class="p">.</span><span·class="w">
  
221 </span><span·class="p"·data-group-id="7279559557-10">{</span><span·class="p"·data-group-id="7279559557-11">[</span><span·class="p"·data-group-id="7279559557-12">{</span><span·class="p"·data-group-id="7279559557-13">{</span><span·class="ss">fprof</span><span·class="p">,</span><span·class="ss">ap[·...·truncated·by·diffoscope;·len:·463,·SHA:·7cf4d9f93319d2258fb60c195b3ca8dfaea829a94ce491e3cc749069f16abb48·...·]-11">]</span><span·class="p">,</span><span·class="w">221 </span><span·class="p"·data-group-id="7490099740-10">{</span><span·class="p"·data-group-id="7490099740-11">[</span><span·class="p"·data-group-id="7490099740-12">{</span><span·class="p"·data-group-id="7490099740-13">{</span><span·class="ss">fprof</span><span·class="p">,</span><span·class="ss">ap[·...·truncated·by·diffoscope;·len:·463,·SHA:·7297aa02326862411cfcee82efdaf55e279339d6fc21aa079a7fb4934d1d02f4·...·]-11">]</span><span·class="p">,</span><span·class="w">
222 ·</span><span·class="p"·data-group-id="7279559557-14">{</span><span·class="w">·</span><span·class="p"·data-group-id="7279559557-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:·0b150bf35eebe159dbd0bafc39e53616db4bced3c230380ecad83ff0f2db1208·...·]-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="7490099740-14">{</span><span·class="w">·</span><span·class="p"·data-group-id="7490099740-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:·0f97eb50e2644efeba7b6487a22275d6e0d0d5e82b8940f699f285f5a3bde105·...·]-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="7279559557-16">[</span><span·class="p"·data-group-id="7279559557-17">{</span><span·class="p"·data-group-id="7279559557-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:·ea4de77af5c5f3888340a8123389052bb9afeaf48408b614d803f13191f21140·...·]-17">}</span><span·class="p">,</span><span·class="w">223 ·</span><span·class="p"·data-group-id="7490099740-16">[</span><span·class="p"·data-group-id="7490099740-17">{</span><span·class="p"·data-group-id="7490099740-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:·646a75fc417567b906168433dffda2404261a03dde26d61a1b9a811818572339·...·]-17">}</span><span·class="p">,</span><span·class="w">
224 ··</span><span·class="p"·data-group-id="7279559557-19">{</span><span·class="p"·data-group-id="7279559557-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="727955955[·...·truncated·by·diffoscope;·len:·301,·SHA:·7773e83ba192b1e1e29834b4c537d44314a519a45e1d1b007624cc9146e5bf6b·...·]-19">}</span><span·class="p">,</span><span·class="w">224 ··</span><span·class="p"·data-group-id="7490099740-19">{</span><span·class="p"·data-group-id="7490099740-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="749009974[·...·truncated·by·diffoscope;·len:·301,·SHA:·92869f5ae7e9b688b182c55e09b6ab6c01cb2132a271981e5606454dbb8da7a7·...·]-19">}</span><span·class="p">,</span><span·class="w">
225 ··</span><span·class="p"·data-group-id="7279559557-21">{</span><span·class="p"·data-group-id="7279559557-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="7279559557-22">}</sp[·...·truncated·by·diffoscope;·len:·301,·SHA:·e73fddf3d3242e2a7d5201397a65e78c52d9b74b8afc6b3491451eb51afd5490·...·]-21">}</span><span·class="p">,</span><span·class="w">225 ··</span><span·class="p"·data-group-id="7490099740-21">{</span><span·class="p"·data-group-id="7490099740-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="7490099740-22">}</sp[·...·truncated·by·diffoscope;·len:·301,·SHA:·ebc427102c0084596571edb430fdf898395af0565a5cba767a1744f42a67b2cb·...·]-21">}</span><span·class="p">,</span><span·class="w">
226 ··</span><span·class="p"·data-group-id="7279559557-23">{</span><span·class="p"·data-group-id="7279559557-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="7279559557-24">}</sp[·...·truncated·by·diffoscope;·len:·301,·SHA:·0625c8494cfb588f60f708ccccf695ab22d1b7a5d8c603fda1e15c17a76c0189·...·]-23">}</span><span·class="p">,</span><span·class="w">226 ··</span><span·class="p"·data-group-id="7490099740-23">{</span><span·class="p"·data-group-id="7490099740-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="7490099740-24">}</sp[·...·truncated·by·diffoscope;·len:·301,·SHA:·2b7fdbaebe504491ca294a0819194d82d0bf8b75f4aa2e03c010325bdab751ac·...·]-23">}</span><span·class="p">,</span><span·class="w">
227 ··</span><span·class="p"·data-group-id="7279559557-25">{</span><span·class="p"·data-group-id="7279559557-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="7279559557-26">}</sp[·...·truncated·by·diffoscope;·len:·301,·SHA:·9ba86600dfa7bff9a2eecbbaf2fbbf947ca11334591fe66b949e4d1162a5cef9·...·]-25">}</span><span·class="p">,</span><span·class="w">227 ··</span><span·class="p"·data-group-id="7490099740-25">{</span><span·class="p"·data-group-id="7490099740-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="7490099740-26">}</sp[·...·truncated·by·diffoscope;·len:·301,·SHA:·229fe549b078452473fa976eb768aba1f6994b849ced30887bd3a07580208c6c·...·]-25">}</span><span·class="p">,</span><span·class="w">
228 ··</span><span·class="p"·data-group-id="7279559557-27">{</span><span·class="p"·data-group-id="7279559557-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="7279559557-28">}</s[·...·truncated·by·diffoscope;·len:·409,·SHA:·df323a46edb732567892120716ac838fde798f9b045095f74ed14d6b753c4ff2·...·]-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="7490099740-27">{</span><span·class="p"·data-group-id="7490099740-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="7490099740-28">}</s[·...·truncated·by·diffoscope;·len:·409,·SHA:·3b52ffbba1a2321032cd48f629f4ad124f5efe04aca4f8db1358a44811b834ab·...·]-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.6/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.6/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.6/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.6/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.2/doc/html/lists.html#seq/2"><code·class="inline">lists:seq/2</code></a>·and·<a·href="../../../../lib/stdlib-6.2.2/doc/html/lists.html#map/2"><code·class="inline">lists:map/2</code></a>).</p><p>The·function·<code·class="inline">undefined</code>·that·has·called·<code·class="inline">fprof:apply_start_stop/4</code>·is·an246 (<a·href="../../../../lib/stdlib-6.2.2/doc/html/lists.html#seq/2"><code·class="inline">lists:seq/2</code></a>·and·<a·href="../../../../lib/stdlib-6.2.2/doc/html/lists.html#map/2"><code·class="inline">lists:map/2</code></a>).</p><p>The·function·<code·class="inline">undefined</code>·that·has·called·<code·class="inline">fprof:apply_start_stop/4</code>·is·an
247 unknown·function·because·that·call·was·not·recorded·in·the·trace.·It·was·only247 unknown·function·because·that·call·was·not·recorded·in·the·trace.·It·was·only
248 recorded·that·the·execution·returned·from·<code·class="inline">fprof:apply_start_stop/4</code>·to·some248 recorded·that·the·execution·returned·from·<code·class="inline">fprof:apply_start_stop/4</code>·to·some
249 other·function·above·in·the·call·stack,·or·that·the·process·exited·from·there.</p><p>Let·us·continue·down·the·printout·to·find:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="9014468377-1">{</span><span·class="p"·data-group-id="9014468377-2">[</span><span·class="p"·data-group-id="9014468377-3">{</span><span·class="p"·data-group-id="9014468377-4">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="ss">create_[·...·truncated·by·diffoscope;·len:·405,·SHA:·cd4445310eef5c61809b17fdf957e1ff4ca2527ea584d4e6dbd5526296935838·...·]-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="6500198894-1">{</span><span·class="p"·data-group-id="6500198894-2">[</span><span·class="p"·data-group-id="6500198894-3">{</span><span·class="p"·data-group-id="6500198894-4">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="ss">create_[·...·truncated·by·diffoscope;·len:·405,·SHA:·3f61b667faaac2a83276003c69694a9be1db995c34804119d7f433c664ad99e7·...·]-3">}</span><span·class="p">,</span><span·class="w">
250 ··</span><span·class="p"·data-group-id="9014468377-5">{</span><span·class="p"·data-group-id="9014468377-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="9014468377[·...·truncated·by·diffoscope;·len:·352,·SHA:·4611f9c35be5a0b52c80e8663b728a2002b8e5f1739579eddf6e0192f60d82d6·...·]-2">]</span><span·class="p">,</span><span·class="w">250 ··</span><span·class="p"·data-group-id="6500198894-5">{</span><span·class="p"·data-group-id="6500198894-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="6500198894[·...·truncated·by·diffoscope;·len:·352,·SHA:·4c46c37b41d7c969f252f7ae5c713c249feb90b292d02e664693c56265cad5aa·...·]-2">]</span><span·class="p">,</span><span·class="w">
251 ·</span><span·class="p"·data-group-id="9014468377-7">{</span><span·class="w">·</span><span·class="p"·data-group-id="9014468377-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:·44f6345d0e494a3c6dfbc24ece403f464248c8aefb8ae6810c8be5b4e1b8f17e·...·]-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="6500198894-7">{</span><span·class="w">·</span><span·class="p"·data-group-id="6500198894-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:·e11cff432b95e46870aa15186cffd9682346d69d7de538d6d6530bed7da27d7e·...·]-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="9014468377-9">[</span><span·class="p"·data-group-id="9014468377-10">{</span><span·class="p"·data-group-id="9014468377-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:·45c3af8c2780bbb31151314397f8ab82198b537340836d6dc7a2b5206b891927·...·]-10">}</span><span·class="p">,</span><span·class="w">252 ·</span><span·class="p"·data-group-id="6500198894-9">[</span><span·class="p"·data-group-id="6500198894-10">{</span><span·class="p"·data-group-id="6500198894-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:·4bdcca9b35a2aa2c8f15bf9e92ef3836372311fb12aa42acf33d266011a43c66·...·]-10">}</span><span·class="p">,</span><span·class="w">
253 ··</span><span·class="p"·data-group-id="9014468377-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:·5c21e6356a4711be22c3169791e556f0a7e2ef69ae8353d4a62ae899040e1fb6·...·]-12">}</span><span·class="p">,</span><span·class="w">253 ··</span><span·class="p"·data-group-id="6500198894-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:·74542f5d7a0f0d71a285a8b7db459cb791cacaea0427fbaa67551811799d5d6f·...·]-12">}</span><span·class="p">,</span><span·class="w">
254 ··</span><span·class="p"·data-group-id="9014468377-13">{</span><span·class="p"·data-group-id="9014468377-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="90144683[·...·truncated·by·diffoscope;·len:·409,·SHA:·2ac41198cdd2461e61211b4167a074d7b65949b123497e5911bc8a3b2ff16a72·...·]-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="6500198894-13">{</span><span·class="p"·data-group-id="6500198894-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="65001988[·...·truncated·by·diffoscope;·len:·409,·SHA:·f233ff7edae93bfa85c01f1d4505eb46898190777cbbb03630bf3557bed21b59·...·]-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.6/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.6/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.6/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.6/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.6/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.6/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="1410809074-1">{</span><span·class="p"·data-group-id="1410809074-2">[</span><span·class="p"·data-group-id="1410809074-3">{</span><span·class="p"·data-group-id="1410809074-4">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="ss">write<[·...·truncated·by·diffoscope;·len:·405,·SHA:·630cab059288011a07915aafc6639b398f6b4c80ae108f037fa06f4031baea7e·...·]-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="2995761747-1">{</span><span·class="p"·data-group-id="2995761747-2">[</span><span·class="p"·data-group-id="2995761747-3">{</span><span·class="p"·data-group-id="2995761747-4">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="ss">write<[·...·truncated·by·diffoscope;·len:·405,·SHA:·80d29947d11ed8e8923000ec44d6f58269e2aa65ba3817690595bb313fb92686·...·]-3">}</span><span·class="p">,</span><span·class="w">
263 ··</span><span·class="p"·data-group-id="1410809074-5">{</span><span·class="p"·data-group-id="1410809074-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="1410809074[·...·truncated·by·diffoscope;·len:·299,·SHA:·d0446cf622025532a6215683ddf1be8c9e1cf1c71e77067e308454a57579bea8·...·]-5">}</span><span·class="p">,</span><span·class="w">263 ··</span><span·class="p"·data-group-id="2995761747-5">{</span><span·class="p"·data-group-id="2995761747-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="2995761747[·...·truncated·by·diffoscope;·len:·299,·SHA:·53459b7f1fa464f52aaeb8bd8203a22cd0bb6e8a60f169c732e60dcfbd6c8ad4·...·]-5">}</span><span·class="p">,</span><span·class="w">
264 ··</span><span·class="p"·data-group-id="1410809074-7">{</span><span·class="p"·data-group-id="1410809074-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="141080907[·...·truncated·by·diffoscope;·len:·299,·SHA:·a12a78412ee0202d3b6c76859bb65b9422477dbed500a9e0120abc0257f11adc·...·]-7">}</span><span·class="p">,</span><span·class="w">264 ··</span><span·class="p"·data-group-id="2995761747-7">{</span><span·class="p"·data-group-id="2995761747-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="299576174[·...·truncated·by·diffoscope;·len:·299,·SHA:·3024fcd3cca405f1bf38d9e85ce93793fe75f799de495e68104e2256de0974a4·...·]-7">}</span><span·class="p">,</span><span·class="w">
265 ··</span><span·class="p"·data-group-id="1410809074-9">{</span><span·class="p"·data-group-id="1410809074-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="141[·...·truncated·by·diffoscope;·len:·301,·SHA:·5d759eca1b22b90722262e4d55018cd57466a118fddfc40c26d5ccec577404d7·...·]-9">}</span><span·class="p">,</span><span·class="w">265 ··</span><span·class="p"·data-group-id="2995761747-9">{</span><span·class="p"·data-group-id="2995761747-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="299[·...·truncated·by·diffoscope;·len:·301,·SHA:·1a645655c68895488dea1eb944c5c606656277178bfb383a1e7f9fa2bc80cb7a·...·]-9">}</span><span·class="p">,</span><span·class="w">
266 ··</span><span·class="p"·data-group-id="1410809074-11">{</span><span·class="p"·data-group-id="1410809074-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="1410809074-12">}</s[·...·truncated·by·diffoscope;·len:·302,·SHA:·b966c02813da52e804a78deef5991765389d63cc843357f86e919372c1a7198a·...·]-11">}</span><span·class="p">,</span><span·class="w">266 ··</span><span·class="p"·data-group-id="2995761747-11">{</span><span·class="p"·data-group-id="2995761747-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="2995761747-12">}</s[·...·truncated·by·diffoscope;·len:·302,·SHA:·26888ff6b20ce9a1e1164f32d14d3cce25a42be7af3dad4b5d3b97c6b86af87c·...·]-11">}</span><span·class="p">,</span><span·class="w">
267 ··</span><span·class="p"·data-group-id="1410809074-13">{</span><span·class="p"·data-group-id="1410809074-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="1410809074-14[·...·truncated·by·diffoscope;·len:·302,·SHA:·fd501ed5884b7e307e05075faa9a94997bd9759650f246b006a992a3ae5ab8ac·...·]-13">}</span><span·class="p">,</span><span·class="w">267 ··</span><span·class="p"·data-group-id="2995761747-13">{</span><span·class="p"·data-group-id="2995761747-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="2995761747-14[·...·truncated·by·diffoscope;·len:·302,·SHA:·58edeb9b5a8f1e68e9911e54f304e497bb1ccf181a4633f62174ec6c28a018c1·...·]-13">}</span><span·class="p">,</span><span·class="w">
268 ··</span><span·class="p"·data-group-id="1410809074-15">{</span><span·class="p"·data-group-id="1410809074-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="141080907[·...·truncated·by·diffoscope;·len:·302,·SHA:·6d18e41c25869a59c1c6e5138df6dc43086d4dd090efac4fa6f9f4ee3862b95c·...·]-15">}</span><span·class="p">,</span><span·class="w">268 ··</span><span·class="p"·data-group-id="2995761747-15">{</span><span·class="p"·data-group-id="2995761747-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="299576174[·...·truncated·by·diffoscope;·len:·302,·SHA:·5ab6043cf7e7a547ad53eadf21362b10d1bbe19a3c618378d54a038ffabb888d·...·]-15">}</span><span·class="p">,</span><span·class="w">
269 ··</span><span·class="p"·data-group-id="1410809074-17">{</span><span·class="p"·data-group-id="1410809074-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="1410809[·...·truncated·by·diffoscope;·len:·302,·SHA:·a60e48ab59b4c7fbb1d8f1b684648b7667cfc963c2bfa505398c87164c349e2e·...·]-17">}</span><span·class="p">,</span><span·class="w">269 ··</span><span·class="p"·data-group-id="2995761747-17">{</span><span·class="p"·data-group-id="2995761747-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="2995761[·...·truncated·by·diffoscope;·len:·302,·SHA:·5e48133dc152d9e3b0ad9861f4ae952c981d0fac76724af2122fc160f1a18c24·...·]-17">}</span><span·class="p">,</span><span·class="w">
270 ··</span><span·class="p"·data-group-id="1410809074-19">{</span><span·class="p"·data-group-id="1410809074-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:·f0f4ac547b6e79c4e7dd69ffd8cec41012e94f621314d9aa9339f9009bd83419·...·]-19">}</span><span·class="p">,</span><span·class="w">270 ··</span><span·class="p"·data-group-id="2995761747-19">{</span><span·class="p"·data-group-id="2995761747-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:·5c00a9c7424279952e7e8b914a6baedee2450db85adf8b9daf268d79fed43e37·...·]-19">}</span><span·class="p">,</span><span·class="w">
271 ··</span><span·class="p"·data-group-id="1410809074-21">{</span><span·class="p"·data-group-id="1410809074-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:·e106b710bf0d594ff90e934b51788b128b90fd53989e46e05f5c3cf338351388·...·]-21">}</span><span·class="p">,</span><span·class="w">271 ··</span><span·class="p"·data-group-id="2995761747-21">{</span><span·class="p"·data-group-id="2995761747-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:·d4612bcec17b196e2e84697f88ec1ebe4a5c6fa4015ffe80af3625b8421c6bb5·...·]-21">}</span><span·class="p">,</span><span·class="w">
272 ··</span><span·class="p"·data-group-id="1410809074-23">{</span><span·class="p"·data-group-id="1410809074-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="1410809074-24">}</s[·...·truncated·by·diffoscope;·len:·302,·SHA:·57b0192addc858487e1ee0302155232ff7237f6506a91dc0119ea7da7af91766·...·]-23">}</span><span·class="p">,</span><span·class="w">272 ··</span><span·class="p"·data-group-id="2995761747-23">{</span><span·class="p"·data-group-id="2995761747-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="2995761747-24">}</s[·...·truncated·by·diffoscope;·len:·302,·SHA:·7eddef198ec41e08114e0cff1936f8b0fe90ad872e1057122d4e098276711a2b·...·]-23">}</span><span·class="p">,</span><span·class="w">
273 ··</span><span·class="p"·data-group-id="1410809074-25">{</span><span·class="p"·data-group-id="1410809074-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:·6d7551d06266b7508a18e231059324eb372bf16f2ba954239d5055cc7f73d225·...·]-25">}</span><span·class="p">,</span><span·class="w">273 ··</span><span·class="p"·data-group-id="2995761747-25">{</span><span·class="p"·data-group-id="2995761747-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:·946cd8164058e48a377e0e6ec48367d4840597f4ddac313c81913ae490c7da1d·...·]-25">}</span><span·class="p">,</span><span·class="w">
274 ··</span><span·class="p"·data-group-id="1410809074-27">{</span><span·class="p"·data-group-id="1410809074-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="141080[·...·truncated·by·diffoscope;·len:·302,·SHA:·e635cfc24c5aaa28209163cb38ce3beedbc042620329953807c35e16051e9beb·...·]-27">}</span><span·class="p">,</span><span·class="w">274 ··</span><span·class="p"·data-group-id="2995761747-27">{</span><span·class="p"·data-group-id="2995761747-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="299576[·...·truncated·by·diffoscope;·len:·302,·SHA:·1af536e1bdcd33e8f9256b552d268bfa46a49512f340af0d2c3f61c82215f065·...·]-27">}</span><span·class="p">,</span><span·class="w">
275 ··</span><span·class="p"·data-group-id="1410809074-29">{</span><span·class="p"·data-group-id="1410809074-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="14[·...·truncated·by·diffoscope;·len:·302,·SHA:·1b69ca501d9b104b04d383d76fc9e7b628e31385c088e0aa1572657919800744·...·]-29">}</span><span·class="p">,</span><span·class="w">275 ··</span><span·class="p"·data-group-id="2995761747-29">{</span><span·class="p"·data-group-id="2995761747-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:·de9cec1cdd74ced64318b712d4c15ff8dd4c93be91295da602181e8748a35957·...·]-29">}</span><span·class="p">,</span><span·class="w">
276 ··</span><span·class="p"·data-group-id="1410809074-31">{</span><span·class="p"·data-group-id="1410809074-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="1410809074-32">[·...·truncated·by·diffoscope;·len:·302,·SHA:·e51325dc916c17889a47afaf50b68e21950f87fb597e8b2bc87dca903c8ce9d1·...·]-31">}</span><span·class="p">,</span><span·class="w">276 ··</span><span·class="p"·data-group-id="2995761747-31">{</span><span·class="p"·data-group-id="2995761747-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="2995761747-32">[·...·truncated·by·diffoscope;·len:·302,·SHA:·af21b4ccef45389d509494b2741375b4ada03bd803d616b51a0974d968c4684f·...·]-31">}</span><span·class="p">,</span><span·class="w">
277 ··</span><span·class="p"·data-group-id="1410809074-33">{</span><span·class="p"·data-group-id="1410809074-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="141080[·...·truncated·by·diffoscope;·len:·356,·SHA:·607bc2687ec27693a427716e8781188b3967bd67bcdf9ffadb7b2c0e84cd6651·...·]-2">]</span><span·class="p">,</span><span·class="w">277 ··</span><span·class="p"·data-group-id="2995761747-33">{</span><span·class="p"·data-group-id="2995761747-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="299576[·...·truncated·by·diffoscope;·len:·356,·SHA:·ff6b0358e6033b91a522c1093ac3beb589d685d2da0b8ff7e65d63582115780a·...·]-2">]</span><span·class="p">,</span><span·class="w">
278 ·</span><span·class="p"·data-group-id="1410809074-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:·2712ad059dba6739bbc7e9d63d66b5b8bb9db97a3b45f84e2740e0cf780ed0bf·...·]-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="2995761747-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:·c33097128942d72500a72656876bc8dbd70f5b036172c94276abe4066c9f41d7·...·]-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="1410809074-36">[</span><span·class="w">·</span><span·class="p"·data-group-id="1410809074-36">]</span><span·class="p"·data-group-id="1410809074-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="2995761747-36">[</span><span·class="w">·</span><span·class="p"·data-group-id="2995761747-36">]</span><span·class="p"·data-group-id="2995761747-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="1476278012-1">{</span><span·class="p"·data-group-id="1476278012-2">[</span><span·class="p"·data-group-id="1476278012-3">{</span><span·class="p"·data-group-id="1476278012-4">{</span><span·class="ss">prim_file</span><span·class="p">,</span><span·class="ss">dr[·...·truncated·by·diffoscope;·len:·404,·SHA:·0902aa8cbdeb3832d36109d4f11a527b441ac0bba033cb164afe69fe5163f390·...·]-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="1059835550-1">{</span><span·class="p"·data-group-id="1059835550-2">[</span><span·class="p"·data-group-id="1059835550-3">{</span><span·class="p"·data-group-id="1059835550-4">{</span><span·class="ss">prim_file</span><span·class="p">,</span><span·class="ss">dr[·...·truncated·by·diffoscope;·len:·404,·SHA:·a4f7bac093cfc8a6488592a9ac88c8f17f106f7fe79c5c5f3e687fbccc23c25c·...·]-3">}</span><span·class="p">,</span><span·class="w">
286 ··</span><span·class="p"·data-group-id="1476278012-5">{</span><span·class="p"·data-group-id="1476278012-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="1476278012-6">}<[·...·truncated·by·diffoscope;·len:·298,·SHA:·af6ddc418081c0287ec58db995fd46b2c0831f3ad37eb5f38ef4765bb20f05f0·...·]-5">}</span><span·class="p">,</span><span·class="w">286 ··</span><span·class="p"·data-group-id="1059835550-5">{</span><span·class="p"·data-group-id="1059835550-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="1059835550-6">}<[·...·truncated·by·diffoscope;·len:·298,·SHA:·438674fdff62939f088064d8e78ca9c27a30d8c42a4ed470bdb1001aea7beaf7·...·]-5">}</span><span·class="p">,</span><span·class="w">
287 ··</span><span·class="p"·data-group-id="1476278012-7">{</span><span·class="p"·data-group-id="1476278012-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="1476278012-8">}</span>[·...·truncated·by·diffoscope;·len:·351,·SHA:·f2f415cb6c12ce510b2a30d33020654f89ca05b313cab180da478cc129265497·...·]-2">]</span><span·class="p">,</span><span·class="w">287 ··</span><span·class="p"·data-group-id="1059835550-7">{</span><span·class="p"·data-group-id="1059835550-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="1059835550-8">}</span>[·...·truncated·by·diffoscope;·len:·351,·SHA:·402879b4857fa47910e0574274a4450575dc513895845891817f62f395795690·...·]-2">]</span><span·class="p">,</span><span·class="w">
288 ·</span><span·class="p"·data-group-id="1476278012-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</sp[·...·truncated·by·diffoscope;·len:·124,·SHA:·84179f11266ffd1db06be407dd14dbe8eef922a85228a130053ddfd1d576c99c·...·]-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="1059835550-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</sp[·...·truncated·by·diffoscope;·len:·124,·SHA:·cbadde533dd4bca0a600592c5f631a881fe50c6366078b18191a7ebe20561755·...·]-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="1476278012-10">[</span><span·class="w">·</span><span·class="p"·data-group-id="1476278012-10">]</span><span·class="p"·data-group-id="1476278012-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="1059835550-10">[</span><span·class="w">·</span><span·class="p"·data-group-id="1059835550-10">]</span><span·class="p"·data-group-id="1059835550-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="4754101052-1">{</span><span·class="p"·data-group-id="4754101052-2">[</span><span·class="p"·data-group-id="4754101052-3">{</span><span·class="p"·data-group-id="4754101052-4">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="ss">create_[·...·truncated·by·diffoscope;·len:·405,·SHA:·4b41fa0f63c5f6844405a82ad81a27d9dd75e68dbe975859af81dc5c28c286bf·...·]-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="6427427101-1">{</span><span·class="p"·data-group-id="6427427101-2">[</span><span·class="p"·data-group-id="6427427101-3">{</span><span·class="p"·data-group-id="6427427101-4">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="ss">create_[·...·truncated·by·diffoscope;·len:·405,·SHA:·49b28732f2aeb94eab5990d78267d7e3d6757293b7bd519cbd947effaf7e7c74·...·]-3">}</span><span·class="p">,</span><span·class="w">
295 ··</span><span·class="p"·data-group-id="4754101052-5">{</span><span·class="p"·data-group-id="4754101052-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="4754101052[·...·truncated·by·diffoscope;·len:·352,·SHA:·f909c56d18c9d1be6e38f19c08e8561ea4c74389576e06e23ca88e8aeaad121f·...·]-2">]</span><span·class="p">,</span><span·class="w">295 ··</span><span·class="p"·data-group-id="6427427101-5">{</span><span·class="p"·data-group-id="6427427101-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="6427427101[·...·truncated·by·diffoscope;·len:·352,·SHA:·080d9a5255dc98da4e19a53d16f3af9e8f11e417c2e1bd46ac2ec0d59aca5996·...·]-2">]</span><span·class="p">,</span><span·class="w">
296 ·</span><span·class="p"·data-group-id="4754101052-7">{</span><span·class="w">·</span><span·class="p"·data-group-id="4754101052-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:·4be1c96f8ce694cc60b9952a2b2f4e0543b83605c33c5c8457ad0afcda27029b·...·]-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="6427427101-7">{</span><span·class="w">·</span><span·class="p"·data-group-id="6427427101-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:·c89e562fd44620b7b605244362d3454e5e0ac25914621bb6f13fb93cb250d759·...·]-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="4754101052-9">[</span><span·class="p"·data-group-id="4754101052-10">{</span><span·class="p"·data-group-id="4754101052-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:·629662a3257004fb049b0d893bc871547b7e0282dc9be51d0964c702a9ae820e·...·]-10">}</span><span·class="p">,</span><span·class="w">297 ·</span><span·class="p"·data-group-id="6427427101-9">[</span><span·class="p"·data-group-id="6427427101-10">{</span><span·class="p"·data-group-id="6427427101-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:·757614ed57e1bba8b0ee38887bfb4fa2bcadf90d6ce478f37c060606261d86c4·...·]-10">}</span><span·class="p">,</span><span·class="w">
298 ··</span><span·class="p"·data-group-id="4754101052-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:·4ca4d9b800f3a8753b7acea9061dbf1f0a8ea3b1f392ef351b1fd2e70353656d·...·]-1">}</span><span·class="p">.</span></code></pre><p>Not·unexpectedly,·we·see·that·<a·href="../../../../lib/kernel-10.2.6/doc/html/file.html#write/2"><code·class="inline">file:write/2</code></a>·was·called·from298 ··</span><span·class="p"·data-group-id="6427427101-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:·8d40a59caa219bedef6800240d542fda8a7131ee8a72dc78b6c8cfe20e2b70fe·...·]-1">}</span><span·class="p">.</span></code></pre><p>Not·unexpectedly,·we·see·that·<a·href="../../../../lib/kernel-10.2.6/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="6780356595-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="6780356595-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·201,·SHA:·39b5b27cc957d765e42c268ee93fffcd2db61b190e9268a4e179390e3be859c5·...·]-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="9138947100-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="9138947100-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·201,·SHA:·f3cfe71df71ca0a9ef98c50cef034019169e72366c4cdc3a31b9b661e67460db·...·]-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="6780356595-3">(</span><span·class="p"·data-group-id="6780356595-4">[</span><span·class="ss">start</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6780356595-5">{</span><span·class="ss">tracer</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·203,·SHA:·a6e470fd4c37cf51b3e674a096b7ac6d679ae7dff20516c5d72c2737fe8fa64b·...·]-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="9138947100-3">(</span><span·class="p"·data-group-id="9138947100-4">[</span><span·class="ss">start</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9138947100-5">{</span><span·class="ss">tracer</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·203,·SHA:·00df025a600ef5cda271442651e48c749a31d91026da18c02d9200074902eaf7·...·]-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="6780356595-6">(</span><span·class="ss">stop</span><span·class="p"·data-group-id="6780356595-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="9138947100-6">(</span><span·class="ss">stop</span><span·class="p"·data-group-id="9138947100-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="7593195355-1">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">15.0</span><span·class="p"·data-group-id="7593195355-1">]</span><span·class="w">·</span><span·class="p"·data-group-id="7593195355-2">[</span><span·class="mi">64</spa[·...·truncated·by·diffoscope;·len:·1287,·SHA:·80c16a9ab962640dda963802085906f36f792578a4f49e9d95bb219680c2bc48·...·]-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="1981477904-1">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">15.0</span><span·class="p"·data-group-id="1981477904-1">]</span><span·class="w">·</span><span·class="p"·data-group-id="1981477904-2">[</span><span·class="mi">64</spa[·...·truncated·by·diffoscope;·len:·1287,·SHA:·75988cfa785d352fdf3eea0641c51d70b4bd3b5cf779d84e72ad686f890fc354·...·]-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="7593195355-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:·056e09b883ce30954491bfb1e483a1e7019c19d2514c0b57a56b246a84e8e960·...·]-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="1981477904-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:·f935b46d3f5f9a2ecd841c10e7ea7229c23d71b195a7364609abd000efe963d1·...·]-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="7593195355-10">[</span><span·class="p"·data-group-id="7593195355-11">{</span><span·class="ss">db_nodes</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7593195355-12">[</span><span·class="nf">node</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·1155,·SHA:·bef2b13c32acf2a0d3bc01a6bce5740d8f5c634a7b72a001e3dbbe1dc6c15523·...·]-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="1981477904-10">[</span><span·class="p"·data-group-id="1981477904-11">{</span><span·class="ss">db_nodes</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1981477904-12">[</span><span·class="nf">node</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·1155,·SHA:·6cbb9bd9a9f75abdb6f50b9ec98f0aa3f3af76d343219d205726b44167fe596f·...·]-17">}</span><span·class="p">,</span><span·class="w">
239 ····</span><span·class="p"·data-group-id="7593195355-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="7593195355-20">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"[·...·truncated·by·diffoscope;·len:·465,·SHA:·73fee6cb1c4b5aa78401fba6b27084f48562e0b3f4c9e8a5d46f7514ead16c62·...·]-22">}</span><span·class="p">,</span><span·class="w">239 ····</span><span·class="p"·data-group-id="1981477904-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="1981477904-20">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"[·...·truncated·by·diffoscope;·len:·465,·SHA:·88a1ca724df2d4f1453c98971dd1fa4768c186e9e98477b02327082536787c53·...·]-22">}</span><span·class="p">,</span><span·class="w">
240 ····</span><span·class="p"·data-group-id="7593195355-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="7593195355-23">}</span><span·class="p">,</span><span·class="w">·</span><span·class="[·...·truncated·by·diffoscope;·len:·519,·SHA:·d1dfeec7481cea97c2eb975d1b363feb9059908b245dd7a5daeba5c391a073b9·...·]-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="1981477904-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="1981477904-23">}</span><span·class="p">,</span><span·class="w">·</span><span·class="[·...·truncated·by·diffoscope;·len:·519,·SHA:·c3525914466622b0601b967d857351a64f21288d300fffe36b9efb7264918e25·...·]-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="7593195355-26">(</span><span·class="p"·data-group-id="7593195355-27">[</span><span·class="p"·data-group-id="7593195355-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:·0b799c4dc7ad14a41ed01433cd7562c93e20d998ef9849d0b3fd969a92b0fd83·...·]-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="1981477904-26">(</span><span·class="p"·data-group-id="1981477904-27">[</span><span·class="p"·data-group-id="1981477904-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:·ddb68f77f620c09c6ab67d6ac7e04b963862c19ccbdd7ebf914c594becd262b4·...·]-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="6169481532-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="6169481532-2">(</span><span·class="p"·data-group-id="6169481532-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·836,·SHA:·46a604d518c4fd0f7f3234290b3fb5489144463f97ab819817c84388f1a845f9·...·]-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="4535914871-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="4535914871-2">(</span><span·class="p"·data-group-id="4535914871-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·836,·SHA:·72bf35b6ecbbe8140b1c6618916f0f560afccf445133342978cb2642947519a0·...·]-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="6169481532-7">}</span><span·class="p">|</span><span·class="n">Conf</span><span·class="p"·data-group-id="6169481532-6">]</span><span·class="p"·data-group-id="6169481532-5">)</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tps</span><sp[·...·truncated·by·diffoscope;·len:·138,·SHA:·c640faee420c08d8af3310eabbbc5e6ade5f78f7f90d96263815f3c407c37af5·...·]-1">)</span><span·class="p">.</span><span·class="w">248 ····</span><span·class="ss">true</span><span·class="p"·data-group-id="4535914871-7">}</span><span·class="p">|</span><span·class="n">Conf</span><span·class="p"·data-group-id="4535914871-6">]</span><span·class="p"·data-group-id="4535914871-5">)</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tps</span><sp[·...·truncated·by·diffoscope;·len:·138,·SHA:·2427ac1bff2516451c018a56b5872f350d93f93d126409a024ec84af2345d663·...·]-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="5043434757-1">(</span><span·class="ss">big</span><span·class="p"·data-group-id="5043434757-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="6948503672-1">(</span><span·class="ss">big</span><span·class="p"·data-group-id="6948503672-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="5043434757-2">(</span><span·class="p"·data-group-id="5043434757-3">[</span><span·class="ss">bang</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="5043434757-3">]</span><span·class="p"·data-group-id="5043434757-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="6948503672-2">(</span><span·class="p"·data-group-id="6948503672-3">[</span><span·class="ss">bang</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="6948503672-3">]</span><span·class="p"·data-group-id="6948503672-2">)</span><span·class="p">.</span><span·class="w">
  
355 </span><span·class="nf">pinger</span><span·class="p"·data-group-id="5043434757-4">(</span><span·class="p"·data-group-id="5043434757-5">[</span><span·class="p"·data-group-id="5043434757-5">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5043434757-6">[</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·143,·SHA:·4b19e078625fb366581647dd1caf1bb1315655e8fcc7ade40f0a1a23bfad6bed·...·]-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="6948503672-4">(</span><span·class="p"·data-group-id="6948503672-5">[</span><span·class="p"·data-group-id="6948503672-5">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6948503672-6">[</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·143,·SHA:·b01841a811b42474e4a89f790224911cef531406601e57c9ee5fcb46923499db·...·]-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="5043434757-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="5043434757-7">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">357 »       </span><span·class="p"·data-group-id="6948503672-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="6948503672-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="5043434757-8">(</span><span·class="n">Procs</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5043434757-9">[</span><span·class="p"·data-group-id="5043434757-9">]</span><span·class="p">,</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·68,·SHA:·f0650bd7a49cfb4620f4d019e7b55424724f059ea3eb86e1895d558383952410·...·]-8">)</span><span·class="w">358 »       ····</span><span·class="nf">pinger</span><span·class="p"·data-group-id="6948503672-8">(</span><span·class="n">Procs</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6948503672-9">[</span><span·class="p"·data-group-id="6948503672-9">]</span><span·class="p">,</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·68,·SHA:·fcb310b6084455d62d3cf5eb93b619504af7dc4bd412eb3e62c5f68aec5ac966·...·]-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="5043434757-10">(</span><span·class="p"·data-group-id="5043434757-11">[</span><span·class="p"·data-group-id="5043434757-11">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5043434757-12">[</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·149,·SHA:·36936d439456542f7f2efe0c3f57fc783de2adaaa7bc3436e1451aa762246f7f·...·]-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="6948503672-10">(</span><span·class="p"·data-group-id="6948503672-11">[</span><span·class="p"·data-group-id="6948503672-11">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6948503672-12">[</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·149,·SHA:·fa45dd360b9ffe6678fe4b56a347cd6ff147386784b18462a5358c2412122ee6·...·]-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="5043434757-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="5043434757-13">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·406,·SHA:·27a049f06c1469f4a239ead13abede5d1fdd4d2fabc44b088e7266f639397dda·...·]-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="6948503672-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="6948503672-13">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·406,·SHA:·761b8e0db2cefbdd1abb5a8c78bb68e5e213ac30958a84549bc8fa8456496010·...·]-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="5043434757-16">(</span><span·class="p"·data-group-id="5043434757-17">[</span><span·class="p"·data-group-id="5043434757-17">]</span><span·class="p">,</span><span·class="p"·data-group-id="5043434757-18">[</span><span·class="p"·data-group-id="5043434757-18">][·...·truncated·by·diffoscope;·len:·101,·SHA:·7f2f828e045fd893a427d6e4a897817d1f8018dbad34b97270c886b37b3716ab·...·]-16">)</span><span·class="p">;</span><span·class="w">362 ····</span><span·class="nf">pinger</span><span·class="p"·data-group-id="6948503672-16">(</span><span·class="p"·data-group-id="6948503672-17">[</span><span·class="p"·data-group-id="6948503672-17">]</span><span·class="p">,</span><span·class="p"·data-group-id="6948503672-18">[</span><span·class="p"·data-group-id="6948503672-18">][·...·truncated·by·diffoscope;·len:·101,·SHA:·db15f854673e7ba6eb3dbbe49d48359a3b2dfdf8337fd1828ad42b5a0c92e53a·...·]-16">)</span><span·class="p">;</span><span·class="w">
363 </span><span·class="nf">pinger</span><span·class="p"·data-group-id="5043434757-19">(</span><span·class="p"·data-group-id="5043434757-20">[</span><span·class="p"·data-group-id="5043434757-20">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5043434757-21">[</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·151,·SHA:·b75cfb6732c474c2bd4fec3278efc005efde4c5a25230bd1ffbe42c704332758·...·]-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="6948503672-19">(</span><span·class="p"·data-group-id="6948503672-20">[</span><span·class="p"·data-group-id="6948503672-20">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6948503672-21">[</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·151,·SHA:·260393b1d6da0271799fdacb916ded27c697a445cf4232529bf7465501fa7e7c·...·]-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="5043434757-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="5043434757-23">(</span><span·class="p"·data-group-id="5043434757-23">)</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·fad947d445ec1122d31d1cb07b12a9ed3e79a86769b8665ce5cfc62421669da4·...·]-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="6948503672-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="6948503672-23">(</span><span·class="p"·data-group-id="6948503672-23">)</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·9a5633ffb90c1ae5a478735d95fd009f8c2dfa4816f8006da0cd342030870f55·...·]-22">}</span><span·class="p">,</span><span·class="w">
365 ····</span><span·class="nf">pinger</span><span·class="p"·data-group-id="5043434757-24">(</span><span·class="p"·data-group-id="5043434757-25">[</span><span·class="p"·data-group-id="5043434757-25">]</span><span·class="p">,</span><span·class="p"·data-group-id="5043434757-26">[</span><span·class="p"·data-group-id="5043434757-26">][·...·truncated·by·diffoscope;·len:·101,·SHA:·7f2f828e045fd893a427d6e4a897817d1f8018dbad34b97270c886b37b3716ab·...·]-24">)</span><span·class="p">;</span><span·class="w">365 ····</span><span·class="nf">pinger</span><span·class="p"·data-group-id="6948503672-24">(</span><span·class="p"·data-group-id="6948503672-25">[</span><span·class="p"·data-group-id="6948503672-25">]</span><span·class="p">,</span><span·class="p"·data-group-id="6948503672-26">[</span><span·class="p"·data-group-id="6948503672-26">][·...·truncated·by·diffoscope;·len:·101,·SHA:·db15f854673e7ba6eb3dbbe49d48359a3b2dfdf8337fd1828ad42b5a0c92e53a·...·]-24">)</span><span·class="p">;</span><span·class="w">
366 </span><span·class="nf">pinger</span><span·class="p"·data-group-id="5043434757-27">(</span><span·class="p"·data-group-id="5043434757-28">[</span><span·class="p"·data-group-id="5043434757-28">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5043434757-29">[</span><span·class="n">Po</spa[·...·truncated·by·diffoscope;·len:·328,·SHA:·d021fe76ae05bb385e2c02ca4d71e6b2812f7cc07ea59cab4ff3234f8cd4033e·...·]-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="6948503672-27">(</span><span·class="p"·data-group-id="6948503672-28">[</span><span·class="p"·data-group-id="6948503672-28">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6948503672-29">[</span><span·class="n">Po</spa[·...·truncated·by·diffoscope;·len:·328,·SHA:·3d1771fc9a9fbd3d9b2edfa97b4833c26a37882cf43a65958f1cc33183350a7a·...·]-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="5043434757-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="5043434757-30">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">368 »       </span><span·class="p"·data-group-id="6948503672-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="6948503672-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="5043434757-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="5043434757-32">(</span><span·class="p"·data-group-id="5043434757-32">)</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·fad947d445ec1122d31d1cb07b12a9ed3e79a86769b8665ce5cfc62421669da4·...·]-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="6948503672-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="6948503672-32">(</span><span·class="p"·data-group-id="6948503672-32">)</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·9a5633ffb90c1ae5a478735d95fd009f8c2dfa4816f8006da0cd342030870f55·...·]-31">}</span><span·class="p">,</span><span·class="w">
370 »       ····</span><span·class="nf">pinger</span><span·class="p"·data-group-id="5043434757-33">(</span><span·class="p"·data-group-id="5043434757-34">[</span><span·class="p"·data-group-id="5043434757-34">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pongers</span><span·class="p">,</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·73,·SHA:·b066536a8fd7812ce6978d3fc24344187e3fc3c822520501ae5b45ccc8200652·...·]-33">)</span><span·class="p">;</span><span·class="w">370 »       ····</span><span·class="nf">pinger</span><span·class="p"·data-group-id="6948503672-33">(</span><span·class="p"·data-group-id="6948503672-34">[</span><span·class="p"·data-group-id="6948503672-34">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pongers</span><span·class="p">,</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·73,·SHA:·1185e03ab685b574caa3c61508f084ca68d07da01f6f472a08f1d969f97db6c0·...·]-33">)</span><span·class="p">;</span><span·class="w">
371 »       </span><span·class="p"·data-group-id="5043434757-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="5043434757-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="5043434757-36">(</span><span·class="p"·data-group-id="5043434757-37">[</span><span·class="p"·data-group-id="5043434757-37">]</span><span·class="p">,</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·147,·SHA:·1e4df895dbd68ca907c86ebc380aa929d4da0ba45ca8511d7ded64813d95a3cf·...·]</span><span·class="w">371 »       </span><span·class="p"·data-group-id="6948503672-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="6948503672-35">}</span><span·class="w">·</span><span·class="p">[·...·truncated·by·diffoscope;·len:·5,·SHA:·31a8f0979e9ebe62f09113d719a31fed81f0619f574b0beaaf9c1578477711d7·...·]</span><span·class="w">
 372 »       ····</span><span·class="nf">pinger</span><span·class="p"·data-group-id="6948503672-36">(</span><span·class="p"·data-group-id="6948503672-37">[</span><span·class="p"·data-group-id="6948503672-37">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pos</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ReportTo</span><span·class="p"·data-group-id="6948503672-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="5043434757-38">(</span><span·class="p"·data-group-id="5043434757-39">[</span><span·class="n">Pi</span><span·class="p">|</span><span·class="n">Pis</span><span·class="p"·data-group-id="5043434757-39">]</span><span·class="p">,</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·148,·SHA:·e93905b65866c7e66327fae65a952b5d1c4e08bed6fdc89584e612ca0a119c08·...·]-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="6948503672-38">(</span><span·class="p"·data-group-id="6948503672-39">[</span><span·class="n">Pi</span><span·class="p">|</span><span·class="n">Pis</span><span·class="p"·data-group-id="6948503672-39">]</span><span·class="p">,</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·148,·SHA:·05eaf7f32ea5a2d7b66ddf57fc9af7c42c70b692aa32f4bdc3cb5ceabbefc042·...·]-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="5043434757-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="5043434757-40">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·406,·SHA:·7b82318b6eb0fc535ced5d9c3a2500f77e8acd12034df92e46330c28b15254ad·...·]-41">}</span><span·class="w">375 ····</span><span·class="k">receive</span><span·class="w">·</span><span·class="p"·data-group-id="6948503672-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="6948503672-40">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·406,·SHA:·22413a583dd3e78a961a0533a9ea16ff9012d449f65f954ac7d55d3715224c2d·...·]-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="5043434757-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="5043434757-44">(</span><span·class="p"·data-group-id="5043434757-44">)</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·fad947d445ec1122d31d1cb07b12a9ed3e79a86769b8665ce5cfc62421669da4·...·]-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="6948503672-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="6948503672-44">(</span><span·class="p"·data-group-id="6948503672-44">)</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·9a5633ffb90c1ae5a478735d95fd009f8c2dfa4816f8006da0cd342030870f55·...·]-43">}</span><span·class="p">,</span><span·class="w">
379 ····</span><span·class="nf">pinger</span><span·class="p"·data-group-id="5043434757-45">(</span><span·class="n">Pis</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5043434757-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:·5eeae3a02db8894b5136c82d6e099bf52f3efc89156e074befd5168aa8cf0158·...·]-45">)</span><span·class="p">.</span><span·class="w">379 ····</span><span·class="nf">pinger</span><span·class="p"·data-group-id="6948503672-45">(</span><span·class="n">Pis</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6948503672-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:·83cacf96378978f67676ce65a86908d02b478e0a86678752e88d40d6b06f90d4·...·]-45">)</span><span·class="p">.</span><span·class="w">
  
380 </span><span·class="nf">spawn_procs</span><span·class="p"·data-group-id="5043434757-47">(</span><span·class="n">N</span><span·class="p"·data-group-id="5043434757-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="6948503672-47">(</span><span·class="n">N</span><span·class="p"·data-group-id="6948503672-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="5043434757-48">[</span><span·class="p"·data-group-id="5043434757-48">]</span><span·class="p">;</span><span·class="w">381 ····</span><span·class="p"·data-group-id="6948503672-48">[</span><span·class="p"·data-group-id="6948503672-48">]</span><span·class="p">;</span><span·class="w">
382 </span><span·class="nf">spawn_procs</span><span·class="p"·data-group-id="5043434757-49">(</span><span·class="n">N</span><span·class="p"·data-group-id="5043434757-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="6948503672-49">(</span><span·class="n">N</span><span·class="p"·data-group-id="6948503672-49">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
383 ····</span><span·class="p"·data-group-id="5043434757-50">[</span><span·class="nf">spawn_link</span><span·class="p"·data-group-id="5043434757-51">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="5043434757-52">(</span><span·class="p"·data-group-id="504343475[·...·truncated·by·diffoscope;·len:·953,·SHA:·119a579a228315858a05a3290be04c1386fb62ccad3103241969bd446d2cbbdc·...·]-50">]</span><span·class="p">.</span><span·class="w">383 ····</span><span·class="p"·data-group-id="6948503672-50">[</span><span·class="nf">spawn_link</span><span·class="p"·data-group-id="6948503672-51">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="6948503672-52">(</span><span·class="p"·data-group-id="694850367[·...·truncated·by·diffoscope;·len:·953,·SHA:·3fc9b975985837ab7e7fc2de365f9c6c52731ca65a5b9b6bd95b5d5b325f3508·...·]-50">]</span><span·class="p">.</span><span·class="w">
  
384 </span><span·class="nf">send_procs</span><span·class="p"·data-group-id="5043434757-57">(</span><span·class="p"·data-group-id="5043434757-58">[</span><span·class="p"·data-group-id="5043434757-58">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p"·data-group-id="5043434757-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="6948503672-57">(</span><span·class="p"·data-group-id="6948503672-58">[</span><span·class="p"·data-group-id="6948503672-58">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p"·data-group-id="6948503672-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="5043434757-59">(</span><span·class="p"·data-group-id="5043434757-60">[</span><span·class="n">P</span><span·class="p">|</span><span·class="n">Ps</span><span·class="p"·data-group-id="5043434757-60">]</span><span·class="p">,</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·63,·SHA:·ef6f05e9a12277c5dece3273aeeb5ab65e071b90ba41de76894446e3ea4c6e65·...·]-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="6948503672-59">(</span><span·class="p"·data-group-id="6948503672-60">[</span><span·class="n">P</span><span·class="p">|</span><span·class="n">Ps</span><span·class="p"·data-group-id="6948503672-60">]</span><span·class="p">,</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·63,·SHA:·6b70f6ebd916959a4749e3437a576f41eb01d2bbd03538b3e68a3ae8498dc9a2·...·]-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="5043434757-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="5043434757-61">)</span><span·class="p">.</span><span·class="w">388 ····</span><span·class="nf">send_procs</span><span·class="p"·data-group-id="6948503672-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="6948503672-61">)</span><span·class="p">.</span><span·class="w">
  
389 </span><span·class="nf">receive_msgs</span><span·class="p"·data-group-id="5043434757-62">(</span><span·class="p"·data-group-id="5043434757-63">[</span><span·class="p"·data-group-id="5043434757-63">]</span><span·class="p"·data-group-id="5043434757-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="6948503672-62">(</span><span·class="p"·data-group-id="6948503672-63">[</span><span·class="p"·data-group-id="6948503672-63">]</span><span·class="p"·data-group-id="6948503672-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="5043434757-64">(</span><span·class="p"·data-group-id="5043434757-65">[</span><span·class="n">M</span><span·class="p">|</span><span·class="n">Ms</span><span·class="p"·data-group-id="5043434757-65">]</span><span·class="p"·data-group-id="5043434757-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="6948503672-64">(</span><span·class="p"·data-group-id="6948503672-65">[</span><span·class="n">M</span><span·class="p">|</span><span·class="n">Ms</span><span·class="p"·data-group-id="6948503672-65">]</span><span·class="p"·data-group-id="6948503672-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="5043434757-66">(</span><span·class="n">Ms</span><span·class="p"·data-group-id="5043434757-66">)</span><span·class="w">394 »       ····</span><span·class="nf">receive_msgs</span><span·class="p"·data-group-id="6948503672-66">(</span><span·class="n">Ms</span><span·class="p"·data-group-id="6948503672-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="5043434757-67">(</span><span·class="n">N</span><span·class="p"·data-group-id="5043434757-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="5043434757-68">(</[·...·truncated·by·diffoscope;·len:·70,·SHA:·b96ea35d81105d538af6fa966d521b5e2dc1470dea03141118a1681fe963b1b9·...·]-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="6948503672-67">(</span><span·class="n">N</span><span·class="p"·data-group-id="6948503672-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="6948503672-68">(</[·...·truncated·by·diffoscope;·len:·70,·SHA:·a1977884cc2e11d579f2847d90f81993d6cbe611b35d93d745aaa88461779717·...·]-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="5043434757-69">(</span><span·class="n">N</span><span·class="p"·data-group-id="5043434757-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="6948503672-69">(</span><span·class="n">N</span><span·class="p"·data-group-id="6948503672-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="5043434757-70">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="5043434757-71">(</span><span·class="n">P</span><span·class="p"·data-group-id="5043434757-71">)</span><span·class="w">·</span><span·class="p">-&gt;</spa[·...·truncated·by·diffoscope;·len:·401,·SHA:·e4b7f0c28a2dc2a6d705b303c9b99da2ee21354506abae373ffc9f1bf2d89ba1·...·]-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="6948503672-70">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="6948503672-71">(</span><span·class="n">P</span><span·class="p"·data-group-id="6948503672-71">)</span><span·class="w">·</span><span·class="p">-&gt;</spa[·...·truncated·by·diffoscope;·len:·401,·SHA:·f2e163ed24fb73240123e24c05ce881a8b76f81a04ec9cbe14fc6d6b37cfdd89·...·]-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="5043434757-73">(</span><span·class="p"·data-group-id="5043434757-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="6948503672-73">(</span><span·class="p"·data-group-id="6948503672-73">)</span><span·class="p">,</span><span·class="w">
400 ····</span><span·class="nf">send_procs</span><span·class="p"·data-group-id="5043434757-74">(</span><span·class="n">Procs</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5043434757-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:·a831c348d2306162c05c7941320a8e9b08184d837a7ed5b5013250b3ba8e5d80·...·]-74">)</span><span·class="p">,</span><span·class="w">400 ····</span><span·class="nf">send_procs</span><span·class="p"·data-group-id="6948503672-74">(</span><span·class="n">Procs</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6948503672-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:·ec4dbae490a6c42af4d81ad9261261e1770ad293210d4d8e4ce45913330e9dd2·...·]-74">)</span><span·class="p">,</span><span·class="w">
401 ····</span><span·class="nf">receive_msgs</span><span·class="p"·data-group-id="5043434757-77">(</span><span·class="n">RMsgs</span><span·class="p"·data-group-id="5043434757-77">)</span><span·class="p">,</span><span·class="w">401 ····</span><span·class="nf">receive_msgs</span><span·class="p"·data-group-id="6948503672-77">(</span><span·class="n">RMsgs</span><span·class="p"·data-group-id="6948503672-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="5043434757-78">(</span><span·class="p"·data-group-id="5043434757-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="6948503672-78">(</span><span·class="p"·data-group-id="6948503672-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="5043434757-79">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="5043434757-80">(</span><span·class="n">P</span><span·class="p"·data-group-id="5043434757-80">)</span><span·class="w">·</span><span·class="p">-&gt;</spa[·...·truncated·by·diffoscope;·len:·431,·SHA:·d66fa94cf5fb9b7197790a60ce8a6fbf48c95a35153401025afd9be46998a351·...·]-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="6948503672-79">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="6948503672-80">(</span><span·class="n">P</span><span·class="p"·data-group-id="6948503672-80">)</span><span·class="w">·</span><span·class="p">-&gt;</spa[·...·truncated·by·diffoscope;·len:·431,·SHA:·0670f33617c83d79ee546f4428c686c68fc7f57687189db03e7cecff301d18e2·...·]-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="5043434757-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="5043434757-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="6948503672-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="6948503672-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="3494627354-1">{</span><span·class="ss">&#39;file1&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="3494627354-2">[</span><span·class="ss">debug_info</span><span·class="p">,</span><span·class="p"·data-group-id="3494627354-3">{</span><span·c[·...·truncated·by·diffoscope;·len:·230,·SHA:·2d1986a4b282437cef991d1129452581185955de83c635988bd9d8007f66ee3b·...·]-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="6739671685-1">{</span><span·class="ss">&#39;file1&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="6739671685-2">[</span><span·class="ss">debug_info</span><span·class="p">,</span><span·class="p"·data-group-id="6739671685-3">{</span><span·c[·...·truncated·by·diffoscope;·len:·230,·SHA:·014866429424c2e057b2112e5c0eeb94429e63666a56edf38a899887592242e7·...·]-1">}</span><span·class="p">.</span><span·class="w">
146 </span><span·class="p"·data-group-id="3494627354-4">{</span><span·class="ss">&#39;*&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="3494627354-5">[</span><span·class="ss">debug_info</span><span·class="p"·data-group-id="3494627354-5">]</span><span·class="p"·data-group-id="3494[·...·truncated·by·diffoscope;·len:·6,·SHA:·f247f8e12026bc1a7c72a92207bc7b974b98a1346460a7e4b7f38ddd78b3dd2a·...·]-4">}</span><span·class="p">.</span></code></pre><h2·id="module-see-also"·class="section-heading">146 </span><span·class="p"·data-group-id="6739671685-4">{</span><span·class="ss">&#39;*&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="6739671685-5">[</span><span·class="ss">debug_info</span><span·class="p"·data-group-id="6739671685-5">]</span><span·class="p"·data-group-id="6739[·...·truncated·by·diffoscope;·len:·6,·SHA:·eb8bfe0988070a256b2485623923158675bfb58a2387b98a2b747f3d5d32dcfb·...·]-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.1/doc/html/compile.html">The·Compiler·Application</a></p>152 <p><a·href="../../../../lib/compiler-8.6.1/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="2170683739-1">(</span><span·class="ss">foo</span><span·class="p"·data-group-id="2170683739-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="3116883613-1">(</span><span·class="ss">foo</span><span·class="p"·data-group-id="3116883613-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="2170683739-2">(</span><span·class="p"·data-group-id="2170683739-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:·21af051ff2cf00c969405e5a6a23193d0d2b0f6c7f45a927a1f94fffab603d7f·...·]-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="3116883613-2">(</span><span·class="p"·data-group-id="3116883613-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:·4827ea09faeae390f4476fcb06bf11a4c4f4bb4c4ef63a7609aa9609f8f90ab1·...·]-2">)</span><span·class="p">.</span><span·class="w">
  
172 </span><span·class="nf">bar</span><span·class="p"·data-group-id="2170683739-4">(</span><span·class="p"·data-group-id="2170683739-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:·8e3a31833cbfc76561309cde3a7b1a91d195061b19e8ddc4901f6028577c47b6·...·]-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="3116883613-4">(</span><span·class="p"·data-group-id="3116883613-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:·b7f8a46239f922ee53ae0fc15fc2d7be379c47206934733672b8ada0beaa52ef·...·]-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="9070852519-1">(</span><span·class="ss">foo</span><span·class="p"·data-group-id="9070852519-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="4655246777-1">(</span><span·class="ss">foo</span><span·class="p"·data-group-id="4655246777-1">)</span><span·class="p">.</span><span·class="w">
174 </span><span·class="p"·data-group-id="9070852519-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">foo</span><span·class="p"·data-group-id="9070852519-2">}</span><span·class="gp·unselectable">174 </span><span·class="p"·data-group-id="4655246777-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">foo</span><span·class="p"·data-group-id="4655246777-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="9070852519-3">(</span><span·class="p"·data-group-id="9070852519-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="4655246777-3">(</span><span·class="p"·data-group-id="4655246777-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="9070852519-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="9070852519-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="4655246777-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="4655246777-4">)</span><span·class="p">.</span><span·class="w">
178 </span><span·class="p"·data-group-id="9070852519-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9070852519-6">[</span><span·class="p"·data-group-id="9070852519-7">{</span><span·class="p"·data-group-id="9070852519-8">{</span><span·class="ss">foo</spa[·...·truncated·by·diffoscope;·len:·977,·SHA:·f97b686bb625fe7c8ebb84f47e5ad13713760b8281cff810bd0880799c6dbb2e·...·]-5">}</span><span·class="gp·unselectable">178 </span><span·class="p"·data-group-id="4655246777-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="4655246777-6">[</span><span·class="p"·data-group-id="4655246777-7">{</span><span·class="p"·data-group-id="4655246777-8">{</span><span·class="ss">foo</spa[·...·truncated·by·diffoscope;·len:·977,·SHA:·2535c4481870b23938a9c1166910d12059dc89baf91f13f540ddbf98ff6013e8·...·]-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="9070852519-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="9070852519-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="4655246777-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="4655246777-13">)</span><span·class="p">.</span><span·class="w">
180 </span><span·class="p"·data-group-id="9070852519-14">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9070852519-15">[</span><span·class="p"·data-group-id="9070852519-16">{</span><span·class="p"·data-group-id="9070852519-17">{</span><span·class="ss">foo<[·...·truncated·by·diffoscope;·len:·1070,·SHA:·d17fa5d04e7b24020216144953303000d033c25e22cb4b6f39964a48d7309fcd·...·]9-1">)</span><span·class="p">.</span><span·class="w">180 </span><span·class="p"·data-group-id="4655246777-14">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="4655246777-15">[</span><span·class="p"·data-group-id="4655246777-16">{</span><span·class="p"·data-group-id="4655246777-17">{</span><span·class="ss">foo<[·...·truncated·by·diffoscope;·len:·1070,·SHA:·7abd85305e8ab06846bbca71237d45ae33d7211bb1abf6a027165ab905584cae·...·]9-1">)</span><span·class="p">.</span><span·class="w">
181 </span><span·class="p"·data-group-id="1410818559-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">foo</span><span·class="p"·data-group-id="1410818559-2">}</span><span·class="gp·unselectable">181 </span><span·class="p"·data-group-id="1869383309-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">foo</span><span·class="p"·data-group-id="1869383309-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="1410818559-3">(</span><span·class="p"·data-group-id="1410818559-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="1869383309-3">(</span><span·class="p"·data-group-id="1869383309-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="1410818559-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="1410818559-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="1869383309-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="1869383309-4">)</span><span·class="p">.</span><span·class="w">
185 </span><span·class="p"·data-group-id="1410818559-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="1410818559-6">[</span><span·class="p"·data-group-id="1410818559-7">{</span><span·class="p"·data-group-id="1410818559-8">{</span><span·class="ss">foo</span[·...·truncated·by·diffoscope;·len:·453,·SHA:·e064c27a6b9fcc3c9718765e7377d5aa7e78ddd0fb89d9b2e902544312893fa7·...·]9-5">}</span><span·class="gp·unselectable">185 </span><span·class="p"·data-group-id="1869383309-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="1869383309-6">[</span><span·class="p"·data-group-id="1869383309-7">{</span><span·class="p"·data-group-id="1869383309-8">{</span><span·class="ss">foo</span[·...·truncated·by·diffoscope;·len:·453,·SHA:·f46f28d9833b83c604b6c5ef62e48bc2ef6bd8254856cabd2cad2ffbdd280278·...·]9-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="1410818559-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="1410818559-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="1869383309-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="1869383309-10">)</span><span·class="p">.</span><span·class="w">
187 </span><span·class="p"·data-group-id="1410818559-11">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="1410818559-12">[</span><span·class="p"·data-group-id="1410818559-13">{</span><span·class="p"·data-group-id="1410818559-14">{</span><span·class="ss">foo</[·...·truncated·by·diffoscope;·len:·305,·SHA:·7de935b9b8572a3e289fd482ab283dbf9439da670aef5fbc155f124f43d010d4·...·]9-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="1869383309-11">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="1869383309-12">[</span><span·class="p"·data-group-id="1869383309-13">{</span><span·class="p"·data-group-id="1869383309-14">{</span><span·class="ss">foo</[·...·truncated·by·diffoscope;·len:·305,·SHA:·c450498789d3b779c0708698416e561ba7829a1173238986dd52e120ba378e4b·...·]9-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="9956667059-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="9956667059-2">[</span><span·class="mi">1</span><spa[·...·truncated·by·diffoscope;·len:·458,·SHA:·d9e6ebea8c9050be1804e8a846990600386095989cdf096985f85b63b5345077·...·]-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="8305358962-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="8305358962-2">[</span><span·class="mi">1</span><spa[·...·truncated·by·diffoscope;·len:·458,·SHA:·8784441944f549dec7f098098a83161c04d124b4964886634cd6a1ff24c5f9e5·...·]-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="9956667059-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="8305358962-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="9956667059-5">[</span><span·class="mf">100.00</span><span·class="p"·data-group-id="9956667059-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="8305358962-5">[</span><span·class="mf">100.00</span><span·class="p"·data-group-id="8305358962-5">]</span><span·class="w">
204 ····························</span><span·class="mi">32</span><span·class="w">············</span><span·class="p"·data-group-id="9956667059-6">[</span><span·class="w">·</span><span·class="mf">100.0</span><span·class="p"·data-group-id="9956667059-6">]</span><span·class="w">204 ····························</span><span·class="mi">32</span><span·class="w">············</span><span·class="p"·data-group-id="8305358962-6">[</span><span·class="w">·</span><span·class="mf">100.0</span><span·class="p"·data-group-id="8305358962-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.1/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.6/doc/html/code.html#coverage_support/0"><code·class="inline">code:coverage_support/0</code></a></li><li><a·href="../../../../lib/kernel-10.2.6/doc/html/code.html#get_coverage/2"><code·class="inline">code:get_coverage/2</code></a></li><li><a·href="../../../../lib/kernel-10.2.6/doc/html/code.html#reset_coverage/1"><code·class="inline">code:reset_coverage/1</code></a></li><li><a·href="../../../../lib/kernel-10.2.6/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.6/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.6/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.1/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.6/doc/html/code.html#coverage_support/0"><code·class="inline">code:coverage_support/0</code></a></li><li><a·href="../../../../lib/kernel-10.2.6/doc/html/code.html#get_coverage/2"><code·class="inline">code:get_coverage/2</code></a></li><li><a·href="../../../../lib/kernel-10.2.6/doc/html/code.html#reset_coverage/1"><code·class="inline">code:reset_coverage/1</code></a></li><li><a·href="../../../../lib/kernel-10.2.6/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.6/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.6/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">
878 KB
./usr/share/doc/erlang-doc/html/lib/tools-4.1.1/doc/html/tools.epub
4.44 KB
zipinfo {}
    
Offset 1, 30 lines modifiedOffset 1, 30 lines modified
1 Zip·file·size:·239544·bytes,·number·of·entries:·281 Zip·file·size:·239536·bytes,·number·of·entries:·28
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Apr-18·13:58·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Apr-18·15:19·mimetype
3 ?rw-r--r--··6.1·unx····33569·bx·defN·25-Apr-18·13:58·OEBPS/xref_chapter.xhtml3 ?rw-r--r--··6.1·unx····33569·bx·defN·25-Apr-18·15:19·OEBPS/xref_chapter.xhtml
4 ?rw-r--r--··6.1·unx···178309·bx·defN·25-Apr-18·13:58·OEBPS/xref.xhtml4 ?rw-r--r--··6.1·unx···178309·bx·defN·25-Apr-18·15:19·OEBPS/xref.xhtml
5 ?rw-r--r--··6.1·unx···167553·bx·defN·25-Apr-18·13:58·OEBPS/tprof.xhtml5 ?rw-r--r--··6.1·unx···167553·bx·defN·25-Apr-18·15:19·OEBPS/tprof.xhtml
6 ?rw-r--r--··6.1·unx······714·bx·defN·25-Apr-18·13:58·OEBPS/title.xhtml6 ?rw-r--r--··6.1·unx······714·bx·defN·25-Apr-18·15:19·OEBPS/title.xhtml
7 ?rw-r--r--··6.1·unx····22571·bx·defN·25-Apr-18·13:58·OEBPS/tags.xhtml7 ?rw-r--r--··6.1·unx····22571·bx·defN·25-Apr-18·15:19·OEBPS/tags.xhtml
8 ?rw-r--r--··6.1·unx···100772·bx·defN·25-Apr-18·13:58·OEBPS/notes.xhtml8 ?rw-r--r--··6.1·unx···100772·bx·defN·25-Apr-18·15:19·OEBPS/notes.xhtml
9 ?rw-r--r--··6.1·unx·····2010·bx·defN·25-Apr-18·13:58·OEBPS/nav.xhtml9 ?rw-r--r--··6.1·unx·····2010·bx·defN·25-Apr-18·15:19·OEBPS/nav.xhtml
10 ?rw-r--r--··6.1·unx····12605·bx·defN·25-Apr-18·13:58·OEBPS/make.xhtml10 ?rw-r--r--··6.1·unx····12605·bx·defN·25-Apr-18·15:19·OEBPS/make.xhtml
11 ?rw-r--r--··6.1·unx····47357·bx·defN·25-Apr-18·13:58·OEBPS/lcnt_chapter.xhtml11 ?rw-r--r--··6.1·unx····47357·bx·defN·25-Apr-18·15:19·OEBPS/lcnt_chapter.xhtml
12 ?rw-r--r--··6.1·unx····61087·bx·defN·25-Apr-18·13:58·OEBPS/lcnt.xhtml12 ?rw-r--r--··6.1·unx····61087·bx·defN·25-Apr-18·15:19·OEBPS/lcnt.xhtml
13 ?rw-r--r--··6.1·unx·····6942·bx·defN·25-Apr-18·13:58·OEBPS/fprof_chapter.xhtml13 ?rw-r--r--··6.1·unx·····6942·bx·defN·25-Apr-18·15:19·OEBPS/fprof_chapter.xhtml
14 ?rw-r--r--··6.1·unx···125787·bx·defN·25-Apr-18·13:58·OEBPS/fprof.xhtml14 ?rw-r--r--··6.1·unx···125787·bx·defN·25-Apr-18·15:19·OEBPS/fprof.xhtml
15 ?rw-r--r--··6.1·unx····12906·bx·defN·25-Apr-18·13:58·OEBPS/erlang_mode_chapter.xhtml15 ?rw-r--r--··6.1·unx····12906·bx·defN·25-Apr-18·15:19·OEBPS/erlang_mode_chapter.xhtml
16 ?rw-r--r--··6.1·unx····22625·bx·defN·25-Apr-18·13:58·OEBPS/erlang-el.xhtml16 ?rw-r--r--··6.1·unx····22625·bx·defN·25-Apr-18·15:19·OEBPS/erlang-el.xhtml
17 ?rw-r--r--··6.1·unx····36760·bx·defN·25-Apr-18·13:58·OEBPS/eprof.xhtml17 ?rw-r--r--··6.1·unx····36760·bx·defN·25-Apr-18·15:19·OEBPS/eprof.xhtml
18 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Apr-18·13:58·OEBPS/dist/epub-erlang-ESPT6BQV.css18 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Apr-18·15:19·OEBPS/dist/epub-erlang-ESPT6BQV.css
19 ?rw-r--r--··6.1·unx······499·bx·defN·25-Apr-18·13:58·OEBPS/dist/epub-LSJCIYTM.js19 ?rw-r--r--··6.1·unx······499·bx·defN·25-Apr-18·15:19·OEBPS/dist/epub-LSJCIYTM.js
20 ?rw-r--r--··6.1·unx····47208·bx·defN·25-Apr-18·13:58·OEBPS/cprof_chapter.xhtml20 ?rw-r--r--··6.1·unx····47208·bx·defN·25-Apr-18·15:19·OEBPS/cprof_chapter.xhtml
21 ?rw-r--r--··6.1·unx····39982·bx·defN·25-Apr-18·13:58·OEBPS/cprof.xhtml21 ?rw-r--r--··6.1·unx····39982·bx·defN·25-Apr-18·15:19·OEBPS/cprof.xhtml
22 ?rw-r--r--··6.1·unx····97748·bx·defN·25-Apr-18·13:58·OEBPS/cover_chapter.xhtml22 ?rw-r--r--··6.1·unx····97748·bx·defN·25-Apr-18·15:19·OEBPS/cover_chapter.xhtml
23 ?rw-r--r--··6.1·unx···101036·bx·defN·25-Apr-18·13:58·OEBPS/cover.xhtml23 ?rw-r--r--··6.1·unx···101036·bx·defN·25-Apr-18·15:19·OEBPS/cover.xhtml
24 ?rw-r--r--··6.1·unx·····3642·bx·defN·25-Apr-18·13:58·OEBPS/content.opf24 ?rw-r--r--··6.1·unx·····3642·bx·defN·25-Apr-18·15:19·OEBPS/content.opf
25 ?rw-r--r--··6.1·unx····12283·bx·stor·25-Apr-18·13:58·OEBPS/assets/venn2.gif25 ?rw-r--r--··6.1·unx····12283·bx·stor·25-Apr-18·15:19·OEBPS/assets/venn2.gif
26 ?rw-r--r--··6.1·unx·····9095·bx·stor·25-Apr-18·13:58·OEBPS/assets/venn1.gif26 ?rw-r--r--··6.1·unx·····9095·bx·stor·25-Apr-18·15:19·OEBPS/assets/venn1.gif
27 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Apr-18·13:58·OEBPS/assets/logo.png27 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Apr-18·15:19·OEBPS/assets/logo.png
28 ?rw-r--r--··6.1·unx······252·bx·defN·25-Apr-18·13:58·META-INF/container.xml28 ?rw-r--r--··6.1·unx······252·bx·defN·25-Apr-18·15:19·META-INF/container.xml
29 ?rw-r--r--··6.1·unx······162·bx·defN·25-Apr-18·13:58·META-INF/com.apple.ibooks.display-options.xml29 ?rw-r--r--··6.1·unx······162·bx·defN·25-Apr-18·15:19·META-INF/com.apple.ibooks.display-options.xml
30 28·files,·1163893·bytes·uncompressed,·234754·bytes·compressed:··79.8%30 28·files,·1163893·bytes·uncompressed,·234746·bytes·compressed:··79.8%
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,·Apr·18·2025·13:58: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,·Apr·18·2025·15:19:56,·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="9568787117-1">{</samp><samp·class="ss">&#39;file1&#39;</samp><samp·class="p">,</samp><samp·class="p"·data-group-id="9568787117-2">[</samp><samp·class="ss">debug_info</samp><samp·class="p">,</samp><samp·class="p"·data-group-id="9568787117-3">{</samp><samp·c[·...·truncated·by·diffoscope;·len:·230,·SHA:·0dd8354a5495a93018c77c6883acfd8340ba978744f9177f86a3a42c84bdd070·...·]-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="0350607070-1">{</samp><samp·class="ss">&#39;file1&#39;</samp><samp·class="p">,</samp><samp·class="p"·data-group-id="0350607070-2">[</samp><samp·class="ss">debug_info</samp><samp·class="p">,</samp><samp·class="p"·data-group-id="0350607070-3">{</samp><samp·c[·...·truncated·by·diffoscope;·len:·230,·SHA:·46b351aad1ef516c31dfc3ee9643b270438669b8af0904e7b2cb2cbffca44b8a·...·]-1">}</samp><samp·class="p">.</samp><samp·class="w">
41 </samp><samp·class="p"·data-group-id="9568787117-4">{</samp><samp·class="ss">&#39;*&#39;</samp><samp·class="p">,</samp><samp·class="p"·data-group-id="9568787117-5">[</samp><samp·class="ss">debug_info</samp><samp·class="p"·data-group-id="9568787117-5">]</samp><samp·class="p"·data-group-id="9568[·...·truncated·by·diffoscope;·len:·6,·SHA:·4505cc0f0cad979f99dd49cf8e1ef3c624e2304850fc6f36c7911ceaf19133d6·...·]-4">}</samp><samp·class="p">.</samp></code></pre><h2·id="module-see-also"·class="section-heading">41 </samp><samp·class="p"·data-group-id="0350607070-4">{</samp><samp·class="ss">&#39;*&#39;</samp><samp·class="p">,</samp><samp·class="p"·data-group-id="0350607070-5">[</samp><samp·class="ss">debug_info</samp><samp·class="p"·data-group-id="0350607070-5">]</samp><samp·class="p"·data-group-id="0350[·...·truncated·by·diffoscope;·len:·6,·SHA:·4a2a89d5659b368b268134808a9478f0d373cd365789835970ba8babcba3c84d·...·]-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="2758009133-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="2758009133-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·201,·SHA:·7571eca2d70c3e4c2db3b1a238577792188bc9297f359355150d6b5a385ec614·...·]-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="4599134695-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="4599134695-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·201,·SHA:·65c50e14d019a76bff395163cbe90385401adf6489a7bb1372d9afcc211bd336·...·]-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="2758009133-3">(</span><span·class="p"·data-group-id="2758009133-4">[</span><span·class="ss">start</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2758009133-5">{</span><span·class="ss">tracer</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·203,·SHA:·6c372d7cc3b01e7eb255b9e1b8a3ffe872dd65b3a290f8ed22ce17d902c529c3·...·]-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="4599134695-3">(</span><span·class="p"·data-group-id="4599134695-4">[</span><span·class="ss">start</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4599134695-5">{</span><span·class="ss">tracer</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·203,·SHA:·2b8af4e1d1bba13f5514bb7aeb4156c3027cc5226c3edffaf50541324236ffb5·...·]-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="2758009133-6">(</span><span·class="ss">stop</span><span·class="p"·data-group-id="2758009133-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="4599134695-6">(</span><span·class="ss">stop</span><span·class="p"·data-group-id="4599134695-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="5233310510-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="52333[·...·truncated·by·diffoscope;·len:·650,·SHA:·d1181e1e9e37d1b92a7586cf9ac4ea2290eb9ee646c31ef6e214dff1416c4905·...·]1-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="2837166686-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="28371[·...·truncated·by·diffoscope;·len:·650,·SHA:·adc09e874b965978a878383cc3788cf8c88b08ddc3f054ff5af1519bb6ba744e·...·]1-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="0417514667-1">(</samp><samp·class="p"·data-group-id="0417514667-2">[</samp><samp·class="ss">calls</samp><samp·class="p"·data-group-id="0417514667-2">]</samp><samp·class="p"·data-group-id="0417514667-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="6812144743-1">(</samp><samp·class="p"·data-group-id="6812144743-2">[</samp><samp·class="ss">calls</samp><samp·class="p"·data-group-id="6812144743-2">]</samp><samp·class="p"·data-group-id="6812144743-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="6794434466-1">(</samp><samp·class="p"·data-group-id="6794434466-2">[</samp><samp·class="ss">calls</samp><samp·class="p"·data-group-id="6794434466-2">]</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="ss">function</samp><samp·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·fc45721a22eb85a16855cde6ede2f081449e28a1a80c52b3d29fd43a60d0b0c6·...·]-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="7279669101-1">(</samp><samp·class="p"·data-group-id="7279669101-2">[</samp><samp·class="ss">calls</samp><samp·class="p"·data-group-id="7279669101-2">]</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="ss">function</samp><samp·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·54b289e31a9be57cd3b2113da99388e4f38171b61932af0704178ab92c4e2478·...·]-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="2680454518-1">(</samp><samp·class="p"·data-group-id="2680454518-2">[</samp><samp·class="ss">html</samp><samp·class="p"·data-group-id="2680454518-2">]</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="2680454518-3">[</samp[·...·truncated·by·diffoscope;·len:·95,·SHA:·7be8dee314b596dd0a8fe123f0e35ea6319303cab407ead2b73f9fd9d480a86f·...·]-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="9077975693-1">(</samp><samp·class="p"·data-group-id="9077975693-2">[</samp><samp·class="ss">html</samp><samp·class="p"·data-group-id="9077975693-2">]</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="9077975693-3">[</samp[·...·truncated·by·diffoscope;·len:·95,·SHA:·f62c135d6bd2c9f92d16cc1753223c6eedfd05a06a62e4e590767262b069a1cc·...·]-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="2407018977-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="2407018977-2">[</span><span·class="mi">1</span><spa[·...·truncated·by·diffoscope;·len:·458,·SHA:·773713e03420950b6cd36629b8a1f0a85b083ffd098fd827fc03d0c5ccf5a57c·...·]-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="1809611593-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="1809611593-2">[</span><span·class="mi">1</span><spa[·...·truncated·by·diffoscope;·len:·458,·SHA:·3263c5d1604c607efa2ae348db3df8078b58937c25444fe9597ac1660b848d33·...·]-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="2407018977-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="1809611593-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="2407018977-5">[</span><span·class="mf">100.00</span><span·class="p"·data-group-id="2407018977-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="1809611593-5">[</span><span·class="mf">100.00</span><span·class="p"·data-group-id="1809611593-5">]</span><span·class="w">
167 ····························</span><span·class="mi">32</span><span·class="w">············</span><span·class="p"·data-group-id="2407018977-6">[</span><span·class="w">·</span><span·class="mf">100.0</span><span·class="p"·data-group-id="2407018977-6">]</span><span·class="w">167 ····························</span><span·class="mi">32</span><span·class="w">············</span><span·class="p"·data-group-id="1809611593-6">[</span><span·class="w">·</span><span·class="mf">100.0</span><span·class="p"·data-group-id="1809611593-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="7080661455-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="7080661455-2">(</span><span·class="p"·data-group-id="7080661455-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:·d026ae4a75857df3048683a50ffea2d92114191a720a14c507d5f637470d2bcd·...·]-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="1498521226-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="1498521226-2">(</span><span·class="p"·data-group-id="1498521226-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:·dc17104e2916de119299b86db7bee790dfd4d715415b789d2ac8851ce540467b·...·]-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="7080661455-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="1498521226-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="7080661455-6">[</span><span·class="w">·</span><span·class="mf">3.61</span><span·class="p"·data-group-id="7080661455-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="1498521226-6">[</span><span·class="w">·</span><span·class="mf">3.61</span><span·class="p"·data-group-id="1498521226-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="7080661455-7">[</span><span·class="w">·</span><span·class="mf">3.61</span><span·class="p"·data-group-id="7080661455-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="1498521226-7">[</span><span·class="w">·</span><span·class="mf">3.61</span><span·class="p"·data-group-id="1498521226-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="7080661455-8">[</span><span·class="w">·</span><span·class="mf">4.82</span><span·class="p"·data-group-id="7080661455-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="1498521226-8">[</span><span·class="w">·</span><span·class="mf">4.82</span><span·class="p"·data-group-id="1498521226-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="7080661455-9">[</span><span·class="w">·</span><span·class="mf">8.43</span><span·class="p"·data-group-id="7080661455-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="1498521226-9">[</span><span·class="w">·</span><span·class="mf">8.43</span><span·class="p"·data-group-id="1498521226-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="7080661455-10">[</span><span·class="mf">19.28</span><span·class="p"·data-group-id="7080661455-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="1498521226-10">[</span><span·class="mf">19.28</span><span·class="p"·data-group-id="1498521226-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="7080661455-11">[</span><span·class="mf">21.69</span><span·class="p"·data-group-id="7080661455-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="1498521226-11">[</span><span·class="mf">21.69</span><span·class="p"·data-group-id="1498521226-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="7080661455-12">[</span><span·class="mf">38.55</span><span·class="p"·data-group-id="7080661455-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="1498521226-12">[</span><span·class="mf">38.55</span><span·class="p"·data-group-id="1498521226-12">]</span><span·class="w">
179 ·····································</span><span·class="mi">83</span><span·class="w">············</span><span·class="p"·data-group-id="7080661455-13">[</span><span·class="mf">100.0</span><span·class="p"·data-group-id="7080661455-13">]</span><span·class="w">179 ·····································</span><span·class="mi">83</span><span·class="w">············</span><span·class="p"·data-group-id="1498521226-13">[</span><span·class="mf">100.0</span><span·class="p"·data-group-id="1498521226-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="2935121569-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="2935121569-2">(</span><span·class="p"·data-group-id="2935121569-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nc">lists</s[·...·truncated·by·diffoscope;·len:·246,·SHA:·82fe2998b0d9ea129763af9872efb733aef2c953549a28b26c348622432cae1e·...·]69-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="4955430169-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="4955430169-2">(</span><span·class="p"·data-group-id="4955430169-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nc">lists</s[·...·truncated·by·diffoscope;·len:·246,·SHA:·0ce9ed4d2a430ff59d22b4aeaa74300196c525a9d5347f99a68dea9da82f23ca·...·]69-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="2935121569-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:·557,·SHA:·1555804c3c219f1839dae3b02e4ecc82cfc1eda33d9e8c4b6f1a4fc8b0753544·...·]69-1">)</span><span·class="p">.</span><span·class="w">181 ·················</span><span·class="p"·data-group-id="4955430169-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:·557,·SHA:·57ae68dc0cc85c4d4f94bdcb9cb303bcd10cca2baea500d6ace23ac7416c6660·...·]69-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="2935121569-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="4955430169-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="2935121569-8">[</span><span·class="mf">100.00</span><span·class="p"·data-group-id="2935121569-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="4955430169-8">[</span><span·class="mf">100.00</span><span·class="p"·data-group-id="4955430169-8">]</span><span·class="w">
185 ····························</span><span·class="mi">32</span><span·class="w">············</span><span·class="p"·data-group-id="2935121569-9">[</span><span·class="w">·</span><span·class="mf">100.0</span><span·class="p"·data-group-id="2935121569-9">]</span><span·class="w">185 ····························</span><span·class="mi">32</span><span·class="w">············</span><span·class="p"·data-group-id="4955430169-9">[</span><span·class="w">·</span><span·class="mf">100.0</span><span·class="p"·data-group-id="4955430169-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="2347080580-1">(</span><span·class="ss">test</span><span·class="p"·data-group-id="2347080580-1">)</span><span·class="p">.</span><span·class="w">187 examples·use·the·<code·class="inline">test</code>·module·defined·like·this:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="8147005894-1">(</span><span·class="ss">test</span><span·class="p"·data-group-id="8147005894-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="2347080580-2">(</span><span·class="p"·data-group-id="2347080580-3">[</span><span·class="ss">test_spawn</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="2347080580-3">]</span><span·class="p"·data-group-id="2347080580-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="8147005894-2">(</span><span·class="p"·data-group-id="8147005894-3">[</span><span·class="ss">test_spawn</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="8147005894-3">]</span><span·class="p"·data-group-id="8147005894-2">)</span><span·class="p">.</span><span·class="w">
189 </span><span·class="nf">test_spawn</span><span·class="p"·data-group-id="2347080580-4">(</span><span·class="p"·data-group-id="2347080580-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="8147005894-4">(</span><span·class="p"·data-group-id="8147005894-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
190 ····</span><span·class="p"·data-group-id="2347080580-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="2347080580-5">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·691,·SHA:·b1a0262a6919ab9d39bf1d761348bd881ecdee5074bef421bcd8f30e456d9ce5·...·]-6">)</span><span·class="p">,</span><span·class="w">190 ····</span><span·class="p"·data-group-id="8147005894-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="8147005894-5">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·691,·SHA:·e6d00b6b5df387f91ede40350c7477eb77f898af1e9e43a4e148bb757a52fa41·...·]-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="2347080580-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:·4bec9c183219174ecea7f3d2fdf27e1827c8e54c682b9fe5ea27b297e2c2867d·...·]-9">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">192 ········</span><span·class="p"·data-group-id="8147005894-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:·9c15d6a21837708714a4fa3fe6cc0bd8dcec2a5f6fe7071587bb0eb722aa3525·...·]-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="8391956370-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="8391956370-2">[</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·364,·SHA:·831f227b41aca7722eadd5ef7598e20e749c2c45e0ba8dedde4dc9166bdaeaeb·...·]-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="8467688684-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="8467688684-2">[</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·364,·SHA:·1c24df0d5838e8cb9a75f21a7f62d0e3943b2dcf8c9e809f7921e7071730b2ba·...·]-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="8391956370-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="8467688684-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="8391956370-5">[</span><span·class="w">·</span><span·class="mf">9.09</span><span·class="p"·data-group-id="8391956370-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="8467688684-5">[</span><span·class="w">·</span><span·class="mf">9.09</span><span·class="p"·data-group-id="8467688684-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="8391956370-6">[</span><span·class="mf">27.27</span><span·class="p"·data-group-id="8391956370-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="8467688684-6">[</span><span·class="mf">27.27</span><span·class="p"·data-group-id="8467688684-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="8391956370-7">[</span><span·class="mf">63.64</span><span·class="p"·data-group-id="8391956370-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="8467688684-7">[</span><span·class="mf">63.64</span><span·class="p"·data-group-id="8467688684-7">]</span><span·class="w">
200 ··································</span><span·class="mi">22</span><span·class="w">············</span><span·class="p"·data-group-id="8391956370-8">[</span><span·class="mf">100.0</span><span·class="p"·data-group-id="8391956370-8">]</span><span·class="w">200 ··································</span><span·class="mi">22</span><span·class="w">············</span><span·class="p"·data-group-id="8467688684-8">[</span><span·class="mf">100.0</span><span·class="p"·data-group-id="8467688684-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="8391956370-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="8467688684-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="8391956370-10">[</span><span·class="w">·</span><span·class="mf">9.86</span><span·class="p"·data-group-id="8391956370-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="8467688684-10">[</span><span·class="w">·</span><span·class="mf">9.86</span><span·class="p"·data-group-id="8467688684-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="8391956370-11">[</span><span·class="mf">90.14</span><span·class="p"·data-group-id="8391956370-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="8467688684-11">[</span><span·class="mf">90.14</span><span·class="p"·data-group-id="8467688684-11">]</span><span·class="w">
205 ·····························</span><span·class="mi">71</span><span·class="w">············</span><span·class="p"·data-group-id="8391956370-12">[</span><span·class="mf">100.0</span><span·class="p"·data-group-id="8391956370-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="8467688684-12">[</span><span·class="mf">100.0</span><span·class="p"·data-group-id="8467688684-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="7713336701-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="7713336701-2">[</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·17,·SHA:·85c1f5c585b93a13861a0589702d0acd308eba26e4874d98e3a7f98cd4bab227·...·]-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="7948236117-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="7948236117-2">[</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·17,·SHA:·f47597bfa39a900804236387c2ac3fa07f8000589f67b8ac85c81f398deb38e8·...·]-2">]</span><span·class="p">,</span><span·class="w">
208 ·················</span><span·class="p"·data-group-id="7713336701-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:·559,·SHA:·f147ef49d637548471feb4cfdf95296484b0fa18673d8190aa9ff9fc3d32eef8·...·]-1">)</span><span·class="p">.</span><span·class="w">208 ·················</span><span·class="p"·data-group-id="7948236117-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:·559,·SHA:·fc025b851c154511e7b1008c0a5deaa8f10f67f08cddc8864bb1f00165c4a0ea·...·]-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="7713336701-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="7948236117-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="7713336701-7">[</span><span·class="mf">68.82</span><span·class="p"·data-group-id="7713336701-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="7948236117-7">[</span><span·class="mf">68.82</span><span·class="p"·data-group-id="7948236117-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="7713336701-8">[</span><span·class="mf">15.05</span><span·class="p"·data-group-id="7713336701-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="7948236117-8">[</span><span·class="mf">15.05</span><span·class="p"·data-group-id="7948236117-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="7713336701-9">[</span><span·class="w">·</span><span·class="mf">7.53</span><span·class="p"·data-group-id="7713336701-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="7948236117-9">[</span><span·class="w">·</span><span·class="mf">7.53</span><span·class="p"·data-group-id="7948236117-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="7713336701-10">[</span><span·class="w">·</span><span·class="mf">6.45</span><span·class="p"·data-group-id="7713336701-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="7948236117-10">[</span><span·class="w">·</span><span·class="mf">6.45</span><span·class="p"·data-group-id="7948236117-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="7713336701-11">[</span><span·class="w">·</span><span·class="mf">2.15</span><span·class="p"·data-group-id="7713336701-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="7948236117-11">[</span><span·class="w">·</span><span·class="mf">2.15</span><span·class="p"·data-group-id="7948236117-11">]</span><span·class="w">
215 ··································</span><span·class="mi">93</span><span·class="w">············</span><span·class="p"·data-group-id="7713336701-12">[</span><span·class="mf">100.0</span><span·class="p"·data-group-id="7713336701-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·uns[·...·truncated·by·diffoscope;·len:·437,·SHA:·2adafa6f89a41962c0f506cf4a2e4996a6ba921de4bc11ee9f20aac5c529f36c·...·]-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="7948236117-12">[</span><span·class="mf">100.0</span><span·class="p"·data-group-id="7948236117-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·uns[·...·truncated·by·diffoscope;·len:·437,·SHA:·a6ad58852bd39a1e5df440fb2f0470aa2a0cd11809a34b0f8c3f9ca7fe537b33·...·]-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="1229721289-3">#{</span><span·class="ss">type</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">call_memory</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">report</span><span·class="w">[·...·truncated·by·diffoscope;·len:·184,·SHA:·93692699ee3158a9100b8937481036c5bd4d1a56c9ac38ef8d934619df2863a0·...·]-2">)</span><span·class="p">.</span><span·class="w">216 ·······································</span><span·class="p"·data-group-id="6740023377-3">#{</span><span·class="ss">type</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">call_memory</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">report</span><span·class="w">[·...·truncated·by·diffoscope;·len:·184,·SHA:·1fe7be613a8e58e6f15e4099773587548e4c22d9079202e34fcdb202301744e2·...·]-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="1229721289-4">(</span><span·class="nc">tprof</span><span·class="p">:</span><span·class="nf">inspect</span><span·class="p"·data-group-id="1229721289-5">(</span><span·class="n">ProfileData</span><span·class="p">,</span><span·class="w">·</span><span·class="ss[·...·truncated·by·diffoscope;·len:·377,·SHA:·db50d619274ee489c2ccc463c150174ff4d8ca277571a64fd94ac1022f2f236c·...·]-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="6740023377-4">(</span><span·class="nc">tprof</span><span·class="p">:</span><span·class="nf">inspect</span><span·class="p"·data-group-id="6740023377-5">(</span><span·class="n">ProfileData</span><span·class="p">,</span><span·class="w">·</span><span·class="ss[·...·truncated·by·diffoscope;·len:·377,·SHA:·39fb59dfa21551244704f71a598766702a48678d074a361b64e0af51fae271ef·...·]-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="1229721289-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="6740023377-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="1229721289-8">[</span><span·class="mf">63.64</span><span·class="p"·data-group-id="1229721289-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="6740023377-8">[</span><span·class="mf">63.64</span><span·class="p"·data-group-id="6740023377-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="1229721289-9">[</span><span·class="mf">27.27</span><span·class="p"·data-group-id="1229721289-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="6740023377-9">[</span><span·class="mf">27.27</span><span·class="p"·data-group-id="6740023377-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="1229721289-10">[</span><span·class="w">·</span><span·class="mf">9.09</span><span·class="p"·data-group-id="1229721289-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="6740023377-10">[</span><span·class="w">·</span><span·class="mf">9.09</span><span·class="p"·data-group-id="6740023377-10">]</span><span·class="w">
224 ··································</span><span·class="mi">22</span><span·class="w">············</span><span·class="p"·data-group-id="1229721289-11">[</span><span·class="mf">100.0</span><span·class="p"·data-group-id="1229721289-11">]</span><span·class="w">224 ··································</span><span·class="mi">22</span><span·class="w">············</span><span·class="p"·data-group-id="6740023377-11">[</span><span·class="mf">100.0</span><span·class="p"·data-group-id="6740023377-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="1229721289-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="6740023377-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="1229721289-13">[</span><span·class="mf">90.14</span><span·class="p"·data-group-id="1229721289-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="6740023377-13">[</span><span·class="mf">90.14</span><span·class="p"·data-group-id="6740023377-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="1229721289-14">[</span><span·class="w">·</span><span·class="mf">9.86</span><span·class="p"·data-group-id="1229721289-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="6740023377-14">[</span><span·class="w">·</span><span·class="mf">9.86</span><span·class="p"·data-group-id="6740023377-14">]</span><span·class="w">
229 ·····························</span><span·class="mi">71</span><span·class="w">············</span><span·class="p"·data-group-id="1229721289-15">[</span><span·class="mf">100.0</span><span·class="p"·data-group-id="1229721289-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="6740023377-15">[</span><span·class="mf">100.0</span><span·class="p"·data-group-id="6740023377-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.6/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="1439994587-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="1439994587-2">[</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·18,·SHA:·10866aaa4d5525098af26f93b6632e2927a93301f5c10a87f1ced6088c37294d·...·]-2">]</span><span·class="p">,</span><span·class="w">231 option·for·<a·href="../../../../lib/kernel-10.2.6/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="3100846990-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="3100846990-2">[</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·18,·SHA:·72924f7c883a6c786e6b0d59fc9463c7b9dc1cabdbcfa676ea883500da058ba8·...·]-2">]</span><span·class="p">,</span><span·class="w">
232 ·················</span><span·class="p"·data-group-id="1439994587-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:·bcfabd090c7eaf1f7c4e4699e780fd75896ca0d56d10d5d44e086cee27c8b799·...·]-1">)</span><span·class="p">.</span><span·class="w">232 ·················</span><span·class="p"·data-group-id="3100846990-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:·92a2c02fe3f1780a25f756c9a50674fff3ac25533108fe8d1e5007808deb5a23·...·]-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="1439994587-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="3100846990-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="1439994587-5">[</span><span·class="w">·</span><span·class="mf">9.09</span><span·class="p"·data-group-id="1439994587-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="3100846990-5">[</span><span·class="w">·</span><span·class="mf">9.09</span><span·class="p"·data-group-id="3100846990-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="1439994587-6">[</span><span·class="mf">27.27</span><span·class="p"·data-group-id="1439994587-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="3100846990-6">[</span><span·class="mf">27.27</span><span·class="p"·data-group-id="3100846990-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="1439994587-7">[</span><span·class="mf">63.64</span><span·class="p"·data-group-id="1439994587-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="3100846990-7">[</span><span·class="mf">63.64</span><span·class="p"·data-group-id="3100846990-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="7404521081-1">(</span><span·class="p"·data-group-id="7404521081-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="5016453171-1">(</span><span·class="p"·data-group-id="5016453171-1">)</span><span·class="p">.</span><span·class="w">
240 </span><span·class="p"·data-group-id="7404521081-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="7404521081-2">}</span><span·class="gp·unselectable">240 </span><span·class="p"·data-group-id="5016453171-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="5016453171-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="7404521081-3">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="7404521081-4">(</span><span·class="p"·data-group-id="7404521081-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="7404521081-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="7404521081-6">(</span><span·class="p"·data-group-id="7404521081-6">)</span><span·class="p"·data-group-id="7404521081-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="7404521081-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:·cb26e7fa3884d2d351d0970507049882d03e48ef361687b5554ed6cef6ed3277·...·]</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="5016453171-3">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="5016453171-4">(</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·565,·SHA:·437f05080914515749291c0b5494b1fb3c0d24cb1d0a8874bfcd175997addf69·...·]</span><span·class="w">
 242 ·················</span><span·class="p"·data-group-id="5016453171-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="5016453171-8">[</span><span·class="ss">pg</span><span·class="p"·data-group-id="5016453171-8">]</span><span·class="p"·data-group-id="5016453171-7">}</span><span·class="p"·data-group-id="5016453171-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="7404521081-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="5016453171-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="7404521081-10">[</span><span·class="w">·</span><span·class="mf">1.80</span><span·class="p"·data-group-id="7404521081-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="5016453171-10">[</span><span·class="w">·</span><span·class="mf">1.80</span><span·class="p"·data-group-id="5016453171-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="7404521081-11">[</span><span·class="w">·</span><span·class="mf">2.70</span><span·class="p"·data-group-id="7404521081-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="5016453171-11">[</span><span·class="w">·</span><span·class="mf">2.70</span><span·class="p"·data-group-id="5016453171-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="7404521081-12">[</span><span·class="w">·</span><span·class="mf">2.70</span><span·class="p"·data-group-id="7404521081-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="5016453171-12">[</span><span·class="w">·</span><span·class="mf">2.70</span><span·class="p"·data-group-id="5016453171-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="7404521081-13">[</span><span·class="w">·</span><span·class="mf">2.70</span><span·class="p"·data-group-id="7404521081-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="5016453171-13">[</span><span·class="w">·</span><span·class="mf">2.70</span><span·class="p"·data-group-id="5016453171-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="7404521081-14">[</span><span·class="w">·</span><span·class="mf">2.70</span><span·class="p"·data-group-id="7404521081-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="5016453171-14">[</span><span·class="w">·</span><span·class="mf">2.70</span><span·class="p"·data-group-id="5016453171-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="7404521081-15">[</span><span·class="w">·</span><span·class="mf">3.60</span><span·class="p"·data-group-id="7404521081-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="5016453171-15">[</span><span·class="w">·</span><span·class="mf">3.60</span><span·class="p"·data-group-id="5016453171-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="7404521081-16">[</span><span·class="w">·</span><span·class="mf">5.41</span><span·class="p"·data-group-id="7404521081-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="5016453171-16">[</span><span·class="w">·</span><span·class="mf">5.41</span><span·class="p"·data-group-id="5016453171-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="7404521081-17">[</span><span·class="w">·</span><span·class="mf">7.21</span><span·class="p"·data-group-id="7404521081-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="5016453171-17">[</span><span·class="w">·</span><span·class="mf">7.21</span><span·class="p"·data-group-id="5016453171-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="7404521081-18">[</span><span·class="w">·</span><span·class="mf">7.21</span><span·class="p"·data-group-id="7404521081-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="5016453171-18">[</span><span·class="w">·</span><span·class="mf">7.21</span><span·class="p"·data-group-id="5016453171-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="7404521081-19">[</span><span·class="w">·</span><span·class="mf">8.11</span><span·class="p"·data-group-id="7404521081-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="5016453171-19">[</span><span·class="w">·</span><span·class="mf">8.11</span><span·class="p"·data-group-id="5016453171-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="7404521081-20">[</span><span·class="w">·</span><span·class="mf">8.11</span><span·class="p"·data-group-id="7404521081-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="5016453171-20">[</span><span·class="w">·</span><span·class="mf">8.11</span><span·class="p"·data-group-id="5016453171-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="7404521081-21">[</span><span·class="w">·</span><span·class="mf">9.01</span><span·class="p"·data-group-id="7404521081-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="5016453171-21">[</span><span·class="w">·</span><span·class="mf">9.01</span><span·class="p"·data-group-id="5016453171-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="7404521081-22">[</span><span·class="w">·</span><span·class="mf">9.91</span><span·class="p"·data-group-id="7404521081-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="5016453171-22">[</span><span·class="w">·</span><span·class="mf">9.91</span><span·class="p"·data-group-id="5016453171-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="7404521081-23">[</span><span·class="mf">14.41</span><span·class="p"·data-group-id="7404521081-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="5016453171-23">[</span><span·class="mf">14.41</span><span·class="p"·data-group-id="5016453171-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="7404521081-24">[</span><span·class="mf">14.41</span><span·class="p"·data-group-id="7404521081-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="5016453171-24">[</span><span·class="mf">14.41</span><span·class="p"·data-group-id="5016453171-24">]</span><span·class="w">
260 ·······································</span><span·class="mi">111</span><span·class="w">············</span><span·class="p"·data-group-id="7404521081-25">[</span><span·class="mf">100.0</span><span·class="p"·data-group-id="7404521081-25">]</span><span·class="w">260 ·······································</span><span·class="mi">111</span><span·class="w">············</span><span·class="p"·data-group-id="5016453171-25">[</span><span·class="mf">100.0</span><span·class="p"·data-group-id="5016453171-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="7404521081-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="5016453171-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="7404521081-27">[</span><span·class="w">·</span><span·class="mf">3.03</span><span·class="p"·data-group-id="7404521081-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="5016453171-27">[</span><span·class="w">·</span><span·class="mf">3.03</span><span·class="p"·data-group-id="5016453171-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="7404521081-28">[</span><span·class="w">·</span><span·class="mf">3.03</span><span·class="p"·data-group-id="7404521081-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="5016453171-28">[</span><span·class="w">·</span><span·class="mf">3.03</span><span·class="p"·data-group-id="5016453171-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="7404521081-29">[</span><span·class="w">·</span><span·class="mf">4.04</span><span·class="p"·data-group-id="7404521081-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="5016453171-29">[</span><span·class="w">·</span><span·class="mf">4.04</span><span·class="p"·data-group-id="5016453171-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="7404521081-30">[</span><span·class="w">·</span><span·class="mf">4.04</span><span·class="p"·data-group-id="7404521081-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="5016453171-30">[</span><span·class="w">·</span><span·class="mf">4.04</span><span·class="p"·data-group-id="5016453171-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="7404521081-31">[</span><span·class="w">·</span><span·class="mf">5.05</span><span·class="p"·data-group-id="7404521081-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="5016453171-31">[</span><span·class="w">·</span><span·class="mf">5.05</span><span·class="p"·data-group-id="5016453171-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="7404521081-32">[</span><span·class="w">·</span><span·class="mf">6.06</span><span·class="p"·data-group-id="7404521081-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="5016453171-32">[</span><span·class="w">·</span><span·class="mf">6.06</span><span·class="p"·data-group-id="5016453171-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="7404521081-33">[</span><span·class="w">·</span><span·class="mf">8.08</span><span·class="p"·data-group-id="7404521081-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="5016453171-33">[</span><span·class="w">·</span><span·class="mf">8.08</span><span·class="p"·data-group-id="5016453171-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="7404521081-34">[</span><span·class="mf">10.10</span><span·class="p"·data-group-id="7404521081-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="5016453171-34">[</span><span·class="mf">10.10</span><span·class="p"·data-group-id="5016453171-34">]</span><span·class="w">
271 </span><span·class="nc">gen</span><span·class="p">:</span><span·class="ss">do_call</span><span·class="p">/</span><span·class="mi">4</span><span·class="w">··················</span><span·class="mi">1</span><span·class="w">·····</span><span·class="mi">16</span><span·class="w">········</span><span·class="mi">16</span><span·class="w">··</span><span·class="p"·data-group-id="7404521081-35">[</span><span·class="mf">16.16</span><span·class="p"·data-group-id="7404521081-35">]</span><span·class="w">271 </span><span·class="nc">gen</span><span·class="p">:</span><span·class="ss">do_call</span><span·class="p">/</span><span·class="mi">4</span><span·class="w">··················</span><span·class="mi">1</span><span·class="w">·····</span><span·class="mi">16</span><span·class="w">········</span><span·class="mi">16</span><span·class="w">··</span><span·class="p"·data-group-id="5016453171-35">[</span><span·class="mf">16.16</span><span·class="p"·data-group-id="5016453171-35">]</span><span·class="w">
Max diff block lines reached; 54241/159940 bytes (33.91%) of diff not shown.
40.9 KB
./usr/share/doc/erlang-doc/html/lib/tools-4.1.1/doc/html/xref_chapter.html
    
Offset 136, 69 lines modifiedOffset 136, 69 lines modified
136 reading;·not·all·of·the·concepts·used·are·explained,·and·it·is·assumed·that·the136 reading;·not·all·of·the·concepts·used·are·explained,·and·it·is·assumed·that·the
137 <a·href="xref.html">reference·manual</a>·has·been·at·least·skimmed.</p><h2·id="module-check"·class="section-heading">137 <a·href="xref.html">reference·manual</a>·has·been·at·least·skimmed.</p><h2·id="module-check"·class="section-heading">
138 ··<a·href="#module-check"·class="hover-link">138 ··<a·href="#module-check"·class="hover-link">
139 ····<i·class="ri-link-m"·aria-hidden="true"></i>139 ····<i·class="ri-link-m"·aria-hidden="true"></i>
140 ··</a>140 ··</a>
141 ··<span·class="text">Module·Check</span>141 ··<span·class="text">Module·Check</span>
142 </h2>142 </h2>
143 <p>Assume·we·want·to·check·the·following·module:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="2658634820-1">(</span><span·class="ss">my_module</span><span·class="p"·data-group-id="2658634820-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="0475604440-1">(</span><span·class="ss">my_module</span><span·class="p"·data-group-id="0475604440-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="2658634820-2">(</span><span·class="p"·data-group-id="2658634820-3">[</span><span·class="ss">t</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="2658634820-3">]</span><span·class="p"·data-group-id="2658634820-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="0475604440-2">(</span><span·class="p"·data-group-id="0475604440-3">[</span><span·class="ss">t</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="0475604440-3">]</span><span·class="p"·data-group-id="0475604440-2">)</span><span·class="p">.</span><span·class="w">
  
146 </span><span·class="nf">t</span><span·class="p"·data-group-id="2658634820-4">(</span><span·class="n">A</span><span·class="p"·data-group-id="2658634820-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="0475604440-4">(</span><span·class="n">A</span><span·class="p"·data-group-id="0475604440-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="2658634820-5">(</span><span·class="n">A</span><span·class="p"·data-group-id="2658634820-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="0475604440-5">(</span><span·class="n">A</span><span·class="p"·data-group-id="0475604440-5">)</span><span·class="p">.</span><span·class="w">
  
148 </span><span·class="nf">t2</span><span·class="p"·data-group-id="2658634820-6">(</span><span·class="p">_</span><span·class="p"·data-group-id="2658634820-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="0475604440-6">(</span><span·class="p">_</span><span·class="p"·data-group-id="0475604440-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="8247407970-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="8247407970-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="9043553384-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="9043553384-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="8247407970-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="8247407970-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="9043553384-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="9043553384-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="5870115121-1">(</span><span·class="ss">my_module</span><span·class="p"·data-group-id="5870115121-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="0377239538-1">(</span><span·class="ss">my_module</span><span·class="p"·data-group-id="0377239538-1">)</span><span·class="w">
157 </span><span·class="p"·data-group-id="5870115121-2">[</span><span·class="p"·data-group-id="5870115121-3">{</span><span·class="ss">deprecated</span><span·class="p">,</span><span·class="p"·data-group-id="5870115121-4">[</span><span·class="p"·data-group-id="5870115121-4">]</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·24,·SHA:·7860fe9039ee17f2c00d2e43c12c0a888fc7000c50f17eb61ce7b98f01d8501b·...·]-3">}</span><span·class="p">,</span><span·class="w">157 </span><span·class="p"·data-group-id="0377239538-2">[</span><span·class="p"·data-group-id="0377239538-3">{</span><span·class="ss">deprecated</span><span·class="p">,</span><span·class="p"·data-group-id="0377239538-4">[</span><span·class="p"·data-group-id="0377239538-4">]</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·24,·SHA:·4c77265f8eaff05303d54a46d81be138b204228a43f6d8e72f6d29d482cc0e8e·...·]-3">}</span><span·class="p">,</span><span·class="w">
158 ·</span><span·class="p"·data-group-id="5870115121-5">{</span><span·class="ss">undefined</span><span·class="p">,</span><span·class="p"·data-group-id="5870115121-6">[</span><span·class="p"·data-group-id="5870115121-7">{</span><span·class="p"·data-group-id="5870115121-8">{</span><span·class="ss">m[·...·truncated·by·diffoscope;·len:·575,·SHA:·4f73f58fb1e0e63dda16bc2230c48a310ed93420f7891dca29c08a85396f7491·...·]-5">}</span><span·class="p">,</span><span·class="w">158 ·</span><span·class="p"·data-group-id="0377239538-5">{</span><span·class="ss">undefined</span><span·class="p">,</span><span·class="p"·data-group-id="0377239538-6">[</span><span·class="p"·data-group-id="0377239538-7">{</span><span·class="p"·data-group-id="0377239538-8">{</span><span·class="ss">m[·...·truncated·by·diffoscope;·len:·575,·SHA:·f740da0b068bb85df839fb0a644588c558072819527bf56583abbc2098a0b010·...·]-5">}</span><span·class="p">,</span><span·class="w">
159 ·</span><span·class="p"·data-group-id="5870115121-10">{</span><span·class="ss">unused</span><span·class="p">,</span><span·class="p"·data-group-id="5870115121-11">[</span><span·class="p"·data-group-id="5870115121-12">{</span><span·class="ss">my_module</span><span·class="p">,</span><span·class="s[·...·truncated·by·diffoscope;·len:·264,·SHA:·9a76659a40f3604c4368b9ff82bfbadce0249cade53a288e51d756dcd7c609f9·...·]-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="0377239538-10">{</span><span·class="ss">unused</span><span·class="p">,</span><span·class="p"·data-group-id="0377239538-11">[</span><span·class="p"·data-group-id="0377239538-12">{</span><span·class="ss">my_module</span><span·class="p">,</span><span·class="s[·...·truncated·by·diffoscope;·len:·264,·SHA:·76899c69a1f6379f42eade4d74d458b4660515138dc17c8a429c85ff4782e163·...·]-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="8595598484-1">(</span><span·class="ss">s</span><span·class="p"·data-group-id="8595598484-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="2225181282-1">(</span><span·class="ss">s</span><span·class="p"·data-group-id="2225181282-1">)</span><span·class="p">.</span><span·class="w">
175 </span><span·class="p"·data-group-id="8595598484-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="8595598484-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="2225181282-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="2225181282-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="3232740029-1">(</span><span·class="ss">s</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3232740029-2">[</span><span·class="p"·data-group-id="3232740029-3">{</span><span·class="ss">verbose</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·415,·SHA:·b2fc2b9075ceff130f8b1e551c52ee0e03edd63dedde58e277a2fb1798c62601·...·]-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="6672075398-1">(</span><span·class="ss">s</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6672075398-2">[</span><span·class="p"·data-group-id="6672075398-3">{</span><span·class="ss">verbose</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·415,·SHA:·174883d9757ad16bbcfddb4fa8a5c9f2c89bbdfb4840c24cbadb01c0d0098b81·...·]-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="3232740029-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="3232740029-6">(</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·326,·SHA:·eb25c2e2a748194425a33fb458191c50380162b2ca38edf15fd92dfded3c2fae·...·]-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="6672075398-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="6672075398-6">(</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·326,·SHA:·aa0d2f30dd23a2e79220c888e8c563359d9b65b6da0a50c8fa13a45a3cbafcbe·...·]-5">)</span><span·class="p">.</span><span·class="w">
184 </span><span·class="p"·data-group-id="3232740029-8">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">otp</span><span·class="p"·data-group-id="3232740029-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="6672075398-8">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">otp</span><span·class="p"·data-group-id="6672075398-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.6/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.6/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="2777758266-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="2777758266-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="5291661808-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="5291661808-1">)</span><span·class="p">.</span><span·class="w">
187 </span><span·class="p"·data-group-id="2777758266-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2777758266-3">[</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="2777[·...·truncated·by·diffoscope;·len:·457,·SHA:·52913db41af20768c192426dabb76d7f9b2fb674fc72a41d5d05fe84f02f17a2·...·]-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="5291661808-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5291661808-3">[</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="5291[·...·truncated·by·diffoscope;·len:·457,·SHA:·999c09ad533f15ac94ffde44edeea33ee7836eabee00a5a8d979cc795601b967·...·]-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="3338605046-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="3338605046-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="1349748042-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="1349748042-1">)</span><span·class="p">.</span><span·class="w">
195 </span><span·class="p"·data-group-id="3338605046-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="3338605046-3">[</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="3338605046-3">]</span><span·[·...·truncated·by·diffoscope;·len:·35,·SHA:·14d96859e6f6c0cf316b45c87bd5b3ee606520e1b8cb089ee21e82d0b9db3d97·...·]-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="1349748042-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="1349748042-3">[</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="1349748042-3">]</span><span·[·...·truncated·by·diffoscope;·len:·35,·SHA:·7e8ffe2e52504f5a1fc3ad815a6740b0da457bee1fd3ea36b521cbe51ec99d28·...·]-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="3080288732-1">(</span><span·class="ss">s</span><span·class="p"·data-group-id="3080288732-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="8236690626-1">(</span><span·class="ss">s</span><span·class="p"·data-group-id="8236690626-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="3080288732-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="3080288732-3">(</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·70,·SHA:·f7f4d256374713c7faac67dc86edab863737bcf98a184cd3949eaac83e7190d8·...·]-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="8236690626-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="8236690626-3">(</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·70,·SHA:·368a48e31804c072f61c749e26faf71794a79da63787763023f4f0c201a97a51·...·]-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="7552769975-1">(</span><span·class="n">S</span><span·class="p"·data-group-id="7552769975-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="1291467922-1">(</span><span·class="n">S</span><span·class="p"·data-group-id="1291467922-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
272 ··</span><span·class="p"·data-group-id="7552769975-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="7552769975-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·285,·SHA:·2327ec065877ae8e2f00850a23f584d9f58bbcde9f5cc9ccc04f89b3fb0652bc·...·]-3">)</span><span·class="p">,</span><span·class="w">272 ··</span><span·class="p"·data-group-id="1291467922-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="1291467922-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·285,·SHA:·336c9317237635d5fc5ac67b69417c195f7af867950973051d43338dbd8a7220·...·]-3">)</span><span·class="p">,</span><span·class="w">
273 ··</span><span·class="p"·data-group-id="7552769975-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="7552769975-4">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·270,·SHA:·80843f8ba8dd9b4ef0b9cc472125806527ca5efb1fe55185dbc084151c84be3b·...·]-5">)</span><span·class="p">,</span><span·class="w">273 ··</span><span·class="p"·data-group-id="1291467922-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="1291467922-4">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·270,·SHA:·0c737436d9b03c29fe634d111fc298bf8b61538beaf9592274f63319c8fef31e·...·]-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="7552769975-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="7552769975-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="1291467922-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="1291467922-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="7552769975-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="7552769975-8">[</span><span·class="n">M</span><[·...·truncated·by·diffoscope;·len:·93,·SHA:·2273c842dccd34c97b3c10fe6d6507249513681c641c4e191c160432c03c3b2b·...·]-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="1291467922-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="1291467922-8">[</span><span·class="n">M</span><[·...·truncated·by·diffoscope;·len:·93,·SHA:·a3403f8f79552ebc8daab805a976a2e00c3ab8d66e933b4008029dd2348ffa01·...·]-7">)</span><span·class="p">,</span><span·class="w">
276 ······</span><span·class="p"·data-group-id="7552769975-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="7552769975-9">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·450,·SHA:·2cccd95e18e31bc435f6d6c57e076e3222a6901098375a3bfa9d190850f5668a·...·]-10">)</span><span·class="p">,</span><span·class="w">276 ······</span><span·class="p"·data-group-id="1291467922-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="1291467922-9">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·450,·SHA:·48874aabea4c0c47424ad1ffa445284fea69c36029237c9afcdc22e8da43450d·...·]-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="7552769975-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="7552769975-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="1291467922-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="1291467922-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="7552769975-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="7552769975-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="1291467922-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="1291467922-13">)</span><span·class="p">,</span><span·class="w">
281 ··</span><span·class="p"·data-group-id="7552769975-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="7552769975-14">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·291,·SHA:·96f1c75f45d6f44cbd758dfaaadd7ce9217cadac620027f9ab7dafbc7a550d2c·...·]-15">)</span><span·class="p">,</span><span·class="w">281 ··</span><span·class="p"·data-group-id="1291467922-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="1291467922-14">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·291,·SHA:·639d69b2822f9b9da75189ee80312bb09fde07106fee57500155aca36ee0b6b8·...·]-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="7552769975-16">(</span><span·class="p"·data-group-id="7552769975-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="7552769975-17">)</span><[·...·truncated·by·diffoscope;·len:·138,·SHA:·df61668640cb08f2653f0534b65efc2831060321b0d90fd9f84da59bed9d0ee9·...·]-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="1291467922-16">(</span><span·class="p"·data-group-id="1291467922-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="1291467922-17">)</span><[·...·truncated·by·diffoscope;·len:·138,·SHA:·80c54ad56845190414c388fbf840d08054ce9492f7fd8bafee4dc0956f72ad9f·...·]-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
616 B
./usr/share/doc/erlang-doc/html/lib/wx-2.4.3/doc/html/.build.gz
490 B
.build
    
Offset 15, 15 lines modifiedOffset 15, 15 lines modified
15 dist/lato-latin-300-normal-YUMVEFOL.woff215 dist/lato-latin-300-normal-YUMVEFOL.woff2
16 dist/lato-latin-400-normal-W7754I4D.woff216 dist/lato-latin-400-normal-W7754I4D.woff2
17 dist/lato-latin-700-normal-2XVSBPG4.woff217 dist/lato-latin-700-normal-2XVSBPG4.woff2
18 dist/lato-latin-ext-300-normal-VPGGJKJL.woff218 dist/lato-latin-ext-300-normal-VPGGJKJL.woff2
19 dist/lato-latin-ext-400-normal-N27NCBWW.woff219 dist/lato-latin-ext-400-normal-N27NCBWW.woff2
20 dist/lato-latin-ext-700-normal-Q2L5DVMW.woff220 dist/lato-latin-ext-700-normal-Q2L5DVMW.woff2
21 dist/remixicon-NKANDIL5.woff221 dist/remixicon-NKANDIL5.woff2
22 dist/search_data-E6C0A30D.js22 dist/search_data-7BF0929D.js
23 dist/sidebar_items-A20B6997.js23 dist/sidebar_items-A20B6997.js
24 gl.html24 gl.html
25 glu.html25 glu.html
26 index.html26 index.html
27 notes.html27 notes.html
28 search.html28 search.html
29 wx.html29 wx.html
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="2762552971-1">(</span><span·class="p"·data-group-id="2762552971-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="3347908659-1">(</span><span·class="p"·data-group-id="3347908659-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="2762552971-2">(</span><span·class="ss">wxVERTICAL</span><span·class="p"·data-group-id="2762552971-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="3347908659-2">(</span><span·class="ss">wxVERTICAL</span><span·class="p"·data-group-id="3347908659-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="4412241323-1">(</span><span·class="p"·data-group-id="4412241323-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="7579906219-1">(</span><span·class="p"·data-group-id="7579906219-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="4412241323-2">(</span><span·class="n">MyWin</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4412241323-3">[</span><span·class="p"·data-group-id="4412241323-4">{</span><span·class="ss">dir</span><span·class="p">,</span><[·...·truncated·by·diffoscope;·len:·204,·SHA:·0a00611b2fd263299ea26d29f66c14371b7674b54cf55de0f4ffe63885ef44af·...·]-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="7579906219-2">(</span><span·class="n">MyWin</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7579906219-3">[</span><span·class="p"·data-group-id="7579906219-4">{</span><span·class="ss">dir</span><span·class="p">,</span><[·...·truncated·by·diffoscope;·len:·204,·SHA:·41f7dd84f0967b3e9bb9b2169ae9e379b0d54f25aa3c0fb4e2396ea0be67b0cf·...·]-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="4412241323-5">(</span><span·class="n">MyWin</span><span·class="p"·data-group-id="4412241323-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="7579906219-5">(</span><span·class="n">MyWin</span><span·class="p"·data-group-id="7579906219-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.2/doc/html/unicode.html#t:charlist/0">unicode:charlist()</a></strong></p></li><li><p><strong><em>wxGBPosition</em>·is·represented·by·{Row,Column}</strong></p></li><li><p><strong><em>wxGBSpan</em>·is·represented·by·{RowSpan,ColumnSPan}</strong></p></li><li><p><strong><em>wxGridCellCoords</em>·is·represented·by·{Row,Column}</strong></p></li></ul><p>In·the·places·where·the·erlang·API·differs·from·the·original·one·it·should·be173 <a·href="../../../../lib/stdlib-6.2.2/doc/html/unicode.html#t:charlist/0">unicode:charlist()</a></strong></p></li><li><p><strong><em>wxGBPosition</em>·is·represented·by·{Row,Column}</strong></p></li><li><p><strong><em>wxGBSpan</em>·is·represented·by·{RowSpan,ColumnSPan}</strong></p></li><li><p><strong><em>wxGridCellCoords</em>·is·represented·by·{Row,Column}</strong></p></li></ul><p>In·the·places·where·the·erlang·API·differs·from·the·original·one·it·should·be
174 obvious·from·the·erlang·documentation·which·representation·has·been·used.·E.g.174 obvious·from·the·erlang·documentation·which·representation·has·been·used.·E.g.
175 the·C++·arrays·and/or·lists·are·sometimes·represented·as·erlang·lists·and175 the·C++·arrays·and/or·lists·are·sometimes·represented·as·erlang·lists·and
176 sometimes·as·tuples.</p><p>Colours·are·represented·with·{Red,Green,Blue[,Alpha]},·the·Alpha·value·is176 sometimes·as·tuples.</p><p>Colours·are·represented·with·{Red,Green,Blue[,Alpha]},·the·Alpha·value·is
177 optional·when·used·as·an·argument·to·functions,·but·it·will·always·be·returned177 optional·when·used·as·an·argument·to·functions,·but·it·will·always·be·returned
Offset 191, 22 lines modifiedOffset 191, 22 lines modified
191 ··<span·class="text">Multiple·processes·and·memory·handling</span>191 ··<span·class="text">Multiple·processes·and·memory·handling</span>
192 </h2>192 </h2>
193 <p>The·intention·is·that·each·erlang·application·calls·wx:new()·once·to·setup·it's193 <p>The·intention·is·that·each·erlang·application·calls·wx:new()·once·to·setup·it's
194 GUI·which·creates·an·environment·and·a·memory·mapping.·To·be·able·to·use·<em>wx</em>194 GUI·which·creates·an·environment·and·a·memory·mapping.·To·be·able·to·use·<em>wx</em>
195 from·several·processes·in·your·application,·you·must·share·the·environment.·You195 from·several·processes·in·your·application,·you·must·share·the·environment.·You
196 can·get·the·active·environment·with·<a·href="wx.html#get_env/0"><code·class="inline">wx:get_env/0</code></a>·and·set·it·in·the·new196 can·get·the·active·environment·with·<a·href="wx.html#get_env/0"><code·class="inline">wx:get_env/0</code></a>·and·set·it·in·the·new
197 processes·with·<a·href="wx.html#set_env/1"><code·class="inline">wx:set_env/1</code></a>.·Two·processes·or·applications·which·have·both197 processes·with·<a·href="wx.html#set_env/1"><code·class="inline">wx:set_env/1</code></a>.·Two·processes·or·applications·which·have·both
198 called·wx:new()·will·not·be·able·use·each·others·objects.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">··</span><span·class="nc">wx</span><span·class="p">:</span><span·class="nf">new</span><span·class="p"·data-group-id="1543796092-1">(</span><span·class="p"·data-group-id="1543796092-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="7599811610-1">(</span><span·class="p"·data-group-id="7599811610-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="1543796092-2">(</span><span·class="nc">wx</span><span·class="p">:</span><span·class="nf">null</span><span·class="p"·data-group-id="1543796092-3">(</span><span·class="p"·data-group-id="1543796092-3">)</span><span·class="p">,</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·309,·SHA:·439540ed6443c74097b26b66095c904676832d8d8cf893b58aeb396d992acdd8·...·]-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="7599811610-2">(</span><span·class="nc">wx</span><span·class="p">:</span><span·class="nf">null</span><span·class="p"·data-group-id="7599811610-3">(</span><span·class="p"·data-group-id="7599811610-3">)</span><span·class="p">,</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·309,·SHA:·bd9759201bd8628b11fa9256bf6ebf543bb88bd762e06d4031f316c6ff4e85b7·...·]-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="1543796092-5">(</span><span·class="p"·data-group-id="1543796092-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="7599811610-5">(</span><span·class="p"·data-group-id="7599811610-5">)</span><span·class="p">,</span><span·class="w">
201 ··</span><span·class="nf">spawn</span><span·class="p"·data-group-id="1543796092-6">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="1543796092-7">(</span><span·class="p"·data-group-id="1543796092-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="7599811610-6">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="7599811610-7">(</span><span·class="p"·data-group-id="7599811610-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="1543796092-8">(</span><span·class="n">Env</span><span·class="p"·data-group-id="1543796092-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="7599811610-8">(</span><span·class="n">Env</span><span·class="p"·data-group-id="7599811610-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="1543796092-6">)</span><span·class="p">,</span><span·class="w">205 ········</span><span·class="k">end</span><span·class="p"·data-group-id="7599811610-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
622 B
./usr/share/doc/erlang-doc/html/lib/wx-2.4.3/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-E6C0A30D.js"></script>124 <script·src="dist/search_data-7BF0929D.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>
1.28 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.21 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,·Apr·18·2025·14:01: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,·Apr·18·2025·15:27:18,·uncompressed·size·20,·method=store
19.5 KB
OEBPS/wx_object.xhtml
Max HTML report size reached
1.18 KB
OEBPS/content.opf
1.14 KB
OEBPS/content.opf
Max HTML report size reached
12.7 KB
OEBPS/chapter.xhtml
Max HTML report size reached
19.6 KB
./usr/share/doc/erlang-doc/html/lib/wx-2.4.3/doc/html/wx_object.html
    
Offset 132, 44 lines modifiedOffset 132, 44 lines modified
132 works·like·a·regular·gen_server·module·and·creates·a·server·per·object.</p><p>NOTE:·Currently·no·form·of·inheritance·is·implemented.</p><p>The·user·module·should·export:</p><p>init(Args)·should·return<br/>{wxWindow,·State}·|·{wxWindow,·State,·Timeout}·|·ignore·|·{stop,·Reason}</p><p>Asynchronous·window·event·handling:<br/>handle_event(#wx{},·State)·should·return<br/>{noreply,·State}·|·{noreply,·State,·Timeout}·|·{stop,·Reason,·State}</p><p>The·user·module·can·export·the·following·callback·functions:</p><p>handle_call(Msg,·{From,·Tag},·State)·should·return<br/>{reply,·Reply,·State}·|·{reply,·Reply,·State,·Timeout}·|·{noreply,·State}132 works·like·a·regular·gen_server·module·and·creates·a·server·per·object.</p><p>NOTE:·Currently·no·form·of·inheritance·is·implemented.</p><p>The·user·module·should·export:</p><p>init(Args)·should·return<br/>{wxWindow,·State}·|·{wxWindow,·State,·Timeout}·|·ignore·|·{stop,·Reason}</p><p>Asynchronous·window·event·handling:<br/>handle_event(#wx{},·State)·should·return<br/>{noreply,·State}·|·{noreply,·State,·Timeout}·|·{stop,·Reason,·State}</p><p>The·user·module·can·export·the·following·callback·functions:</p><p>handle_call(Msg,·{From,·Tag},·State)·should·return<br/>{reply,·Reply,·State}·|·{reply,·Reply,·State,·Timeout}·|·{noreply,·State}
133 |·{noreply,·State,·Timeout}·|·{stop,·Reason,·Reply,·State}</p><p>handle_cast(Msg,·State)·should·return<br/>{noreply,·State}·|·{noreply,·State,·Timeout}·|·{stop,·Reason,·State}</p><p>If·the·above·are·not·exported·but·called,·the·wx_object·process·will·crash.·The133 |·{noreply,·State,·Timeout}·|·{stop,·Reason,·Reply,·State}</p><p>handle_cast(Msg,·State)·should·return<br/>{noreply,·State}·|·{noreply,·State,·Timeout}·|·{stop,·Reason,·State}</p><p>If·the·above·are·not·exported·but·called,·the·wx_object·process·will·crash.·The
134 user·module·can·also·export:</p><p>Info·is·message·e.g.·{'EXIT',·P,·R},·{nodedown,·N},·...<br/>handle_info(Info,·State)·should·return·,·...<br/>{noreply,·State}·|·{noreply,·State,·Timeout}·|·{stop,·Reason,·State}</p><p>If·a·message·is·sent·to·the·wx_object·process·when·handle_info·is·not·exported,134 user·module·can·also·export:</p><p>Info·is·message·e.g.·{'EXIT',·P,·R},·{nodedown,·N},·...<br/>handle_info(Info,·State)·should·return·,·...<br/>{noreply,·State}·|·{noreply,·State,·Timeout}·|·{stop,·Reason,·State}</p><p>If·a·message·is·sent·to·the·wx_object·process·when·handle_info·is·not·exported,
135 the·message·will·be·dropped·and·ignored.</p><p>When·stop·is·returned·in·one·of·the·functions·above·with·Reason·=·normal·|135 the·message·will·be·dropped·and·ignored.</p><p>When·stop·is·returned·in·one·of·the·functions·above·with·Reason·=·normal·|
136 shutdown·|·Term,·terminate(State)·is·called.·It·lets·the·user·module·clean·up,136 shutdown·|·Term,·terminate(State)·is·called.·It·lets·the·user·module·clean·up,
137 it·is·always·called·when·server·terminates·or·when·wx_object()·in·the·driver·is137 it·is·always·called·when·server·terminates·or·when·wx_object()·in·the·driver·is
138 deleted.·If·the·Parent·process·terminates·the·Module:terminate/2·function·is138 deleted.·If·the·Parent·process·terminates·the·Module:terminate/2·function·is
139 called.<br/>terminate(Reason,·State)</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">··</span><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="5093585126-1">(</span><span·class="ss">myDialog</span><span·class="p"·data-group-id="5093585126-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="6079203987-1">(</span><span·class="ss">myDialog</span><span·class="p"·data-group-id="6079203987-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="5093585126-2">(</span><span·class="p"·data-group-id="5093585126-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:·e8ae56fc8ec70a1840fac951dd2e093b6ad29fc41e13476952dba5a52d9c5e81·...·]-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="6079203987-2">(</span><span·class="p"·data-group-id="6079203987-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:·e5625df041111a5af223cd710e21666cf38dd46d2d7761f0c70dae62a917d57a·...·]-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="5093585126-4">(</span><span·class="p"·data-group-id="5093585126-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="6079203987-4">(</span><span·class="p"·data-group-id="6079203987-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="5093585126-5">]</span><span·class="p"·data-group-id="5093585126-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="6079203987-5">]</span><span·class="p"·data-group-id="6079203987-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="5093585126-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="5093585126-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="6079203987-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="6079203987-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="5093585126-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="5093585126-8">[</span><span·class="n">Parent</span><span·class="p">,</span><span·class="n">Id</span><s[·...·truncated·by·diffoscope;·len:·246,·SHA:·7de1ac95f579e6359926523498ab246ab0cb1fde33f6b401f12dab9cc7c37087·...·]-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="6079203987-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="6079203987-8">[</span><span·class="n">Parent</span><span·class="p">,</span><span·class="n">Id</span><s[·...·truncated·by·diffoscope;·len:·246,·SHA:·ff146e779300947d438f17da23d4da92385cc7eacae0ef014ce90e5760ae2682·...·]-7">)</span><span·class="p">.</span><span·class="w">
  
147 ··</span><span·class="nf">show</span><span·class="p"·data-group-id="5093585126-10">(</span><span·class="n">Dialog</span><span·class="p"·data-group-id="5093585126-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="6079203987-10">(</span><span·class="n">Dialog</span><span·class="p"·data-group-id="6079203987-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="5093585126-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="5093585126-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="6079203987-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="6079203987-11">)</span><span·class="p">.</span><span·class="w">
  
149 ··</span><span·class="nf">destroy</span><span·class="p"·data-group-id="5093585126-12">(</span><span·class="n">Dialog</span><span·class="p"·data-group-id="5093585126-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="6079203987-12">(</span><span·class="n">Dialog</span><span·class="p"·data-group-id="6079203987-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="5093585126-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="5093585126-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="6079203987-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="6079203987-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="5093585126-14">(</span><span·class="p"·data-group-id="5093585126-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="5093585126-15">]</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·19,·SHA:·2ed0baf02737d6212a25afb6a723f7556cc746d1ae341ed2ce6f04d951756f7d·...·]-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="6079203987-14">(</span><span·class="p"·data-group-id="6079203987-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="6079203987-15">]</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·19,·SHA:·5ee727a5df78d9b7d412a7183b349b0222f71b6f859b17219c337a243e4842e7·...·]-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="5093585126-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:·a136a941318c5c2a1b8aa74cd8e9ba3e71eb19af65d791e7e348c3130be0ec19·...·]-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="6079203987-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:·299b69f60db85cd04e9efe377ac680793287b31e608d4ef9e1b2cc8701ac3ca1·...·]-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="5093585126-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="5093585126-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="6079203987-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="6079203987-18">)</span><span·class="p">,</span><span·class="w">
156 ·····</span><span·class="p"·data-group-id="5093585126-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="5093585126-19">}</span><span·class="p">.</span><span·class="w">156 ·····</span><span·class="p"·data-group-id="6079203987-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="6079203987-19">}</span><span·class="p">.</span><span·class="w">
  
157 ··</span><span·class="nf">handle_call</span><span·class="p"·data-group-id="5093585126-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:·5c4641b1717aeab224ad372f99a16edf157dc58110966a61993e61c3d6e6593f·...·]-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="6079203987-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:·f6afdf5f448735e52e1910bf557c2d0f09a7650528fd64654bf372e69cc0d4e5·...·]-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="5093585126-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="5093585126-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="6079203987-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="6079203987-21">)</span><span·class="p">,</span><span·class="w">
159 ·····</span><span·class="p"·data-group-id="5093585126-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="5093585126-22">}</span><span·class="p">;</span><span·class="w">159 ·····</span><span·class="p"·data-group-id="6079203987-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="6079203987-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="5093585126-23">(</span><span·class="o">#</span><span·class="ss">wx</span><span·class="p"·data-group-id="5093585126-24">{</span><span·class="p"·data-group-id="5093585126-24">}</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·f3b209c07e6c221f8b1f67277fb1ecebc8f69028aceb94b628f6b9c3ccfd7cc1·...·]-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="6079203987-23">(</span><span·class="o">#</span><span·class="ss">wx</span><span·class="p"·data-group-id="6079203987-24">{</span><span·class="p"·data-group-id="6079203987-24">}</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·de35072d30a55893e0bcf4e849aa7ec9bef382eecac45c9b1e1e97aea25caf05·...·]-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="5093585126-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="5093585126-26">[</span><span·class="p"·data-group-id="5093585126-26">]</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·3b9e1832e98a6e7f5ad8b4da65660112ad7594b7c620c6dc38915a642d72ca33·...·]-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="6079203987-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="6079203987-26">[</span><span·class="p"·data-group-id="6079203987-26">]</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·a621ece574be2dbe0ba8a762f811352a49bb78685e7e5c8cd2e31e389ad7079c·...·]-25">)</span><span·class="p">,</span><span·class="w">
163 ·····</span><span·class="p"·data-group-id="5093585126-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="5093585126-27">}</span><span·class="p">;</span><span·class="w">163 ·····</span><span·class="p"·data-group-id="6079203987-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="6079203987-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.2/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="9158749178-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="9158749178-2">(</span><span·class="p"·data-group-id="9158749178-2">)</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·494,·SHA:·1306d1869171a2dff4985fe910c7fa0143d24b897b9d72f7405ee78cdd57e1f6·...·]-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="7493128703-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="7493128703-2">(</span><span·class="p"·data-group-id="7493128703-2">)</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·494,·SHA:·92a4b6c833cdfe066cae0058aecb4aef33312fad5f3f548ffaef5d814d2b5872·...·]-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="0138113489-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="0138113489-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="2875412184-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="2875412184-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="0138113489-2">(</span><span·class="n">GlobalState</span><span·class="p"·data-group-id="0138113489-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="2875412184-2">(</span><span·class="n">GlobalState</span><span·class="p"·data-group-id="2875412184-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="0138113489-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="0138113489-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="2875412184-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="2875412184-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="0138113489-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="0138113489-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="2875412184-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="2875412184-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="2836766489-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="2836766489-2">(</span><span·class="p"·data-group-id="2836766489-2">)</span><span·class="p"·data-group-id="2836766489-1">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="2836766489-3">{</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="2836766489-4">(</span><span·class="p"·data-group-id="2836766489-4">)</span><span·class="p">,</span><span·class="w">·</span><span·class="n">HookState</span><span·class="p"·data-group-id="2836766489-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="8687381655-1">(</span><span·class="n">Entity</span><span·class="p">,</span><span·class="w">·</span><span·class="n">GlobalStat[·...·truncated·by·diffoscope;·len:·129,·SHA:·4648bdb44cc42767f0736f7ec883f44482e42f937315321c889264cf0920e2f5·...·]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="1704680213-1">{</span><span·class="ss">hook_fun</span><span·class="p">,</span><sp[·...·truncated·by·diffoscope;·len:·770,·SHA:·dd829866d8ac7dce29c07f1dd8f94dbff7cab9e2f0ae5bea58cfbf3fc72c934b·...·]
 155 Format·and·semantics:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">fun</span><span·class="p"·data-group-id="8196570406-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="8196570406-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="8687381655-2">(</span><span·class="n">GlobalState</span><span·class="p"·data-group-id="8687381655-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="8196570406-2">(</span><span·class="n">GlobalState</span><span·class="p"·data-group-id="8196570406-2">)</span><span·class="p">,</span><span·class="w">
157 ···</span><span·class="p"·data-group-id="8687381655-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="8687381655-3">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">foo</span><span·class="p"·data-group-id="8687381655-4">(</span><span·class="n">Entity</span><span·class="p">,</span><span·class="w">·</span><span·class="n">HookState</span><span·class="p"·data-group-id="8687381655-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="8687381655-5">(</span><span·class="n">H[·...·truncated·by·diffoscope;·len:·141,·SHA:·b277a3a31d5f13ea0f05389480db71c21fcffffffaf97ed4b40c4b0685407e9b·...·]">)</span><span·class="p">,</span><span·class="w">157 ···</span><span·class="p"·data-group-id="8196570406-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="8196570406-3">}</span><span·class="w">·</span><span·class="o">=<[·...·truncated·by·diffoscope;·len:·262,·SHA:·6e396df75982906e8e82913d1e977bbb05dc1a6d5f1e281ca8152a998057eda3·...·]">)</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="8196570406-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="8196570406-5">)</span><span·class="p">,</span><span·class="w">
159 ···</span><span·class="p"·data-group-id="8687381655-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="8687381655-6">}</span><span·class="w">159 ···</span><span·class="p"·data-group-id="8196570406-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="8196570406-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="6442284149-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="6442284149-2">(</span><span·class="p"·data-group-id="6442284149-2">)</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·493,·SHA:·76ed3af4fc00aba3f1ffda3c0b7303556dc25bb7af69eedb8402005f141fc6f8·...·]9-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="5157944659-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="5157944659-2">(</span><span·class="p"·data-group-id="5157944659-2">)</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·493,·SHA:·e109dc3693f63e50df87b8b5e88265d39d6ad8681aa7dc7e1ae70994a08afc6d·...·]9-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="9527500934-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9527500934-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:·c792acc3f4021620aa1d46e4bb557794eeea71ac3d18fa470dc683bf08ed2c3e·...·]-1">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">165 ···</span><span·class="p"·data-group-id="8232445900-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8232445900-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:·52e40e32988e42c2b9872e38db0cfe0beffc65ac9de1d60bd55f140712481374·...·]-1">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
166 ···</span><span·class="p"·data-group-id="9527500934-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9527500934-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:·ca0f0d3a5b125d7e6a995507b0f142cc384e85abb55a8819c27ca8fa92eb0d94·...·]-3">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">166 ···</span><span·class="p"·data-group-id="8232445900-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8232445900-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:·ac44946eb483b4b688b2e4a1b2a6c8aeec2b710581d22b41dc69cff683368aa0·...·]-3">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
167 ···</span><span·class="p"·data-group-id="9527500934-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="952750093[·...·truncated·by·diffoscope;·len:·331,·SHA:·f7042806cf48d8a2d430c4bf163dd90bacb79994aa5a23c057251b89dc5d5c27·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">167 ···</span><span·class="p"·data-group-id="8232445900-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="823244590[·...·truncated·by·diffoscope;·len:·331,·SHA:·7dc1a072b8bc2629894b6e666685ae534bced534550ca5f01894671b1dc4480e·...·]-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="5400032746-2">(</span><span·class="n">GlobalState</span><span·class="p"·data-group-id="5400032746-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="4120704561-2">(</span><span·class="n">GlobalState</span><span·class="p"·data-group-id="4120704561-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="5400032746-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="5400032746-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="4120704561-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="4120704561-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="7189077211-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="7189077211-2">(</span><span·class="p"·data-group-id="7189077211-2">)</span><span·class="p[·...·truncated·by·diffoscope;·len:·514,·SHA:·cee360ab4707714952960d2bccad376feb87d12d5b368e590fd82ee7bf712214·...·]-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="7512322772-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="7512322772-2">(</span><span·class="p"·data-group-id="7512322772-2">)</span><span·class="p[·...·truncated·by·diffoscope;·len:·514,·SHA:·c2b1fae28c38d3699dcb2d379c93ab5add0b5bb9fb27557aad5b86092b2a4999·...·]-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="1905753596-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="1905753596-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="2650402648-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="2650402648-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="1905753596-2">(</span><span·class="n">GlobalState</span><span·class="p"·data-group-id="1905753596-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="2650402648-2">(</span><span·class="n">GlobalState</span><span·class="p"·data-group-id="2650402648-2">)</span><span·class="p">,</span><span·class="w">
173 ···</span><span·class="p"·data-group-id="1905753596-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="1905753596-3">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·165,·SHA:·024e020380d1bdf4de0b05ca3c5b7797d1f0851851f173fb3edb86cdc3722827·...·]-4">)</span><span·class="p">,</span><span·class="w">173 ···</span><span·class="p"·data-group-id="2650402648-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="2650402648-3">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·165,·SHA:·ced0ca5fea2fe646c6ef327b7223d25ba6757feef0929fe996041631c38c6deb·...·]-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="1905753596-5">[</span><span·class="p"·data-group-id="1905753596-5">]</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">175 ······</span><span·class="p"·data-group-id="2650402648-5">[</span><span·class="p"·data-group-id="2650402648-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="1905753596-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="1905753596-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="2650402648-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="2650402648-6">)</span><span·class="p">,</span><span·class="w">
177 ·········</span><span·class="n">Exception</span><span·class="p"·data-group-id="1905753596-7">(</span><span·class="n">GlobalState2</span><span·class="p"·data-group-id="1905753596-7">)</span><span·class="p">;</span><span·class="w">177 ·········</span><span·class="n">Exception</span><span·class="p"·data-group-id="2650402648-7">(</span><span·class="n">GlobalState2</span><span·class="p"·data-group-id="2650402648-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="1905753596-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="1905753596-8">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·171,·SHA:·f8f0f3e3f187dac32e53b4615f42d0c4ae9fd61f371405583a263ce1c51379db·...·]-9">)</span><span·class="p">,</span><span·class="w">179 ·········</span><span·class="p"·data-group-id="2650402648-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="2650402648-8">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·171,·SHA:·53b214e68594c5c4465997cf0f7de06bc3a348e79db15d0217f0eab8e0b48fad·...·]-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="1905753596-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="1905753596-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="2650402648-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="2650402648-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="1905753596-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="1905753596-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="2650402648-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="2650402648-11">)</span><span·class="p">,</span><span·class="w">
182 ·········</span><span·class="n">Continue</span><span·class="p"·data-group-id="1905753596-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="1905753596-12">)</span><span·class="w">182 ·········</span><span·class="n">Continue</span><span·class="p"·data-group-id="2650402648-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="2650402648-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="3010783526-1">{</span><span·class="ss">rules</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ReadFun</span><span·class="w">·</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="3010783526-2">(</span><span·class="p"·data-group-id="3010783526-2">)</span><span·class="p">,</span><span·class="w">·</span><span·class="n">WriteFun</span><span·class="w">·</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="3010783526-3">(</span><span·class="p"·data-group-id="3010783526-3">)</span><span·class="p">,</span><span·class="w">·</span><span·class="n">RulesState</span><span·class="p"·data-group-id="3010783526-1">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w"> 
185 </span><span·class="p"·data-group-id="3010783526-4">{</span><span·class="ss">rules</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Table</span><span·class="w">·</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">ets</span><span·class=[·...·truncated·by·diffoscope;·len:·234,·SHA:·12243a9752c8ebe8551b193fcb385467bf38c5413d414c6c48e3008d95342151·...·]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="4294587771-1">{</span><span·class="ss">rules</span><span·class="p">,</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·717,·SHA:·4b255d0815e3314704f9f49223617ce40c48a28d717f0378a3435a01cb5fcc52·...·]
 185 </span><span·class="p"·data-group-id="4294587771-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="4294587771-5">(</span><span·class="p"·data-group-id="4294587771-5">)</span><span·class="p"·data-group-id="4294587771-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="4685122899-1">(</span><span·class="n">Context</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Definition</span><span·class="p">,</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·76,·SHA:·36756e2792dc9bce13e9e62be40780328af3ec35be22760378d121c01fb9e648·...·]-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="0295590685-1">(</span><span·class="n">Context</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Definition</span><span·class="p">,</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·76,·SHA:·05f5c347482ac29f5d8819fc365c98b8236335538be8163d4e87e505d6c28560·...·]-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="4685122899-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="4685122899-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="0295590685-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="0295590685-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="7286475197-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="7286475197-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="4711548882-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="4711548882-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="7286475197-2">[</span><span·class="n">Elem</span><span·class="p"·data-group-id="7286475197-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="4711548882-2">[</span><span·class="n">Elem</span><span·class="p"·data-group-id="4711548882-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="7286475197-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="7286475197-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="4711548882-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="4711548882-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="9124983893-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="9124983893-2">(</span><span·class="p"·data-group-id="9124983893-2">)</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·19,·SHA:·0a9a7c02093d40d3d215e8ec5e52b511c09ed771807cd399e29b9d2e86f5f4ac·...·]-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="6809626046-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="6809626046-2">(</span><span·class="p"·data-group-id="6809626046-2">)</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·19,·SHA:·f31520685a94c55f013dc590929706c0958aa4f7b11956331255c09de51a8661·...·]-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="9418986638-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="9418986638-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="8790966415-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="8790966415-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
206 ···</span><span·class="p"·data-group-id="9418986638-2">{</span><span·class="p"·data-group-id="9418986638-3">[</span><span·class="n">ParsedEntity</span><span·class="p">|</span><span·class="n">Acc</span><span·class="p"·data-group-id="9418986638-3">]</span><span·class="p">,</span><span·class="w">·</[·...·truncated·by·diffoscope;·len:·80,·SHA:·db192fb911f882f479b610407883dfd4036828b098c2ddf340fc05dd8cba3d33·...·]-2">}</span><span·class="p">.</span><span·class="w">206 ···</span><span·class="p"·data-group-id="8790966415-2">{</span><span·class="p"·data-group-id="8790966415-3">[</span><span·class="n">ParsedEntity</span><span·class="p">|</span><span·class="n">Acc</span><span·class="p"·data-group-id="8790966415-3">]</span><span·class="p">,</span><span·class="w">·</[·...·truncated·by·diffoscope;·len:·80,·SHA:·217fee4701bb849913575d87dc832c5e18830cb2a35508a4aa9faa95a387c157·...·]-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="9418986638-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="9418986638-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="8790966415-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="8790966415-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
209 ···</span><span·class="p"·data-group-id="9418986638-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="9418986638-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="8790966415-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="8790966415-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="9050676170-1">(</span><span·class="n">GlobalState</span><span·class="p"·data-group-id="9050676170-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="4929215345-1">(</span><span·class="n">GlobalState</span><span·class="p"·data-group-id="4929215345-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="6697430271-1">(</span><span·class="ss">tmp</span><span·class="p"·data-group-id="6697430271-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="9857115193-1">(</span><span·class="ss">tmp</span><span·class="p"·data-group-id="9857115193-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="6697430271-2">(</span><span·class="s">&quot;xmerl.hrl&quot;</span><span·class="p"·data-group-id="6697430271-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="9857115193-2">(</span><span·class="s">&quot;xmerl.hrl&quot;</span><span·class="p"·data-group-id="9857115193-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="6697430271-3">(</span><span·class="p"·data-group-id="6697430271-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:·0aadb1099cfcf0e88a5b60882f8f3a0c9817573e537b8bba4e1b55cb335ce235·...·]-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="9857115193-3">(</span><span·class="p"·data-group-id="9857115193-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:·589168a236db3399fe7a30f1053e035dff23edb0adc34510cc41a0218ee54271·...·]-3">)</span><span·class="p">.</span><span·class="w">
  
226 </span><span·class="nf">file1</span><span·class="p"·data-group-id="6697430271-5">(</span><span·class="n">F</span><span·class="p"·data-group-id="6697430271-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:·b67248ab84a011f475d2d2daa15e15abb2eeb760593458f3ef575b3cadc0bfed·...·]-6">)</span><span·class="p">.</span><span·class="w">226 </span><span·class="nf">file1</span><span·class="p"·data-group-id="9857115193-5">(</span><span·class="n">F</span><span·class="p"·data-group-id="9857115193-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:·b35bf613c9b5c4c4b02d39d833118474267cd46ecce1dc1d9700de3690c5c301·...·]-6">)</span><span·class="p">.</span><span·class="w">
  
227 </span><span·class="nf">file2</span><span·class="p"·data-group-id="6697430271-7">(</span><span·class="n">F</span><span·class="p"·data-group-id="6697430271-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:·54c16621e81f09d9075a04fb08bb6544d05c695b390a91bf4f5dc7513bd51559·...·]-8">)</span><span·class="p">.</span><span·class="w">227 </span><span·class="nf">file2</span><span·class="p"·data-group-id="9857115193-7">(</span><span·class="n">F</span><span·class="p"·data-group-id="9857115193-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:·a9d298e953eb520cd9fc4b716cf13c9d79a9534ffe557fa840c6d97297c1bef9·...·]-8">)</span><span·class="p">.</span><span·class="w">
  
228 </span><span·class="nf">file3</span><span·class="p"·data-group-id="6697430271-11">(</span><span·class="n">F</span><span·class="p"·data-group-id="6697430271-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:·bf978dd2b88d7a6621858ed1abd562359f7cb81f16c840de492bf4fddd3963b0·...·]-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="9857115193-11">(</span><span·class="n">F</span><span·class="p"·data-group-id="9857115193-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:·f147392d709a96e3e6a2dd3a29ca4f5df463ec56dd8ae0f7c3cd4df7918b9946·...·]-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="6697430271-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="9857115193-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="6697430271-15">[</span><span·class="p"·data-group-id="6697430271-16">{</span><span·class="ss">space</span><span·class="p">,</span><span·class="ss">normalize</span><span·class="p"·data-group-id="6697430271-16">}</span><span·class="p">,</span><span·class="w"[·...·truncated·by·diffoscope;·len:·263,·SHA:·aecb58f0bbe061113837a83368493af7c12cd8bd5cb5f8c85843e62471d1ba52·...·]-15">]</span><span·class="p">)</span><span·class="p">.</span></code></pre>230 </span><span·class="p"·data-group-id="9857115193-15">[</span><span·class="p"·data-group-id="9857115193-16">{</span><span·class="ss">space</span><span·class="p">,</span><span·class="ss">normalize</span><span·class="p"·data-group-id="9857115193-16">}</span><span·class="p">,</span><span·class="w"[·...·truncated·by·diffoscope;·len:·263,·SHA:·f6439305d3d4f61a21141a385ecabf262e4b1a433566ea4eebc77fe1425cdd57·...·]-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.2/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="2407600929-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="1173767893-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="2407600929-2">[</span><span·class="p"·data-group-id="2407600929-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="1173767893-2">[</span><span·class="p"·data-group-id="1173767893-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="2407600929-3">[</span><span·class="p"·data-group-id="2407600929-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="1173767893-3">[</span><span·class="p"·data-group-id="1173767893-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="2407600929-4">[</span><span·class="p"·data-group-id="2407600929-5">{</span><span·class="ss">xmlText</span><span·class="p">,</span><span·class="p"·data-group-id="2407600929-6">[</span><span·class="p"·data-group-id="2407600929-7">{</span><span·class="ss">dog[·...·truncated·by·diffoscope;·len:·329,·SHA:·def0047b82862452ffb34dc69d8260799b5f280960258854da2ad902ba0b66ef·...·]-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="1173767893-4">[</span><span·class="p"·data-group-id="1173767893-5">{</span><span·class="ss">xmlText</span><span·class="p">,</span><span·class="p"·data-group-id="1173767893-6">[</span><span·class="p"·data-group-id="1173767893-7">{</span><span·class="ss">dog[·...·truncated·by·diffoscope;·len:·329,·SHA:·9525eb3096a7778380b2deb7a59c5d609a507acaa18ecc48c81cb3f39d32294b·...·]-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="2407600929-5">}</span><span·class="p"·data-group-id="2407600929-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="1173767893-5">}</span><span·class="p"·data-group-id="1173767893-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="2407600929-1">}</span></code></pre><p>Where·the·content·of·the·top·element·is:205 ············</span><span·class="p"·data-group-id="1173767893-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="0201726257-1">{</span><span·class="n">ParseResult</span><span·class="p">,</span><span·class="n">Misc</span><span·class="p"·data-group-id="0201726257-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:·5895da0dbd2d9545121b4ca42b219db2a984fd441638467c8121fe03c8c888b8·...·]-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="2381745354-1">{</span><span·class="n">ParseResult</span><span·class="p">,</span><span·class="n">Misc</span><span·class="p"·data-group-id="2381745354-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:·94ddbed4d5164ba85f0036d23073f947aaadf74c44b2fba17c24d56aba3e9ab8·...·]-2">)</span><span·class="p">.</span><span·class="w">
274 </span><span·class="p"·data-group-id="0201726257-3">{</span><span·class="p"·data-group-id="0201726257-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="2381745354-3">{</span><span·class="p"·data-group-id="2381745354-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="0201726257-5">[</span><span·class="p"·data-group-id="0201726257-5">]</span><span·class="p">,</span><span·class="w">276 ·············</span><span·class="p"·data-group-id="2381745354-5">[</span><span·class="p"·data-group-id="2381745354-5">]</span><span·class="p">,</span><span·class="w">
277 ·············</span><span·class="p"·data-group-id="0201726257-6">{</span><span·class="ss">xmlNamespace</span><span·class="p">,</span><span·class="p"·data-group-id="0201726257-7">[</span><span·class="p"·data-group-id="0201726257-7">]</span><span·class="p">,</span><span·class="p"·data-group-id="0201726257-8"[·...·truncated·by·diffoscope;·len:·103,·SHA:·760454ea1a1b327a0cb59a47e2417d3f13c977f30ca7611b4de463da010d782a·...·]-6">}</span><span·class="p">,</span><span·class="w">277 ·············</span><span·class="p"·data-group-id="2381745354-6">{</span><span·class="ss">xmlNamespace</span><span·class="p">,</span><span·class="p"·data-group-id="2381745354-7">[</span><span·class="p"·data-group-id="2381745354-7">]</span><span·class="p">,</span><span·class="p"·data-group-id="2381745354-8"[·...·truncated·by·diffoscope;·len:·103,·SHA:·efcce57369926a0f2f0dbcbfbeb38705bc9375e51690d03727c262764d1a8672·...·]-6">}</span><span·class="p">,</span><span·class="w">
278 ·············</span><span·class="p"·data-group-id="0201726257-9">[</span><span·class="p"·data-group-id="0201726257-9">]</span><span·class="p">,</span><span·class="w">278 ·············</span><span·class="p"·data-group-id="2381745354-9">[</span><span·class="p"·data-group-id="2381745354-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="0201726257-10">[</span><span·class="p"·data-group-id="0201726257-10">]</span><span·class="p">,</span><span·class="w">280 ·············</span><span·class="p"·data-group-id="2381745354-10">[</span><span·class="p"·data-group-id="2381745354-10">]</span><span·class="p">,</span><span·class="w">
281 ·············</span><span·class="p"·data-group-id="0201726257-11">[</span><span·class="p"·data-group-id="0201726257-12">{</span><span·class="ss">xmlText</span><span·class="p">,</span><span·class="p"·data-group-id="0201726257-13">[</span><span·class="p"·data-group-id="0201726257-14">{</span><span·class="ss"[·...·truncated·by·diffoscope;·len:·344,·SHA:·559cde24b5ec3d808071b7f28014788a71704d1c46ec09fd69230537ace163f6·...·]-15">]</span><span·class="p">,</span><span·class="s">&quot;\281 ·············</span><span·class="p"·data-group-id="2381745354-11">[</span><span·class="p"·data-group-id="2381745354-12">{</span><span·class="ss">xmlText</span><span·class="p">,</span><span·class="p"·data-group-id="2381745354-13">[</span><span·class="p"·data-group-id="2381745354-14">{</span><span·class="ss"[·...·truncated·by·diffoscope;·len:·344,·SHA:·b0b012e545e269ff0963114e19815fdd498143eada13465e3ffdc2298406fa82·...·]-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="0201726257-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="2381745354-12">}</span><span·class="p">,</span><span·class="w">
283 ··············</span><span·class="p"·data-group-id="0201726257-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="2381745354-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="0201726257-17">[</span><span·class="p"·data-group-id="0201726257-17">]</span><span·class="p">,</span><span·class="w">285 ··························</span><span·class="p"·data-group-id="2381745354-17">[</span><span·class="p"·data-group-id="2381745354-17">]</span><span·class="p">,</span><span·class="w">
286 ··························</span><span·class="p"·data-group-id="0201726257-18">{</span><span·class="ss">xmlNamespace</span><span·class="p">,</span><span·class="p"·data-group-id="0201726257-19">[</span><span·class="p"·data-group-id="0201726257-19">]</span><span·class="p">,</span><span·class="p"·data-group-id="0201726257-20">[</span><span·class="p"·data-group-id="0201726257-20">]</span><span·class="p"·data-group-id="0201726257-18">}</span><span·class="p">,</span><span·class="w"> 
287 ··························</span><span·class="p"·data-group-id="0201726257-21">[</span><span·class="p"·data-group-id="0201726257-22">{</span><span·class="ss">motorcycles</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="0201726257-22">}</span><span·class="p"·data-group-id="0201726257[·...·truncated·by·diffoscope;·len:·6,·SHA:·c42b35cf2cca49aca1ee316dcc19bbdf8814a54362bad303a23d01383e3174bb·...·]</span><span·class="p">,</span><span·class="w">286 ··························</span><span·class="p"·data-group-id="2381745354-18">{</span><span·class="ss">xmlNamespace</span><span·class="p">,</span><span·class="p"·data-group-id="2381745354-19">[</span><span·class="p"·data-group-id="2381745354-19">]</span><span·class="p">,</span><span·class="p"·data-group-id="2381745354[·...·truncated·by·diffoscope;·len:·114,·SHA:·8e40898feb9dc820ebd866a7c56c9d4fcd6a5eb9a621d05e52806d164af2c46a·...·]</span><span·class="p">,</span><span·class="w">
 287 ··························</span><span·class="p"·data-group-id="2381745354-21">[</span><span·class="p"·data-group-id="2381745354-22">{</span><span·class="ss">motorcycles</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="2381745354-22">}</span><span·class="p"·data-group-id="2381745354-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="0201726257-23">[</span><span·class="p"·data-group-id="0201726257-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="0201726257-25">[</span><span·class="p"·data-group-id="0201726257-25">]</span><span·class="p">,</span><span·class="p"·data-group-id="0201726257-26">[</span><span·class="p"·data-group-id="0201726257-26">]</span><span·class="p">,</span><span·class="p"·data-group-id="0201726257-27">[</span><span·class="p"·data-group-id="0201726257-27">]</span><span·class="p">,</span><span·class="p"·data-group-id="0201726257-28">[</span><span·class="p"·data-group-id="0201726257-28">]</span><span·class="p">|</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="0201726257-24">}</span><span·class="p">,</span><span·class="w"> 
290 ···························</span><span·class="p"·data-group-id="0201726257-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="0201726257-30">[</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·488,·SHA:·17db314d4eb0ba85ceda86ed4cea66d7bb097f6b79ee7f3b710f79f893c6ea26·...·]</span><span·class="p">,</span><span·class="w">289 ··························</span><span·class="p"·data-group-id="2381745354-23">[</span><span·class="p"·data-group-id="2381745354-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:·289ac67facacaaaea8f1c0d52dda61dbaed727fd0e753c508c8bf1e674d744e9·...·]</span><span·class="p">,</span><span·class="w">
 290 ···························</span><span·class="p"·data-group-id="2381745354-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="2381745354-30">[</span><span·class="p"·data-group-id="2381745354-30">]</span><span·class="p">,</span><span·class="p"·data-group-id="2381745354-31">[</span><span·class="p"·data-group-id="2381745354-31">]</span><span·class="p">,</span><span·class="p"·data-group-id="2381745354-32">[</span><span·class="p"·data-group-id="2381745354-32">]</span><span·class="p">|</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="2381745354-29">}</span><span·class="p"·data-group-id="2381745354-23">]</span><span·class="p">,</span><span·class="w">
291 ··························</span><span·class="p"·data-group-id="0201726257-33">[</span><span·class="p"·data-group-id="0201726257-34">{</span><span·class="ss">xmlText</span><span·class="p">,</span><span·class="p"·data-group-id="0201726257-35">[</span><span·class="p"·data-group-id="0201726257-36">{</span><span·class="ss"[·...·truncated·by·diffoscope;·len:·419,·SHA:·68136e57fe073288e3cf04c19f3ef26fc4fb07a4b61af43d3146b3d3a6dc4508·...·]-35">]</span><span·class="p">,</span><span·class="w">291 ··························</span><span·class="p"·data-group-id="2381745354-33">[</span><span·class="p"·data-group-id="2381745354-34">{</span><span·class="ss">xmlText</span><span·class="p">,</span><span·class="p"·data-group-id="2381745354-35">[</span><span·class="p"·data-group-id="2381745354-36">{</span><span·class="ss"[·...·truncated·by·diffoscope;·len:·419,·SHA:·edfc46e78215075eaf915a026b4a0f35dcd5f3a805b6b39bfbae164be8e42133·...·]-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="0201726257-38">[</span><span·class="p"·data-group-id="0201726257-38">]</span><span·class="p">|</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="0201726257-34">}</span><span·class="p">,</span><span·class="w">293 ····································</span><span·class="p"·data-group-id="2381745354-38">[</span><span·class="p"·data-group-id="2381745354-38">]</span><span·class="p">|</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="2381745354-34">}</span><span·class="p">,</span><span·class="w">
294 ···························</span><span·class="p"·data-group-id="0201726257-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="0201726257-40">[</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·174,·SHA:·75cfa18a984cb37992178bdf7fd740fcdfe623d805d1232846abd61c73e15d57·...·]-39">}</span><span·class="p">,</span><span·class="w">294 ···························</span><span·class="p"·data-group-id="2381745354-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="2381745354-40">[</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·174,·SHA:·891458381e7b56c0d82f93de11d7938b2fee28eb55312ed37177a44a1460041c·...·]-39">}</span><span·class="p">,</span><span·class="w">
295 ···························</span><span·class="p"·data-group-id="0201726257-41">{</span><span·class="ss">xmlText</span><span·class="p">,</span><span·class="p"·data-group-id="0201726257-42">[</span><span·class="p"·data-group-id="0201726257-43">{</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</spa[·...·truncated·by·diffoscope;·len:·392,·SHA:·e6d4a693cd3b32e57e9c0c5787aa526a8b5e46934e0bea0d75fab3fde4b4429e·...·]-41">}</span><span·class="p">,</span><span·class="w">295 ···························</span><span·class="p"·data-group-id="2381745354-41">{</span><span·class="ss">xmlText</span><span·class="p">,</span><span·class="p"·data-group-id="2381745354-42">[</span><span·class="p"·data-group-id="2381745354-43">{</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</spa[·...·truncated·by·diffoscope;·len:·392,·SHA:·02098362568b17e8fba848f3a818de6a0a28d5fe11d099a84fddc3aa8fb674e3·...·]-41">}</span><span·class="p">,</span><span·class="w">
296 ···························</span><span·class="p"·data-group-id="0201726257-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="0201726257-44">}</span><span·class="p">,</span><span·class="w">296 ···························</span><span·class="p"·data-group-id="2381745354-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="2381745354-44">}</span><span·class="p">,</span><span·class="w">
297 ···························</span><span·class="p"·data-group-id="0201726257-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="0201726257-45">}</span><span·class="p">,</span><span·class="w">297 ···························</span><span·class="p"·data-group-id="2381745354-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="2381745354-45">}</span><span·class="p">,</span><span·class="w">
298 ···························</span><span·class="p"·data-group-id="0201726257-46">{</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="0201726257-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:·b4d3070d0b0d4e8820412bf598f6a8efca51d4701164d5d3c26854f4e575b01b·...·]-33">]</span><span·class="p">,</span><span·class="w">298 ···························</span><span·class="p"·data-group-id="2381745354-46">{</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="2381745354-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:·b9c1605fab76e27d023469f4c08da6dbadd497da253869c7e55710444e5fd4aa·...·]-33">]</span><span·class="p">,</span><span·class="w">
299 ··························</span><span·class="p"·data-group-id="0201726257-47">[</span><span·class="p"·data-group-id="0201726257-47">]</span><span·class="p">,</span><span·class="w">299 ··························</span><span·class="p"·data-group-id="2381745354-47">[</span><span·class="p"·data-group-id="2381745354-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="0201726257-16">}</span><span·class="p">,</span><span·class="w">301 ··························</span><span·class="ss">undeclared</span><span·class="p"·data-group-id="2381745354-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="0201726257-11">]</span><span·class="p">,</span><span·class="w">303 ··············</span><span·class="p"·data-group-id="2381745354-11">]</span><span·class="p">,</span><span·class="w">
304 ·············</span><span·class="p"·data-group-id="0201726257-48">[</span><span·class="p"·data-group-id="0201726257-48">]</span><span·class="p">,</span><span·class="w">304 ·············</span><span·class="p"·data-group-id="2381745354-48">[</span><span·class="p"·data-group-id="2381745354-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="0201726257-4">}</span><span·class="p">,</span><span·class="w">306 ·············</span><span·class="ss">undeclared</span><span·class="p"·data-group-id="2381745354-4">}</span><span·class="p">,</span><span·class="w">
307 ·</span><span·class="p"·data-group-id="0201726257-49">[</span><span·class="p"·data-group-id="0201726257-49">]</span><span·class="p"·data-group-id="0201726257-3">}</span><span·class="w">307 ·</span><span·class="p"·data-group-id="2381745354-49">[</span><span·class="p"·data-group-id="2381745354-49">]</span><span·class="p"·data-group-id="2381745354-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="7334116978-1">{</span><span·class="ss">bike</span><span·class="p">,</span><span·class="w">345 ··</span><span·class="p"·data-group-id="6585290396-1">{</span><span·class="ss">bike</span><span·class="p">,</span><span·class="w">
346 ·····</span><span·class="p"·data-group-id="7334116978-2">[</span><span·class="p"·data-group-id="7334116978-3">{</span><span·class="ss">year</span><span·class="p">,</span><span·class="s">&quot;2003&quot;</span><span·class="p"·data-group-id="7334116978-3">}</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·452,·SHA:·34dcdf057864a60022ed0d969cc3695cd57f8406e2b710ca3895e4e11dd3f999·...·]-2">]</span><span·class="p">,</span><span·class="w">346 ·····</span><span·class="p"·data-group-id="6585290396-2">[</span><span·class="p"·data-group-id="6585290396-3">{</span><span·class="ss">year</span><span·class="p">,</span><span·class="s">&quot;2003&quot;</span><span·class="p"·data-group-id="6585290396-3">}</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·452,·SHA:·0556abbf7a90e5b64ddba9c1a73888f04d1cbfbcf35e5c97c17b487593f3d205·...·]-2">]</span><span·class="p">,</span><span·class="w">
347 ·····</span><span·class="p"·data-group-id="7334116978-6">[</span><span·class="p"·data-group-id="7334116978-7">{</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">347 ·····</span><span·class="p"·data-group-id="6585290396-6">[</span><span·class="p"·data-group-id="6585290396-7">{</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">
348 ·········</span><span·class="p"·data-group-id="7334116978-8">[</span><span·class="p"·data-group-id="7334116978-9">{</span><span·class="ss">manufacturer</span><span·class="p">,</span><span·class="p"·data-group-id="7334116978-10">[</span><span·class="s">&quot;Harley·Davidsson&quot;</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·79,·SHA:·d3bf7dc2ba39e2cf35666f5631bb08243fe744f1d814787e96e95508e472fe70·...·]-9">}</span><span·class="p">,</span><span·class="w">348 ·········</span><span·class="p"·data-group-id="6585290396-8">[</span><span·class="p"·data-group-id="6585290396-9">{</span><span·class="ss">manufacturer</span><span·class="p">,</span><span·class="p"·data-group-id="6585290396-10">[</span><span·class="s">&quot;Harley·Davidsson&quot;</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·79,·SHA:·b352f2381e1c3dc08ba5182e9f310934300e56e26a5073270cab143e0367259a·...·]-9">}</span><span·class="p">,</span><span·class="w">
349 ··········</span><span·class="p"·data-group-id="7334116978-11">{</span><span·class="ss">brandName</span><span·class="p">,</span><span·class="p"·data-group-id="7334116978-12">[</span><span·class="s">&quot;XL1200C&quot;</span><span·class="p"·data-group-id="7334116978-12">]</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·9d9186f8ec11586a661d79c036a0538d2dc6fc6879ae7606c1e09e8af20bd9d8·...·]-11">}</span><span·class="p">,</span><span·class="w">349 ··········</span><span·class="p"·data-group-id="6585290396-11">{</span><span·class="ss">brandName</span><span·class="p">,</span><span·class="p"·data-group-id="6585290396-12">[</span><span·class="s">&quot;XL1200C&quot;</span><span·class="p"·data-group-id="6585290396-12">]</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·17c97f14be0b857977ae219967d4c73d955e606f0c4667cca5b8649b0f842d9d·...·]-11">}</span><span·class="p">,</span><span·class="w">
350 ··········</span><span·class="p"·data-group-id="7334116978-13">{</span><span·class="ss">additionalName</span><span·class="p">,</span><span·class="p"·data-group-id="7334116978-14">[</span><span·class="s">&quot;Sportster&quot;</span><span·class="p"·data-group-id="7334116978-14">]</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·129,·SHA:·537364762cb98edc2f5c4fcc915ee36894370cca9372adde4aa50bfd69f1949a·...·]-7">}</span><span·class="p">,</span><span·class="w">350 ··········</span><span·class="p"·data-group-id="6585290396-13">{</span><span·class="ss">additionalName</span><span·class="p">,</span><span·class="p"·data-group-id="6585290396-14">[</span><span·class="s">&quot;Sportster&quot;</span><span·class="p"·data-group-id="6585290396-14">]</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·129,·SHA:·da5df640354ce19e7b8557221bccc9d9967de7be32decfe807b2108d5b9dc5c9·...·]-7">}</span><span·class="p">,</span><span·class="w">
351 ······</span><span·class="p"·data-group-id="7334116978-15">{</span><span·class="ss">engine</span><span·class="p">,</span><span·class="w">351 ······</span><span·class="p"·data-group-id="6585290396-15">{</span><span·class="ss">engine</span><span·class="p">,</span><span·class="w">
352 ·········</span><span·class="p"·data-group-id="7334116978-16">[</span><span·class="s">&quot;V-engine,·2-cylinders,·1200·cc&quot;</span><span·class="p"·data-group-id="7334116978-16">]</span><span·class="p"·data-group-id="7334116978-15">}</span><span·class="p">,</span><span·class="w">352 ·········</span><span·class="p"·data-group-id="6585290396-16">[</span><span·class="s">&quot;V-engine,·2-cylinders,·1200·cc&quot;</span><span·class="p"·data-group-id="6585290396-16">]</span><span·class="p"·data-group-id="6585290396-15">}</span><span·class="p">,</span><span·class="w">
353 ······</span><span·class="p"·data-group-id="7334116978-17">{</span><span·class="ss">kind</span><span·class="p">,</span><span·class="p"·data-group-id="7334116978-18">[</span><span·class="s">&quot;custom&quot;</span><span·class="p"·data-group-id="7334116978-18">]</span><span·class="p"·data-group-id="7[·...·truncated·by·diffoscope;·len:·9,·SHA:·93f6de74dd15d072e02070ca3b7d84731f39e39ac389bd3b8fa99c76b5c4038d·...·]-17">}</span><span·class="p">,</span><span·class="w">353 ······</span><span·class="p"·data-group-id="6585290396-17">{</span><span·class="ss">kind</span><span·class="p">,</span><span·class="p"·data-group-id="6585290396-18">[</span><span·class="s">&quot;custom&quot;</span><span·class="p"·data-group-id="6585290396-18">]</span><span·class="p"·data-group-id="6[·...·truncated·by·diffoscope;·len:·9,·SHA:·34031e2e6407fd6dbd10770e756c35246d92775a5c4a2229a19a53ca0830be0c·...·]-17">}</span><span·class="p">,</span><span·class="w">
354 ······</span><span·class="p"·data-group-id="7334116978-19">{</span><span·class="ss">drive</span><span·class="p">,</span><span·class="p"·data-group-id="7334116978-20">[</span><span·class="s">&quot;belt&quot;</span><span·class="p"·data-group-id="7334116978-20">]</span><span·class="p"·data-group-id="73[·...·truncated·by·diffoscope;·len:·115,·SHA:·fe3b29cacc0e86369d6d0dacb066a51e12cf52c65b073be4cc5a75636bb32268·...·]-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="6585290396-19">{</span><span·class="ss">drive</span><span·class="p">,</span><span·class="p"·data-group-id="6585290396-20">[</span><span·class="s">&quot;belt&quot;</span><span·class="p"·data-group-id="6585290396-20">]</span><span·class="p"·data-group-id="65[·...·truncated·by·diffoscope;·len:·115,·SHA:·542ee42297411f7dba49a56d627a26c2c9756d3dcf9adf374bb7545dde5389c5·...·]-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="2732297131-1">{</span><span·class="n">RootEl</span><span·class="p">,</span><span·class="n">Misc</span><span·class="p"·data-group-id="2732297131-1">}</span><span·class="o">=</span><span·class="nc">xmerl_scan</span><span·class="p">:</span><span·class="nf">fi[·...·truncated·by·diffoscope;·len:·151,·SHA:·03438db7a37694c25866f14c30c66f8da4ef3cb030bc171b037317fb795066b6·...·]1-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="0547954641-1">{</span><span·class="n">RootEl</span><span·class="p">,</span><span·class="n">Misc</span><span·class="p"·data-group-id="0547954641-1">}</span><span·class="o">=</span><span·class="nc">xmerl_scan</span><span·class="p">:</span><span·class="nf">fi[·...·truncated·by·diffoscope;·len:·151,·SHA:·244b5551a494532aa36adde5f65acbfb3b0dedea94ac3568c64e6d8caf8da0be·...·]1-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="2732297131-3">{</span><span·class="ss">content</span><span·class="o">=</span><span·class="n">Content</span><span·class="p"·data-group-id="2732297131-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="0547954641-3">{</span><span·class="ss">content</span><span·class="o">=</span><span·class="n">Content</span><span·class="p"·data-group-id="0547954641-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="2732297131-4">(</span><span·class="p"·data-group-id="2732297131-5">[</span><span·class="n">Data</span><span·class="p"·data-group-id="2732297131-5">]</span><span·class="p"·data-group-id="2732297131-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="0547954641-4">(</span><span·class="p"·data-group-id="0547954641-5">[</span><span·class="n">Data</span><span·class="p"·data-group-id="0547954641-5">]</span><span·class="p"·data-group-id="0547954641-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="2732297131-6">{</span><span·class="ss">content</span><span·class="o">=</span><span·class="n">NewContent</span><span·class="p"·data-group-id="2732297131-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:·597be4b4a66e114c66a9f05f61ab2fb1d057507535b9cc8f9f1f61e4ffc83f00·...·]-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="0547954641-6">{</span><span·class="ss">content</span><span·class="o">=</span><span·class="n">NewContent</span><span·class="p"·data-group-id="0547954641-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:·ad47659d83025252ce9d97342dfe25ff95ab059b4771e6727363448563303473·...·]-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="9623082662-4">(</span><span·class="p"·data-group-id="9623082662-5">[</span><span·class="n">NewRootEl</span><span·class="p"·data-group-id="9623082662-5">]</span><span·class="p">,</span><span·class="ss">xmerl_xml</span><span·class="p"·data-group-id="96230826[·...·truncated·by·diffoscope;·len:·2,·SHA:·81b8a03f97e8787c53fe1a86bda042b6f0de9b0ec9c09357e107c99ba4d6948a·...·]-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="3292468511-4">(</span><span·class="p"·data-group-id="3292468511-5">[</span><span·class="n">NewRootEl</span><span·class="p"·data-group-id="3292468511-5">]</span><span·class="p">,</span><span·class="ss">xmerl_xml</span><span·class="p"·data-group-id="32924685[·...·truncated·by·diffoscope;·len:·2,·SHA:·4fc82b26aecb47d2868c4efbe3581732a3e7cbcc6c2efb32062c08170a05eeb8·...·]-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="9623082662-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="9623082662-7">[</sp[·...·truncated·by·diffoscope;·len:·316,·SHA:·a3e44b728cdaefb4968b3a76ce4adbf02d0779a1de7cb9a77a29d7a369da7aa0·...·]-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="3292468511-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="3292468511-7">[</sp[·...·truncated·by·diffoscope;·len:·316,·SHA:·6c60ede4a0170ceed4f95ec5cd5a81d27d7afbdad71001fdbf62e92e1c4ef14e·...·]-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="2160711220-1">[</span><span·class="o">#</span><span·class="ss">xmlText</span><span·class="p"·data-group-id="2160711220-2">{</span><span·class="ss">value</span><span·class="o">=</span><span·class="s">&quot;··&quot;</span><span·class="p"·data-group-id="21607[·...·truncated·by·diffoscope;·len:·5,·SHA:·cd9d4710b07c1bb5c87f3bb16e8a987a98b7d15eedafe4e034ed5ddecce7bbbc·...·]-2">}</span><span·class="p">,</span><span·class="w">390 ······</span><span·class="p"·data-group-id="5037187365-1">[</span><span·class="o">#</span><span·class="ss">xmlText</span><span·class="p"·data-group-id="5037187365-2">{</span><span·class="ss">value</span><span·class="o">=</span><span·class="s">&quot;··&quot;</span><span·class="p"·data-group-id="50371[·...·truncated·by·diffoscope;·len:·5,·SHA:·d594ae521165c74c37673c638c8b8393a12970d01c46c958bbae2c474fbd0990·...·]-2">}</span><span·class="p">,</span><span·class="w">
391 ·······</span><span·class="p"·data-group-id="2160711220-3">{</span><span·class="ss">bike</span><span·class="p">,</span><span·class="p"·data-group-id="2160711220-4">[</span><span·class="p"·data-group-id="2160711220-5">{</span><span·class="ss">year</span><span·class="p">,</span><span·class="s">&quot;20[·...·truncated·by·diffoscope;·len:·557,·SHA:·d33ed1fa55b98ec9e8c1f169f566767dc119b13dff059c2e45b624fbac2a1947·...·]-4">]</span><span·class="p">,</span><span·class="w">391 ·······</span><span·class="p"·data-group-id="5037187365-3">{</span><span·class="ss">bike</span><span·class="p">,</span><span·class="p"·data-group-id="5037187365-4">[</span><span·class="p"·data-group-id="5037187365-5">{</span><span·class="ss">year</span><span·class="p">,</span><span·class="s">&quot;20[·...·truncated·by·diffoscope;·len:·557,·SHA:·55d54bb280752e7602178ebe1767c66dd804122350bf91c5ccfaaeaa90f4c946·...·]-4">]</span><span·class="p">,</span><span·class="w">
392 ·············</span><span·class="p"·data-group-id="2160711220-8">[</span><span·class="o">#</span><span·class="ss">xmlText</span><span·class="p"·data-group-id="2160711220-9">{</span><span·class="ss">value</span><span·class="o">=</span><span·class="s">&quot;\392 ·············</span><span·class="p"·data-group-id="5037187365-8">[</span><span·class="o">#</span><span·class="ss">xmlText</span><span·class="p"·data-group-id="5037187365-9">{</span><span·class="ss">value</span><span·class="o">=</span><span·class="s">&quot;\
393 ····&quot;</span><span·class="p"·data-group-id="2160711220-9">}</span><span·class="p">,</span><span·class="w">393 ····&quot;</span><span·class="p"·data-group-id="5037187365-9">}</span><span·class="p">,</span><span·class="w">
394 ··············</span><span·class="p"·data-group-id="2160711220-10">{</span><span·class="ss">name</span><span·class="p">,</span><span·class="p"·data-group-id="2160711220-11">[</span><span·class="o">#</span><span·class="ss">xmlText</span><span·class="p"·data-group-id="2160711220-12">{</span><span·class="ss">value</span><span·class="o">=</span><span·class="s">&quot;\394 ··············</span><span·class="p"·data-group-id="5037187365-10">{</span><span·class="ss">name</span><span·class="p">,</span><span·class="p"·data-group-id="5037187365-11">[</span><span·class="o">#</span><span·class="ss">xmlText</span><span·class="p"·data-group-id="5037187365-12">{</span><span·class="ss">value</span><span·class="o">=</span><span·class="s">&quot;\
395 ······&quot;</span><span·class="p"·data-group-id="2160711220-12">}</span><span·class="p">,</span><span·class="w">395 ······&quot;</span><span·class="p"·data-group-id="5037187365-12">}</span><span·class="p">,</span><span·class="w">
396 ·····················</span><span·class="p"·data-group-id="2160711220-13">{</span><span·class="ss">manufacturer</span><span·class="p">,</span><span·class="p"·data-group-id="2160711220-14">[</span><span·class="s">&quot;Harley·Davidsson&quot;</span><span·class="p"·data-group-id="2160711220-14">]</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·3060a91472b98445821f0e2f580ef177c6c8b0868a06a7ecbec08b9138698c44·...·]-13">}</span><span·class="p">,</span><span·class="w">396 ·····················</span><span·class="p"·data-group-id="5037187365-13">{</span><span·class="ss">manufacturer</span><span·class="p">,</span><span·class="p"·data-group-id="5037187365-14">[</span><span·class="s">&quot;Harley·Davidsson&quot;</span><span·class="p"·data-group-id="5037187365-14">]</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·826312142bb927d0911520a00dea1fe2f8cb1b93acb7a8c37717f200d435b433·...·]-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="2160711220-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="5037187365-15">{</span><span·class="ss">value</span><span·class="o">=</span><span·class="s">&quot;\
398 ······&quot;</span><span·class="p"·data-group-id="2160711220-15">}</span><span·class="p">,</span><span·class="w">398 ······&quot;</span><span·class="p"·data-group-id="5037187365-15">}</span><span·class="p">,</span><span·class="w">
399 ·····················</span><span·class="p"·data-group-id="2160711220-16">{</span><span·class="ss">brandName</span><span·class="p">,</span><span·class="p"·data-group-id="2160711220-17">[</span><span·class="s">&quot;XL1200C&quot;</span><span·class="p"·data-group-id="2160711220-17">]</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·a3dc776902b2fb4642ae11fe1e3d949dcf986708e7649be59d59b4ec7f77dbd3·...·]-16">}</span><span·class="p">,</span><span·class="w">399 ·····················</span><span·class="p"·data-group-id="5037187365-16">{</span><span·class="ss">brandName</span><span·class="p">,</span><span·class="p"·data-group-id="5037187365-17">[</span><span·class="s">&quot;XL1200C&quot;</span><span·class="p"·data-group-id="5037187365-17">]</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·1aa6fd41bc65f26e096059819ffa13ba77bbe362a0498f06b853b065f90311d6·...·]-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="2160711220-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="5037187365-18">{</span><span·class="ss">value</span><span·class="o">=</span><span·class="s">&quot;\
401 ······&quot;</span><span·class="p"·data-group-id="2160711220-18">}</span><span·class="p">,</span><span·class="w">401 ······&quot;</span><span·class="p"·data-group-id="5037187365-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.2/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="0021239967-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="0021239967-2">{</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·629,·SHA:·e162cebd6b7b118ad3bf504748c012beeebc62721445ae625dd581f8b902ea9b·...·]-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="0528936781-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="0528936781-2">{</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·629,·SHA:·3c83ef0a8e056014cbd26ccce8acb4f24987a5da945be5a8a11248cf4578ddd7·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
139 ····</span><span·class="p"·data-group-id="0021239967-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="0528936781-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="0021239967-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="0[·...·truncated·by·diffoscope;·len:·9,·SHA:·74a2d0f36ff41175b55905fed11c67236f9c195a593247d3f1a454c0476fd9b8·...·]-6">)</span><span·class="p">,</span><span·class="w">140 ·········</span><span·class="nf">xslapply</span><span·class="p"·data-group-id="0528936781-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="0[·...·truncated·by·diffoscope;·len:·9,·SHA:·3df0427a8eb3c0786e3f01d473ce564b448d1b7ce373730b0db419039155f312·...·]-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="0021239967-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="0528936781-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="5994112448-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="5994112448-2">{</span><span·class="ss">name</span[·...·truncated·by·diffoscope;·len:·157,·SHA:·93d40e7818c8a8a05c7d3426648036e980d1cd378c15176215f9cba40dd3cd8b·...·]8-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="4371035118-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="4371035118-2">{</span><span·class="ss">name</span[·...·truncated·by·diffoscope;·len:·157,·SHA:·4d6e423270a71413eb68b8653fd49226547ab25fd92ca890599661eab09cf6f8·...·]8-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
144 ····</span><span·class="p"·data-group-id="5994112448-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="5994112448-4">(</span><span·class="nf">s[·...·truncated·by·diffoscope;·len:·425,·SHA:·dea640c590f43b490fc0c4905e32901fc3505ff79fa7da4f000f64cccb33b089·...·]8-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="4371035118-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="4371035118-4">(</span><span·class="nf">s[·...·truncated·by·diffoscope;·len:·425,·SHA:·5835c61f166c371873ee960520a1df3a01273a3203fb78e796d5b98c4d6e2d90·...·]8-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="1903849071-1">(</span><span·class="s">&quot;xmerl.hrl&quot;</span><span·class="p"·data-group-id="1903849071-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="7725602371-1">(</span><span·class="s">&quot;xmerl.hrl&quot;</span><span·class="p"·data-group-id="7725602371-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="1903849071-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="7725602371-2">(</span><span·class="ss">xmerl_xs</span><span·class="p">,</span><span·class="w">
206 ····</span><span·class="p"·data-group-id="1903849071-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:·378,·SHA:·e398b5cd89315ad6bc110662110e664bba2f0e86fb44870360749c5b025fdacc·...·]71-2">)</span><span·class="p">.</span><span·class="w">206 ····</span><span·class="p"·data-group-id="7725602371-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:·378,·SHA:·113800bfa6ef139b16c37c37469186ff27a407307f192fc8810bb52c1ab268c8·...·]71-2">)</span><span·class="p">.</span><span·class="w">
  
207 </span><span·class="nf">doctype</span><span·class="p"·data-group-id="1903849071-4">(</span><span·class="p"·data-group-id="1903849071-4">)</span><span·class="p">-&gt;</span><span·class="w">207 </span><span·class="nf">doctype</span><span·class="p"·data-group-id="7725602371-4">(</span><span·class="p"·data-group-id="7725602371-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="1903849071-5">(</span><span·class="n">Doc</span><span·class="p"·data-group-id="1903849071-5">)</span><span·class="p">-&gt;</span><span·class="w">210 </span><span·class="nf">process_xml</span><span·class="p"·data-group-id="7725602371-5">(</span><span·class="n">Doc</span><span·class="p"·data-group-id="7725602371-5">)</span><span·class="p">-&gt;</span><span·class="w">
211 ····</span><span·class="nf">template</span><span·class="p"·data-group-id="1903849071-6">(</span><span·class="n">Doc</span><span·class="p"·data-group-id="1903849071-6">)</span><span·class="p">.</span><span·class="w">211 ····</span><span·class="nf">template</span><span·class="p"·data-group-id="7725602371-6">(</span><span·class="n">Doc</span><span·class="p"·data-group-id="7725602371-6">)</span><span·class="p">.</span><span·class="w">
  
212 </span><span·class="nf">template</span><span·class="p"·data-group-id="1903849071-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="1903849071-8">{</span><span·class="ss">name</span[·...·truncated·by·diffoscope;·len:·154,·SHA:·f1dca9c0cbff852fce2ec7c7d5fca1973bbc9f8232c81e7eede125f118a568db·...·]71-7">)</span><span·class="p">-&gt;</span><span·class="w">212 </span><span·class="nf">template</span><span·class="p"·data-group-id="7725602371-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="7725602371-8">{</span><span·class="ss">name</span[·...·truncated·by·diffoscope;·len:·154,·SHA:·617d8dd06d49b9faf5702977e6e48c5f2c4202b063217e2021bb910da41068c9·...·]71-7">)</span><span·class="p">-&gt;</span><span·class="w">
213 ····</span><span·class="p"·data-group-id="1903849071-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="7725602371-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="1903849071-10">(</span><span·class="p"·data-group-id="1903849071-10">)</span><span·class="p">,</span><span·class="w">214 ······</span><span·class="nf">doctype</span><span·class="p"·data-group-id="7725602371-10">(</span><span·class="p"·data-group-id="7725602371-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="1903849071-11">(</span><span·class="nf">select</span><span·class="p"·data-group-id="1903849071-12">(</span><span·class="s">&quot;title&quot;</span><span·class="p">,</span><span·class="n">E</span><span·class="p"·data-group-id="1903849071-12">)</span><span·c[·...·truncated·by·diffoscope;·len:·32,·SHA:·d331a17848cadb7a68c445112b1db26c46abaeea608ab55c85a88f63ef30b119·...·]71-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="7725602371-11">(</span><span·class="nf">select</span><span·class="p"·data-group-id="7725602371-12">(</span><span·class="s">&quot;title&quot;</span><span·class="p">,</span><span·class="n">E</span><span·class="p"·data-group-id="7725602371-12">)</span><span·c[·...·truncated·by·diffoscope;·len:·32,·SHA:·ac5acec8d64b9f7b2e2cfe3d8d67cba0f28665f21debf006e81ec6f34ce42001·...·]71-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="1903849071-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:·33,·SHA:·ed08efcb5180e85a8f90b4d40d83cf10f22277baf88ce96c94bce65ab6f85d84·...·]71-13">)</span><span·class="p">,</span><span·class="w">220 ······</span><span·class="nf">xslapply</span><span·class="p"·data-group-id="7725602371-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:·33,·SHA:·0f2a23d63e28678fdd0d013556989f983e77faca9382a7317d007c6975e94599·...·]71-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="1903849071-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="7725602371-9">]</span><span·class="p">;</span><span·class="w">
  
  
223 </span><span·class="nf">template</span><span·class="p"·data-group-id="1903849071-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="1903849071-15">{</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·635,·SHA:·54af6487e3fd2aae0bb3b608d37cc0a24da72355a9e0b37ca36ac582fa255927·...·]71-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="7725602371-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="7725602371-15">{</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·635,·SHA:·111220bd54558483fc2e4b447411d29afa6020f2c9974ffd4b7762ef5e5b67f6·...·]71-14">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
224 ····</span><span·class="p"·data-group-id="1903849071-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="7725602371-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="1903849071-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:·33,·SHA:·ed08efcb5180e85a8f90b4d40d83cf10f22277baf88ce96c94bce65ab6f85d84·...·]71-19">)</span><span·class="p">,</span><span·class="w">225 ·····</span><span·class="nf">xslapply</span><span·class="p"·data-group-id="7725602371-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:·33,·SHA:·0f2a23d63e28678fdd0d013556989f983e77faca9382a7317d007c6975e94599·...·]71-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="1903849071-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="7725602371-18">]</span><span·class="p">;</span><span·class="w">
  
227 </span><span·class="nf">template</span><span·class="p"·data-group-id="1903849071-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="1903849071-21">{</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·639,·SHA:·1ed8af82a31814650c9bbfe9d0717001a60360c82677ec8ca541369f80da5d5c·...·]71-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="7725602371-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="7725602371-21">{</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·639,·SHA:·4a009703443eb079f7be7c6108e20cc51ff49728025e692d040de4e289b8eec3·...·]71-20">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
228 ····</span><span·class="p"·data-group-id="1903849071-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="7725602371-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="1903849071-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:·33,·SHA:·ed08efcb5180e85a8f90b4d40d83cf10f22277baf88ce96c94bce65ab6f85d84·...·]71-25">)</span><span·class="p">,</span><span·class="w">229 ·····</span><span·class="nf">xslapply</span><span·class="p"·data-group-id="7725602371-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:·33,·SHA:·0f2a23d63e28678fdd0d013556989f983e77faca9382a7317d007c6975e94599·...·]71-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="1903849071-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="7725602371-24">]</span><span·class="p">;</span><span·class="w">
  
231 </span><span·class="nf">template</span><span·class="p"·data-group-id="1903849071-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="1903849071-27">{</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·639,·SHA:·adefd37ca693d6b089b444da970452223db03e315060d235f16c3e5c01c5e503·...·]71-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="7725602371-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="7725602371-27">{</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·639,·SHA:·32e5bdca3fa69dce943742b2fee39918298a20d9da8ffd07aec95a840a980f47·...·]71-26">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
232 ····</span><span·class="p"·data-group-id="1903849071-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="7725602371-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="1903849071-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:·33,·SHA:·ed08efcb5180e85a8f90b4d40d83cf10f22277baf88ce96c94bce65ab6f85d84·...·]71-31">)</span><span·class="p">,</span><span·class="w">233 ·····</span><span·class="nf">xslapply</span><span·class="p"·data-group-id="7725602371-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:·33,·SHA:·0f2a23d63e28678fdd0d013556989f983e77faca9382a7317d007c6975e94599·...·]71-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="1903849071-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="7725602371-30">]</span><span·class="p">;</span><span·class="w">
  
235 </span><span·class="nf">template</span><span·class="p"·data-group-id="1903849071-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="1903849071-33">{</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·182,·SHA:·60ae91e6dbe727dc541ecaec8f9055fa0e8eeefb9641e551f8ccdc4a758e1409·...·]71-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="7725602371-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="7725602371-33">{</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·182,·SHA:·29072e0079eab25eb64ab92dc714915b8e36bc3a5d1aabcf7e10a26d2aa12050·...·]71-32">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
236 ····</span><span·class="p"·data-group-id="1903849071-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="1903849071-35">(</span><span·class="w">·</span><span·class="k">fun</span><span[·...·truncated·by·diffoscope;·len:·358,·SHA:·c9b694060fe2b71e9896f9280d609fed34c86c45b94c2ee3780089acd6dc6d2e·...·]71-34">]</span><span·class="p">;</span><span·class="w">236 ····</span><span·class="p"·data-group-id="7725602371-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="7725602371-35">(</span><span·class="w">·</span><span·class="k">fun</span><span[·...·truncated·by·diffoscope;·len:·358,·SHA:·60c53ae61f29a954f9f2f66943d13dee53e988f246c4b70168cf6cdef866e373·...·]71-34">]</span><span·class="p">;</span><span·class="w">
  
237 </span><span·class="nf">template</span><span·class="p"·data-group-id="1903849071-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="1903849071-37">{</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·182,·SHA:·3c7e459e711a1f3c056fc2a08c3379a1b9b7f27b613e985f58cb154d7a0970c6·...·]71-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="7725602371-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="7725602371-37">{</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·182,·SHA:·2600a2c3bca92664a18bf9ee289d70e455af82b5ef485a0940f026987259008d·...·]71-36">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
238 ····</span><span·class="p"·data-group-id="1903849071-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="7725602371-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="1903849071-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:·33,·SHA:·ed08efcb5180e85a8f90b4d40d83cf10f22277baf88ce96c94bce65ab6f85d84·...·]71-39">)</span><span·class="p">,</span><span·class="w">240 ·····</span><span·class="nf">xslapply</span><span·class="p"·data-group-id="7725602371-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:·33,·SHA:·0f2a23d63e28678fdd0d013556989f983e77faca9382a7317d007c6975e94599·...·]71-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="1903849071-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="7725602371-38">]</span><span·class="p">;</span><span·class="w">
  
242 </span><span·class="nf">template</span><span·class="p"·data-group-id="1903849071-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="1903849071-41">{</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·182,·SHA:·d2b309c9d78c45a9697661564fe2612f25a4403cdf5c2b36862a22576469cb51·...·]71-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="7725602371-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="7725602371-41">{</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·182,·SHA:·dfb977f2f5159100504264443eb056a901fc8714ca86a4c1f31ad90a294d341e·...·]71-40">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
243 ····</span><span·class="p"·data-group-id="1903849071-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="1903849071-43">(</span><span·class="w">·</span><span·class="k">fun</span><spa[·...·truncated·by·diffoscope;·len:·360,·SHA:·7742b6dcd7e3b31dfc9ffa8ecaa4fd564ac34c6f6061ef7535b905bafde63ada·...·]71-42">]</span><span·class="p">;</span><span·class="w">243 ····</span><span·class="p"·data-group-id="7725602371-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="7725602371-43">(</span><span·class="w">·</span><span·class="k">fun</span><spa[·...·truncated·by·diffoscope;·len:·360,·SHA:·5bc11cc8771258d8f782afc475b14f605e67801d9ecb428a4cc752d7f09d14d8·...·]71-42">]</span><span·class="p">;</span><span·class="w">
  
244 </span><span·class="nf">template</span><span·class="p"·data-group-id="1903849071-44">(</span><span·class="n">E</span><span·class="p"·data-group-id="1903849071-44">)</span><span·class="p">-&gt;</span><span·class="w">244 </span><span·class="nf">template</span><span·class="p"·data-group-id="7725602371-44">(</span><span·class="n">E</span><span·class="p"·data-group-id="7725602371-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="1903849071-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:·33,·SHA:·ed08efcb5180e85a8f90b4d40d83cf10f22277baf88ce96c94bce65ab6f85d84·...·]71-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="7725602371-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:·33,·SHA:·0f2a23d63e28678fdd0d013556989f983e77faca9382a7317d007c6975e94599·...·]71-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="9983429474-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="9983429474-2">{</span><span·class="ss">name</span[·...·truncated·by·diffoscope;·len:·158,·SHA:·e9da85cce801ac8b4507d0e0ec4860cae87c8ce0e0ee83470c11dd6173186b23·...·]4-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="6776859144-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="6776859144-2">{</span><span·class="ss">name</span[·...·truncated·by·diffoscope;·len:·158,·SHA:·0d8bc24c0f3da4120a66cc40312c7d195a2334a415d7a02475dd013e687b91ea·...·]4-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
277 ····</span><span·class="p"·data-group-id="9983429474-3">{</span><span·class="n">Lines</span><span·class="p">,</span><span·class="n">LineNo</span><span·class="p"·data-group-id="9983429474-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:·5f35b1a3f8cf99afb85d87c54b6fe8e77ad38240d65b526039c811a085a1b33b·...·]4-4">)</span><span·class="p">,</span><span·class="w">277 ····</span><span·class="p"·data-group-id="6776859144-3">{</span><span·class="n">Lines</span><span·class="p">,</span><span·class="n">LineNo</span><span·class="p"·data-group-id="6776859144-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:·96c95e161158bfe68d11bc0ced111c4f033f6bc67cebacfc490b0ef35a29c589·...·]4-4">)</span><span·class="p">,</span><span·class="w">
278 ····</span><span·class="p"·data-group-id="9983429474-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-[·...·truncated·by·diffoscope;·len:·19,·SHA:·6aa6c46437b59c70b4559b4031e8aefd568b120a27a3afbc2379d121bda4937c·...·]4-6">]</span><span·class="p">.</span><span·class="w">278 ····</span><span·class="p"·data-group-id="6776859144-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-[·...·truncated·by·diffoscope;·len:·19,·SHA:·92ceaa85ecf5f09b598cc6c4e3f1440f2c2e45de28a2cca8b4219deb01fc4f9b·...·]4-6">]</span><span·class="p">.</span><span·class="w">
  
279 </span><span·class="nf">template_pos</span><span·class="p"·data-group-id="9983429474-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="9983429474-8">{</span><span·class="ss">name</span[·...·truncated·by·diffoscope;·len:·228,·SHA:·78124f87d2d9384afa56f647cebcecf984887605047e78ad1678726d38811f8b·...·]4-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="6776859144-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="6776859144-8">{</span><span·class="ss">name</span[·...·truncated·by·diffoscope;·len:·228,·SHA:·10e2db6bc8d46a96e7f9d284279e179d0afd3ea52ae234e5680000a192937446·...·]4-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
280 ····</span><span·class="p"·data-group-id="9983429474-9">{</span><span·class="p"·data-group-id="9983429474-10">[</span><span·class="nf">indent_line</span><span·class="p"·data-group-id="9983429474-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:·db1be5e25da71e6b3e637cb9cbebacf193af03b6d4896816383c1fffc6b799cf·...·]4-9">}</span><span·class="p">.</span><span·class="w">280 ····</span><span·class="p"·data-group-id="6776859144-9">{</span><span·class="p"·data-group-id="6776859144-10">[</span><span·class="nf">indent_line</span><span·class="p"·data-group-id="6776859144-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:·777fc6c29ec9e58a1fed3d984298603e43aaa4e50fdd243b881d11c9d74d98ec·...·]4-9">}</span><span·class="p">.</span><span·class="w">
  
281 </span><span·class="nf">indent_line</span><span·class="p"·data-group-id="9983429474-13">(</span><span·class="mi">0</span><span·class="p"·data-group-id="9983429474-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="6776859144-13">(</span><span·class="mi">0</span><span·class="p"·data-group-id="6776859144-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="9983429474-14">(</span><span·class="p">_</span><span·class="p"·data-group-id="9983429474-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="6776859144-14">(</span><span·class="p">_</span><span·class="p"·data-group-id="6776859144-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="9691682755-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="9691682755-2">{</span><span·class="ss">name</span[·...·truncated·by·diffoscope;·len:·257,·SHA:·dc5b6411c383eb005fb473420d5ec52655680d84dfcc21fa52630191f5ef0cdc·...·]-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="6836703412-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="6836703412-2">{</span><span·class="ss">name</span[·...·truncated·by·diffoscope;·len:·257,·SHA:·67fe3a07cca1e2a13d110e94957d790f6b88115f2f24adbfb0362ec22673717b·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
286 ····</span><span·class="p"·data-group-id="9691682755-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="9691682755-4">(</span><span·class="nf">select</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·236,·SHA:·d03ff9db192b7d233b3533e0a7e5332811b73d0b461993799d19e5c35e954622·...·]-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="6836703412-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="6836703412-4">(</span><span·class="nf">select</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·236,·SHA:·d35e680de07abdc8d571ad26249ceabd9a698e3f1cc8dd41086eb4ab15d9ed3b·...·]-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="9691682755-6">(</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="9691682755-7">(</span><span·class="n">A</span><span·class="p"·data-group-id="9691682755-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><[·...·truncated·by·diffoscope;·len:·423,·SHA:·deaa9f3f27d03cd1cd1afef7edc639c07fd9ee8f02011a71955c4518f5bb510e·...·]-6">)</span><span·class="p">,</span><span·class="w">287 ·····</span><span·class="nf">xslapply</span><span·class="p"·data-group-id="6836703412-6">(</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="6836703412-7">(</span><span·class="n">A</span><span·class="p"·data-group-id="6836703412-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><[·...·truncated·by·diffoscope;·len:·423,·SHA:·a8c51d6f75838d1c0d3566304bb2db54a43914c87063a2e89a5a49ad07a30554·...·]-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="9691682755-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="6836703412-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.2/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="3416359840-1">{</span><span·class="n">E</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id="3416359840-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:·87e5766b67ff81eb9150fd6402046c9efece19ed684a475e00ebd3e6b8392ede·...·]-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="1791622143-1">{</span><span·class="n">E</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id="1791622143-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:·16c7f2e5b439b9426647a4217b26d8eaaee08fbca7be13b2abf0313156d78a59·...·]-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="3416359840-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">S</span><span·class="p"·data-group-id="3416359840-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:·e9cd417a506cd51337958f9b7ab038e360597d960d5e4dd071ffe61aee275206·...·]-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="1791622143-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">S</span><span·class="p"·data-group-id="1791622143-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:·b17c0bfa9fc7c7ad610ca4baa114e30eff17dd1db1975fbe23faf07e1d1046cf·...·]-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="3416359840-5">{</span><span·class="n">E2</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id="3416359840-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:·e19a9f54a8c46e0ddaeb8fae0a055f3f5e61fcab03bc77ceff63dbff49dbaec0·...·]-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="1791622143-5">{</span><span·class="n">E2</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id="1791622143-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:·78ea149c9948eb6ba9f681ab18a67c70b1f4ab285c1a1120fbe91b37d6ddd65e·...·]-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-591BD0BC.js vs.
./usr/share/doc/erlang-doc/html/doc/dist/search_data-7D37828E.js
Files 99% similar despite different names
124 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
44.1 KB
./usr/share/doc/erlang-doc/html/lib/eldap-1.2.14/doc/html/dist/search_data-64896945.js vs.
./usr/share/doc/erlang-doc/html/lib/eldap-1.2.14/doc/html/dist/search_data-4C9C58FE.js
Files 98% similar despite different names
43.9 KB
js-beautify {}
Max HTML report size reached
406 KB
./usr/share/doc/erlang-doc/html/lib/inets-9.3.2/doc/html/dist/search_data-11662227.js vs.
./usr/share/doc/erlang-doc/html/lib/inets-9.3.2/doc/html/dist/search_data-F2AB287C.js
Files 98% similar despite different names
405 KB
js-beautify {}
Max HTML report size reached
96.7 KB
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/dist/search_data-D2E3D7BA.js vs.
./usr/share/doc/erlang-doc/html/lib/jinterface-1.14.1/doc/html/dist/search_data-A53AF012.js
Files 99% similar despite different names
96.5 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
679 KB
./usr/share/doc/erlang-doc/html/lib/ssh-5.2.10/doc/html/dist/search_data-CD892B8D.js vs.
./usr/share/doc/erlang-doc/html/lib/ssh-5.2.10/doc/html/dist/search_data-71DCECE2.js
Files 98% similar despite different names
679 KB
js-beautify {}
Max HTML report size reached
913 KB
./usr/share/doc/erlang-doc/html/lib/ssl-11.2.12/doc/html/dist/search_data-2827F83F.js vs.
./usr/share/doc/erlang-doc/html/lib/ssl-11.2.12/doc/html/dist/search_data-47476728.js
Files 95% similar despite different names
913 KB
js-beautify {}
Max HTML report size reached
3.01 MB
./usr/share/doc/erlang-doc/html/lib/wx-2.4.3/doc/html/dist/search_data-E6C0A30D.js vs.
./usr/share/doc/erlang-doc/html/lib/wx-2.4.3/doc/html/dist/search_data-7BF0929D.js
Files 97% similar despite different names
3.01 MB
js-beautify {}
Max HTML report size reached
120 KB
erlang-jinterface_27.3.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-04-16·14:20:18.000000·debian-binary1 -rw-r--r--···0········0········0········4·2025-04-16·14:20:18.000000·debian-binary
2 -rw-r--r--···0········0········0······836·2025-04-16·14:20:18.000000·control.tar.xz2 -rw-r--r--···0········0········0······836·2025-04-16·14:20:18.000000·control.tar.xz
3 -rw-r--r--···0········0········0···112600·2025-04-16·14:20:18.000000·data.tar.xz3 -rw-r--r--···0········0········0···112640·2025-04-16·14:20:18.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