Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
MariaDB
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
bee338fe
Commit
bee338fe
authored
Jan 12, 2004
by
greg@mysql.com
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Checked and applied Novell-supplied patches inside the netware directory only.
parent
c0cb3afb
Changes
18
Show whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
185 additions
and
73 deletions
+185
-73
netware/BUILD/compile-linux-tools
netware/BUILD/compile-linux-tools
+4
-1
netware/BUILD/compile-netware-END
netware/BUILD/compile-netware-END
+2
-2
netware/BUILD/compile-netware-all
netware/BUILD/compile-netware-all
+1
-0
netware/BUILD/compile-netware-standard
netware/BUILD/compile-netware-standard
+1
-1
netware/BUILD/mwenv
netware/BUILD/mwenv
+6
-6
netware/BUILD/nwbootstrap
netware/BUILD/nwbootstrap
+14
-1
netware/Makefile.am
netware/Makefile.am
+4
-4
netware/isamchk.def
netware/isamchk.def
+1
-0
netware/my_manage.c
netware/my_manage.c
+6
-2
netware/myisamchk.def
netware/myisamchk.def
+1
-0
netware/myisamlog.def
netware/myisamlog.def
+1
-0
netware/myisampack.def
netware/myisampack.def
+1
-0
netware/mysql_test_run.c
netware/mysql_test_run.c
+137
-54
netware/mysqlbinlog.def
netware/mysqlbinlog.def
+1
-0
netware/mysqlcheck.def
netware/mysqlcheck.def
+1
-0
netware/mysqld_safe.c
netware/mysqld_safe.c
+2
-2
netware/mysqldump.def
netware/mysqldump.def
+1
-0
netware/mysqlimport.def
netware/mysqlimport.def
+1
-0
No files found.
netware/BUILD/compile-linux-tools
View file @
bee338fe
...
...
@@ -46,6 +46,9 @@ make clean config.h
(
cd
sql
;
make gen_lex_hash
)
(
cd
strings
;
make conf_to_src
)
# so the file will be linked
(
cd
sql
;
make sql_yacc.cc
)
# copying required linux tools
cp
extra/comp_err extra/comp_err.linux
cp
libmysql/conf_to_src libmysql/conf_to_src.linux
...
...
netware/BUILD/compile-netware-END
View file @
bee338fe
...
...
@@ -29,7 +29,7 @@ rm -rf Makefile.in.bk
make clean bin-dist
# mark the build
for
file
in
*
.tar.gz
for
file
in
*
.tar.gz
*
.zip
do
if
(
expr
"
$file
"
:
"mysql-[1-9].*"
>
/dev/null
)
then
...
...
netware/BUILD/compile-netware-all
View file @
bee338fe
...
...
@@ -8,6 +8,7 @@ set -e
path
=
`
dirname
$0
`
$path
/compile-netware-src
$path
/compile-netware-standard
$path
/compile-netware-debug
#$path/compile-netware-max
...
...
netware/BUILD/compile-netware-standard
View file @
bee338fe
...
...
@@ -13,7 +13,7 @@ path=`dirname $0`
suffix
=
"standard"
extra_configs
=
"
\
--with-innodb
--with-innodb
\
"
.
$path
/compile-netware-END
...
...
netware/BUILD/mwenv
View file @
bee338fe
...
...
@@ -6,9 +6,9 @@
# the default is "F:/mydev"
export
MYDEV
=
"WINE_BUILD_DIR"
export
MWCNWx86Includes
=
"
$MYDEV
/libc/include"
export
MWNWx86Libraries
=
"
$MYDEV
/libc/imports;
$MYDEV
/mw/lib"
export
MWNWx86LibraryFiles
=
"libcpre.o;libc.imp;netware.imp;mwcrtl.lib;mwcpp.lib"
export
MWCNWx86Includes
=
"
$MYDEV
/libc/include
;
$MYDEV
"
export
MWNWx86Libraries
=
"
$MYDEV
/libc/imports;
$MYDEV
/mw/lib
;
$MYDEV
/mysql-VERSION/netware/BUILD
"
export
MWNWx86LibraryFiles
=
"libcpre.o;libc.imp;netware.imp;mwcrtl.lib;mwcpp.lib
;knetware.imp
"
export
WINEPATH
=
"
$MYDEV
/mw/bin"
...
...
@@ -19,11 +19,11 @@ export AR='mwldnlm'
export
AR_FLAGS
=
'-type library -o'
export
AS
=
'mwasmnlm'
export
CC
=
'mwccnlm -gccincludes'
export
CFLAGS
=
'-
dialect c -proc 686 -relax_pointers
'
export
CFLAGS
=
'-
align 8 -proc 686 -relax_pointers -dialect c
'
export
CXX
=
'mwccnlm -gccincludes'
export
CXXFLAGS
=
'-
dialect c++ -proc 686 -bool on -wchar_t on -relax_pointers
-D_WCHAR_T'
export
CXXFLAGS
=
'-
align 8 -proc 686 -relax_pointers -dialect c++ -bool on -wchar_t on
-D_WCHAR_T'
export
LD
=
'mwldnlm'
export
LDFLAGS
=
'-entry _LibCPrelude -exit _LibCPostlude -flags pseudopreemption'
export
LDFLAGS
=
'-entry _LibCPrelude -exit _LibCPostlude -
map -
flags pseudopreemption'
export
RANLIB
=
:
export
STRIP
=
:
netware/BUILD/nwbootstrap
View file @
bee338fe
...
...
@@ -11,7 +11,7 @@ path=`dirname $0`
# repository direcotry
repo_dir
=
`
pwd
`
# build direc
ot
ry
# build direc
to
ry
build_dir
=
"
$HOME
/mydev"
wine_build_dir
=
"F:/mydev"
...
...
@@ -147,10 +147,12 @@ then
fi
# make files writeable
echo
"making files writable..."
cd
$target_dir
chmod
-R
u+rw,g+rw
.
# edit the mvenv file
echo
"updating the mwenv environment file..."
mwenv
=
"./netware/BUILD/mwenv"
mv
-f
$mwenv
$mwenv
.org
sed
-e
"s;WINE_BUILD_DIR;
$wine_build_dir
;g"
\
...
...
@@ -158,6 +160,17 @@ sed -e "s;WINE_BUILD_DIR;$wine_build_dir;g" \
-e
"s;VERSION;
$version
;g"
$mwenv
.org
>
$mwenv
chmod
+rwx
$mwenv
# edit the def file versions
echo
"updating *.def file versions..."
nlm_version
=
`
echo
"
$version
"
|
sed
-e
"s;
\(
[0-9]*
\)\.\(
[0-9]*
\)\.\(
[0-9]*
\)
.*;
\1
,
\2
,
\3
;"
`
for
file
in
./netware/
*
.def
do
mv
-f
$file
$file
.org
sed
-e
"s;VERSION.*;VERSION
$nlm_version
;g"
$file
.org
>
$file
rm
$file
.org
done
# build linux tools
echo
"compiling linux tools..."
./netware/BUILD/compile-linux-tools
...
...
netware/Makefile.am
View file @
bee338fe
...
...
@@ -20,7 +20,7 @@ mysqld_safe_SOURCES= mysqld_safe.c my_manage.c
mysql_install_db_SOURCES
=
mysql_install_db.c my_manage.c
mysql_test_run_SOURCES
=
mysql_test_run.c my_manage.c
libmysql_SOURCES
=
libmysqlmain.c
libmysql_LDADD
=
../libmysql/.libs/libmysqlclient.a
libmysql_LDADD
=
../libmysql/.libs/libmysqlclient.a
@openssl_libs@
netware_build_files
=
client/mysql.def client/mysqladmin.def
\
client/mysqlbinlog.def client/mysqlcheck.def
\
...
...
netware/isamchk.def
View file @
bee338fe
...
...
@@ -2,6 +2,7 @@
# ISAM Check
#------------------------------------------------------------------------------
MODULE libc.nlm
SCREENNAME "MySQL ISAM Table Check Tool"
COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved."
DESCRIPTION "MySQL ISAM Table Check Tool"
VERSION 4, 0
...
...
netware/my_manage.c
View file @
bee338fe
...
...
@@ -199,9 +199,13 @@ int wait_for_server_start(char *bin_dir, char *user, char *password, int port)
add_arg
(
&
al
,
"--user=%s"
,
user
);
add_arg
(
&
al
,
"--password=%s"
,
password
);
add_arg
(
&
al
,
"--silent"
);
/** Not supported on NetWare
add_arg(&al, "-O");
add_arg(&al, "connect_timeout=10");
add_arg(&al, "-w");
**/
add_arg
(
&
al
,
"--host=localhost"
);
add_arg
(
&
al
,
"ping"
);
...
...
netware/myisamchk.def
View file @
bee338fe
...
...
@@ -2,6 +2,7 @@
# MyISAM Check
#------------------------------------------------------------------------------
MODULE libc.nlm
SCREENNAME "MySQL MyISAM Table Check Tool"
COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved."
DESCRIPTION "MySQL MyISAM Table Check Tool"
VERSION 4, 0
...
...
netware/myisamlog.def
View file @
bee338fe
...
...
@@ -2,6 +2,7 @@
# MyISAM Log
#------------------------------------------------------------------------------
MODULE libc.nlm
SCREENNAME "MySQL MyISAM Table Log Tool"
COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved."
DESCRIPTION "MySQL MyISAM Table Log Tool"
VERSION 4, 0
...
...
netware/myisampack.def
View file @
bee338fe
...
...
@@ -2,6 +2,7 @@
# MyISAM Pack
#------------------------------------------------------------------------------
MODULE libc.nlm
SCREENNAME "MySQL MyISAM Table Pack Tool"
COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved."
DESCRIPTION "MySQL MyISAM Table Pack Tool"
VERSION 4, 0
...
...
netware/mysql_test_run.c
View file @
bee338fe
...
...
@@ -27,6 +27,7 @@
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/mode.h>
#include "my_config.h"
#include "my_manage.h"
...
...
@@ -94,6 +95,13 @@ char slave_master_info[PATH_MAX] = "";
char
master_init_script
[
PATH_MAX
]
=
""
;
char
slave_init_script
[
PATH_MAX
]
=
""
;
// OpenSSL
char
ca_cert
[
PATH_MAX
];
char
server_cert
[
PATH_MAX
];
char
server_key
[
PATH_MAX
];
char
client_cert
[
PATH_MAX
];
char
client_key
[
PATH_MAX
];
int
total_skip
=
0
;
int
total_pass
=
0
;
int
total_fail
=
0
;
...
...
@@ -101,6 +109,7 @@ int total_test = 0;
double
total_time
=
0
;
int
use_openssl
=
FALSE
;
int
master_running
=
FALSE
;
int
slave_running
=
FALSE
;
int
skip_slave
=
TRUE
;
...
...
@@ -193,6 +202,7 @@ void install_db(char *datadir)
// args
init_args
(
&
al
);
add_arg
(
&
al
,
mysqld_file
);
add_arg
(
&
al
,
"--no-defaults"
);
add_arg
(
&
al
,
"--bootstrap"
);
add_arg
(
&
al
,
"--skip-grant-tables"
);
add_arg
(
&
al
,
"--basedir=%s"
,
base_dir
);
...
...
@@ -266,15 +276,16 @@ void start_master()
int
err
,
i
;
char
master_out
[
PATH_MAX
];
char
master_err
[
PATH_MAX
];
char
temp
[
PATH_MAX
],
temp2
[
PATH_MAX
];
// remove old berkeley db log files that can confuse the server
removef
(
"%s/log.*"
,
master_dir
);
// remove stale binary logs
removef
(
"%s/
*-bin.*"
,
master
_dir
);
removef
(
"%s/
var/log/*-bin.*"
,
mysql_test
_dir
);
// remove stale binary logs
removef
(
"%s/
*.index"
,
master
_dir
);
removef
(
"%s/
var/log/*.index"
,
mysql_test
_dir
);
// remove master.info file
removef
(
"%s/master.info"
,
master_dir
);
...
...
@@ -289,6 +300,21 @@ void start_master()
if
(
master_init_script
[
0
]
!=
NULL
)
{
// run_init_script(master_init_script);
// TODO: use the scripts
if
(
strindex
(
master_init_script
,
"repair_part2-master.sh"
)
!=
NULL
)
{
FILE
*
fp
;
// create an empty index file
snprintf
(
temp
,
PATH_MAX
,
"%s/test/t1.MYI"
,
master_dir
);
fp
=
fopen
(
temp
,
"wb+"
);
fputs
(
"1"
,
fp
);
fclose
(
fp
);
}
}
// redirection files
...
...
@@ -297,11 +323,16 @@ void start_master()
snprintf
(
master_err
,
PATH_MAX
,
"%s/var/run/master%u.err"
,
mysql_test_dir
,
restarts
);
snprintf
(
temp2
,
PATH_MAX
,
"%s/var"
,
mysql_test_dir
);
mkdir
(
temp2
,
0
);
snprintf
(
temp2
,
PATH_MAX
,
"%s/var/log"
,
mysql_test_dir
);
mkdir
(
temp2
,
0
);
// args
init_args
(
&
al
);
add_arg
(
&
al
,
"%s"
,
mysqld_file
);
add_arg
(
&
al
,
"--no-defaults"
);
add_arg
(
&
al
,
"--log-bin=
master-bin"
);
add_arg
(
&
al
,
"--log-bin=
%s/var/log/master-bin"
,
mysql_test_dir
);
add_arg
(
&
al
,
"--server-id=1"
);
add_arg
(
&
al
,
"--basedir=%s"
,
base_dir
);
add_arg
(
&
al
,
"--port=%u"
,
master_port
);
...
...
@@ -313,6 +344,13 @@ void start_master()
add_arg
(
&
al
,
"--tmpdir=%s"
,
mysql_tmp_dir
);
add_arg
(
&
al
,
"--language=%s"
,
lang_dir
);
if
(
use_openssl
)
{
add_arg
(
&
al
,
"--ssl-ca=%s"
,
ca_cert
);
add_arg
(
&
al
,
"--ssl-cert=%s"
,
server_cert
);
add_arg
(
&
al
,
"--ssl-key=%s"
,
server_key
);
}
// $MASTER_40_ARGS
add_arg
(
&
al
,
"--rpl-recovery-rank=1"
);
add_arg
(
&
al
,
"--init-rpl-role=master"
);
...
...
@@ -329,16 +367,23 @@ void start_master()
if
(
master_opt
[
0
]
!=
NULL
)
{
char
*
p
;
char
*
temp
;
p
=
(
char
*
)
strtok
(
master_opt
,
"
\t
"
);
if
((
temp
=
strstr
(
p
,
"timezone"
))
==
NULL
)
{
while
(
p
)
{
add_arg
(
&
al
,
"%s"
,
p
);
p
=
(
char
*
)
strtok
(
NULL
,
"
\t
"
);
}
}
else
{
//do nothing
}
}
// remove the pid file if it exists
remove
(
master_pid
);
...
...
@@ -409,7 +454,7 @@ void start_slave()
{
// create empty master.info file
snprintf
(
temp
,
PATH_MAX
,
"%s/master.info"
,
slave_dir
);
close
(
open
(
temp
,
O_WRONLY
|
O_CREAT
));
close
(
open
(
temp
,
O_WRONLY
|
O_CREAT
,
S_IRWXU
|
S_IRWXG
|
S_IRWXO
));
}
else
if
(
strindex
(
slave_init_script
,
"rpl000017-slave.sh"
)
!=
NULL
)
{
...
...
@@ -434,7 +479,7 @@ void start_slave()
{
// create empty master.info file
snprintf
(
temp
,
PATH_MAX
,
"%s/master.info"
,
slave_dir
);
close
(
open
(
temp
,
O_WRONLY
|
O_CREAT
));
close
(
open
(
temp
,
O_WRONLY
|
O_CREAT
,
S_IRWXU
|
S_IRWXG
|
S_IRWXO
));
}
}
...
...
@@ -474,6 +519,13 @@ void start_slave()
add_arg
(
&
al
,
"-O"
);
add_arg
(
&
al
,
"slave_net_timeout=10"
);
if
(
use_openssl
)
{
add_arg
(
&
al
,
"--ssl-ca=%s"
,
ca_cert
);
add_arg
(
&
al
,
"--ssl-cert=%s"
,
server_cert
);
add_arg
(
&
al
,
"--ssl-key=%s"
,
server_key
);
}
// slave master info
if
(
slave_master_info
[
0
]
!=
NULL
)
{
...
...
@@ -557,6 +609,7 @@ void start_slave()
******************************************************************************/
void
mysql_start
()
{
log_info
(
"Starting the MySQL server(s): %u"
,
++
restarts
);
start_master
();
start_slave
();
...
...
@@ -623,6 +676,7 @@ void stop_master()
******************************************************************************/
void
mysql_stop
()
{
log_info
(
"Stopping the MySQL server(s)..."
);
stop_master
();
stop_slave
();
...
...
@@ -640,7 +694,6 @@ void mysql_stop()
******************************************************************************/
void
mysql_restart
()
{
log_info
(
"Restarting the MySQL server(s): %u"
,
++
restarts
);
mysql_stop
();
...
...
@@ -771,6 +824,11 @@ void run_test(char *test)
if
(
stat
(
test_file
,
&
info
))
{
snprintf
(
test_file
,
PATH_MAX
,
"%s/%s%s"
,
test_dir
,
test
,
TEST_SUFFIX
);
if
(
access
(
test_file
,
0
))
{
printf
(
"Invalid test name %s, %s file not found
\n
"
,
test
,
test_file
);
return
;
}
}
snprintf
(
result_file
,
PATH_MAX
,
"%s/%s%s"
,
result_dir
,
test
,
NW_RESULT_SUFFIX
);
...
...
@@ -827,6 +885,13 @@ void run_test(char *test)
add_arg
(
&
al
,
"-R"
);
add_arg
(
&
al
,
"%s"
,
result_file
);
if
(
use_openssl
)
{
add_arg
(
&
al
,
"--ssl-ca=%s"
,
ca_cert
);
add_arg
(
&
al
,
"--ssl-cert=%s"
,
client_cert
);
add_arg
(
&
al
,
"--ssl-key=%s"
,
client_key
);
}
// start timer
NXGetTime
(
NX_SINCE_BOOT
,
NX_USECONDS
,
&
start
);
...
...
@@ -1009,6 +1074,8 @@ void die(char *msg)
void
setup
(
char
*
file
)
{
char
temp
[
PATH_MAX
];
char
mysqldump_load
[
PATH_MAX
*
2
],
mysqlbinlog_load
[
PATH_MAX
*
2
];
char
*
p
;
// set the timezone for the timestamp test
...
...
@@ -1035,6 +1102,17 @@ void setup(char *file)
snprintf
(
lang_dir
,
PATH_MAX
,
"%s/share/english"
,
base_dir
);
snprintf
(
char_dir
,
PATH_MAX
,
"%s/share/charsets"
,
base_dir
);
#ifdef HAVE_OPENSSL
use_openssl
=
TRUE
;
#endif // HAVE_OPENSSL
// OpenSSL paths
snprintf
(
ca_cert
,
PATH_MAX
,
"%s/SSL/cacert.pem"
,
base_dir
);
snprintf
(
server_cert
,
PATH_MAX
,
"%s/SSL/server-cert.pem"
,
base_dir
);
snprintf
(
server_key
,
PATH_MAX
,
"%s/SSL/server-key.pem"
,
base_dir
);
snprintf
(
client_cert
,
PATH_MAX
,
"%s/SSL/client-cert.pem"
,
base_dir
);
snprintf
(
client_key
,
PATH_MAX
,
"%s/SSL/client-key.pem"
,
base_dir
);
// setup files
snprintf
(
mysqld_file
,
PATH_MAX
,
"%s/mysqld"
,
bin_dir
);
snprintf
(
mysqltest_file
,
PATH_MAX
,
"%s/mysqltest"
,
bin_dir
);
...
...
@@ -1054,8 +1132,13 @@ void setup(char *file)
strcpy
(
temp
,
strlwr
(
skip_test
));
snprintf
(
skip_test
,
PATH_MAX
,
" %s "
,
temp
);
// enviornment
snprintf
(
mysqlbinlog_load
,
PATH_MAX
*
2
,
"%s/mysqlbinlog --no-defaults --local-load=%s"
,
bin_dir
,
mysql_tmp_dir
);
snprintf
(
mysqldump_load
,
PATH_MAX
*
2
,
"%s/mysqldump --no-defaults -uroot --port=%d"
,
bin_dir
,
master_port
);
// environment
setenv
(
"MYSQL_TEST_DIR"
,
mysql_test_dir
,
1
);
setenv
(
"MYSQL_DUMP"
,
mysqldump_load
,
1
);
setenv
(
"MYSQL_BINLOG"
,
mysqlbinlog_load
,
1
);
setenv
(
"MASTER_MYPORT"
,
"9306"
,
1
);
}
/******************************************************************************
...
...
@@ -1132,14 +1215,14 @@ int main(int argc, char **argv)
closedir
(
dir
);
}
// stop server
mysql_stop
();
log
(
DASH
);
log
(
"
\n
"
);
log
(
"Ending Tests...
\n
"
);
// stop server
mysql_stop
();
// report stats
report_stats
();
...
...
netware/mysqlbinlog.def
View file @
bee338fe
...
...
@@ -2,6 +2,7 @@
# MySQL Binary Log
#------------------------------------------------------------------------------
MODULE libc.nlm
SCREENNAME "MySQL Binary Log Dump Tool"
COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved."
DESCRIPTION "MySQL Binary Log Dump Tool"
VERSION 4, 0
...
...
netware/mysqlcheck.def
View file @
bee338fe
...
...
@@ -2,6 +2,7 @@
# MySQL Client
#------------------------------------------------------------------------------
MODULE libc.nlm
SCREENNAME "MySQL Check Tool"
COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved."
DESCRIPTION "MySQL Check Tool"
VERSION 4, 0
...
...
netware/mysqld_safe.c
View file @
bee338fe
...
...
@@ -459,7 +459,7 @@ void check_data_vol()
if
((
vol
.
flags
&
VOL_NSS_PRESENT
)
==
0
)
{
log
(
"Error:
The data directory is not on an NSS volume!
\n\n
"
);
log
(
"Error:
Either the data directory does not exist or is not on an NSS volume!
\n\n
"
);
exit
(
-
1
);
}
}
...
...
netware/mysqldump.def
View file @
bee338fe
...
...
@@ -2,6 +2,7 @@
# MySQL Admin
#------------------------------------------------------------------------------
MODULE libc.nlm
SCREENNAME "MySQL Dump Tool"
COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved."
DESCRIPTION "MySQL Dump Tool"
VERSION 4, 0
...
...
netware/mysqlimport.def
View file @
bee338fe
...
...
@@ -2,6 +2,7 @@
# MySQL Client
#------------------------------------------------------------------------------
MODULE libc.nlm
SCREENNAME "MySQL Import"
COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved."
DESCRIPTION "MySQL Import Tool"
VERSION 4, 0
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment