Skip to content

Commit 6ac03c0

Browse files
authored
Merge pull request #547 from unidoc-build/prep-rc-v2.7.0
Release v2.7.0
2 parents 6ae50c4 + 6464f43 commit 6ac03c0

File tree

66 files changed

+64998
-64981
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

66 files changed

+64998
-64981
lines changed

algo/algo.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,4 @@
99
// Use of this source code is governed by the UniDoc End User License Agreement
1010
// terms that can be accessed at https://unidoc.io/eula/
1111

12-
package algo ;func RepeatString (s string ,cnt int )string {if cnt <=0{return "";};_d :=make ([]byte ,len (s )*cnt );_e :=[]byte (s );for _ea :=0;_ea < cnt ;_ea ++{copy (_d [_ea :],_e );};return string (_d );};
12+
package algo ;func RepeatString (s string ,cnt int )string {if cnt <=0{return "";};_e :=make ([]byte ,len (s )*cnt );_f :=[]byte (s );for _da :=0;_da < cnt ;_da ++{copy (_e [_da :],_f );};return string (_e );};

chart/chart.go

Lines changed: 437 additions & 440 deletions
Large diffs are not rendered by default.

color/color.go

Lines changed: 40 additions & 42 deletions
Large diffs are not rendered by default.

common/axcontrol/axcontrol.go

Lines changed: 355 additions & 358 deletions
Large diffs are not rendered by default.

common/common.go

Lines changed: 375 additions & 362 deletions
Large diffs are not rendered by default.

common/license/license.go

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -11,40 +11,40 @@
1111

1212
// Package license helps manage commercial licenses and check if they
1313
// are valid for the version of UniOffice used.
14-
package license ;import _ga "github.com/unidoc/unioffice/v2/internal/license";
14+
package license ;import _a "github.com/unidoc/unioffice/v2/internal/license";
1515

16-
// GetLicenseKey returns the currently loaded license key.
17-
func GetLicenseKey ()*LicenseKey {return _ga .GetLicenseKey ()};
16+
// GetMeteredState checks the currently used metered document usage status,
17+
// documents used and credits available.
18+
func GetMeteredState ()(_a .MeteredStatus ,error ){return _a .GetMeteredState ()};
1819

19-
// MakeUnlicensedKey returns a default key.
20-
func MakeUnlicensedKey ()*LicenseKey {return _ga .MakeUnlicensedKey ()};
20+
// GetLicenseKey returns the currently loaded license key.
21+
func GetLicenseKey ()*LicenseKey {return _a .GetLicenseKey ()};
2122

22-
// LegacyLicenseType is the type of license
23-
type LegacyLicenseType =_ga .LegacyLicenseType ;
23+
// LicenseKey represents a loaded license key.
24+
type LicenseKey =_a .LicenseKey ;
2425

2526
// LegacyLicense holds the old-style unioffice license information.
26-
type LegacyLicense =_ga .LegacyLicense ;
27+
type LegacyLicense =_a .LegacyLicense ;
2728

28-
// SetLicenseKey sets and validates the license key.
29-
func SetLicenseKey (content string ,customerName string )error {return _ga .SetLicenseKey (content ,customerName );};
30-
31-
// GetMeteredState checks the currently used metered document usage status,
32-
// documents used and credits available.
33-
func GetMeteredState ()(_ga .MeteredStatus ,error ){return _ga .GetMeteredState ()};
29+
// SetMeteredKeyPersistentCache sets the metered License API Key persistent cache.
30+
// Default value `true`, set to `false` will report the usage immediately to license server,
31+
// this can be used when there's no access to persistent data storage.
32+
func SetMeteredKeyPersistentCache (val bool ){_a .SetMeteredKeyPersistentCache (val )};
3433

35-
// SetMeteredKeyUsageLogVerboseMode sets the metered License API Key usage log verbose mode.
36-
// Default value `false`, set to `true` will log the credit usages and print out to console with log level INFO.
37-
func SetMeteredKeyUsageLogVerboseMode (val bool ){_ga .SetMeteredKeyUsageLogVerboseMode (val )};const (LicenseTierUnlicensed =_ga .LicenseTierUnlicensed ;LicenseTierCommunity =_ga .LicenseTierCommunity ;LicenseTierIndividual =_ga .LicenseTierIndividual ;
38-
LicenseTierBusiness =_ga .LicenseTierBusiness ;);
34+
// LegacyLicenseType is the type of license
35+
type LegacyLicenseType =_a .LegacyLicenseType ;
3936

4037
// SetMeteredKey sets the metered License API key required for SaaS operation.
4138
// Document usage is reported periodically for the product to function correctly.
42-
func SetMeteredKey (apiKey string )error {return _ga .SetMeteredKey (apiKey )};
39+
func SetMeteredKey (apiKey string )error {return _a .SetMeteredKey (apiKey )};
4340

44-
// SetMeteredKeyPersistentCache sets the metered License API Key persistent cache.
45-
// Default value `true`, set to `false` will report the usage immediately to license server,
46-
// this can be used when there's no access to persistent data storage.
47-
func SetMeteredKeyPersistentCache (val bool ){_ga .SetMeteredKeyPersistentCache (val )};
41+
// SetLicenseKey sets and validates the license key.
42+
func SetLicenseKey (content string ,customerName string )error {return _a .SetLicenseKey (content ,customerName );};
4843

49-
// LicenseKey represents a loaded license key.
50-
type LicenseKey =_ga .LicenseKey ;
44+
// SetMeteredKeyUsageLogVerboseMode sets the metered License API Key usage log verbose mode.
45+
// Default value `false`, set to `true` will log the credit usages and print out to console with log level INFO.
46+
func SetMeteredKeyUsageLogVerboseMode (val bool ){_a .SetMeteredKeyUsageLogVerboseMode (val )};const (LicenseTierUnlicensed =_a .LicenseTierUnlicensed ;LicenseTierCommunity =_a .LicenseTierCommunity ;LicenseTierIndividual =_a .LicenseTierIndividual ;LicenseTierBusiness =_a .LicenseTierBusiness ;
47+
);
48+
49+
// MakeUnlicensedKey returns a default key.
50+
func MakeUnlicensedKey ()*LicenseKey {return _a .MakeUnlicensedKey ()};

common/logger/logger.go

Lines changed: 59 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -9,95 +9,96 @@
99
// Use of this source code is governed by the UniDoc End User License Agreement
1010
// terms that can be accessed at https://unidoc.io/eula/
1111

12-
package logger ;import (_f "fmt";_a "io";_e "os";_bf "path/filepath";_b "runtime";);func _fac (_cdb _a .Writer ,_cbg string ,_dfd string ,_bfc ...interface{}){_ ,_de ,_fgd ,_agf :=_b .Caller (3);if !_agf {_de ="\u003f\u003f\u003f";_fgd =0;}else {_de =_bf .Base (_de );
13-
};_bgg :=_f .Sprintf ("\u0025s\u0020\u0025\u0073\u003a\u0025\u0064 ",_cbg ,_de ,_fgd )+_dfd +"\u000a";_f .Fprintf (_cdb ,_bgg ,_bfc ...);};
12+
package logger ;import (_e "fmt";_fa "io";_f "os";_b "path/filepath";_af "runtime";);
1413

15-
// Debug does nothing for dummy logger.
16-
func (DummyLogger )Debug (format string ,args ...interface{}){};
14+
// Error does nothing for dummy logger.
15+
func (DummyLogger )Error (format string ,args ...interface{}){};
1716

18-
// NewConsoleLogger creates new console logger.
19-
func NewConsoleLogger (logLevel LogLevel )*ConsoleLogger {return &ConsoleLogger {LogLevel :logLevel }};
17+
// Warning logs warning message.
18+
func (_dc WriterLogger )Warning (format string ,args ...interface{}){if _dc .LogLevel >=LogLevelWarning {_dbe :="\u005b\u0057\u0041\u0052\u004e\u0049\u004e\u0047\u005d\u0020";_dc .logToWriter (_dc .Output ,_dbe ,format ,args ...);};};
2019

