Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:Ledest:erlang:19
erlang
3041-Remove-unused-and-private-ram_file-functio...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 3041-Remove-unused-and-private-ram_file-functions.patch of Package erlang
From 6f58d0a333c125b8c02eb50bce5c044f3ed112ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= <jose.valim@dashbit.co> Date: Mon, 27 Jul 2020 17:07:08 +0200 Subject: [PATCH] Remove unused and private ram_file functions This commit removes support for: * ram_file:open/2 with deprecated file modes (it is now equivalent to raw_file_io:open/2) * ram_file:set_file/2 and ram_file:get_file_close/1 which are private and not used anywhere in Erlang/OTP * ram_file:uuencode/1 and ram_file:uudecode/2 which which are private and not used anywhere in Erlang/OTP Note that ram_file:get_size/1 also fits this criteria but it was kept because there is some usage in the wild. --- erts/emulator/drivers/common/ram_file_drv.c | 172 +------------------- lib/kernel/src/ram_file.erl | 64 +------- lib/kernel/test/ram_file_SUITE.erl | 119 +++----------- 3 files changed, 30 insertions(+), 325 deletions(-) diff --git a/erts/emulator/drivers/common/ram_file_drv.c b/erts/emulator/drivers/common/ram_file_drv.c index bcdfe6a186..6d18ba6f6d 100644 --- a/erts/emulator/drivers/common/ram_file_drv.c +++ b/erts/emulator/drivers/common/ram_file_drv.c @@ -40,12 +40,12 @@ /* other operations */ #define RAM_FILE_GET 30 -#define RAM_FILE_SET 31 -#define RAM_FILE_GET_CLOSE 32 /* get_file/close */ +// #define RAM_FILE_SET 31 +// #define RAM_FILE_GET_CLOSE 32 /* get_file/close */ #define RAM_FILE_COMPRESS 33 /* compress file */ #define RAM_FILE_UNCOMPRESS 34 /* uncompress file */ -#define RAM_FILE_UUENCODE 35 /* uuencode file */ -#define RAM_FILE_UUDECODE 36 /* uudecode file */ +// #define RAM_FILE_UUENCODE 35 /* uuencode file */ +// #define RAM_FILE_UUDECODE 36 /* uudecode file */ #define RAM_FILE_SIZE 37 /* get file size */ #define RAM_FILE_ADVISE 38 /* predeclare the access * pattern for file data */ @@ -393,141 +393,6 @@ static ErlDrvSSizeT ram_file_seek(RamFile *f, ErlDrvSSizeT offset, int whence, return f->cur = pos; } -#define UUMASK(x) ((x)&0x3F) -#define uu_encode(x) (UUMASK(x)+32) - -/* calculate max number of quadrauple bytes given max line length */ -#define UULINE(n) ( (((n)-1) / 4) * 3) - -#define UNIX_LINE 61 /* 61 character lines => 45 uncoded => 60 coded */ - -#define uu_pack(p, c1, c2, c3) \ - (p)[0] = uu_encode((c1) >> 2), \ - (p)[1] = uu_encode(((c1) << 4) | ((c2) >> 4)), \ - (p)[2] = uu_encode(((c2) << 2) | ((c3) >> 6)), \ - (p)[3] = uu_encode(c3) - -static int ram_file_uuencode(RamFile *f) -{ - ErlDrvSSizeT code_len = UULINE(UNIX_LINE); - ErlDrvSSizeT len = f->end; - ErlDrvSSizeT usize = 4*((len+2)/3) + 2*((len+code_len-1)/code_len) + 2; - ErlDrvBinary* bin; - uchar* inp; - uchar* outp; - ErlDrvSSizeT count = 0; - - if ((bin = driver_alloc_binary(usize)) == NULL) - return error_reply(f, ENOMEM); - outp = (uchar*)bin->orig_bytes; - inp = (uchar*)f->buf; - - while(len > 0) { - int c1, c2, c3; - int n = (len >= code_len) ? code_len : len; - - len -= n; - *outp++ = uu_encode(UUMASK(n)); - count++; - while (n >= 3) { - c1 = inp[0]; - c2 = inp[1]; - c3 = inp[2]; - uu_pack(outp, c1, c2, c3); - inp += 3; n -= 3; - outp += 4; count += 4; - } - if (n == 2) { - c1 = inp[0]; - c2 = inp[1]; - uu_pack(outp, c1, c2, 0); - inp += 2; - outp += 4; count += 4; - } - else if (n == 1) { - c1 = inp[0]; - uu_pack(outp, c1, 0, 0); - inp += 1; - outp += 4; count += 4; - } - *outp++ = '\n'; - count++; - } - *outp++ = ' '; /* this end of file 0 length !!! */ - *outp++ = '\n'; - count += 2; - ASSERT(count == usize); - driver_free_binary(f->bin); - ram_file_set(f, bin, usize, count); - return numeric_reply(f, count); -} - - -#define uu_decode(x) ((x)-32) - -static int ram_file_uudecode(RamFile *f) -{ - ErlDrvSSizeT len = f->end; - ErlDrvSSizeT usize = ( (len+3) / 4 ) * 3; - ErlDrvBinary* bin; - uchar* inp; - uchar* outp; - int count = 0; - int n; - - if ((bin = driver_alloc_binary(usize)) == NULL) - return error_reply(f, ENOMEM); - outp = (uchar*)bin->orig_bytes; - inp = (uchar*)f->buf; - - while(len > 0) { - if ((n = uu_decode(*inp++)) < 0) - goto error; - len--; - if ((n == 0) && (*inp == '\n')) - break; - count += n; /* count characters */ - while((n > 0) && (len >= 4)) { - int c1, c2, c3, c4; - c1 = uu_decode(inp[0]); - c2 = uu_decode(inp[1]); - c3 = uu_decode(inp[2]); - c4 = uu_decode(inp[3]); - inp += 4; - len -= 4; - - switch(n) { - case 1: - *outp++ = (c1 << 2) | (c2 >> 4); - n = 0; - break; - case 2: - *outp++ = (c1 << 2) | (c2 >> 4); - *outp++ = (c2 << 4) | (c3 >> 2); - n = 0; - break; - default: - *outp++ = (c1 << 2) | (c2 >> 4); - *outp++ = (c2 << 4) | (c3 >> 2); - *outp++ = (c3 << 6) | c4; - n -= 3; - break; - } - } - if ((n != 0) || (*inp++ != '\n')) - goto error; - len--; - } - driver_free_binary(f->bin); - ram_file_set(f, bin, usize, count); - return numeric_reply(f, count); - - error: - driver_free_binary(bin); - return error_reply(f, EINVAL); -} - - static int ram_file_compress(RamFile *f) { ErlDrvSSizeT size = f->end; @@ -677,29 +542,10 @@ static void rfile_command(ErlDrvData e, char* buf, ErlDrvSizeT count) driver_free_binary(bin); break; - case RAM_FILE_GET_CLOSE: /* return the file and close driver */ - n = f->end; /* length */ - bin = f->bin; - f->bin = NULL; /* NUKE IT */ - header[0] = RAM_FILE_RESP_DATA; - put_int32(n, header+1); - driver_output_binary(f->port, header, sizeof(header), - bin, 0, n); - driver_free_binary(bin); - driver_failure(f->port, 0); - break; - case RAM_FILE_SIZE: numeric_reply(f, f->end); break; - - case RAM_FILE_SET: /* re-init file with new data */ - if ((n = ram_file_init(f, buf, count, &error)) < 0) - error_reply(f, error); - else - numeric_reply(f, n); /* 0 is not used */ - break; - + case RAM_FILE_COMPRESS: /* inline compress the file */ ram_file_compress(f); break; @@ -708,14 +554,6 @@ static void rfile_command(ErlDrvData e, char* buf, ErlDrvSizeT count) ram_file_uncompress(f); break; - case RAM_FILE_UUENCODE: /* uuencode file */ - ram_file_uuencode(f); - break; - - case RAM_FILE_UUDECODE: /* uudecode file */ - ram_file_uudecode(f); - break; - case RAM_FILE_ADVISE: if (f->flags == 0) error_reply(f, EBADF); diff --git a/lib/kernel/src/ram_file.erl b/lib/kernel/src/ram_file.erl index e427d130b7..14c070ef4c 100644 --- a/lib/kernel/src/ram_file.erl +++ b/lib/kernel/src/ram_file.erl @@ -28,26 +28,17 @@ position/2, truncate/1, datasync/1, sync/1]). %% Specialized file operations --export([get_size/1, get_file/1, set_file/2, get_file_close/1]). --export([compress/1, uncompress/1, uuencode/1, uudecode/1, advise/4]). +-export([get_size/1, get_file/1, compress/1, uncompress/1, advise/4]). -export([allocate/3]). - --export([open_mode/1]). %% used by ftp-file - -export([ipread_s32bu_p32bu/3]). - - %% Includes and defines - -define(RAM_FILE_DRV, "ram_file_drv"). -define(MAX_I32, (1 bsl 31)). -define(G_I32(X), is_integer(X), X >= -?MAX_I32, X < ?MAX_I32). -include("file.hrl"). - - %% -------------------------------------------------------------------------- %% These operation codes were once identical between efile_drv.c %% and ram_file_drv.c, but now these drivers are not depending on each other. @@ -66,12 +57,8 @@ %% Other operations -define(RAM_FILE_GET, 30). --define(RAM_FILE_SET, 31). --define(RAM_FILE_GET_CLOSE, 32). -define(RAM_FILE_COMPRESS, 33). -define(RAM_FILE_UNCOMPRESS, 34). --define(RAM_FILE_UUENCODE, 35). --define(RAM_FILE_UUDECODE, 36). -define(RAM_FILE_SIZE, 37). -define(RAM_FILE_ADVISE, 38). -define(RAM_FILE_ALLOCATE, 39). @@ -119,14 +106,6 @@ open(Data, ModeList) when is_list(ModeList) -> end; {error,_}=Error -> Error - end; -%% Old obsolete mode specification -open(Data, Mode) -> - case mode_list(Mode) of - ModeList when is_list(ModeList) -> - open(Data, ModeList); - Error -> - Error end. close(#file_descriptor{module = ?MODULE, data = Port}) -> @@ -323,21 +302,6 @@ get_file(#file_descriptor{module = ?MODULE, data = Port}) -> get_file(#file_descriptor{}) -> {error, enotsup}. -set_file(#file_descriptor{module = ?MODULE, data = Port}, Data) -> - call_port(Port, [?RAM_FILE_SET | Data]); -set_file(#file_descriptor{}, _) -> - {error, enotsup}. - -get_file_close(#file_descriptor{module = ?MODULE, data = Port}) -> - case call_port(Port, [?RAM_FILE_GET_CLOSE]) of - {ok, {_Sz, Data}} -> - {ok, Data}; - Error -> - Error - end; -get_file_close(#file_descriptor{}) -> - {error, enotsup}. - get_size(#file_descriptor{module = ?MODULE, data = Port}) -> call_port(Port, [?RAM_FILE_SIZE]); get_size(#file_descriptor{}) -> @@ -353,17 +317,6 @@ uncompress(#file_descriptor{module = ?MODULE, data = Port}) -> uncompress(#file_descriptor{}) -> {error, enotsup}. - -uuencode(#file_descriptor{module = ?MODULE, data = Port}) -> - call_port(Port, [?RAM_FILE_UUENCODE]); -uuencode(#file_descriptor{}) -> - {error, enotsup}. - -uudecode(#file_descriptor{module = ?MODULE, data = Port}) -> - call_port(Port, [?RAM_FILE_UUDECODE]); -uudecode(#file_descriptor{}) -> - {error, enotsup}. - advise(#file_descriptor{module = ?MODULE, data = Port}, Offset, Length, Advise) -> Cmd0 = <<?RAM_FILE_ADVISE, Offset:64/signed, Length:64/signed>>, @@ -450,21 +403,6 @@ ll_close(Port) -> %%%----------------------------------------------------------------- %%% Utility functions. -mode_list(read) -> - [read]; -mode_list(write) -> - [write]; -mode_list(read_write) -> - [read, write]; -mode_list({binary, Mode}) when is_atom(Mode) -> - [binary | mode_list(Mode)]; -mode_list({character, Mode}) when is_atom(Mode) -> - mode_list(Mode); -mode_list(_) -> - {error, badarg}. - - - %% Converts a list of mode atoms into an mode word for the driver. %% Returns {Mode, Opts} where Opts is a list of options for %% erlang:open_port/2, or {error, einval} upon failure. diff --git a/lib/kernel/test/ram_file_SUITE.erl b/lib/kernel/test/ram_file_SUITE.erl index b0265393bd..64878bcfa5 100644 --- a/lib/kernel/test/ram_file_SUITE.erl +++ b/lib/kernel/test/ram_file_SUITE.erl @@ -24,8 +24,8 @@ init_per_group/2,end_per_group/2, %% init/1, fini/1, init_per_testcase/2, end_per_testcase/2]). --export([open_modes/1, open_old_modes/1, pread_pwrite/1, position/1, - truncate/1, sync/1, get_set_file/1, compress/1, uuencode/1, +-export([open_modes/1, pread_pwrite/1, position/1, + truncate/1, sync/1, get_file_and_size/1, compress/1, large_file_errors/1, large_file_light/1, large_file_heavy/0, large_file_heavy/1]). @@ -42,8 +42,8 @@ suite() -> {timetrap,{minutes,1}}]. all() -> - [open_modes, open_old_modes, pread_pwrite, position, - truncate, sync, get_set_file, compress, uuencode, + [open_modes, pread_pwrite, position, + truncate, sync, get_file_and_size, compress, large_file_errors, large_file_light, large_file_heavy]. groups() -> @@ -62,7 +62,7 @@ end_per_group(_GroupName, Config) -> Config. -init_per_testcase(Func, Config) -> +init_per_testcase(_Func, Config) -> Config. end_per_testcase(_Func, Config) -> @@ -87,23 +87,6 @@ open_modes(Config) when is_list(Config) -> %% ok. -%% Test that the old style read, write and binary options -%% works for open/2. -open_old_modes(Config) when is_list(Config) -> - Str1 = "The quick brown fox ", - Str2 = "jumps over a lazy dog ", - Str = Str1 ++ Str2, - Bin1 = list_to_binary(Str1), - Bin2 = list_to_binary(Str2), - Bin = list_to_binary(Str), - %% - open_read_write(?RAM_FILE_MODULE, Str1, read_write, Str2), - open_read(?RAM_FILE_MODULE, Str, read), - open_read_write(?RAM_FILE_MODULE, Bin1, {binary, read_write}, Bin2), - open_read(?RAM_FILE_MODULE, Bin, {binary, read}), - %% - ok. - open_read_write(Module, Data1, Options, Data2) -> io:format("~p:open_read_write(~p, ~p, ~p, ~p)~n", [?MODULE, Module, Data1, Options, Data2]), @@ -157,7 +140,7 @@ pread_pwrite(Config) when is_list(Config) -> pread_pwrite_test(?FILE_MODULE, Str, [ram, read, write]), pread_pwrite_test(?FILE_MODULE, Bin, [ram, binary, read, write]), pread_pwrite_test(?RAM_FILE_MODULE, Str, [read, write]), - pread_pwrite_test(?RAM_FILE_MODULE, Bin, {binary, read_write}), + pread_pwrite_test(?RAM_FILE_MODULE, Bin, [binary, read, write]), %% ok. @@ -193,7 +176,7 @@ position(Config) when is_list(Config) -> position_test(?FILE_MODULE, Str, [ram, read]), position_test(?FILE_MODULE, Bin, [ram, binary]), position_test(?RAM_FILE_MODULE, Str, [read]), - position_test(?RAM_FILE_MODULE, Bin, {binary, read}), + position_test(?RAM_FILE_MODULE, Bin, [binary, read]), %% ok. @@ -271,13 +254,13 @@ truncate(Config) when is_list(Config) -> %% ok = truncate_test(?FILE_MODULE, Str, [ram, read, write]), ok = truncate_test(?FILE_MODULE, Bin, [ram, binary, read, write]), - ok = truncate_test(?RAM_FILE_MODULE, Str, read_write), + ok = truncate_test(?RAM_FILE_MODULE, Str, [read, write]), ok = truncate_test(?RAM_FILE_MODULE, Bin, [binary, read, write]), %% {error, eacces} = truncate_test(?FILE_MODULE, Str, [ram]), {error, eacces} = truncate_test(?FILE_MODULE, Bin, [ram, binary, read]), - {error, eacces} = truncate_test(?RAM_FILE_MODULE, Str, read), - {error, eacces} = truncate_test(?RAM_FILE_MODULE, Bin, {binary, read}), + {error, eacces} = truncate_test(?RAM_FILE_MODULE, Str, [read]), + {error, eacces} = truncate_test(?RAM_FILE_MODULE, Bin, [binary, read]), %% ok. @@ -311,13 +294,13 @@ sync(Config) when is_list(Config) -> %% sync_test(?FILE_MODULE, Str, [ram, read, write]), sync_test(?FILE_MODULE, Bin, [ram, binary, read, write]), - sync_test(?RAM_FILE_MODULE, Str, read_write), + sync_test(?RAM_FILE_MODULE, Str, [read, write]), sync_test(?RAM_FILE_MODULE, Bin, [binary, read, write]), %% sync_test(?FILE_MODULE, Str, [ram]), sync_test(?FILE_MODULE, Bin, [ram, binary, read]), - sync_test(?RAM_FILE_MODULE, Str, read), - sync_test(?RAM_FILE_MODULE, Bin, {binary, read}), + sync_test(?RAM_FILE_MODULE, Str, [read]), + sync_test(?RAM_FILE_MODULE, Bin, [binary, read]), %% ok. @@ -334,44 +317,31 @@ sync_test(Module, Data, Options) -> -%% Tests get_file/1, set_file/2, get_file_close/1 and get_size/1. -get_set_file(Config) when is_list(Config) -> +%% Tests get_file/1 and get_size/1. +get_file_and_size(Config) when is_list(Config) -> %% These two strings should not be of equal length. Str = "När högan nord blir snöbetäckt, ", - Str2 = "får alla harar byta dräkt. ", Bin = list_to_binary(Str), - Bin2 = list_to_binary(Str2), %% - ok = get_set_file_test(Str, read_write, Str2), - ok = get_set_file_test(Bin, [binary, read, write], Bin2), - ok = get_set_file_test(Str, read, Str2), - ok = get_set_file_test(Bin, [binary, read], Bin2), + ok = get_file_and_size_test(Str, [read, write]), + ok = get_file_and_size_test(Bin, [binary, read, write]), + ok = get_file_and_size_test(Str, [read]), + ok = get_file_and_size_test(Bin, [binary, read]), %% ok. -get_set_file_test(Data, Options, Data2) -> - io:format("~p:get_set_file_test(~p, ~p, ~p)~n", - [?MODULE, Data, Options, Data2]), +get_file_and_size_test(Data, Options) -> + io:format("~p:get_file_and_size_test(~p, ~p)~n", + [?MODULE, Data, Options]), %% Size = sizeof(Data), - Size2 = sizeof(Data2), %% {ok, Fd} = ?RAM_FILE_MODULE:open(Data, Options), {ok, Size} = ?RAM_FILE_MODULE:get_size(Fd), {ok, Data} = ?RAM_FILE_MODULE:get_file(Fd), - {ok, Data} = ?RAM_FILE_MODULE:get_file_close(Fd), + ok = ?RAM_FILE_MODULE:close(Fd), {error, einval} = ?RAM_FILE_MODULE:get_size(Fd), - {ok, Fd2} = ?RAM_FILE_MODULE:open(Data, Options), - case ?RAM_FILE_MODULE:set_file(Fd2, Data2) of - {ok, Size2} -> - {ok, Size2} = ?RAM_FILE_MODULE:get_size(Fd2), - {ok, Data2} = ?RAM_FILE_MODULE:get_file(Fd2), - {ok, Data2} = ?RAM_FILE_MODULE:get_file_close(Fd2), - ok; - {error, _} = Error -> - {ok, Data} = ?RAM_FILE_MODULE:get_file_close(Fd2), - Error - end. + ok. @@ -437,47 +407,6 @@ mk_42(N) -> B = mk_42(N-1), [B|B]. -%% Test that uuencode/1 and uudecode/1 works. -uuencode(Config) when is_list(Config) -> - Data = proplists:get_value(data_dir, Config), - Real = filename:join(Data, "realmen.html"), - RealUu = filename:join(Data, "realmen.html.uu"), - %% - %% Uudecode test - %% - {ok, FdReal} = ?FILE_MODULE:open(Real, []), - {ok, Fd} = ?FILE_MODULE:open([], [ram, read, write]), - {ok, FdRealUu} = ?FILE_MODULE:open(RealUu, []), - %% - {ok, SzUu} = ?FILE_MODULE:copy(FdRealUu, Fd), - {ok, Sz} = ?RAM_FILE_MODULE:uudecode(Fd), - true = (Sz =< SzUu), - {ok, 0} = ?FILE_MODULE:position(Fd, bof), - true = compare(FdReal, Fd), - %% - %% Uuencode and decode test - %% - F = fun(Offs) -> - Size = Sz - Offs, - {ok, Offs} = ?FILE_MODULE:position(FdReal, {bof,Offs}), - {ok, 0} = ?FILE_MODULE:position(Fd, bof), - ok = ?FILE_MODULE:truncate(Fd), - {ok, Size} = ?FILE_MODULE:copy(FdReal, Fd), - {ok, SizeUu} = ?RAM_FILE_MODULE:uuencode(Fd), - true = (Size =< SizeUu), - {ok, Size} = ?RAM_FILE_MODULE:uudecode(Fd), - {ok, Offs} = ?FILE_MODULE:position(FdReal, {bof,Offs}), - {ok, 0} = ?FILE_MODULE:position(Fd, bof), - true = compare(FdReal, Fd) - end, - lists:foreach(F, lists:seq(0,Sz-1, 43)), - - ok = ?FILE_MODULE:close(FdReal), - ok = ?FILE_MODULE:close(Fd), - ok = ?FILE_MODULE:close(FdRealUu), - %% - ok. - %% Test error checking of large file offsets. large_file_errors(Config) when is_list(Config) -> -- 2.26.2
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor