!4 上传wine9.0
From: @lishunlong6 Reviewed-by: @linchaochao Signed-off-by: @linchaochao
This commit is contained in:
commit
efd65a085a
36
README.en.md
36
README.en.md
@ -1,36 +0,0 @@
|
|||||||
# wine
|
|
||||||
|
|
||||||
#### Description
|
|
||||||
allow Apps developed for Microsoft Windows to run on Unix-like operating systems
|
|
||||||
|
|
||||||
#### Software Architecture
|
|
||||||
Software architecture description
|
|
||||||
|
|
||||||
#### Installation
|
|
||||||
|
|
||||||
1. xxxx
|
|
||||||
2. xxxx
|
|
||||||
3. xxxx
|
|
||||||
|
|
||||||
#### Instructions
|
|
||||||
|
|
||||||
1. xxxx
|
|
||||||
2. xxxx
|
|
||||||
3. xxxx
|
|
||||||
|
|
||||||
#### Contribution
|
|
||||||
|
|
||||||
1. Fork the repository
|
|
||||||
2. Create Feat_xxx branch
|
|
||||||
3. Commit your code
|
|
||||||
4. Create Pull Request
|
|
||||||
|
|
||||||
|
|
||||||
#### Gitee Feature
|
|
||||||
|
|
||||||
1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md
|
|
||||||
2. Gitee blog [blog.gitee.com](https://blog.gitee.com)
|
|
||||||
3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore)
|
|
||||||
4. The most valuable open source project [GVP](https://gitee.com/gvp)
|
|
||||||
5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help)
|
|
||||||
6. The most popular members [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)
|
|
||||||
37
README.md
37
README.md
@ -1,37 +0,0 @@
|
|||||||
# wine
|
|
||||||
|
|
||||||
#### 介绍
|
|
||||||
allow Apps developed for Microsoft Windows to run on Unix-like operating systems
|
|
||||||
|
|
||||||
#### 软件架构
|
|
||||||
软件架构说明
|
|
||||||
|
|
||||||
|
|
||||||
#### 安装教程
|
|
||||||
|
|
||||||
1. xxxx
|
|
||||||
2. xxxx
|
|
||||||
3. xxxx
|
|
||||||
|
|
||||||
#### 使用说明
|
|
||||||
|
|
||||||
1. xxxx
|
|
||||||
2. xxxx
|
|
||||||
3. xxxx
|
|
||||||
|
|
||||||
#### 参与贡献
|
|
||||||
|
|
||||||
1. Fork 本仓库
|
|
||||||
2. 新建 Feat_xxx 分支
|
|
||||||
3. 提交代码
|
|
||||||
4. 新建 Pull Request
|
|
||||||
|
|
||||||
|
|
||||||
#### 码云特技
|
|
||||||
|
|
||||||
1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md
|
|
||||||
2. 码云官方博客 [blog.gitee.com](https://blog.gitee.com)
|
|
||||||
3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解码云上的优秀开源项目
|
|
||||||
4. [GVP](https://gitee.com/gvp) 全称是码云最有价值开源项目,是码云综合评定出的优秀开源项目
|
|
||||||
5. 码云官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help)
|
|
||||||
6. 码云封面人物是一档用来展示码云会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)
|
|
||||||
@ -1 +0,0 @@
|
|||||||
/usr/lib/wine/
|
|
||||||
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:a0e3139b0beaa8cd0cd3fbafc96cd6097df615caa7045f377aeccce70cddf5fc
|
|
||||||
size 23630916
|
|
||||||
@ -1,16 +0,0 @@
|
|||||||
-----BEGIN PGP SIGNATURE-----
|
|
||||||
|
|
||||||
iQIzBAABCgAdFiEE2iNXmnTUrZr50/lFzvrI6q8XUZ0FAl5+bJcACgkQzvrI6q8X
|
|
||||||
UZ1eZBAAneHEgkWN6guaBBAW9qal5khdIJOYTlBo7gCbunZvEFnDNQasqv1cfdal
|
|
||||||
oceiRlBxC+cb1EyZ1Y2SiJSCilb7Q689XZzBYcck84cyrPtfy5Gr7bSqoLEV+/5a
|
|
||||||
jj3iK6sqSnjVXCXbZV459bzdFAaNhnirlgRvcqP9xT/AmjcFJ2fpZxKRkNMFM6I+
|
|
||||||
fve+yGYFmBIG7UjFUd5+vy3DRApKgiTn6wpKIIpbqny+lvHmrjVp8MHitB/Q3ykb
|
|
||||||
MpGY0a1G72nDUz/WmvZl8+MfjsOQ8uwxaHla0ZR1hDm/oq5t34SMvp+BhHRqma4G
|
|
||||||
dQR3XKWRemYrBUbiFB4Mvs4lBUSpJUtLIf5Hqt/B2ZOpWewqPLtl3bBNEusFUcQW
|
|
||||||
TRZyQK6dV7CPXpK+zdo9qM8YcML8mWfxr3wH2hxzq9Gr5/VL76XmwCjYehTY9m8g
|
|
||||||
qB9kGew/i58oV9wmO+JP59TJrvpcxtg1ubP/QkXn9CteYAEWXwW3KhHi80ntBXb1
|
|
||||||
lv8Ty04jHRDCO2u1kHhvlty2BNg2ZQfgoStwOovqHM03NayElHt5bBkz6wktaoZA
|
|
||||||
Y/bMMFms0wzRDYxkA6cq0lH/Vb4yJyXL4Rdg3D+/t1hyiFIQYfIELUJBIrPD2L/D
|
|
||||||
xzdcXRtKl3v+aCYk98skkeo+uNa5ImFv58T+Rstg6DNWMHTv/co=
|
|
||||||
=dEeC
|
|
||||||
-----END PGP SIGNATURE-----
|
|
||||||
@ -1 +0,0 @@
|
|||||||
/usr/lib64/wine/
|
|
||||||
25
wine-7.22-autoconf-2.72.patch
Normal file
25
wine-7.22-autoconf-2.72.patch
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
--- wine-7.20.old/aclocal.m4 2022-11-17 17:19:01.772386752 +0100
|
||||||
|
+++ wine-7.20/aclocal.m4 2022-11-17 17:24:03.721683055 +0100
|
||||||
|
@@ -279,15 +279,17 @@
|
||||||
|
dnl
|
||||||
|
dnl Usage: WINE_CHECK_DEFINE(name),[action-if-yes,[action-if-no]])
|
||||||
|
dnl
|
||||||
|
AC_DEFUN([WINE_CHECK_DEFINE],
|
||||||
|
[AS_VAR_PUSHDEF([ac_var],[ac_cv_cpp_def_$1])dnl
|
||||||
|
-AC_CACHE_CHECK([whether we need to define $1],ac_var,
|
||||||
|
- AC_EGREP_CPP(yes,[#ifndef $1
|
||||||
|
-yes
|
||||||
|
-#endif],
|
||||||
|
- [AS_VAR_SET(ac_var,yes)],[AS_VAR_SET(ac_var,no)]))
|
||||||
|
+AC_CACHE_CHECK([whether we need to define $1], ac_var,
|
||||||
|
+ [AC_PREPROC_IFELSE([[
|
||||||
|
+#ifndef $1
|
||||||
|
+#error not defined
|
||||||
|
+#endif
|
||||||
|
+]],
|
||||||
|
+ [AS_VAR_SET(ac_var,no)],[AS_VAR_SET(ac_var,yes)])])
|
||||||
|
AS_VAR_IF([ac_var],[yes],
|
||||||
|
[CFLAGS="$CFLAGS -D$1"
|
||||||
|
LINTFLAGS="$LINTFLAGS -D$1"])dnl
|
||||||
|
AS_VAR_POPDEF([ac_var])])
|
||||||
|
|
||||||
BIN
wine-9.0.tar.xz
Normal file
BIN
wine-9.0.tar.xz
Normal file
Binary file not shown.
16
wine-9.0.tar.xz.sign
Normal file
16
wine-9.0.tar.xz.sign
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
-----BEGIN PGP SIGNATURE-----
|
||||||
|
|
||||||
|
iQIzBAABCgAdFiEE2iNXmnTUrZr50/lFzvrI6q8XUZ0FAmWm7aUACgkQzvrI6q8X
|
||||||
|
UZ1IwhAArp/IEVLBG4DdnsWpHktgsBNa5+HXc72ckKsyJsmRqeeLBAaDENy6bVxA
|
||||||
|
RDiasEigY28wNvB9K1L4WnBgwPIBGtOsYXyOOn4cd2UHofs5iYfGU+u+i2YsW8LL
|
||||||
|
KJa05wQAadd4FsZj38HZY+B0chQdwOnrtcqsp+HrEEN3wbsC3b5vcCtGTv/RF9J7
|
||||||
|
HB0VQqCTafFtMOwq/5urpQsx/DmCc14zUvp5Gw1NgE4fdOmdKtlVfSY8OptLXLUl
|
||||||
|
H5BQInD7DabrfhXge9KXQgAzvIaCd4SwK6ZvBWyW5/CbihGtShFV1QLjWaWr25SL
|
||||||
|
/tQ1d3hMXr5HQNyEJWUiP27efBqBfBr2r6oO/Z/Wssj/Pdtr8HlRY9f4/sf8SIUz
|
||||||
|
NmTS42Yv3YO7b9Uaix+TlrzT9xZ69I3RTv8FXMKizyfzPevozfFAUSKgi2UyD6u8
|
||||||
|
N39lm/OstoCY4samE0I4thju+1lop1Aj1npWSFu0nBHM4fFmccAGcKgU9xpTkKoD
|
||||||
|
JReXvTIJm4LtCP4rqpyb6LG53yJ4lHMrZr0IPtuxshPCBZE6rQjWpJIy+3hrA0Nn
|
||||||
|
z8BjRtlXIHbFVlq/F1WeIlwq1tF6+9qiNHXeNZMI7keRdk8cSU8SBr+jKufjsGZE
|
||||||
|
KNTK8qmyhdfqoIiG5QrN8M3fs0XtV+gZ70jYAbUGrbF1dnwds2I=
|
||||||
|
=+AcQ
|
||||||
|
-----END PGP SIGNATURE-----
|
||||||
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:3559ed0f91dd9a863b4d3df70c41cdba385ce7a64f15102501a39e9f2c53b69c
|
|
||||||
size 9920540
|
|
||||||
115
wine-staging-9.0.patch
Normal file
115
wine-staging-9.0.patch
Normal file
@ -0,0 +1,115 @@
|
|||||||
|
--- patches/eventfd_synchronization/0003-ntdll-Create-eventfd-based-objects-for-semaphores.patch.orig 2024-01-16 15:47:35.000000000 -0600
|
||||||
|
+++ patches/eventfd_synchronization/0003-ntdll-Create-eventfd-based-objects-for-semaphores.patch 2024-01-17 20:36:36.796186786 -0600
|
||||||
|
@@ -197,7 +197,7 @@
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
-+ if (!InterlockedCompareExchange( (int *)&esync_list[entry][idx].type, type, 0 ))
|
||||||
|
++ if (!InterlockedCompareExchange( (LONG *)&esync_list[entry][idx].type, type, 0 ))
|
||||||
|
+ {
|
||||||
|
+ esync_list[entry][idx].fd = fd;
|
||||||
|
+ esync_list[entry][idx].shm = shm;
|
||||||
|
--- patches/eventfd_synchronization/0005-ntdll-Implement-NtClose.patch.orig 2024-01-16 15:47:35.000000000 -0600
|
||||||
|
+++ patches/eventfd_synchronization/0005-ntdll-Implement-NtClose.patch 2024-01-17 20:22:59.170405980 -0600
|
||||||
|
@@ -25,7 +25,7 @@
|
||||||
|
+
|
||||||
|
+ if (entry < ESYNC_LIST_ENTRIES && esync_list[entry])
|
||||||
|
+ {
|
||||||
|
-+ if (InterlockedExchange((int *)&esync_list[entry][idx].type, 0))
|
||||||
|
++ if (InterlockedExchange((LONG *)&esync_list[entry][idx].type, 0))
|
||||||
|
+ {
|
||||||
|
+ close( esync_list[entry][idx].fd );
|
||||||
|
+ return STATUS_SUCCESS;
|
||||||
|
--- patches/eventfd_synchronization/0004-ntdll-Implement-NtReleaseSemaphore.patch.orig 2024-01-16 15:47:35.000000000 -0600
|
||||||
|
+++ patches/eventfd_synchronization/0004-ntdll-Implement-NtReleaseSemaphore.patch 2024-01-17 20:25:51.399420034 -0600
|
||||||
|
@@ -60,7 +60,7 @@
|
||||||
|
+
|
||||||
|
+ if (count + current > semaphore->max)
|
||||||
|
+ return STATUS_SEMAPHORE_LIMIT_EXCEEDED;
|
||||||
|
-+ } while (InterlockedCompareExchange( &semaphore->count, count + current, current ) != current);
|
||||||
|
++ } while (InterlockedCompareExchange( (LONG *) &semaphore->count, count + current, current ) != current);
|
||||||
|
+
|
||||||
|
+ if (prev) *prev = current;
|
||||||
|
+
|
||||||
|
--- patches/eventfd_synchronization/0050-ntdll-server-Try-to-avoid-poll-for-signaled-events.patch.orig 2024-01-16 15:47:35.000000000 -0600
|
||||||
|
+++ patches/eventfd_synchronization/0050-ntdll-server-Try-to-avoid-poll-for-signaled-events.patch 2024-01-17 20:29:39.020112232 -0600
|
||||||
|
@@ -90,7 +90,7 @@
|
||||||
|
+ if (obj->type == ESYNC_MANUAL_EVENT)
|
||||||
|
+ {
|
||||||
|
+ /* Acquire the spinlock. */
|
||||||
|
-+ while (InterlockedCompareExchange( &event->locked, 1, 0 ))
|
||||||
|
++ while (InterlockedCompareExchange( (LONG *) &event->locked, 1, 0 ))
|
||||||
|
+ small_pause();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
@@ -103,7 +103,7 @@
|
||||||
|
+ * eventfd is unsignaled (i.e. reset shm, set shm, set fd, reset fd), we
|
||||||
|
+ * *must* signal the fd now, or any waiting threads will never wake up. */
|
||||||
|
+
|
||||||
|
-+ if (!InterlockedExchange( &event->signaled, 1 ) || obj->type == ESYNC_AUTO_EVENT)
|
||||||
|
++ if (!InterlockedExchange( (LONG *) &event->signaled, 1 ) || obj->type == ESYNC_AUTO_EVENT)
|
||||||
|
+ {
|
||||||
|
+ if (write( obj->fd, &value, sizeof(value) ) == -1)
|
||||||
|
+ ERR("write: %s\n", strerror(errno));
|
||||||
|
@@ -137,7 +137,7 @@
|
||||||
|
+ if (obj->type == ESYNC_MANUAL_EVENT)
|
||||||
|
+ {
|
||||||
|
+ /* Acquire the spinlock. */
|
||||||
|
-+ while (InterlockedCompareExchange( &event->locked, 1, 0 ))
|
||||||
|
++ while (InterlockedCompareExchange( (LONG *) &event->locked, 1, 0 ))
|
||||||
|
+ small_pause();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
@@ -147,7 +147,7 @@
|
||||||
|
+ * For auto-reset events, we have no guarantee that the previous "signaled"
|
||||||
|
+ * state is actually correct. We need to leave both states unsignaled after
|
||||||
|
+ * leaving this function, so we always have to read(). */
|
||||||
|
-+ if (InterlockedExchange( &event->signaled, 0 ) || obj->type == ESYNC_AUTO_EVENT)
|
||||||
|
++ if (InterlockedExchange( (LONG *) &event->signaled, 0 ) || obj->type == ESYNC_AUTO_EVENT)
|
||||||
|
+ {
|
||||||
|
+ if (read( obj->fd, &value, sizeof(value) ) == -1 && errno != EWOULDBLOCK && errno != EAGAIN)
|
||||||
|
+ {
|
||||||
|
--- patches/eventfd_synchronization/0006-ntdll-Implement-NtWaitForMultipleObjects.patch.orig 2024-01-16 15:47:35.000000000 -0600
|
||||||
|
+++ patches/eventfd_synchronization/0006-ntdll-Implement-NtWaitForMultipleObjects.patch 2024-01-17 20:31:23.217332813 -0600
|
||||||
|
@@ -82,7 +82,7 @@
|
||||||
|
+ * fact that we were able to grab it at all means the count is nonzero,
|
||||||
|
+ * and if someone else grabbed it then the count must have been >= 2,
|
||||||
|
+ * etc. */
|
||||||
|
-+ InterlockedExchangeAdd( &semaphore->count, -1 );
|
||||||
|
++ InterlockedExchangeAdd( (LONG *) &semaphore->count, -1 );
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
--- patches/eventfd_synchronization/0007-ntdll-server-Implement-NtCreateEvent.patch.orig 2024-01-16 15:47:35.000000000 -0600
|
||||||
|
+++ patches/eventfd_synchronization/0007-ntdll-server-Implement-NtCreateEvent.patch 2024-01-17 20:31:54.500700144 -0600
|
||||||
|
@@ -49,7 +49,7 @@
|
||||||
|
|
||||||
|
@@ -339,6 +358,14 @@ static void update_grabbed_object( struct esync *obj )
|
||||||
|
* etc. */
|
||||||
|
- InterlockedExchangeAdd( &semaphore->count, -1 );
|
||||||
|
+ InterlockedExchangeAdd( (LONG *) &semaphore->count, -1 );
|
||||||
|
}
|
||||||
|
+ else if (obj->type == ESYNC_AUTO_EVENT)
|
||||||
|
+ {
|
||||||
|
--- patches/eventfd_synchronization/0049-ntdll-Try-to-avoid-poll-for-uncontended-objects.patch.orig 2024-01-16 15:47:35.000000000 -0600
|
||||||
|
+++ patches/eventfd_synchronization/0049-ntdll-Try-to-avoid-poll-for-uncontended-objects.patch 2024-01-17 21:07:47.674962176 -0600
|
||||||
|
@@ -68,7 +68,7 @@
|
||||||
|
+ if ((size = read( obj->fd, &value, sizeof(value) )) == sizeof(value))
|
||||||
|
+ {
|
||||||
|
+ TRACE("Woken up by handle %p [%d].\n", handles[i], i);
|
||||||
|
-+ InterlockedDecrement( &semaphore->count );
|
||||||
|
++ InterlockedDecrement( (LONG *) &semaphore->count );
|
||||||
|
+ return i;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
--- patches/gdi32-rotation/0002-gdi32-fix-for-rotated-ellipse.patch.orig 2024-01-16 15:47:35.000000000 -0600
|
||||||
|
+++ patches/gdi32-rotation/0002-gdi32-fix-for-rotated-ellipse.patch 2024-01-18 08:19:37.882485865 -0600
|
||||||
|
@@ -74,7 +74,7 @@
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (pdev->brush.style != BS_NULL &&
|
||||||
|
-+ !(interior = ULongToHandle(NtGdiPolyPolyDraw( ULongToHandle(ALTERNATE), points, (const UINT *)&count, 1, NtGdiPolyPolygonRgn ))))
|
||||||
|
++ !(interior = ULongToHandle(NtGdiPolyPolyDraw( ULongToHandle(ALTERNATE), points, (const ULONG *)&count, 1, NtGdiPolyPolygonRgn ))))
|
||||||
|
+ {
|
||||||
|
+ free( points );
|
||||||
|
+ if (outline) NtGdiDeleteObjectApp( outline );
|
||||||
BIN
wine-staging-9.0.tar.gz
Normal file
BIN
wine-staging-9.0.tar.gz
Normal file
Binary file not shown.
89
wine.init
89
wine.init
@ -1,89 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
#
|
|
||||||
# wine Allow users to run Windows(tm) applications by just clicking on them
|
|
||||||
# (or typing ./file.exe)
|
|
||||||
#
|
|
||||||
# chkconfig: 35 98 10
|
|
||||||
# description: Allow users to run Windows(tm) applications by just clicking \
|
|
||||||
# on them (or typing ./file.exe)
|
|
||||||
### BEGIN INIT INFO
|
|
||||||
# Provides: wine-binfmt
|
|
||||||
# Required-Start:
|
|
||||||
# Required-Stop:
|
|
||||||
# Default-Start: 2 3 4 5
|
|
||||||
# Default-Stop: 0 1 6
|
|
||||||
# Short-Description: Add and remove wine binary handler
|
|
||||||
# Description: Allow users to run Windows(tm) applications by just clicking
|
|
||||||
# on them (or typing ./file.exe)
|
|
||||||
### END INIT INFO
|
|
||||||
|
|
||||||
|
|
||||||
. /etc/rc.d/init.d/functions
|
|
||||||
RETVAL=0
|
|
||||||
|
|
||||||
start() {
|
|
||||||
# fix bug on changing runlevels #213230
|
|
||||||
if [ -e /proc/sys/fs/binfmt_misc/windows ]; then
|
|
||||||
echo -n $"Binary handler for Windows applications already registered"
|
|
||||||
else
|
|
||||||
echo -n $"Registering binary handler for Windows applications: "
|
|
||||||
/sbin/modprobe binfmt_misc &>/dev/null
|
|
||||||
echo ':windows:M::MZ::/usr/bin/wine:' >/proc/sys/fs/binfmt_misc/register || :
|
|
||||||
echo ':windowsPE:M::PE::/usr/bin/wine:' >/proc/sys/fs/binfmt_misc/register || :
|
|
||||||
RETVAL=$?
|
|
||||||
[ $RETVAL -eq 0 ] && success || failure
|
|
||||||
fi
|
|
||||||
echo
|
|
||||||
}
|
|
||||||
|
|
||||||
stop() {
|
|
||||||
echo -n $"Unregistering binary handler for Windows applications: "
|
|
||||||
echo "-1" >/proc/sys/fs/binfmt_misc/windows || :
|
|
||||||
echo "-1" >/proc/sys/fs/binfmt_misc/windowsPE || :
|
|
||||||
RETVAL=$?
|
|
||||||
[ $RETVAL -eq 0 ] && success || failure
|
|
||||||
echo
|
|
||||||
}
|
|
||||||
|
|
||||||
wine_status() {
|
|
||||||
if [ -e /proc/sys/fs/binfmt_misc/windows ]; then
|
|
||||||
echo $"Wine binary format handlers are registered."
|
|
||||||
return 0
|
|
||||||
else
|
|
||||||
echo $"Wine binary format handlers are not registered."
|
|
||||||
return 3
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
case "$1" in
|
|
||||||
start)
|
|
||||||
start
|
|
||||||
;;
|
|
||||||
stop)
|
|
||||||
stop
|
|
||||||
;;
|
|
||||||
status)
|
|
||||||
wine_status
|
|
||||||
RETVAL=$?
|
|
||||||
;;
|
|
||||||
restart)
|
|
||||||
stop
|
|
||||||
start
|
|
||||||
;;
|
|
||||||
reload)
|
|
||||||
stop
|
|
||||||
start
|
|
||||||
;;
|
|
||||||
condrestart|try-restart)
|
|
||||||
|
|
||||||
if [ -e /proc/sys/fs/binfmt_misc/windows ]; then
|
|
||||||
stop
|
|
||||||
start
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo $"Usage: $prog {start|stop|status|restart|reload|try-restart}"
|
|
||||||
exit 1
|
|
||||||
esac
|
|
||||||
exit $RETVAL
|
|
||||||
|
|
||||||
Loading…
x
Reference in New Issue
Block a user