21-
// Warning does nothing for dummy logger.
22-
func (DummyLogger )Warning (format string ,args ...interface{}){};
20+
// Error logs error message.
21+
func (_dgb WriterLogger )Error (format string ,args ...interface{}){if _dgb .LogLevel >=LogLevelError {_eb :="\u005b\u0045\u0052\u0052\u004f\u0052\u005d\u0020";_dgb .logToWriter (_dgb .Output ,_eb ,format ,args ...);};};
22+
23+
// Info does nothing for dummy logger.
24+
func (DummyLogger )Info (format string ,args ...interface{}){};
25+
26+
// Debug logs debug message.
27+
func (_ce ConsoleLogger )Debug (format string ,args ...interface{}){if _ce .LogLevel >=LogLevelDebug {_fca :="\u005b\u0044\u0045\u0042\u0055\u0047\u005d\u0020";_ce .output (_f .Stdout ,_fca ,format ,args ...);};};
2328

2429
// IsLogLevel returns true if log level is greater or equal than `level`.
2530
// Can be used to avoid resource intensive calls to loggers.
26-
func (_caf ConsoleLogger )IsLogLevel (level LogLevel )bool {return _caf .LogLevel >=level };
31+
func (_ged ConsoleLogger )IsLogLevel (level LogLevel )bool {return _ged .LogLevel >=level };func _gda (_cd _fa .Writer ,_bfb string ,_cag string ,_be ...interface{}){_ ,_efg ,_gdd ,_bbe :=_af .Caller (3);if !_bbe {_efg ="\u003f\u003f\u003f";_gdd =0;}else {_efg =_b .Base (_efg );
32+
};_cb :=_e .Sprintf ("\u0025s\u0020\u0025\u0073\u003a\u0025\u0064 ",_bfb ,_efg ,_gdd )+_cag +"\u000a";_e .Fprintf (_cd ,_cb ,_be ...);};
2733

28-
// ConsoleLogger is a logger that writes logs to the 'os.Stdout'
29-
type ConsoleLogger struct{LogLevel LogLevel ;};const (LogLevelTrace LogLevel =5;LogLevelDebug LogLevel =4;LogLevelInfo LogLevel =3;LogLevelNotice LogLevel =2;LogLevelWarning LogLevel =1;LogLevelError LogLevel =0;);
30-
31-
// Info does nothing for dummy logger.
32-
func (DummyLogger )Info (format string ,args ...interface{}){};func (_ac WriterLogger )logToWriter (_df _a .Writer ,_fbc string ,_bff string ,_gg ...interface{}){_fac (_df ,_fbc ,_bff ,_gg );};
34+
// NewWriterLogger creates new 'writer' logger.
35+
func NewWriterLogger (logLevel LogLevel ,writer _fa .Writer )*WriterLogger {logger :=WriterLogger {Output :writer ,LogLevel :logLevel };return &logger ;};
3336

34-
// Notice does nothing for dummy logger.
35-
func (DummyLogger )Notice (format string ,args ...interface{}){};
37+
// Warning logs warning message.
38+
func (_aa ConsoleLogger )Warning (format string ,args ...interface{}){if _aa .LogLevel >=LogLevelWarning {_c :="\u005b\u0057\u0041\u0052\u004e\u0049\u004e\u0047\u005d\u0020";_aa .output (_f .Stdout ,_c ,format ,args ...);};};
3639

37-
// Info logs info message.
38-
func (_aba ConsoleLogger )Info (format string ,args ...interface{}){if _aba .LogLevel >=LogLevelInfo {_fg :="\u005bI\u004e\u0046\u004f\u005d\u0020";_aba .output (_e .Stdout ,_fg ,format ,args ...);};};
40+
// Notice logs notice message.
41+
func (_dg ConsoleLogger )Notice (format string ,args ...interface{}){if _dg .LogLevel >=LogLevelNotice {_fb :="\u005bN\u004f\u0054\u0049\u0043\u0045\u005d ";_dg .output (_f .Stdout ,_fb ,format ,args ...);};};
3942

40-
// Trace does nothing for dummy logger.
41-
func (DummyLogger )Trace (format string ,args ...interface{}){};
43+
// ConsoleLogger is a logger that writes logs to the 'os.Stdout'
44+
type ConsoleLogger struct{LogLevel LogLevel ;};
4245

43-
// Debug logs debug message.
44-
func (_aa WriterLogger )Debug (format string ,args ...interface{}){if _aa .LogLevel >=LogLevelDebug {_faa :="\u005b\u0044\u0045\u0042\u0055\u0047\u005d\u0020";_aa .logToWriter (_aa .Output ,_faa ,format ,args ...);};};
46+
// IsLogLevel returns true from dummy logger.
47+
func (DummyLogger )IsLogLevel (level LogLevel )bool {return true };var Log Logger =DummyLogger {};
4548

4649
// SetLogger sets 'logger' to be used by the unidoc unipdf library.
4750
func SetLogger (logger Logger ){Log =logger };
4851

49-
// Warning logs warning message.
50-
func (_gaa WriterLogger )Warning (format string ,args ...interface{}){if _gaa .LogLevel >=LogLevelWarning {_fbb :="\u005b\u0057\u0041\u0052\u004e\u0049\u004e\u0047\u005d\u0020";_gaa .logToWriter (_gaa .Output ,_fbb ,format ,args ...);};};
51-
52-
// Warning logs warning message.
53-
func (_ag ConsoleLogger )Warning (format string ,args ...interface{}){if _ag .LogLevel >=LogLevelWarning {_fd :="\u005b\u0057\u0041\u0052\u004e\u0049\u004e\u0047\u005d\u0020";_ag .output (_e .Stdout ,_fd ,format ,args ...);};};
54-
55-
// LogLevel is the verbosity level for logging.
56-
type LogLevel int ;var Log Logger =DummyLogger {};func (_cc ConsoleLogger )output (_bee _a .Writer ,_da string ,_cf string ,_dad ...interface{}){_fac (_bee ,_da ,_cf ,_dad ...);};
57-
58-
// Error logs error message.
59-
func (_bg WriterLogger )Error (format string ,args ...interface{}){if _bg .LogLevel >=LogLevelError {_bcg :="\u005b\u0045\u0052\u0052\u004f\u0052\u005d\u0020";_bg .logToWriter (_bg .Output ,_bcg ,format ,args ...);};};
60-
6152
// Info logs info message.
62-
func (_ec WriterLogger )Info (format string ,args ...interface{}){if _ec .LogLevel >=LogLevelInfo {_ddc :="\u005bI\u004e\u0046\u004f\u005d\u0020";_ec .logToWriter (_ec .Output ,_ddc ,format ,args ...);};};
53+
func (_geg ConsoleLogger )Info (format string ,args ...interface{}){if _geg .LogLevel >=LogLevelInfo {_ae :="\u005bI\u004e\u0046\u004f\u005d\u0020";_geg .output (_f .Stdout ,_ae ,format ,args ...);};};
6354

6455
// Notice logs notice message.
65-
func (_dg WriterLogger )Notice (format string ,args ...interface{}){if _dg .LogLevel >=LogLevelNotice {_bd :="\u005bN\u004f\u0054\u0049\u0043\u0045\u005d ";_dg .logToWriter (_dg .Output ,_bd ,format ,args ...);};};
56+
func (_ed WriterLogger )Notice (format string ,args ...interface{}){if _ed .LogLevel >=LogLevelNotice {_dbg :="\u005bN\u004f\u0054\u0049\u0043\u0045\u005d ";_ed .logToWriter (_ed .Output ,_dbg ,format ,args ...);};};
6657

67-
// Error logs error message.
68-
func (_af ConsoleLogger )Error (format string ,args ...interface{}){if _af .LogLevel >=LogLevelError {_gb :="\u005b\u0045\u0052\u0052\u004f\u0052\u005d\u0020";_af .output (_e .Stdout ,_gb ,format ,args ...);};};
58+
// NewConsoleLogger creates new console logger.
59+
func NewConsoleLogger (logLevel LogLevel )*ConsoleLogger {return &ConsoleLogger {LogLevel :logLevel }};
6960

70-
// Trace logs trace message.
71-
func (_bcge WriterLogger )Trace (format string ,args ...interface{}){if _bcge .LogLevel >=LogLevelTrace {_fab :="\u005b\u0054\u0052\u0041\u0043\u0045\u005d\u0020";_bcge .logToWriter (_bcge .Output ,_fab ,format ,args ...);};};
61+
// Notice does nothing for dummy logger.
62+
func (DummyLogger )Notice (format string ,args ...interface{}){};
63+
64+
// Logger is the interface used for logging in the unipdf package.
65+
type Logger interface{Error (_fe string ,_ac ...interface{});Warning (_fc string ,_ef ...interface{});Notice (_g string ,_ge ...interface{});Info (_ea string ,_d ...interface{});Debug (_bb string ,_db ...interface{});Trace (_afc string ,_fg ...interface{});
66+
IsLogLevel (_bf LogLevel )bool ;};
67+
68+
// Debug logs debug message.
69+
func (_ceg WriterLogger )Debug (format string ,args ...interface{}){if _ceg .LogLevel >=LogLevelDebug {_bbg :="\u005b\u0044\u0045\u0042\u0055\u0047\u005d\u0020";_ceg .logToWriter (_ceg .Output ,_bbg ,format ,args ...);};};func (_fgf WriterLogger )logToWriter (_ff _fa .Writer ,_ddd string ,_fed string ,_bgc ...interface{}){_gda (_ff ,_ddd ,_fed ,_bgc );
70+
};
7271

7372
// Trace logs trace message.
74-
func (_gc ConsoleLogger )Trace (format string ,args ...interface{}){if _gc .LogLevel >=LogLevelTrace {_be :="\u005b\u0054\u0052\u0041\u0043\u0045\u005d\u0020";_gc .output (_e .Stdout ,_be ,format ,args ...);};};
73+
func (_fd ConsoleLogger )Trace (format string ,args ...interface{}){if _fd .LogLevel >=LogLevelTrace {_ba :="\u005b\u0054\u0052\u0041\u0043\u0045\u005d\u0020";_fd .output (_f .Stdout ,_ba ,format ,args ...);};};
7574

76-
// Logger is the interface used for logging in the unipdf package.
77-
type Logger interface{Error (_d string ,_fc ...interface{});Warning (_ca string ,_cb ...interface{});Notice (_dc string ,_g ...interface{});Info (_ef string ,_fa ...interface{});Debug (_ab string ,_gf ...interface{});Trace (_fb string ,_eb ...interface{});
78-
IsLogLevel (_bb LogLevel )bool ;};
75+
// Warning does nothing for dummy logger.
76+
func (DummyLogger )Warning (format string ,args ...interface{}){};
7977

80-
// Error does nothing for dummy logger.
81-
func (DummyLogger )Error (format string ,args ...interface{}){};
78+
// Error logs error message.
79+
func (_gd ConsoleLogger )Error (format string ,args ...interface{}){if _gd .LogLevel >=LogLevelError {_afe :="\u005b\u0045\u0052\u0052\u004f\u0052\u005d\u0020";_gd .output (_f .Stdout ,_afe ,format ,args ...);};};
8280

83-
// NewWriterLogger creates new 'writer' logger.
84-
func NewWriterLogger (logLevel LogLevel ,writer _a .Writer )*WriterLogger {logger :=WriterLogger {Output :writer ,LogLevel :logLevel };return &logger ;};
81+
// LogLevel is the verbosity level for logging.
82+
type LogLevel int ;func (_dd ConsoleLogger )output (_cee _fa .Writer ,_ee string ,_fcb string ,_aee ...interface{}){_gda (_cee ,_ee ,_fcb ,_aee ...);};
8583

86-
// Notice logs notice message.
87-
func (_ff ConsoleLogger )Notice (format string ,args ...interface{}){if _ff .LogLevel >=LogLevelNotice {_ad :="\u005bN\u004f\u0054\u0049\u0043\u0045\u005d ";_ff .output (_e .Stdout ,_ad ,format ,args ...);};};
84+
// Debug does nothing for dummy logger.
85+
func (DummyLogger )Debug (format string ,args ...interface{}){};const (LogLevelTrace LogLevel =5;LogLevelDebug LogLevel =4;LogLevelInfo LogLevel =3;LogLevelNotice LogLevel =2;LogLevelWarning LogLevel =1;LogLevelError LogLevel =0;);
8886

89-
// IsLogLevel returns true from dummy logger.
90-
func (DummyLogger )IsLogLevel (level LogLevel )bool {return true };
87+
// Info logs info message.
88+
func (_bg WriterLogger )Info (format string ,args ...interface{}){if _bg .LogLevel >=LogLevelInfo {_fcd :="\u005bI\u004e\u0046\u004f\u005d\u0020";_bg .logToWriter (_bg .Output ,_fcd ,format ,args ...);};};
9189

9290
// WriterLogger is the logger that writes data to the Output writer
93-
type WriterLogger struct{LogLevel LogLevel ;Output _a .Writer ;};
91+
type WriterLogger struct{LogLevel LogLevel ;Output _fa .Writer ;};
92+
93+
// IsLogLevel returns true if log level is greater or equal than `level`.
94+
// Can be used to avoid resource intensive calls to loggers.
95+
func (_fag WriterLogger )IsLogLevel (level LogLevel )bool {return _fag .LogLevel >=level };
9496

9597
// DummyLogger does nothing.
9698
type DummyLogger struct{};
9799

98-
// IsLogLevel returns true if log level is greater or equal than `level`.
99-
// Can be used to avoid resource intensive calls to loggers.
100-
func (_dd WriterLogger )IsLogLevel (level LogLevel )bool {return _dd .LogLevel >=level };
100+
// Trace does nothing for dummy logger.
101+
func (DummyLogger )Trace (format string ,args ...interface{}){};
101102

102-
// Debug logs debug message.
103-
func (_cd ConsoleLogger )Debug (format string ,args ...interface{}){if _cd .LogLevel >=LogLevelDebug {_ga :="\u005b\u0044\u0045\u0042\u0055\u0047\u005d\u0020";_cd .output (_e .Stdout ,_ga ,format ,args ...);};};
103+
// Trace logs trace message.
104+
func (_ca WriterLogger )Trace (format string ,args ...interface{}){if _ca .LogLevel >=LogLevelTrace {_gdb :="\u005b\u0054\u0052\u0041\u0043\u0045\u005d\u0020";_ca .logToWriter (_ca .Output ,_gdb ,format ,args ...);};};

common/tempstorage/diskstore/diskstore.go

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,22 +11,22 @@
1111

1212
// Package diskstore implements tempStorage interface
1313
// by using disk as a storage
14-
package diskstore ;import (_gc "github.com/unidoc/unioffice/v2/common/tempstorage";_ga "io/ioutil";_a "os";_d "strings";);
15-
16-
// Open opens file from disk according to a path
17-
func (_f diskStorage )Open (path string )(_gc .File ,error ){return _a .OpenFile (path ,_a .O_RDWR ,0644)};
18-
19-
// TempFile creates a new temp file by calling ioutil TempFile
20-
func (_c diskStorage )TempFile (dir ,pattern string )(_gc .File ,error ){return _ga .TempFile (dir ,pattern );};
14+
package diskstore ;import (_de "github.com/unidoc/unioffice/v2/common/tempstorage";_b "io/ioutil";_df "os";_d "strings";);
2115

2216
// TempFile creates a new temp directory by calling ioutil TempDir
23-
func (_ad diskStorage )TempDir (pattern string )(string ,error ){return _ga .TempDir ("",pattern )};
24-
25-
// SetAsStorage sets temp storage as a disk storage
26-
func SetAsStorage (){_b :=diskStorage {};_gc .SetAsStorage (&_b )};
17+
func (_f diskStorage )TempDir (pattern string )(string ,error ){return _b .TempDir ("",pattern )};type diskStorage struct{};
2718

2819
// Add is not applicable in the diskstore implementation
29-
func (_ag diskStorage )Add (path string )error {return nil };type diskStorage struct{};
20+
func (_a diskStorage )Add (path string )error {return nil };
21+
22+
// SetAsStorage sets temp storage as a disk storage
23+
func SetAsStorage (){_bc :=diskStorage {};_de .SetAsStorage (&_bc )};
3024

3125
// RemoveAll removes all files in the directory
32-
func (_ba diskStorage )RemoveAll (dir string )error {if _d .HasPrefix (dir ,_a .TempDir ()){return _a .RemoveAll (dir );};return nil ;};
26+
func (_g diskStorage )RemoveAll (dir string )error {if _d .HasPrefix (dir ,_df .TempDir ()){return _df .RemoveAll (dir );};return nil ;};
27+
28+
// TempFile creates a new temp file by calling ioutil TempFile
29+
func (_dc diskStorage )TempFile (dir ,pattern string )(_de .File ,error ){return _b .TempFile (dir ,pattern );};
30+
31+
// Open opens file from disk according to a path
32+
func (_ec diskStorage )Open (path string )(_de .File ,error ){return _df .OpenFile (path ,_df .O_RDWR ,0644);};

0 commit comments

Comments
 (0)