@ -0,0 +1,132 @@
|
|||||||
|
<style>
|
||||||
|
.loader {
|
||||||
|
background: #ffffff;
|
||||||
|
background: radial-gradient(#ffffff, #ffffff);
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
position: fixed;
|
||||||
|
right: 0;
|
||||||
|
top: 0;
|
||||||
|
z-index: 99999;
|
||||||
|
}
|
||||||
|
|
||||||
|
.loader-inner {
|
||||||
|
bottom: 0;
|
||||||
|
height: 60px;
|
||||||
|
left: 0;
|
||||||
|
margin: auto;
|
||||||
|
position: absolute;
|
||||||
|
right: 0;
|
||||||
|
top: 0;
|
||||||
|
width: 100px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.loader-line-wrap {
|
||||||
|
animation:
|
||||||
|
spin 2000ms cubic-bezier(.175, .885, .32, 1.275) infinite
|
||||||
|
;
|
||||||
|
box-sizing: border-box;
|
||||||
|
height: 50px;
|
||||||
|
left: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
transform-origin: 50% 100%;
|
||||||
|
width: 100px;
|
||||||
|
}
|
||||||
|
.loader-line {
|
||||||
|
border: 4px solid transparent;
|
||||||
|
border-radius: 100%;
|
||||||
|
box-sizing: border-box;
|
||||||
|
height: 100px;
|
||||||
|
left: 0;
|
||||||
|
margin: 0 auto;
|
||||||
|
position: absolute;
|
||||||
|
right: 0;
|
||||||
|
top: 0;
|
||||||
|
width: 100px;
|
||||||
|
}
|
||||||
|
.loader-line-wrap:nth-child(1) { animation-delay: -50ms; }
|
||||||
|
.loader-line-wrap:nth-child(2) { animation-delay: -100ms; }
|
||||||
|
.loader-line-wrap:nth-child(3) { animation-delay: -150ms; }
|
||||||
|
.loader-line-wrap:nth-child(4) { animation-delay: -200ms; }
|
||||||
|
.loader-line-wrap:nth-child(5) { animation-delay: -250ms; }
|
||||||
|
|
||||||
|
.loader-line-wrap:nth-child(1) .loader-line {
|
||||||
|
border-color: hsl(0, 80%, 60%);
|
||||||
|
height: 90px;
|
||||||
|
width: 90px;
|
||||||
|
top: 7px;
|
||||||
|
}
|
||||||
|
.loader-line-wrap:nth-child(2) .loader-line {
|
||||||
|
border-color: hsl(60, 80%, 60%);
|
||||||
|
height: 76px;
|
||||||
|
width: 76px;
|
||||||
|
top: 14px;
|
||||||
|
}
|
||||||
|
.loader-line-wrap:nth-child(3) .loader-line {
|
||||||
|
border-color: hsl(120, 80%, 60%);
|
||||||
|
height: 62px;
|
||||||
|
width: 62px;
|
||||||
|
top: 21px;
|
||||||
|
}
|
||||||
|
.loader-line-wrap:nth-child(4) .loader-line {
|
||||||
|
border-color: hsl(180, 80%, 60%);
|
||||||
|
height: 48px;
|
||||||
|
width: 48px;
|
||||||
|
top: 28px;
|
||||||
|
}
|
||||||
|
.loader-line-wrap:nth-child(5) .loader-line {
|
||||||
|
border-color: hsl(240, 80%, 60%);
|
||||||
|
height: 34px;
|
||||||
|
width: 34px;
|
||||||
|
top: 35px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes spin {
|
||||||
|
0%, 15% {
|
||||||
|
transform: rotate(0);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
transform: rotate(360deg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<div class="loader">
|
||||||
|
<div class="loader-inner">
|
||||||
|
<div class="loader-line-wrap">
|
||||||
|
<div class="loader-line"></div>
|
||||||
|
</div>
|
||||||
|
<div class="loader-line-wrap">
|
||||||
|
<div class="loader-line"></div>
|
||||||
|
</div>
|
||||||
|
<div class="loader-line-wrap">
|
||||||
|
<div class="loader-line"></div>
|
||||||
|
</div>
|
||||||
|
<div class="loader-line-wrap">
|
||||||
|
<div class="loader-line"></div>
|
||||||
|
</div>
|
||||||
|
<div class="loader-line-wrap">
|
||||||
|
<div class="loader-line"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<style>
|
||||||
|
.login {
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: 75%;
|
||||||
|
margin: -150px 0 0 -150px;
|
||||||
|
width:300px;
|
||||||
|
height:300px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<html>
|
||||||
|
<body>
|
||||||
|
<h1>welcome</h1>
|
||||||
|
</body>
|
||||||
|
<script>
|
||||||
|
setTimeout(()=>location.href="LoginUI.html",5000);
|
||||||
|
</script>
|
||||||
|
</html>
|
@ -0,0 +1,147 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>注册页面</title>
|
||||||
|
<!-- 引入格式文件-->
|
||||||
|
<link rel="stylesheet" href="html&css.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<style>
|
||||||
|
*{
|
||||||
|
margin: 0px;/*所有的外边距为0*/
|
||||||
|
padding: 0px;/*所有的内边距为0*/
|
||||||
|
box-sizing: border-box;/*规定两个并排的带边框的框*/
|
||||||
|
}
|
||||||
|
table{
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
body{
|
||||||
|
background: url("image/register_bg.png")no-repeat center;
|
||||||
|
padding-top: 25px;
|
||||||
|
}
|
||||||
|
.rg_layout{
|
||||||
|
width: 900px;
|
||||||
|
height: 500px;
|
||||||
|
border: 8px solid #EEEEEE;/*solid 定义实线*/
|
||||||
|
background-color: white;
|
||||||
|
margin: auto;
|
||||||
|
}
|
||||||
|
.rg_left{
|
||||||
|
float: none;
|
||||||
|
text-align: center;
|
||||||
|
margin: 15px;
|
||||||
|
}
|
||||||
|
.rg_left>p:first-child{
|
||||||
|
color: #FFD026;
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
.rg_left>p:last-child{
|
||||||
|
color: #A6A6A6;
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rg_center{
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rg_right{
|
||||||
|
float: none;
|
||||||
|
margin: 250px;
|
||||||
|
padding-left: 10px;
|
||||||
|
white-space:nowrap;
|
||||||
|
}
|
||||||
|
.rg_right p{
|
||||||
|
font-size: 15px;
|
||||||
|
}
|
||||||
|
.rg_right p a{
|
||||||
|
color: coral;
|
||||||
|
}
|
||||||
|
.td_left{
|
||||||
|
padding-left: 250px;
|
||||||
|
width: 100px;
|
||||||
|
text-align: center;
|
||||||
|
height: 45px;
|
||||||
|
white-space:nowrap;
|
||||||
|
}
|
||||||
|
.td_right{
|
||||||
|
padding-left: 40px;
|
||||||
|
text-align: center;
|
||||||
|
white-space:nowrap;
|
||||||
|
}
|
||||||
|
.bt_center{
|
||||||
|
padding-left: 310px;
|
||||||
|
}
|
||||||
|
#username,#password,#email,#name,#tel,#birthday,#checkcode{
|
||||||
|
width: 251px;
|
||||||
|
height: 32px;
|
||||||
|
border: 1px solid #A6A6A6;
|
||||||
|
/*设置边框圆角*/
|
||||||
|
border-radius: 5px;
|
||||||
|
padding-left: 10px;
|
||||||
|
}
|
||||||
|
#checkcode{
|
||||||
|
width: 110px;
|
||||||
|
}
|
||||||
|
#img_check{
|
||||||
|
height: 32px;
|
||||||
|
vertical-align: middle;/*设置图片的位置垂直居中*/
|
||||||
|
}
|
||||||
|
#btn_sub{
|
||||||
|
width: 100px;
|
||||||
|
height: 40px;
|
||||||
|
background-color: #FFD026;
|
||||||
|
border: 1px solid #FFD026;
|
||||||
|
padding-left: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
|
<div class="rg_layout">
|
||||||
|
<div class="rg_left">
|
||||||
|
<p>新用户注册</p>
|
||||||
|
<p>USER REGISTER</p>
|
||||||
|
</div>
|
||||||
|
<div class="rg_center">
|
||||||
|
<div class="rg_form">
|
||||||
|
<form action="#" method="post">
|
||||||
|
<table>
|
||||||
|
<tr><!--label 标签的作用是当点击文字也会跳到文本输出框-->
|
||||||
|
<!--for属性与ID属性对应规定 label 绑定到哪个表单元素。-->
|
||||||
|
<td class="td_left"><label for="username">用户名</label> </td>
|
||||||
|
<td class="td_right"><input type="text" name="username" id="username"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="td_left"><label for="password">姓名</label> </td>
|
||||||
|
<td class="td_right"><input type="password" name="password" id="password"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr><!--label 标签的作用是当点击文字也会跳到文本输出框-->
|
||||||
|
<td class="td_left"><label for="email">身份证号</label> </td>
|
||||||
|
<td class="td_right"><input type="email" name="email" id="email"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="td_left"><label for="name">密码</label> </td>
|
||||||
|
<td class="td_right"><input type="text" name="name" id="name"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="td_left"><label for="tel">再次输入密码</label> </td>
|
||||||
|
<td class="td_right"><input type="text" name="tel" id="tel"> </td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td colspan="2" align="center" class="bt_center">
|
||||||
|
<input type="submit" value="注册" id="btn_sub">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
</table>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="rg_right">
|
||||||
|
<p><a href="LoginUI.html">返回登录界面</a></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,288 @@
|
|||||||
|
/*-----------------------------------*\
|
||||||
|
#style.css
|
||||||
|
\*-----------------------------------*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* copyright 2022 codewithsadee
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*-----------------------------------*\
|
||||||
|
#CUSTOM PROPERTY
|
||||||
|
\*-----------------------------------*/
|
||||||
|
|
||||||
|
:root {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* colors
|
||||||
|
*/
|
||||||
|
|
||||||
|
--medium-slate-blue: hsl(240, 73%, 65%);
|
||||||
|
--space-cadet_10: hsl(226, 54%, 26%, 0.1);
|
||||||
|
--space-cadet: hsl(226, 54%, 26%);
|
||||||
|
--ghost-white: hsl(227, 69%, 97%);
|
||||||
|
--cool-gray: hsl(226, 19%, 63%);
|
||||||
|
--cultured: hsl(0, 0%, 95%);
|
||||||
|
--white: hsl(0, 0%, 100%);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* typography
|
||||||
|
*/
|
||||||
|
|
||||||
|
--ff-dm-sans: 'Roboto', sans-serif;
|
||||||
|
--ff-helvetica: 'Helvetica', sans-serif;
|
||||||
|
|
||||||
|
--fs-1: 3rem;
|
||||||
|
--fs-2: 2.4rem;
|
||||||
|
--fs-3: 1.5rem;
|
||||||
|
--fs-4: 1.2rem;
|
||||||
|
|
||||||
|
--fw-500: 500;
|
||||||
|
--fw-600: 600;
|
||||||
|
--fw-700: 700;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* shadow
|
||||||
|
*/
|
||||||
|
|
||||||
|
--shadow: 1px 1px 3px hsla(0, 0%, 0%, 0.15);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* radius
|
||||||
|
*/
|
||||||
|
|
||||||
|
--radius-5: 5px;
|
||||||
|
--radius-15: 15px;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* transition
|
||||||
|
*/
|
||||||
|
|
||||||
|
--transition-1: 0.25s ease;
|
||||||
|
--transition-2: 1s ease;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*-----------------------------------*\
|
||||||
|
#RESET
|
||||||
|
\*-----------------------------------*/
|
||||||
|
|
||||||
|
*,
|
||||||
|
*::before,
|
||||||
|
*::after {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
span,
|
||||||
|
data { display: block; }
|
||||||
|
|
||||||
|
img { height: auto; }
|
||||||
|
|
||||||
|
table,
|
||||||
|
tbody,
|
||||||
|
tr,
|
||||||
|
th,
|
||||||
|
td {
|
||||||
|
all: unset;
|
||||||
|
}
|
||||||
|
|
||||||
|
html {
|
||||||
|
font-family: var(--ff-dm-sans);
|
||||||
|
font-size: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
background-color: var(--ghost-white);
|
||||||
|
color: var(--cool-gray);
|
||||||
|
font-size: 1.6rem;
|
||||||
|
padding-inline: 15px;
|
||||||
|
min-height: 100vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*-----------------------------------*\
|
||||||
|
#REUSED STYLE
|
||||||
|
\*-----------------------------------*/
|
||||||
|
|
||||||
|
.flex-center {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.balance-card,
|
||||||
|
.chart-card {
|
||||||
|
width: 300px;
|
||||||
|
height: 150px;
|
||||||
|
position: relative;
|
||||||
|
padding: 5px;
|
||||||
|
border-radius: var(--radius-10);
|
||||||
|
}
|
||||||
|
|
||||||
|
.text { font-size: var(--fs-3); }
|
||||||
|
|
||||||
|
.h2 { font-size: var(--fs-2); }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*-----------------------------------*\
|
||||||
|
#BALANCE CARD
|
||||||
|
\*-----------------------------------*/
|
||||||
|
|
||||||
|
.chart-container {
|
||||||
|
width: 100%;
|
||||||
|
max-width: 540px;
|
||||||
|
margin-inline: 100px;
|
||||||
|
left: 50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.balance-card {
|
||||||
|
background-color: var(--medium-slate-blue);
|
||||||
|
color: var(--white);
|
||||||
|
justify-content: space-between;
|
||||||
|
margin-block-end: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.balance-card .text {
|
||||||
|
font-weight: unset;
|
||||||
|
margin-block-end: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.balance-card .h2 { font-weight: var(--fw-700); }
|
||||||
|
|
||||||
|
.balance-card .logo { width: 60px; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*-----------------------------------*\
|
||||||
|
#CHART CARD
|
||||||
|
\*-----------------------------------*/
|
||||||
|
|
||||||
|
.chart-card {
|
||||||
|
position: relative;
|
||||||
|
margin-right: 30px;
|
||||||
|
background-color: var(--white);
|
||||||
|
}
|
||||||
|
|
||||||
|
.chart-card .h2 {
|
||||||
|
color: var(--space-cadet);
|
||||||
|
font-weight: var(--fw-500);
|
||||||
|
margin-block-end: 50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chart-card .card-table {
|
||||||
|
display: block;
|
||||||
|
padding-block-end: 24px;
|
||||||
|
border-block-end: 1px solid var(--space-cadet_10);
|
||||||
|
margin-block-end: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chart-card .table-body {
|
||||||
|
justify-content: space-evenly;
|
||||||
|
align-items: stretch;
|
||||||
|
gap: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chart-card .table-row {
|
||||||
|
flex-direction: column-reverse;
|
||||||
|
justify-content: flex-start;
|
||||||
|
gap: 10px;
|
||||||
|
min-height: calc(150px + 31px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.chart-card .table-heading {
|
||||||
|
color: var(--space-cadet);
|
||||||
|
font-family: var(--ff-helvetica);
|
||||||
|
font-size: var(--fs-4);
|
||||||
|
}
|
||||||
|
|
||||||
|
.chart-card .table-data {
|
||||||
|
min-width: 20px;
|
||||||
|
height: 100%;
|
||||||
|
background-color: var(--cultured);
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chart-card .chart-bar {
|
||||||
|
background-color: var(--medium-slate-blue);
|
||||||
|
height: 100%;
|
||||||
|
transform-origin: bottom;
|
||||||
|
transition: transform var(--transition-2);
|
||||||
|
}
|
||||||
|
|
||||||
|
.chart-card .chart-bar:hover { opacity: 0.75; }
|
||||||
|
|
||||||
|
.tooltip {
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
left: 50%;
|
||||||
|
transform: translateX(-50%);
|
||||||
|
background-color: var(--white);
|
||||||
|
color: var(--space-cadet);
|
||||||
|
font-family: var(--ff-helvetica);
|
||||||
|
font-weight: var(--fw-600);
|
||||||
|
padding: 8px;
|
||||||
|
border: 1px solid var(--cultured);
|
||||||
|
border-radius: var(--radius-5);
|
||||||
|
box-shadow: var(--shadow);
|
||||||
|
pointer-events: none;
|
||||||
|
opacity: 0;
|
||||||
|
transition: var(--transition-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.tooltip.active { opacity: 1; }
|
||||||
|
|
||||||
|
.chart-card .wrapper {
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: flex-start;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chart-card .meta-value {
|
||||||
|
color: var(--space-cadet);
|
||||||
|
font-weight: var(--fw-500);
|
||||||
|
margin-block-start: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chart-card .meta-value:not(.small) { font-size: var(--fs-1); }
|
||||||
|
|
||||||
|
.chart-card .card-meta:last-child {
|
||||||
|
align-self: flex-end;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.piechart{
|
||||||
|
margin-top: -180px;
|
||||||
|
left: 600px;
|
||||||
|
width: 150px;
|
||||||
|
height: 150px;
|
||||||
|
position: fixed;
|
||||||
|
padding: 5px;
|
||||||
|
border-radius: var(--radius-10);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*-----------------------------------*\
|
||||||
|
#MEDIA QUERIES
|
||||||
|
\*-----------------------------------*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* responsive for large than 768px screen
|
||||||
|
*/
|
||||||
|
|
After Width: | Height: | Size: 36 KiB |
After Width: | Height: | Size: 148 KiB |
After Width: | Height: | Size: 173 KiB |
After Width: | Height: | Size: 164 KiB |
After Width: | Height: | Size: 155 KiB |
After Width: | Height: | Size: 1.3 MiB |
After Width: | Height: | Size: 2.0 MiB |
After Width: | Height: | Size: 740 KiB |
After Width: | Height: | Size: 74 KiB |
After Width: | Height: | Size: 6.2 KiB |
After Width: | Height: | Size: 6.1 KiB |
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 516 B |
After Width: | Height: | Size: 12 KiB |
@ -0,0 +1,20 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"server": "shanghai",
|
||||||
|
"stat": "busy",
|
||||||
|
"amount": 70,
|
||||||
|
"recentTime":70
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"server": "changsha",
|
||||||
|
"stat": "busy",
|
||||||
|
"amount": 50,
|
||||||
|
"recentTime": 1300
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"server": "beijing",
|
||||||
|
"stat": "busy",
|
||||||
|
"amount": 56,
|
||||||
|
"recentTime": 70
|
||||||
|
}
|
||||||
|
]
|
@ -0,0 +1,149 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* import json data
|
||||||
|
*/
|
||||||
|
|
||||||
|
import data from './data.json' assert { type: 'json' };
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* -> select all DOM elements
|
||||||
|
*/
|
||||||
|
|
||||||
|
const tooltip = document.querySelector("[data-tooltip]");
|
||||||
|
const chartBars = document.querySelectorAll("[data-chart-bar]");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* add event on element
|
||||||
|
*/
|
||||||
|
|
||||||
|
const addEventOnElem = function (elem, type, callback) {
|
||||||
|
if (elem.length > 1) {
|
||||||
|
for (let i = 0; i < elem.length; i++) {
|
||||||
|
elem[i].addEventListener(type, callback);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
elem.addEventListener(type, callback);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* -> get the max day amount from data
|
||||||
|
*/
|
||||||
|
|
||||||
|
let maxDayAmount = 0;
|
||||||
|
|
||||||
|
for (let i = 0; i < data.length; i++) {
|
||||||
|
if (data[i].amount > maxDayAmount) {
|
||||||
|
maxDayAmount = data[i].amount;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* -> get chart bars height as array
|
||||||
|
* -> set the height of all bars in chart
|
||||||
|
*/
|
||||||
|
|
||||||
|
const setChartBarsHeight = function (height) {
|
||||||
|
for (let i = 0; i < height.length; i++) {
|
||||||
|
chartBars[i].style.transform = `scaleY(${height[i] / 100})`;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* -> get the day amount from data
|
||||||
|
* -> find the percentage of every number
|
||||||
|
* -> push all number in chartBarsHeight
|
||||||
|
*/
|
||||||
|
|
||||||
|
const charBarsHeight = [];
|
||||||
|
|
||||||
|
for (let i = 0; i < data.length; i++) {
|
||||||
|
const dayAmount = data[i].amount;
|
||||||
|
const percentOfNum = dayAmount / maxDayAmount * 100;
|
||||||
|
charBarsHeight.push(percentOfNum);
|
||||||
|
}
|
||||||
|
|
||||||
|
setChartBarsHeight(charBarsHeight);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* -> get top, left, and chart bar width
|
||||||
|
* -> get tooltip height
|
||||||
|
* -> set the gap between chart bar and tooltip
|
||||||
|
* -> set the tooltip position
|
||||||
|
*/
|
||||||
|
|
||||||
|
const setTooltipPos = function (top, left, chartBarWidth) {
|
||||||
|
const tooltipHeight = tooltip.offsetHeight;
|
||||||
|
const gap = 8;
|
||||||
|
|
||||||
|
tooltip.style.top = `${top - tooltipHeight - gap}px`;
|
||||||
|
tooltip.style.left = `${left + chartBarWidth / 2}px`;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* when chart bar is hover
|
||||||
|
* -> add active class in tooltip
|
||||||
|
* -> get chart bar top position from window
|
||||||
|
* -> get chart bar left position from window
|
||||||
|
* -> get chart bar width
|
||||||
|
* -> call setTooltipPos and pass the chart bar top,
|
||||||
|
* left position and width
|
||||||
|
*/
|
||||||
|
|
||||||
|
const chartBarOnHover = function () {
|
||||||
|
tooltip.classList.add("active");
|
||||||
|
|
||||||
|
const barTopPos = this.getBoundingClientRect().top;
|
||||||
|
const barLeftPos = this.getBoundingClientRect().left;
|
||||||
|
const barWidth = this.offsetWidth;
|
||||||
|
|
||||||
|
setTooltipPos(barTopPos, barLeftPos, barWidth);
|
||||||
|
}
|
||||||
|
|
||||||
|
addEventOnElem(chartBars, "mouseover", chartBarOnHover);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* -> hide tooltip when leave cursor from chart bar
|
||||||
|
*/
|
||||||
|
|
||||||
|
const hideTooltip = function () {
|
||||||
|
tooltip.classList.remove("active");
|
||||||
|
}
|
||||||
|
|
||||||
|
addEventOnElem(chartBars, "mouseleave", hideTooltip);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* -> add tooltip value when hover on any bar chart
|
||||||
|
*/
|
||||||
|
|
||||||
|
const addTooltipValue = function () {
|
||||||
|
for (let i = 0; i < data.length; i++) {
|
||||||
|
if (data[i].server === this.dataset.chartBar) {
|
||||||
|
tooltip.innerHTML = data[i].amount.toString();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
addEventOnElem(chartBars, "mouseover", addTooltipValue);
|
@ -0,0 +1,138 @@
|
|||||||
|
@charset "utf-8";
|
||||||
|
|
||||||
|
/* 公共区域版心宽度一样,左右居中 */
|
||||||
|
|
||||||
|
|
||||||
|
/* .header-wrap {
|
||||||
|
width: 1100px;
|
||||||
|
height: 62px;
|
||||||
|
margin: 0 auto;
|
||||||
|
} */
|
||||||
|
|
||||||
|
.header_con {
|
||||||
|
width: 1002px;
|
||||||
|
height: 100px;
|
||||||
|
/* background: pink; */
|
||||||
|
/* 左右居中 */
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header_con h1 {
|
||||||
|
width: 604px;
|
||||||
|
height: 66px;
|
||||||
|
/* background: orange; */
|
||||||
|
float: left;
|
||||||
|
padding: 34px 0 0 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header_con form {
|
||||||
|
width: 227px;
|
||||||
|
height: 61px;
|
||||||
|
/* background: orangered; */
|
||||||
|
float: left;
|
||||||
|
padding-top: 39px;
|
||||||
|
padding-right: 21px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header_con .search {
|
||||||
|
width: 195px;
|
||||||
|
height: 26px;
|
||||||
|
background: #f1f1f1;
|
||||||
|
border: 1px solid #e5e5e5;
|
||||||
|
/* 清除右侧边框 */
|
||||||
|
border-right: none;
|
||||||
|
float: left;
|
||||||
|
color: #888888;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header_con .btn {
|
||||||
|
width: 30px;
|
||||||
|
height: 26px;
|
||||||
|
border: none;
|
||||||
|
background: #f1f1f1 url("../images/search_03.jpg") no-repeat center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header_con form div {
|
||||||
|
width: 30px;
|
||||||
|
height: 26px;
|
||||||
|
border: 1px solid #e5e5e5;
|
||||||
|
border-left: none;
|
||||||
|
float: left;
|
||||||
|
/* 给btn套盒子的时候也要加浮动 */
|
||||||
|
}
|
||||||
|
|
||||||
|
#nav {
|
||||||
|
height: 58px;
|
||||||
|
background: black;
|
||||||
|
}
|
||||||
|
|
||||||
|
#nav .nav_con {
|
||||||
|
width: 1002px;
|
||||||
|
height: 58px;
|
||||||
|
background: black;
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* 导航横向排列 */
|
||||||
|
|
||||||
|
#nav .nav_con li {
|
||||||
|
width: 498px;
|
||||||
|
height: 58px;
|
||||||
|
float: left;
|
||||||
|
background: black;
|
||||||
|
/* 左右居中 */
|
||||||
|
text-align: center;
|
||||||
|
/* 上下居中 */
|
||||||
|
line-height: 58px;
|
||||||
|
border-left: 1px solid #4a4a4a;
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav_con li a {
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.margin-left {
|
||||||
|
margin-left: 25px;
|
||||||
|
border-left: none!important;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* 公共样式的footer */
|
||||||
|
|
||||||
|
.footer_con {
|
||||||
|
height: 82px;
|
||||||
|
/* background: #cccccc; */
|
||||||
|
}
|
||||||
|
|
||||||
|
.footer_con .footer_l {
|
||||||
|
height: 58px;
|
||||||
|
float: left;
|
||||||
|
/* background: red; */
|
||||||
|
padding-top: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.footer_con .footer_l a {
|
||||||
|
font-size: 12px;
|
||||||
|
float: left;
|
||||||
|
color: #868686;
|
||||||
|
border-right: 1px solid #868686;
|
||||||
|
/* padding:字体和边框的距离哈 */
|
||||||
|
padding: 0 7px;
|
||||||
|
padding-left: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.footer_con .footer_l .footer-right {
|
||||||
|
border-right: none!important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.footer_con .footer_r {
|
||||||
|
height: 57px;
|
||||||
|
color: #8a8a8a;
|
||||||
|
font-size: 12px;
|
||||||
|
padding-top: 25px;
|
||||||
|
/* background: pink; */
|
||||||
|
padding-right: 21px;
|
||||||
|
float: right;
|
||||||
|
}
|
@ -0,0 +1,93 @@
|
|||||||
|
.loader {
|
||||||
|
background: #000;
|
||||||
|
background: radial-gradient(#222, #000);
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
position: fixed;
|
||||||
|
right: 0;
|
||||||
|
top: 0;
|
||||||
|
z-index: 99999;
|
||||||
|
}
|
||||||
|
|
||||||
|
.loader-inner {
|
||||||
|
bottom: 0;
|
||||||
|
height: 60px;
|
||||||
|
left: 0;
|
||||||
|
margin: auto;
|
||||||
|
position: absolute;
|
||||||
|
right: 0;
|
||||||
|
top: 0;
|
||||||
|
width: 100px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.loader-line-wrap {
|
||||||
|
animation:
|
||||||
|
spin 2000ms cubic-bezier(.175, .885, .32, 1.275) infinite
|
||||||
|
;
|
||||||
|
box-sizing: border-box;
|
||||||
|
height: 50px;
|
||||||
|
left: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
transform-origin: 50% 100%;
|
||||||
|
width: 100px;
|
||||||
|
}
|
||||||
|
.loader-line {
|
||||||
|
border: 4px solid transparent;
|
||||||
|
border-radius: 100%;
|
||||||
|
box-sizing: border-box;
|
||||||
|
height: 100px;
|
||||||
|
left: 0;
|
||||||
|
margin: 0 auto;
|
||||||
|
position: absolute;
|
||||||
|
right: 0;
|
||||||
|
top: 0;
|
||||||
|
width: 100px;
|
||||||
|
}
|
||||||
|
.loader-line-wrap:nth-child(1) { animation-delay: -50ms; }
|
||||||
|
.loader-line-wrap:nth-child(2) { animation-delay: -100ms; }
|
||||||
|
.loader-line-wrap:nth-child(3) { animation-delay: -150ms; }
|
||||||
|
.loader-line-wrap:nth-child(4) { animation-delay: -200ms; }
|
||||||
|
.loader-line-wrap:nth-child(5) { animation-delay: -250ms; }
|
||||||
|
|
||||||
|
.loader-line-wrap:nth-child(1) .loader-line {
|
||||||
|
border-color: hsl(0, 80%, 60%);
|
||||||
|
height: 90px;
|
||||||
|
width: 90px;
|
||||||
|
top: 7px;
|
||||||
|
}
|
||||||
|
.loader-line-wrap:nth-child(2) .loader-line {
|
||||||
|
border-color: hsl(60, 80%, 60%);
|
||||||
|
height: 76px;
|
||||||
|
width: 76px;
|
||||||
|
top: 14px;
|
||||||
|
}
|
||||||
|
.loader-line-wrap:nth-child(3) .loader-line {
|
||||||
|
border-color: hsl(120, 80%, 60%);
|
||||||
|
height: 62px;
|
||||||
|
width: 62px;
|
||||||
|
top: 21px;
|
||||||
|
}
|
||||||
|
.loader-line-wrap:nth-child(4) .loader-line {
|
||||||
|
border-color: hsl(180, 80%, 60%);
|
||||||
|
height: 48px;
|
||||||
|
width: 48px;
|
||||||
|
top: 28px;
|
||||||
|
}
|
||||||
|
.loader-line-wrap:nth-child(5) .loader-line {
|
||||||
|
border-color: hsl(240, 80%, 60%);
|
||||||
|
height: 34px;
|
||||||
|
width: 34px;
|
||||||
|
top: 35px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes spin {
|
||||||
|
0%, 15% {
|
||||||
|
transform: rotate(0);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
transform: rotate(360deg);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,76 @@
|
|||||||
|
@charset "utf-8";
|
||||||
|
|
||||||
|
/* 重置样式表 */
|
||||||
|
|
||||||
|
* {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* 统一页面文本 */
|
||||||
|
|
||||||
|
body {
|
||||||
|
font-size: 16px;
|
||||||
|
font-family: "微软雅黑";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* 清除列表符号 */
|
||||||
|
|
||||||
|
ul,
|
||||||
|
ol,
|
||||||
|
li {
|
||||||
|
list-style: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* 清除下划线 */
|
||||||
|
|
||||||
|
u,
|
||||||
|
a {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* 清除倾斜 */
|
||||||
|
|
||||||
|
i,
|
||||||
|
em {
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* 清除加粗 */
|
||||||
|
|
||||||
|
b,
|
||||||
|
strong {
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* 清除文本默认大小和加粗 */
|
||||||
|
|
||||||
|
h1,
|
||||||
|
h2,
|
||||||
|
h3,
|
||||||
|
h4,
|
||||||
|
h5,
|
||||||
|
h6 {
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* 边框清零 */
|
||||||
|
|
||||||
|
img {
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* 清除聚焦时候的边框 */
|
||||||
|
|
||||||
|
input {
|
||||||
|
outline: none;
|
||||||
|
}
|
@ -0,0 +1,206 @@
|
|||||||
|
div{
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
.h1, .h2, .h3, .h4, .h5, .h6, a, abbr, body, cite, dd, dl, dt, h1, h2, h3, h4, h5, h6, iframe, input, li, object, ol, p, pre, span, ul {
|
||||||
|
font-family: 'Microsoft YaHei','SF Pro Display',Roboto,Noto,Arial,'PingFang SC',sans-serif;
|
||||||
|
}
|
||||||
|
a{
|
||||||
|
text-decoration: none;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
ul, li, ol, dl, dt, dd {
|
||||||
|
list-style: none;
|
||||||
|
}
|
||||||
|
div, figure, footer, header, hgroup, html, iframe, img, mark, menu, nav, object, section, span, table, tr, td, th, tbody, tfoot, thead, video {
|
||||||
|
border: 0;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.my_msg_list{
|
||||||
|
position: fixed;
|
||||||
|
margin-top: 50px;
|
||||||
|
width: 1400px;
|
||||||
|
min-height: 400px;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
.my_msg_list_view{
|
||||||
|
position: relative;
|
||||||
|
margin-left: 100px;
|
||||||
|
background-color: #fff;
|
||||||
|
padding: 24px 16px;
|
||||||
|
-webkit-box-shadow: 0 2px 4px 0 rgba(0,0,0,0.28);
|
||||||
|
box-shadow: 0 2px 4px 0 rgba(0,0,0,0.28);
|
||||||
|
min-height: 520px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
.my_msg_list_box{
|
||||||
|
border: 0;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
.my_msg_list_con{
|
||||||
|
border: 0;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
.my_msg_list_title{
|
||||||
|
width: 100%;
|
||||||
|
margin: 0;
|
||||||
|
font-size: 14px;
|
||||||
|
color: #3d3d3d;
|
||||||
|
margin-bottom: 8px;
|
||||||
|
display: block;
|
||||||
|
overflow: hidden;
|
||||||
|
zoom: 1;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
.fr{
|
||||||
|
float: right!important;
|
||||||
|
display: inline-block;
|
||||||
|
color: #4a90e2;
|
||||||
|
}
|
||||||
|
.line{
|
||||||
|
display: inline-block;
|
||||||
|
height: 12px;
|
||||||
|
margin: 2px 12px;
|
||||||
|
border-right: 1px solid #979797;
|
||||||
|
}
|
||||||
|
|
||||||
|
.msg_list{
|
||||||
|
padding: 0 0 0 15px;
|
||||||
|
min-height: 370px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
.msg_list_ul{
|
||||||
|
font-size: 14px;
|
||||||
|
vertical-align: baseline;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
.msg_list_ul_li{
|
||||||
|
position: relative;
|
||||||
|
padding: 16px 0;
|
||||||
|
border-bottom: 1px solid #e0e0e0;
|
||||||
|
}
|
||||||
|
.msg_type{
|
||||||
|
display: inline-block;
|
||||||
|
height: 40px;
|
||||||
|
line-height: 40px;
|
||||||
|
padding: 0 5px;
|
||||||
|
color: #4d4d4d;
|
||||||
|
font-size: 25px;
|
||||||
|
text-align: center;
|
||||||
|
background-color: #fff;
|
||||||
|
border: 1px solid #e0e0e0;
|
||||||
|
vertical-align: top;
|
||||||
|
}
|
||||||
|
.msg_info_box{
|
||||||
|
width: 100%;
|
||||||
|
color: #4d4d4d;
|
||||||
|
display: inline-block;
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
.msg_title{
|
||||||
|
display: inline-block;
|
||||||
|
width: 85%;
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
.options-f{
|
||||||
|
width: 16%;
|
||||||
|
height: 20px;
|
||||||
|
margin: 0;
|
||||||
|
margin-top: -20px;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.msg_delete{
|
||||||
|
width: 10px;
|
||||||
|
height: 10px;
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
.msg_content{
|
||||||
|
margin-top: 15px;
|
||||||
|
margin-bottom: -16px;
|
||||||
|
padding: 15px;
|
||||||
|
background-color: #f7f7f7;
|
||||||
|
font-size: 14px;
|
||||||
|
color: #4d4d4d;
|
||||||
|
line-height: 22px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.page-box{
|
||||||
|
width: 100%;
|
||||||
|
margin: 32px 0 20px;
|
||||||
|
text-align: center;
|
||||||
|
border-top-color: initial;
|
||||||
|
border-right-color: initial;
|
||||||
|
border-bottom-color: initial;
|
||||||
|
border-left-color: initial;
|
||||||
|
}
|
||||||
|
.ule {
|
||||||
|
list-style-type: none;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
.lie {
|
||||||
|
width: 23%;
|
||||||
|
display: inline-block;
|
||||||
|
font: 13px sans-serif;
|
||||||
|
}
|
||||||
|
.lie a {
|
||||||
|
display: block;
|
||||||
|
color: rgb(39, 124, 184);
|
||||||
|
text-align: center;
|
||||||
|
padding: 14px 70px;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
/*鼠标移动到选项上修改背景颜色 */
|
||||||
|
.lie a:hover {
|
||||||
|
background-color: #e3e3f5;
|
||||||
|
}
|
||||||
|
.ula {
|
||||||
|
width: 100%;
|
||||||
|
list-style-type: none;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
.lia {
|
||||||
|
width: 23%;
|
||||||
|
display: inline-block;
|
||||||
|
font: 13px sans-serif;
|
||||||
|
}
|
||||||
|
.lia a {
|
||||||
|
display: block;
|
||||||
|
font-size: larger;
|
||||||
|
color: rgb(0, 0, 0);
|
||||||
|
text-align: center;
|
||||||
|
padding: 14px 50px;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
/*鼠标移动到选项上修改背景颜色 */
|
||||||
|
.lia a:hover {
|
||||||
|
background-color: #b7b7b7;
|
||||||
|
}
|
||||||
|
.square{
|
||||||
|
width:200px;
|
||||||
|
|
||||||
|
height:5px;
|
||||||
|
|
||||||
|
border:1px solid transparent;
|
||||||
|
|
||||||
|
background: #06b81a;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
@ -0,0 +1,77 @@
|
|||||||
|
GoAccess was designed and developed by Gerardo Orellana <goaccess@prosoftcorp.com>
|
||||||
|
|
||||||
|
Special thanks to the following individuals for their great contributions:
|
||||||
|
|
||||||
|
* Aaditya Bagga <abchk1234@gmail.com>
|
||||||
|
* Adam Števko <adam.stevko@gmail.com>
|
||||||
|
* Adrian <totcha@gazeta.pl>
|
||||||
|
* Alexander Eifler <github@eifx.de>
|
||||||
|
* Andreas Sommer <andreas.sommer@ppro.com>
|
||||||
|
* Andreas Weigel <andreaswe@securepoint.de>
|
||||||
|
* Andrew Minion <andrew@andrewrminion.com>
|
||||||
|
* Antonio Terceiro <terceiro@softwarelivre.org>
|
||||||
|
* Arnie97 <arnie97@gmail.com>
|
||||||
|
* Aslak Raanes <aslakr@gmail.com>
|
||||||
|
* Bjørnar Hansen <tilbjornar@gmail.com>
|
||||||
|
* Bo Cai <charpty@gmail.com>
|
||||||
|
* Bob Black <git@riblack.com>
|
||||||
|
* Chilledheart <rwindz0@gmail.com>
|
||||||
|
* Chris Downs <chris-downs@users.noreply.github.com>
|
||||||
|
* Christian Hermann <c.hermann@bitbeans.de>
|
||||||
|
* Christian Moelders <christian.moelders@storeplus.de>
|
||||||
|
* Christopher Meng <i@cicku.me>
|
||||||
|
* Daniel (dmilith) Dettlaff <dmilith@me.com>
|
||||||
|
* Daniel Aleksandersen <code@daniel.priv.no>
|
||||||
|
* David Geistert <d3f3kt@scripts4u.net>
|
||||||
|
* Enrique Becerra <kabeza@gmail.com>
|
||||||
|
* Florian Forster <ff@octo.it>
|
||||||
|
* Francisco Azevedo <francisco.j.azevedo@gmail.com>
|
||||||
|
* Frederic Cambus <fcambus@users.sourceforge.net>
|
||||||
|
* Genki Sugawara <sugawara@cookpad.com>
|
||||||
|
* Jeffery Wilkins <djcanadianjeff@gmail.com>
|
||||||
|
* Jeremy Burks <jeremy@zomgwat.com>
|
||||||
|
* Joe Groocock <me@frebib.net>
|
||||||
|
* Joe Winett <joe@winett.com>
|
||||||
|
* Joona <joona.paivahonka@gmail.com>
|
||||||
|
* Julian Xhokaxhiu <xhokaxhiujulian@gmail.com>
|
||||||
|
* Justin Mills <justin.mills@utah.edu>
|
||||||
|
* Kamino Hiroki <37243867+4f8p@users.noreply.github.com>
|
||||||
|
* Kit Westneat <kit.westneat@gmail.com>
|
||||||
|
* Maksim Losev <mlosev@beget.ru>
|
||||||
|
* Mark J. Berger <mark.berger.j@gmail.com>
|
||||||
|
* Mathieu Aubin <mathieu@zeroserieux.com>
|
||||||
|
* Mathieu Thoretton <mathieu.thoretton@getyourguide.com>
|
||||||
|
* Max Christian Pohle <info@entwicklerseite.de>
|
||||||
|
* Michael Vetter <jubalh@iodoru.org>
|
||||||
|
* Nicolas <np.pascal@gmail.com>
|
||||||
|
* Nicolas Le Manchet <nicolas@lemanchet.fr>
|
||||||
|
* Otto Kekäläinen <otto.kekalainen@seravo.fi>
|
||||||
|
* Sean Cross <sean@xobs.io>
|
||||||
|
* Sebastian Wiedenroth <wiedi@frubar.net>
|
||||||
|
* SjonHortensius <SjonHortensius@users.noreply.github.com>
|
||||||
|
* Steely Wing <steelywing@users.noreply.github.com>
|
||||||
|
* Stoyan Dimov <s.dimov@codelogic.eu>
|
||||||
|
* Stéphane Péchard <stephanepechard@gmail.com>
|
||||||
|
* Tatsuyuki Ishi <ishitatsuyuki@gmail.com>
|
||||||
|
* Thomas Gläßle <t_glaessle@gmx.de>
|
||||||
|
* Tom Samstag <github@modtwo.com>
|
||||||
|
* Viktor Szépe <viktor@szepe.net>
|
||||||
|
* Ville Skyttä <ville.skytta@iki.fi>
|
||||||
|
* Vladimir Pavljuchenkov <spiderx@spiderx.dp.ua>
|
||||||
|
* Vladimir Pavljuchenkov <spiderx@spiderx.dp.ua>
|
||||||
|
* Yuri D'Elia <wavexx@thregr.org>
|
||||||
|
* Yuriy M. Kaminskiy <yumkam@gmail.com>
|
||||||
|
* abgit <francisco.j.azevedo@gmail.com>
|
||||||
|
* as0n <n.was.here@gmail.com>
|
||||||
|
* fqbuild <fqbuild@FutureQuest.net>
|
||||||
|
* holys <chendahui007@gmail.com>
|
||||||
|
* kyle sloan <kyle@ifsight.com>
|
||||||
|
* m-r-r <raybaudroigm@gmail.com>
|
||||||
|
* mynameiscfed <christopherfederico@gmail.com>
|
||||||
|
* pravdomil <pravdomil.toman@gmail.com>
|
||||||
|
* radoslawc <radoslawc@gmail.com>
|
||||||
|
* radoslawc <radoslawc@gmail.com>
|
||||||
|
* schoonc <schoonc@users.noreply.github.com>
|
||||||
|
* wodev <wodev@fischer-net.net>
|
||||||
|
* woobee <support.developpement@gmail.com>
|
||||||
|
* zeke <zhenkai0605@gmail.com>
|
@ -0,0 +1,21 @@
|
|||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2009-2016 Gerardo Orellana <hello @ goaccess.io>
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
@ -0,0 +1,705 @@
|
|||||||
|
Changes to GoAccess 1.3 - Friday, November 23, 2018
|
||||||
|
|
||||||
|
- Added ability to store accumulated processing time into DB_GEN_STATS tcb
|
||||||
|
file via '--accumulated-time' command line option.
|
||||||
|
- Added additional Apache status codes to the list.
|
||||||
|
- Added a few feed readers to the list.
|
||||||
|
- Added 'Android 8 Oreo' to the list of OSs.
|
||||||
|
- Added 'Android Pie 9' to the list of OSs.
|
||||||
|
- Added --anonymize-ip command line option to anonymize ip addresses.
|
||||||
|
- Added --browsers-file command line option to load a list of crawlers from a
|
||||||
|
text file.
|
||||||
|
- Added byte unit (PiB) to C formatter and refactored code.
|
||||||
|
- Added byte unit (PiB) to JS formatter.
|
||||||
|
- Added Chinese translation (i18n).
|
||||||
|
- Added French translation (i18n).
|
||||||
|
- Added '%h' date specifier to the allowed date character specifiers.
|
||||||
|
- Added "HeadlessChrome" to the list of browsers.
|
||||||
|
- Added --hide-referer command line option to hide referers from report.
|
||||||
|
- Added HTTP status code 429 (TOO MANY REQUESTS).
|
||||||
|
- Added IGNORE_LEVEL_PANEL and IGNORE_LEVEL_REQ definitions.
|
||||||
|
- Added --ignore-referer-report command line option to hide referers from
|
||||||
|
output.
|
||||||
|
- Added Japanese translation (i18n).
|
||||||
|
- Added macOS 10.14 Mojave to the list of OSs.
|
||||||
|
- Added "Mastodon" user-agent to the list of crawlers/unix-like.
|
||||||
|
- Added new fontawesome icons and use angle arrows in HTML paging.
|
||||||
|
- Added new purple theme to HTML report and default to it.
|
||||||
|
- Added --no-parsing-spinner command line option to switch off parsing
|
||||||
|
spinner.
|
||||||
|
- Added .ogv and ogg static file extension (ogg video, Ogg Vorbis audio).
|
||||||
|
- Added OS X version numbers when outputting with --real-os.
|
||||||
|
- Added parsing mechanism in an attempt capture more bots and to include
|
||||||
|
unspecified bots/crawlers.
|
||||||
|
- Added --pidfile command line option to the default config file.
|
||||||
|
- Added Spanish translation (i18n).
|
||||||
|
- Added SSL support for Docker goaccess build.
|
||||||
|
- Added support to the WebSocket server for openssl-1.1*.
|
||||||
|
- Added the ability to show/hide a chart per panel in the HTML report.
|
||||||
|
- Added transparency to the navigation bar of the HTML report.
|
||||||
|
- Added "WhatsApp" user-agent to the list of crawlers.
|
||||||
|
- Changed default db folder so it adds the process id (PID). --db-path is
|
||||||
|
required now when using --load-from-disk.
|
||||||
|
- Changed Dockerfile to build from the current source.
|
||||||
|
- Changed 'hits' to be right-aligned on TUI.
|
||||||
|
- Changed to use faster slide animations on HTML report.
|
||||||
|
- Changed wording from 'Bandwidth' to the proper term 'Tx. Amount'.
|
||||||
|
- Ensure database filenames used by btree are less predictable.
|
||||||
|
- Ensure HTML templates, CSS and JS files are minified when outputting
|
||||||
|
report.
|
||||||
|
- Ensure key phrases from Google are added even when https is used.
|
||||||
|
- Ensure live report updates data & charts if tab/document has focus.
|
||||||
|
- Ensure multiple 'Yandex' crawlers are properly parsed.
|
||||||
|
- Ensure Safari has priority over most crawlers except the ones that are
|
||||||
|
known to have it.
|
||||||
|
- Ensure the request protocol on its own is properly parsed.
|
||||||
|
- Ensure the right number of tests are performed against the given log.
|
||||||
|
- Ensure user configuration is parsed first when available.
|
||||||
|
- Ensure wss:// is used when connecting via HTTPS.
|
||||||
|
- Ensure XFF parser takes into account escaped braces.
|
||||||
|
- Fixed a regression where fifo-in/out would fail with ENXIO.
|
||||||
|
- Fixed a regression where it would return EXIT_FAILURE on an empty log.
|
||||||
|
- Fixed a (ssh) pipeline problem with fgetline()/fgets() when there is a race
|
||||||
|
for data on stdin.
|
||||||
|
- Fixed broken X-Forwarded-For (XFF) %~ specifier in certain parsing cases.
|
||||||
|
- Fixed conf.filenames duplication problem if logs are via pipe.
|
||||||
|
- Fixed float percent value on JSON/HTML output for locales using decimal comma.
|
||||||
|
- Fixed issue where it was not possible to establish a Web Socket connection
|
||||||
|
when attempting to parse and extract HTTP method.
|
||||||
|
- Fixed issue where log formats with pipe delimiter were not propely parsed.
|
||||||
|
- Fixed memory leak after config file path has been set (housekeeping).
|
||||||
|
- Fixed memory leak when adding host to holder introduced in c052d1ea.
|
||||||
|
- Fixed possible memory leak when hiding specific referrers.
|
||||||
|
- Fixed several JS jshint warnings.
|
||||||
|
- Fixed sudo installs on TravisCI.
|
||||||
|
- Fixed UNDEFINED time range in HTML report when VISITORS panel was ignored.
|
||||||
|
- Fixed unnecessary closing span tags from template.
|
||||||
|
- Fixed use-after-free when two color items were found on color_list.
|
||||||
|
|
||||||
|
Changes to GoAccess 1.2 - Tuesday, March 07, 2017
|
||||||
|
|
||||||
|
- Added a Dockerfile.
|
||||||
|
- Added Amazon S3 bucket name as a VirtualHost (server block).
|
||||||
|
- Added a replacement for GNU getline() to dynamically expand line buffer
|
||||||
|
while maintaining real-time output.
|
||||||
|
- Added --daemonize command line option to run GoAccess as daemon.
|
||||||
|
- Added several improvements to the HTML report on small-screen devices.
|
||||||
|
- Added option to the HTML report to auto-hide tables on small-screen
|
||||||
|
devices.
|
||||||
|
- Added --process-and-exit command line option to parse log and exit.
|
||||||
|
- Added several feed readers to the list of browsers.
|
||||||
|
- Added "-" single dash per convention to read from the standard input.
|
||||||
|
- Added support for MaxMind GeoIP2.
|
||||||
|
- Added the ability to read and follow from a pipe such as
|
||||||
|
"tail -f access.log | goaccess -"
|
||||||
|
- Added the ability to specify multiple logs as input sources, e.g.:
|
||||||
|
"goaccess access.log access.log.1" while maintaining real-time output.
|
||||||
|
- Added time unit (seconds) to the processed time label in the HTML/terminal
|
||||||
|
output.
|
||||||
|
- Added visitors' percent column to the terminal dashboard.
|
||||||
|
- Changed D3 charts to dim Y-axis on mouseover.
|
||||||
|
- Changed D3 charts to reflect HTML column sort.
|
||||||
|
- Changed D3 charts to render only if within the viewport. This improves the
|
||||||
|
overall real-time HTML performance.
|
||||||
|
- Changed HTML report tables to render only if within the viewport.
|
||||||
|
- Changed percentage calculation to be based on the total within each panel.
|
||||||
|
- Ensure start/end dates are updated real-time in the HTML output.
|
||||||
|
- Ensure "window.location.hostname" is used as the default WS server host.
|
||||||
|
In most cases, this should avoid the need for specifying "--ws-url=host".
|
||||||
|
Simply using "--real-time-html" should suffice.
|
||||||
|
- Fixed issue on HTML report to avoid outputting scientific notation for all
|
||||||
|
byte sizes.
|
||||||
|
- Fixed integer overflow when calculating bar graph length on terminal
|
||||||
|
output.
|
||||||
|
- Fixed issue where global config file would override command line arguments.
|
||||||
|
- Fixed issue where it wouldn't allow loading from disk without specifying a
|
||||||
|
file when executed from the cron.
|
||||||
|
- Fixed issue where parser couldn't read some X-Forwarded-For (XFF) formats.
|
||||||
|
Note that this breaks compatibility with the original implementation of
|
||||||
|
parsing XFF, but at the same time it gives much more flexibility on different
|
||||||
|
formats.
|
||||||
|
- Fixed issue where specifying fifo-in/out wouldn't allow HTML real-time
|
||||||
|
output.
|
||||||
|
- Fixed issue where the wrong number of parsed lines upon erroring out was
|
||||||
|
displayed.
|
||||||
|
- Fixed issue where the WebSocket server prevented to establish a connection
|
||||||
|
with a client due to invalid UTF-8 sequences.
|
||||||
|
- Fixed percent issue when calculating visitors field.
|
||||||
|
- Updated the list of crawlers.
|
||||||
|
|
||||||
|
Changes to GoAccess 1.1.1 - Wednesday, November 23, 2016
|
||||||
|
|
||||||
|
- Added data metric's "unique" count on each panel to the JSON/HTML outputs.
|
||||||
|
- Changed D3 bar charts to use .rangeBands and avoid extra outer padding.
|
||||||
|
- Fixed mouseover offset position issue on D3 bar charts.
|
||||||
|
- Fixed possible heap overflow when an invalid status code was parsed and
|
||||||
|
processed. This also ensures that only valid HTTP status codes are parsed
|
||||||
|
>=100 or <= 599.
|
||||||
|
- Fixed sluggish D3 chart re-rendering by changing how x-axis labels are
|
||||||
|
displayed in the HTML report.
|
||||||
|
|
||||||
|
Changes to GoAccess 1.1 - Tuesday, November 08, 2016
|
||||||
|
|
||||||
|
- Added a new layout to the HTML report and additional settings and changes.
|
||||||
|
- Added --crawlers-only command line option to display crawlers/bots only.
|
||||||
|
- Added --fifo-in and --fifo-out command line options to set websocket FIFO
|
||||||
|
reader/writer.
|
||||||
|
- Added --no-html-last-updated command line option.
|
||||||
|
- Added --num-tests command line option.
|
||||||
|
- Added --html-prefs command line option to to set default preferences for
|
||||||
|
the HTML report.
|
||||||
|
- Added "Amazon S3" Log Format to the list of predefined options.
|
||||||
|
- Added "Android 7.1 Nougat" to the list of OSs.
|
||||||
|
- Added "Android Marshmallow 6.0.1" to the list of OSs.
|
||||||
|
- Added "Android Nougat 7.0" to the list of OSs.
|
||||||
|
- Added "Feed Wrangler" to the list of feeds.
|
||||||
|
- Added "Go-http-client" to the list of browsers.
|
||||||
|
- Added "MicroMessenger" (WeChat) to the list of browsers.
|
||||||
|
- Added "SemrushBot" to the list of crawlers.
|
||||||
|
- Added "Remote User" panel to capture HTTP authentication requests. Use %e
|
||||||
|
within the log-format variable to enable this panel.
|
||||||
|
- Added tebibyte unit to the byte to string function converter.
|
||||||
|
- Added the ability to parse reverse proxy logs that have multiple IPs. This
|
||||||
|
adds the ability to parse the "X-Forwarded-For" field in a reverse proxy
|
||||||
|
setup.
|
||||||
|
- Added the ability to show which token didn't match log/date/time pattern.
|
||||||
|
This also ensures that in the absence of data, its output is not treated as
|
||||||
|
error but instead it produces an empty report.
|
||||||
|
- Added the ability to specify a WebSocket protocol (ws|wss) through
|
||||||
|
--ws-url.
|
||||||
|
- Added the request query string to the W3C format.
|
||||||
|
- Added TLS/SSL support to the HTML real-time report.
|
||||||
|
- Changed browser classification for Google Cloud Clients.
|
||||||
|
- Changed how "Darwin" OS was reported to display AppName instead.
|
||||||
|
- Changed default W3C log format to use the URL path instead of full request.
|
||||||
|
- Changed HTML default number of items on each table to 7.
|
||||||
|
- Changed request parser to allow empty query strings.
|
||||||
|
- Changed default HTML output theme to darkBlue.
|
||||||
|
- Ensure every version of iOS is broken down under the OS panel.
|
||||||
|
- Ensure latest JSON data is fast-forwarded when connection is opened.
|
||||||
|
GoAccess now sends the latest JSON data to the client as soon as the
|
||||||
|
WebSocket connection is opened.
|
||||||
|
- Ensure localStorage is supported and enabled in the HTML report
|
||||||
|
- Ensure unknown coutries/continents are listed.
|
||||||
|
- Fixed D3 chart width overflow issue on Edge.
|
||||||
|
- Fixed integer to string key conversion for unique visitors. This fixes the
|
||||||
|
issue where resulting keys would collide with existing keys and thus not
|
||||||
|
keeping the right visitors count on certain panels.
|
||||||
|
- Fixed memory leak when unable to URL decode %q specifier.
|
||||||
|
- Fixed memory leak when unable to URL decode %U specifier.
|
||||||
|
- Fixed month name abbreviation on app.js.
|
||||||
|
- Fixed percentage integer overflow with large numbers on 32bits platforms.
|
||||||
|
- Fixed percent calculation due to integer division rounding to zero.
|
||||||
|
- Fixed possible code injection when outputting an HTML report.
|
||||||
|
- Fixed segfault when using options -H or -M without an argument.
|
||||||
|
- Removed timestamp from the HTML report title tag.
|
||||||
|
|
||||||
|
Changes to GoAccess 1.0.2 - Tuesday, July 05, 2016
|
||||||
|
|
||||||
|
- Added minor changes to the HTML report stylesheet.
|
||||||
|
- Added the ability to specify the WebSocket port within --ws-url.
|
||||||
|
- Added the proper byte swap functions used by Sun Solaris.
|
||||||
|
- Added the proper default --http-method/protocol values on the config file.
|
||||||
|
- Changed bar transition to scale delay dynamically to the length of the
|
||||||
|
dataset.
|
||||||
|
- Fixed build issue on platforms lacking of open_memstream() by refactoring
|
||||||
|
the JSON module to use its own memory buffer.
|
||||||
|
- Fixed issue where the server wouldn't send cached buffer to slow clients.
|
||||||
|
- Fixed OS X build check of ncursesw.
|
||||||
|
- Implemented a throttle mechanism for slow clients to avoid caching too much
|
||||||
|
data on the server-side.
|
||||||
|
- Removed flickering on D3 line and bar chart redraw.
|
||||||
|
|
||||||
|
Changes to GoAccess 1.0.1 - Friday, June 17, 2016
|
||||||
|
|
||||||
|
- Added Android version number along with the codename when using --real-os,
|
||||||
|
e.g., "Lollipop 5.1".
|
||||||
|
- Added some missing headers and function checks to configure.ac.
|
||||||
|
- Fixed a regression where it wouldn't allow abbreviated date and time
|
||||||
|
formats such as %F or %T.
|
||||||
|
- Fixed build issues on systems running GLIBC older than 2.9, such as RHEL <= 5.
|
||||||
|
- Fixed issue where it wouldn't send the whole buffer to a socket causing the
|
||||||
|
real-time-html WebSocket server to progressively consume a lot more memory.
|
||||||
|
- Fixed memory leak when using getline and follow mode enabled.
|
||||||
|
- Fixed some buffer initialization issues on read_line() and
|
||||||
|
perform_tail_follow().
|
||||||
|
- Fixed uint types in sha1 files.
|
||||||
|
|
||||||
|
Changes to GoAccess 1.0 - Thursday, June 09, 2016
|
||||||
|
|
||||||
|
- Added --enable-panel=<PANEL> command line option to display the given
|
||||||
|
module.
|
||||||
|
- Added --json-pretty-print command line option to output pretty json.
|
||||||
|
- Added --log-format=<format> command-line shortcuts for standard log
|
||||||
|
formats.
|
||||||
|
- Added --origin command line option to match the origin WebSocket header.
|
||||||
|
- Added --output=<file.[html|csv|json]> as a shortcut to --output-format.
|
||||||
|
- Added a complete real-time functionality to the HTML output.
|
||||||
|
- Added an option to set the max number of items to show per panel.
|
||||||
|
- Added D3 Visualziations to the HTML dashboard.
|
||||||
|
- Added metadata metrics to the each of the panels (JSON output)
|
||||||
|
- Added option to specify time distribution specificity.
|
||||||
|
- Added the ability to download a JSON file from the HTML report.
|
||||||
|
- Added the ability to output multiple formats on a single log parse.
|
||||||
|
- Added the ability to set the date specificity in hours.
|
||||||
|
- Added the ability to sort all HTML tables on all panels.
|
||||||
|
- Added the ability to specify a custom CSS and JS file to the HTML report.
|
||||||
|
- Added user-agents to the JSON output per each host.
|
||||||
|
- Added "Vivaldi" to the list of browsers.
|
||||||
|
- Bootstrapify the HTML dashboard.
|
||||||
|
- Changed configure.ac to use LDFLAGS instead of CFLAGS where applicable.
|
||||||
|
- Changed default terminal color scheme to 256 Monokai if terminal supports 256 colors.
|
||||||
|
- Changed GoAccess license to The MIT License (MIT)
|
||||||
|
- Changed the visitors panel to display its dates continuously instead of top.
|
||||||
|
- Default to 256 Monokai color scheme if terminal supports 256 colors.
|
||||||
|
- Default to display HTTP method/protocol (if applicable).
|
||||||
|
- Display the children's Max. T.S. as the parent's top Max. T.S.
|
||||||
|
- Ensure the parent's Avg. T.S. displays parent's Cum. T.S. over parent's Hits.
|
||||||
|
- Fixed color issue when switching from the color scheme dialog.
|
||||||
|
- Fixed cross platform build issue when ncurses is built with and without
|
||||||
|
termlib=tinfo.
|
||||||
|
- Fixed curses header window issue where it wouldn't clear out on small
|
||||||
|
window sizes.
|
||||||
|
- Fixed issue where tail mode wouldn't parse full lines using getline().
|
||||||
|
- Fixed minor background color issue when using ncurses 6.
|
||||||
|
- Fixed possible division by zero when calculating percentage.
|
||||||
|
- Fixed singly link list node removal.
|
||||||
|
- Fixed still reachable memory leak on GeoIP cleanup (geoip legacy >= 1.4.7).
|
||||||
|
- Fixed various Valgrind's still reachable memory leaks.
|
||||||
|
- Removed -Wredundant-decls.
|
||||||
|
|
||||||
|
Changes to GoAccess 0.9.8 - Monday, February 29, 2016
|
||||||
|
|
||||||
|
- Added a more complete list of static extensions to the config file.
|
||||||
|
- Added "Android 6.0 Marshmallow" to the list of OSs.
|
||||||
|
- Added --no-tab-scroll command line option to disable scroll through panels
|
||||||
|
on TAB.
|
||||||
|
- Added the first and last log dates to the overall statistics panel.
|
||||||
|
- Ensure GoAccess links correctly against libtinfo.
|
||||||
|
- Ensure static content is case-insensitive verified.
|
||||||
|
- Fixed bandwidth overflow issue (numbers > 2GB on non-x86_64 arch).
|
||||||
|
- Fixed broken HTML layout when html-method/protocol is missing in config file.
|
||||||
|
- Refactored parsing and display of available modules/panels.
|
||||||
|
|
||||||
|
Changes to GoAccess 0.9.7 - Monday, December 21, 2015
|
||||||
|
|
||||||
|
- Added "Squid native" log format to the config file.
|
||||||
|
- Fixed integer overflow when getting total bandwidth using the on-disk
|
||||||
|
storage.
|
||||||
|
- Fixed issue where a timestamp was stored as date under the visitors panel.
|
||||||
|
- Fixed issue where config dialog fields were not cleared out on select.
|
||||||
|
- Fixed issue where "Virtual Hosts" menu item wasn't shown in the HTML sidebar.
|
||||||
|
|
||||||
|
Changes to GoAccess 0.9.6 - Tuesday, October 27, 2015
|
||||||
|
|
||||||
|
- Added --dcf command line option to view the default config file path.
|
||||||
|
- Added --ignore-status the ability to ignore parsing status codes.
|
||||||
|
- Added "Darwin" to the list of OSs.
|
||||||
|
- Fixed segfault when appending data to a log (follow) without virtualhosts.
|
||||||
|
|
||||||
|
Changes to GoAccess 0.9.5 - Thursday, October 22, 2015
|
||||||
|
|
||||||
|
- Added major performance improvements to the default storage when parsing and
|
||||||
|
storing data (~%44 less memory, ~37% faster).
|
||||||
|
- Added the ability to parse virtual hosts and a new panel to display metrics
|
||||||
|
per virtual host.
|
||||||
|
- Added the ability to parse HTTP/2 requests.
|
||||||
|
- Added the ability to use GNU getline() to parse full line requests.
|
||||||
|
- Added the ability to output debug info if a log file is specified, even
|
||||||
|
without --enable-debug.
|
||||||
|
- Added OS X "El Capitan".
|
||||||
|
- Added WebDav HTTP methods and HTTP status from RFC 2518 and RFC 3253.
|
||||||
|
- Fixed detection of some Googlebots.
|
||||||
|
- Fixed issue where time served metrics were not shown when loading persisted
|
||||||
|
data.
|
||||||
|
- Fixed linker error on OSX: ld: library not found for -lrt.
|
||||||
|
- Fixed percentage on the HTML output when excluding IPs.
|
||||||
|
- Removed GLib dependency and refactored storage functionality. By removing
|
||||||
|
this dependency, GoAccess is able to store data in a more efficient manner,
|
||||||
|
for instance, it avoids storing integer data as void* (generic typing), thus
|
||||||
|
greatly improving memory consumption for integers.
|
||||||
|
|
||||||
|
Changes to GoAccess 0.9.4 - Tuesday, September 08, 2015
|
||||||
|
|
||||||
|
- Added --all-static-files command line option to parse static files
|
||||||
|
containing a query string.
|
||||||
|
- Added --invalid-requests command line option to log invalid requests to a file.
|
||||||
|
- Added additional overall metric - total valid requests.
|
||||||
|
- Added "%~" specifier to move forward through a log string until a non-space
|
||||||
|
char is found.
|
||||||
|
- Added the ability to parse native Squid access.log format.
|
||||||
|
- Fixed a few issues in the configuration script.
|
||||||
|
- Fixed inability to parse color due to a missing POSIX extension.
|
||||||
|
"ERR:Invalid bg/fg color pairs"
|
||||||
|
|
||||||
|
Changes to GoAccess 0.9.3 - Wednesday, August 26, 2015
|
||||||
|
|
||||||
|
- Added --no-column-names command line option to disable column name metrics.
|
||||||
|
- Added a default color palette (Monokai) to the config file.
|
||||||
|
- Added AWS Elastic Load Balancing to the list of predefined log/date/time
|
||||||
|
formats.
|
||||||
|
- Added CloudFlare status codes.
|
||||||
|
- Added column headers for every enabled metric on each panel.
|
||||||
|
- Added cumulative time served metric.
|
||||||
|
- Added "DragonFly" BSD to the list of OSs.
|
||||||
|
- Added maximum time served metric (slowest running requests).
|
||||||
|
- Added "Slackbot" to the list of crawlers/browsers.
|
||||||
|
- Added the ability to parse the query string specifier "%q" from a log file.
|
||||||
|
- Added the ability to process logs incrementally.
|
||||||
|
- Added the ability to set custom colors on the terminal output.
|
||||||
|
- Disabled REFERRERS by default.
|
||||||
|
- Ensure bandwidth metric is displayed only if %b specifier is parsed.
|
||||||
|
- Fixed issue where the --sort-panel option wouldn't sort certain panels.
|
||||||
|
- Fixed several compiler warnings.
|
||||||
|
- Set predefined static files when no config file is used.
|
||||||
|
- Updated "Windows 10" user agent from 6.4 (wrong) to 10.0.(actual)
|
||||||
|
|
||||||
|
Changes to GoAccess 0.9.2 - Monday, July 06, 2015
|
||||||
|
|
||||||
|
- Added ability to fully parse browsers that contain spaces within a token.
|
||||||
|
- Added multiple user agents to the list of browsers.
|
||||||
|
- Added the ability to handle time served in milliseconds as a decimal number
|
||||||
|
`%L`.
|
||||||
|
- Added the ability to parse a timestamp in microseconds.
|
||||||
|
- Added the ability to parse Google Cloud Storage access logs.
|
||||||
|
- Added the ability to set a custom title and header in the HTML report.
|
||||||
|
- Added "%x" as timestamp log-format specifier.
|
||||||
|
- Ensure agents" hash table is destroyed upon exiting the program.
|
||||||
|
- Ensure "Game Systems" are processed correctly.
|
||||||
|
- Ensure visitors panel header is updated depending if crawlers are parsed or
|
||||||
|
not.
|
||||||
|
- Fixed issue where the date value was set as time value in the config
|
||||||
|
dialog.
|
||||||
|
- Fixed memory leak in the hits metrics when using the in-memory storage
|
||||||
|
(GLib).
|
||||||
|
|
||||||
|
Changes to GoAccess 0.9.1 - Tuesday, May 26, 2015
|
||||||
|
|
||||||
|
- Added --hl-header command line option to highlight active panel.
|
||||||
|
- Added "Applebot" to the list of web crawlers.
|
||||||
|
- Added "Microsoft Edge" to the list of browsers.
|
||||||
|
- Added additional Nginx-specific status codes.
|
||||||
|
- Ensure dump_struct is used only if using __GLIBC__.
|
||||||
|
- Ensure goaccess image has an alt attribute on the HTML output for valid
|
||||||
|
HTML5.
|
||||||
|
- Ensure the config file path is displayed when something goes wrong (FATAL).
|
||||||
|
- Ensure there is a character indicator to see which panel is active.
|
||||||
|
- Fixed Cygwin compile issue attempting to use -rdynamic.
|
||||||
|
- Fixed issue where a single IP did not get excluded after an IP range.
|
||||||
|
- Fixed issue where requests showed up in the wrong view even when
|
||||||
|
--no-query-string was used.
|
||||||
|
- Fixed issue where some browsers were not recognized or marked as "unknown".
|
||||||
|
- Fixed memory leak when excluding an IP range.
|
||||||
|
- Fixed overflows on sort comparison functions.
|
||||||
|
- Fixed segfault when using on-disk storage and loading persisted data with -a.
|
||||||
|
- Removed keyphrases menu item from HTML output.
|
||||||
|
- Split iOS devices from Mac OS X.
|
||||||
|
|
||||||
|
Changes to GoAccess 0.9 - Thursday, March 19, 2015
|
||||||
|
|
||||||
|
- Added --geoip-database command line option for GeoIP Country/City IPv6.
|
||||||
|
- Added "Windows 10 (v6.4)" to the real windows user agents.
|
||||||
|
- Added ability to double decode an HTTP referer and agent.
|
||||||
|
- Added ability to sort views through the command line on initial load.
|
||||||
|
- Added additional data values to the backtrace report.
|
||||||
|
- Added additional graph to represent the visitors metric on the HTML output.
|
||||||
|
- Added AM_PROG_CC_C_O to configure.ac
|
||||||
|
- Added "Android Lollipop" to the list of operating systems.
|
||||||
|
- Added "average time served" metric to all panels.
|
||||||
|
- Added "bandwidth" metric to all panels.
|
||||||
|
- Added command line option to disable summary metrics on the CSV output.
|
||||||
|
- Added numeric formatting to the HTML output to improve readability.
|
||||||
|
- Added request method specifier to the default W3C log format.
|
||||||
|
- Added the ability to ignore parsing and displaying given panel(s).
|
||||||
|
- Added the ability to ignore referer sites from being counted. A good case
|
||||||
|
scenario is to ignore own domains. i.e., owndomain.tld. This also allows
|
||||||
|
ignoring hosts using wildcards. For instance, *.mydomain.tld or www.mydomain.*
|
||||||
|
or www?.mydomain.tld
|
||||||
|
- Added time/hour distribution module. e.g., 00-23.
|
||||||
|
- Added "visitors" metrics to all panels.
|
||||||
|
- Changed AC_PREREQ macro version so it builds on old versions of autoconf.
|
||||||
|
- Changed GEOIP database load to GEOIP_MEMORY_CACHE for faster lookups.
|
||||||
|
- Changed maximum number of choices to display per panel to 366 fron 300.
|
||||||
|
- Ensure config file is read from home dir if unable to open it from
|
||||||
|
%sysconfdir% path.
|
||||||
|
- Fixed array overflows when exceeding MAX_* limits on command line options.
|
||||||
|
- Fixed a SEGFAULT where sscanf could not handle special chars within the
|
||||||
|
referer.
|
||||||
|
- Fixed character encoding on geolocation output (ISO-8859 to UTF8).
|
||||||
|
- Fixed issue on wild cards containing "?" at the end of the string.
|
||||||
|
- Fixed issue where a "Nothing valid to process" error was triggered when the
|
||||||
|
number of invalid hits was equal to the number of valid hits.
|
||||||
|
- Fixed issue where outputting to a file left a zero-byte file in pwd.
|
||||||
|
- Improved parsing of operating systems.
|
||||||
|
- Refactored log parser so it allows with ease the addition of new modules.
|
||||||
|
This also attempts to decouple the core functionality from the rendering
|
||||||
|
functions. It also gives the flexibility to add children metrics to root
|
||||||
|
metrics for any module. e.g., Request A was visited by IP1, IP2, IP3, etc.
|
||||||
|
- Restyled HTML output.
|
||||||
|
|
||||||
|
Changes to GoAccess 0.8.5 - Sunday, September 14, 2014
|
||||||
|
|
||||||
|
- Fixed SEGFAULT when parsing a malformed request that doesn't have HTTP
|
||||||
|
status.
|
||||||
|
|
||||||
|
Changes to GoAccess 0.8.4 - Monday, September 08, 2014
|
||||||
|
|
||||||
|
- Added --444-as-404 command line option to handle nginx non-standard status
|
||||||
|
code 444 as 404.
|
||||||
|
- Added --4xx-to-unique-count command line option to count client errors (4xx)
|
||||||
|
to the unique visitors count. Now by default it omits client errors (4xx)
|
||||||
|
from being added to the unique visitors count as they are probably not welcomed
|
||||||
|
visitors. 4xx errors are always counted in panels other than visitors, OS &
|
||||||
|
browsers.
|
||||||
|
- Added and updated operating systems, and browsers.
|
||||||
|
- Added excluded IP hits count to the general statistics panel on all reports.
|
||||||
|
- Added HTTP nonstandard code "444" to the status code list.
|
||||||
|
- Fixed compile error due to missing include <sys/types.h> for type
|
||||||
|
off_t (gcc 4.1).
|
||||||
|
- Fixed issue when excluding IPv4/v6 ranges.
|
||||||
|
- Removed request status field restriction. This allows parsing logs that
|
||||||
|
contain only a valid date, IPv4/6 and host.
|
||||||
|
|
||||||
|
Changes to GoAccess 0.8.3 - Monday, July 28, 2014
|
||||||
|
|
||||||
|
- Fixed SEGFAULT when parsing a CLF log format and using --ignore-crawlers.
|
||||||
|
- Fixed parsing conflict between some Opera browsers and Chrome.
|
||||||
|
- Fixed parsing of several feed readers that are Firefox/Safari-based.
|
||||||
|
- Fixed Steam detection.
|
||||||
|
- Added Huawei to the browser's list and removed it from the OS's list.
|
||||||
|
|
||||||
|
Changes to GoAccess 0.8.2 - Monday, July 20, 2014
|
||||||
|
|
||||||
|
- Added --version command line option.
|
||||||
|
- Added --ignore-crawlers command line option to ignore crawlers.
|
||||||
|
- Added ability to parse dates containing whitespaces in between,
|
||||||
|
e.g., "Jul 15 20:13:59" (syslog format).
|
||||||
|
- Added a variety of browsers, game systems, feed readers, and podcasts.
|
||||||
|
- Added missing up/down arrows to the help section.
|
||||||
|
- Added the ability to ignore multiple IPv4/v6 and IP ranges.
|
||||||
|
- Added the PATCH method according to RFC 5789.
|
||||||
|
- Fixed GeoLocation percent issue for the JSON, CSV and HTML outputs.
|
||||||
|
- Fixed memory leak when excluding one or multiple IPs.
|
||||||
|
|
||||||
|
Changes to GoAccess 0.8.1 - Monday, June 16, 2014
|
||||||
|
|
||||||
|
- Added ability to add/remove static files by extension through the config
|
||||||
|
file.
|
||||||
|
- Added ability to print backtrace on segmentation fault.
|
||||||
|
- Escaped JSON strings correctly according to [RFC4627].
|
||||||
|
- Fixed encoding issue when extracting keyphrases for some HTTP referers.
|
||||||
|
- Fixed issue where HTML bar graphs were not shown due to numeric locale.
|
||||||
|
- Fixed issue with URIs containing "\r?\n" thus breaking the corresponding
|
||||||
|
output.
|
||||||
|
- Make sure request string is URL decoded on all outputs.
|
||||||
|
|
||||||
|
Changes to GoAccess 0.8 - Tuesday, May 20, 2014
|
||||||
|
|
||||||
|
- Added APT-HTTP to the list of browsers.
|
||||||
|
- Added data persistence and ability to load data from disk.
|
||||||
|
- Added IE11 to the list of browsers.
|
||||||
|
- Added IEMobile to the list of browsers.
|
||||||
|
- Added multiple command line options.
|
||||||
|
- Added Nagios check_http to the list of browsers.
|
||||||
|
- Added parsing progress metrics - total requests / requests per second.
|
||||||
|
- Added the ability to parse a GeoLiteCity.dat to get the city given an IPv4.
|
||||||
|
- Changed the way the configuration file is parsed. This will parse all
|
||||||
|
configuration options under ~/.goaccessrc or the specified config file and
|
||||||
|
will feed getopt_long with the extracted key/value pairs. This also allows the
|
||||||
|
ability to have comments on the config file which won't be overwritten.
|
||||||
|
- Ensure autoconf determines the location of ncurses headers.
|
||||||
|
- Fixed issue where geo_location_data was NULL.
|
||||||
|
- Fixed issue where GoAccess did not run without a tty allocated to it.
|
||||||
|
- Fixed potential memory leak on --log-file realpath().
|
||||||
|
- Fixed Solaris build errors.
|
||||||
|
- Implemented an on-memory hash database using Tokyo Cabinet. This
|
||||||
|
implementation allows GoAccess not to rely on GLib's hash table if one is
|
||||||
|
needed.
|
||||||
|
- Implemented large file support using an on-disk B+ Tree database. This
|
||||||
|
implementation allows GoAccess not to hold everything in memory but instead
|
||||||
|
it uses an on-disk B+ Tree database.
|
||||||
|
- Trimmed leading and trailing whitespaces from keyphrases module.
|
||||||
|
|
||||||
|
Changes to GoAccess 0.7.1 - Monday, February 17, 2014
|
||||||
|
|
||||||
|
- Added --no-color command line option to turn off color output.
|
||||||
|
- Added --real-os command line option to get real OS names, e.g.,
|
||||||
|
"Android, Windows, Mac".
|
||||||
|
- Added ability to log debug messages to a file.
|
||||||
|
- Added ability to parse tab-separated log format strings.
|
||||||
|
- Added ability to support terminals without colors.
|
||||||
|
- Added command line option to append HTTP method to request.
|
||||||
|
- Added command line option to append HTTP protocol to request.
|
||||||
|
- Added long options to command-line.
|
||||||
|
- Added missing "Win 9x 4.90" (Windows Me) user-agent.
|
||||||
|
- Added missing Windows RT user-agent.
|
||||||
|
- Ensure mouse click does not reset expanded module if it is the same.
|
||||||
|
- Fixed Amazon CloudFront tab-separated log format.
|
||||||
|
- Fixed "FreeBSD style" ncursesw built into system.
|
||||||
|
- Fixed HTML report issue where data cell would not wrap.
|
||||||
|
- Fixed issue when isatty() could not find a valid file descriptor.
|
||||||
|
- Fixed SymbianOS user-agent and retrieve its version.
|
||||||
|
|
||||||
|
Changes to GoAccess 0.7 - Monday, December 15, 2013
|
||||||
|
|
||||||
|
- Added a command line option to ignore request query strings.
|
||||||
|
- Added additional compiler flags & fixed several warnings.
|
||||||
|
- Added additional static file extensions.
|
||||||
|
- Added country per IP to HOSTS module (HTML & JSON).
|
||||||
|
- Added DEBUG mode to Makefile & -O2 to default release.
|
||||||
|
- Added GEOLOCATION report to all outputs - includes continents/countries.
|
||||||
|
- Added IP resolver to HTML and JSON output.
|
||||||
|
- Added module numbers to each module header.
|
||||||
|
- Added the ability to output JSON and CSV.
|
||||||
|
- Added Windows NT 6.3 (Win 8.1) to the list.
|
||||||
|
- Fixed buffer overflow issue with realpath.
|
||||||
|
- New HTML report - HTML5 + CSS styles.
|
||||||
|
- Properly split request line into the three request modules.
|
||||||
|
|
||||||
|
Changes to GoAccess 0.6.1 - Monday, October 07, 2013
|
||||||
|
|
||||||
|
- Added active module indication by name.
|
||||||
|
- Added additional crawlers to the list.
|
||||||
|
- Added custom configuration file option.
|
||||||
|
- Added human-readable string when unable to open log.
|
||||||
|
- Added missing include when compiling on OSX 10.6.
|
||||||
|
- Added optional mouse support to the main dashboard.
|
||||||
|
- Added the ability to select active module by number (keys).
|
||||||
|
- Added the rest of HTTP methods according to RFC2616.
|
||||||
|
- Changed referring site sscanf format to process multiple URLs.
|
||||||
|
- Changed the default color scheme to monochrome.
|
||||||
|
- Fixed issue where %T was not processing floating-point numbers.
|
||||||
|
- Fixed percentage issue for browsers and os modules.
|
||||||
|
- Fixed SIGSEGV when reading from stdin to stdout.
|
||||||
|
- Improved performance when expanding a module.
|
||||||
|
- Reduced memory consumption by decreasing number of dns threads.
|
||||||
|
- Removed ^UP/^DOWN due to a key mapping conflict.
|
||||||
|
|
||||||
|
Changes to GoAccess 0.6 - Monday, July 15, 2013
|
||||||
|
|
||||||
|
- Added a bunch of minor fixes and changes.
|
||||||
|
- Added and updated list of browsers and operating systems.
|
||||||
|
- Added a predefined log format/date for the Amazon CloudFront (Download
|
||||||
|
Distribution).
|
||||||
|
- Added parsing/processing indicators.
|
||||||
|
- Added the ability to independently sort each module.
|
||||||
|
- Added the ability to search across the whole dashboard with the option to
|
||||||
|
use regular expressions.
|
||||||
|
- Config window now accepts [ENTER] to continue or F10.
|
||||||
|
- Fixed issue where Opera +15 was identified as Chrome.
|
||||||
|
- Implemented the ability to parse the time taken to serve the request, in
|
||||||
|
microseconds and seconds.
|
||||||
|
- Improved memory usage and better performance in general.
|
||||||
|
- Moved away from the original pop-up UI to a new expandable dashboard
|
||||||
|
allowing data to be processed in real-time.
|
||||||
|
- Sanitized HTML output with html entities for special chars.
|
||||||
|
- Updated the hosts module so it shows the reverse DNS as a sub node.
|
||||||
|
|
||||||
|
Changes to GoAccess 0.5 - Monday, June 04, 2012
|
||||||
|
|
||||||
|
- Added ability to output a full stats report to a file.
|
||||||
|
- Added a key shortcut to scroll top/bottom.
|
||||||
|
- Added a new include sys/socket.h - BSD
|
||||||
|
- Added support for IPv6
|
||||||
|
- Added the ability to parse a custom format string.
|
||||||
|
- Fixed google cache key-phrases.
|
||||||
|
- Fixed issue on empty Google query strings.
|
||||||
|
- Fixed issue on Opera agents where version was not recognized correctly.
|
||||||
|
- Fixed other minor fixes and changes.
|
||||||
|
|
||||||
|
Changes to GoAccess 0.4.2 - Monday, January 03, 2011
|
||||||
|
|
||||||
|
- Added UTF-8 support. Now it should handle properly wide-character/UTF-8.
|
||||||
|
Run ./configure --enable-utf8
|
||||||
|
- Fixed a minor bug when adding monthly totals on visitors subwin.
|
||||||
|
- Removed -lrt since GoAccess does not link to librt. (OS X doesn't include
|
||||||
|
librt)
|
||||||
|
|
||||||
|
Changes to GoAccess 0.4.1 - Monday, December 13, 2010
|
||||||
|
|
||||||
|
- Added more flexibility when resizing the terminal. Should work fine with
|
||||||
|
the standard 80x24.
|
||||||
|
- Added the ability to pass a flag to ./configure so GeoIP can be enabled if
|
||||||
|
needed.
|
||||||
|
- Implemented a pipeline from stdin, so the input doesn't have to be only a
|
||||||
|
file.
|
||||||
|
|
||||||
|
Changes to GoAccess 0.4 - Tuesday, November 30, 2010
|
||||||
|
|
||||||
|
- Added graphs to the unique_visitors subwin.
|
||||||
|
- Implemented bandwidth per day, and host.
|
||||||
|
- Implemented list of agents for specific hosts.
|
||||||
|
- Rewrote hash tables iterative code to avoid the use of GHashTableIter, this
|
||||||
|
way it works with all GLib > 2.0.0.
|
||||||
|
- Various bug fixes and code cleanups (mainly in the subwin modules).
|
||||||
|
|
||||||
|
Changes to GoAccess 0.3.3 - Monday, September 27, 2010
|
||||||
|
|
||||||
|
- Changed tarball's filename.
|
||||||
|
- Fixed a request size parsing issue. Due to malformed syntax on the HTTP
|
||||||
|
protocol, bandwidth was reset to 0. Ex. "HEAD /" 400 20392
|
||||||
|
- Fixed a segfault when goaccess was executed without any options but with an
|
||||||
|
additional unknown argument.
|
||||||
|
|
||||||
|
Changes to GoAccess 0.3.2 - Thursday, September 09, 2010
|
||||||
|
|
||||||
|
- Fixed an agent parsing issue. As a result, operating systems were not
|
||||||
|
properly counted.
|
||||||
|
|
||||||
|
Changes to GoAccess 0.3.1 - Friday, September 03, 2010
|
||||||
|
|
||||||
|
- Added a color scheme implementation
|
||||||
|
|
||||||
|
Changes to GoAccess 0.3 - Sunday, August 29, 2010
|
||||||
|
|
||||||
|
- Added a counter for total requests since initial parse was implemented
|
||||||
|
- Added a more detailed and comprehensive browser and os report
|
||||||
|
- Added bandwidth details for requested files
|
||||||
|
- Added percentage details on modules 2, 3, 4, 5, 10, 11
|
||||||
|
- Code cleanups
|
||||||
|
- Fixed a potential segmentation fault when resizing main window
|
||||||
|
- Fixed a segmentation fault on pop-up window search if haystack was null
|
||||||
|
- Fixed invalid entries when parsing status codes
|
||||||
|
- Implemented a real support for LFS - Handles files larger than 2 GiB on
|
||||||
|
32-bit systems
|
||||||
|
- Implemented support for "vhost_combined" log format
|
||||||
|
- Changed position of data/graphs depending on # of hits
|
||||||
|
|
||||||
|
Changes to GoAccess 0.2 - Sunday, July 25, 2010
|
||||||
|
|
||||||
|
- Added a keyphrases report coming from Google search engine. This includes,
|
||||||
|
raw, cache, and translation queries.
|
||||||
|
- Fixed a memory leak when invalid entries were parsed
|
||||||
|
- Fixed a potential buffer overflow.
|
||||||
|
- Implemented real-time statistics (RTS). Data will be appended as the log
|
||||||
|
file grows. Equivalent to "tail -f" on Unix systems
|
||||||
|
- Implemented screen resize functionality
|
||||||
|
- Simpliflied creation of the "unique visitors" hash-key.
|
||||||
|
- Simpliflied the "process_unique_data" function
|
||||||
|
- Various small speed increases & code cleanup
|
||||||
|
|
||||||
|
Changes to GoAccess 0.1.2 - Monday, July 12, 2010
|
||||||
|
|
||||||
|
- Fixed a segmentation fault when parsing logs with unusual request type. Ex.
|
||||||
|
"GET HTTP/1.1 HTTP/1.1"
|
||||||
|
|
||||||
|
Changes to GoAccess 0.1.1 - Saturday, July 10, 2010
|
||||||
|
|
||||||
|
- Added an enhanced error handling
|
||||||
|
- Added an extra macro on configure.ac to check against GHashTableIter.
|
||||||
|
./configure might not check for glib 2.16 that introduced "GHashTableIter".
|
||||||
|
- Added Glibc LFS
|
||||||
|
- Cleaned up code a little bit
|
||||||
|
- Fixed a segmentation fault when displaying the help text on x86_64.
|
||||||
|
- Fixed assignments in conditions. In case the assignment is actually intended
|
||||||
|
put extra parenthesis around it. This will shut GCC (and others) up.
|
||||||
|
- Fixed casts associated with "g_hash_table_iter_next".
|
||||||
|
- Fixed comparison between signed and unsigned integer types.
|
||||||
|
- Fixed function declarations.
|
||||||
|
- Fixed includes.
|
||||||
|
- Fixed two format strings. (If the error was ever triggered, it'd most
|
||||||
|
likely lead to a segfault)
|
||||||
|
|
||||||
|
Changes to GoAccess 0.1 - Tuesday, July 06, 2010
|
||||||
|
|
||||||
|
- Initial release 0.1
|
@ -0,0 +1,370 @@
|
|||||||
|
Installation Instructions
|
||||||
|
*************************
|
||||||
|
|
||||||
|
Copyright (C) 1994-1996, 1999-2002, 2004-2011 Free Software Foundation,
|
||||||
|
Inc.
|
||||||
|
|
||||||
|
Copying and distribution of this file, with or without modification,
|
||||||
|
are permitted in any medium without royalty provided the copyright
|
||||||
|
notice and this notice are preserved. This file is offered as-is,
|
||||||
|
without warranty of any kind.
|
||||||
|
|
||||||
|
Basic Installation
|
||||||
|
==================
|
||||||
|
|
||||||
|
Briefly, the shell commands `./configure; make; make install' should
|
||||||
|
configure, build, and install this package. The following
|
||||||
|
more-detailed instructions are generic; see the `README' file for
|
||||||
|
instructions specific to this package. Some packages provide this
|
||||||
|
`INSTALL' file but do not implement all of the features documented
|
||||||
|
below. The lack of an optional feature in a given package is not
|
||||||
|
necessarily a bug. More recommendations for GNU packages can be found
|
||||||
|
in *note Makefile Conventions: (standards)Makefile Conventions.
|
||||||
|
|
||||||
|
The `configure' shell script attempts to guess correct values for
|
||||||
|
various system-dependent variables used during compilation. It uses
|
||||||
|
those values to create a `Makefile' in each directory of the package.
|
||||||
|
It may also create one or more `.h' files containing system-dependent
|
||||||
|
definitions. Finally, it creates a shell script `config.status' that
|
||||||
|
you can run in the future to recreate the current configuration, and a
|
||||||
|
file `config.log' containing compiler output (useful mainly for
|
||||||
|
debugging `configure').
|
||||||
|
|
||||||
|
It can also use an optional file (typically called `config.cache'
|
||||||
|
and enabled with `--cache-file=config.cache' or simply `-C') that saves
|
||||||
|
the results of its tests to speed up reconfiguring. Caching is
|
||||||
|
disabled by default to prevent problems with accidental use of stale
|
||||||
|
cache files.
|
||||||
|
|
||||||
|
If you need to do unusual things to compile the package, please try
|
||||||
|
to figure out how `configure' could check whether to do them, and mail
|
||||||
|
diffs or instructions to the address given in the `README' so they can
|
||||||
|
be considered for the next release. If you are using the cache, and at
|
||||||
|
some point `config.cache' contains results you don't want to keep, you
|
||||||
|
may remove or edit it.
|
||||||
|
|
||||||
|
The file `configure.ac' (or `configure.in') is used to create
|
||||||
|
`configure' by a program called `autoconf'. You need `configure.ac' if
|
||||||
|
you want to change it or regenerate `configure' using a newer version
|
||||||
|
of `autoconf'.
|
||||||
|
|
||||||
|
The simplest way to compile this package is:
|
||||||
|
|
||||||
|
1. `cd' to the directory containing the package's source code and type
|
||||||
|
`./configure' to configure the package for your system.
|
||||||
|
|
||||||
|
Running `configure' might take a while. While running, it prints
|
||||||
|
some messages telling which features it is checking for.
|
||||||
|
|
||||||
|
2. Type `make' to compile the package.
|
||||||
|
|
||||||
|
3. Optionally, type `make check' to run any self-tests that come with
|
||||||
|
the package, generally using the just-built uninstalled binaries.
|
||||||
|
|
||||||
|
4. Type `make install' to install the programs and any data files and
|
||||||
|
documentation. When installing into a prefix owned by root, it is
|
||||||
|
recommended that the package be configured and built as a regular
|
||||||
|
user, and only the `make install' phase executed with root
|
||||||
|
privileges.
|
||||||
|
|
||||||
|
5. Optionally, type `make installcheck' to repeat any self-tests, but
|
||||||
|
this time using the binaries in their final installed location.
|
||||||
|
This target does not install anything. Running this target as a
|
||||||
|
regular user, particularly if the prior `make install' required
|
||||||
|
root privileges, verifies that the installation completed
|
||||||
|
correctly.
|
||||||
|
|
||||||
|
6. You can remove the program binaries and object files from the
|
||||||
|
source code directory by typing `make clean'. To also remove the
|
||||||
|
files that `configure' created (so you can compile the package for
|
||||||
|
a different kind of computer), type `make distclean'. There is
|
||||||
|
also a `make maintainer-clean' target, but that is intended mainly
|
||||||
|
for the package's developers. If you use it, you may have to get
|
||||||
|
all sorts of other programs in order to regenerate files that came
|
||||||
|
with the distribution.
|
||||||
|
|
||||||
|
7. Often, you can also type `make uninstall' to remove the installed
|
||||||
|
files again. In practice, not all packages have tested that
|
||||||
|
uninstallation works correctly, even though it is required by the
|
||||||
|
GNU Coding Standards.
|
||||||
|
|
||||||
|
8. Some packages, particularly those that use Automake, provide `make
|
||||||
|
distcheck', which can by used by developers to test that all other
|
||||||
|
targets like `make install' and `make uninstall' work correctly.
|
||||||
|
This target is generally not run by end users.
|
||||||
|
|
||||||
|
Compilers and Options
|
||||||
|
=====================
|
||||||
|
|
||||||
|
Some systems require unusual options for compilation or linking that
|
||||||
|
the `configure' script does not know about. Run `./configure --help'
|
||||||
|
for details on some of the pertinent environment variables.
|
||||||
|
|
||||||
|
You can give `configure' initial values for configuration parameters
|
||||||
|
by setting variables in the command line or in the environment. Here
|
||||||
|
is an example:
|
||||||
|
|
||||||
|
./configure CC=c99 CFLAGS=-g LIBS=-lposix
|
||||||
|
|
||||||
|
*Note Defining Variables::, for more details.
|
||||||
|
|
||||||
|
Compiling For Multiple Architectures
|
||||||
|
====================================
|
||||||
|
|
||||||
|
You can compile the package for more than one kind of computer at the
|
||||||
|
same time, by placing the object files for each architecture in their
|
||||||
|
own directory. To do this, you can use GNU `make'. `cd' to the
|
||||||
|
directory where you want the object files and executables to go and run
|
||||||
|
the `configure' script. `configure' automatically checks for the
|
||||||
|
source code in the directory that `configure' is in and in `..'. This
|
||||||
|
is known as a "VPATH" build.
|
||||||
|
|
||||||
|
With a non-GNU `make', it is safer to compile the package for one
|
||||||
|
architecture at a time in the source code directory. After you have
|
||||||
|
installed the package for one architecture, use `make distclean' before
|
||||||
|
reconfiguring for another architecture.
|
||||||
|
|
||||||
|
On MacOS X 10.5 and later systems, you can create libraries and
|
||||||
|
executables that work on multiple system types--known as "fat" or
|
||||||
|
"universal" binaries--by specifying multiple `-arch' options to the
|
||||||
|
compiler but only a single `-arch' option to the preprocessor. Like
|
||||||
|
this:
|
||||||
|
|
||||||
|
./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
|
||||||
|
CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
|
||||||
|
CPP="gcc -E" CXXCPP="g++ -E"
|
||||||
|
|
||||||
|
This is not guaranteed to produce working output in all cases, you
|
||||||
|
may have to build one architecture at a time and combine the results
|
||||||
|
using the `lipo' tool if you have problems.
|
||||||
|
|
||||||
|
Installation Names
|
||||||
|
==================
|
||||||
|
|
||||||
|
By default, `make install' installs the package's commands under
|
||||||
|
`/usr/local/bin', include files under `/usr/local/include', etc. You
|
||||||
|
can specify an installation prefix other than `/usr/local' by giving
|
||||||
|
`configure' the option `--prefix=PREFIX', where PREFIX must be an
|
||||||
|
absolute file name.
|
||||||
|
|
||||||
|
You can specify separate installation prefixes for
|
||||||
|
architecture-specific files and architecture-independent files. If you
|
||||||
|
pass the option `--exec-prefix=PREFIX' to `configure', the package uses
|
||||||
|
PREFIX as the prefix for installing programs and libraries.
|
||||||
|
Documentation and other data files still use the regular prefix.
|
||||||
|
|
||||||
|
In addition, if you use an unusual directory layout you can give
|
||||||
|
options like `--bindir=DIR' to specify different values for particular
|
||||||
|
kinds of files. Run `configure --help' for a list of the directories
|
||||||
|
you can set and what kinds of files go in them. In general, the
|
||||||
|
default for these options is expressed in terms of `${prefix}', so that
|
||||||
|
specifying just `--prefix' will affect all of the other directory
|
||||||
|
specifications that were not explicitly provided.
|
||||||
|
|
||||||
|
The most portable way to affect installation locations is to pass the
|
||||||
|
correct locations to `configure'; however, many packages provide one or
|
||||||
|
both of the following shortcuts of passing variable assignments to the
|
||||||
|
`make install' command line to change installation locations without
|
||||||
|
having to reconfigure or recompile.
|
||||||
|
|
||||||
|
The first method involves providing an override variable for each
|
||||||
|
affected directory. For example, `make install
|
||||||
|
prefix=/alternate/directory' will choose an alternate location for all
|
||||||
|
directory configuration variables that were expressed in terms of
|
||||||
|
`${prefix}'. Any directories that were specified during `configure',
|
||||||
|
but not in terms of `${prefix}', must each be overridden at install
|
||||||
|
time for the entire installation to be relocated. The approach of
|
||||||
|
makefile variable overrides for each directory variable is required by
|
||||||
|
the GNU Coding Standards, and ideally causes no recompilation.
|
||||||
|
However, some platforms have known limitations with the semantics of
|
||||||
|
shared libraries that end up requiring recompilation when using this
|
||||||
|
method, particularly noticeable in packages that use GNU Libtool.
|
||||||
|
|
||||||
|
The second method involves providing the `DESTDIR' variable. For
|
||||||
|
example, `make install DESTDIR=/alternate/directory' will prepend
|
||||||
|
`/alternate/directory' before all installation names. The approach of
|
||||||
|
`DESTDIR' overrides is not required by the GNU Coding Standards, and
|
||||||
|
does not work on platforms that have drive letters. On the other hand,
|
||||||
|
it does better at avoiding recompilation issues, and works well even
|
||||||
|
when some directory options were not specified in terms of `${prefix}'
|
||||||
|
at `configure' time.
|
||||||
|
|
||||||
|
Optional Features
|
||||||
|
=================
|
||||||
|
|
||||||
|
If the package supports it, you can cause programs to be installed
|
||||||
|
with an extra prefix or suffix on their names by giving `configure' the
|
||||||
|
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
|
||||||
|
|
||||||
|
Some packages pay attention to `--enable-FEATURE' options to
|
||||||
|
`configure', where FEATURE indicates an optional part of the package.
|
||||||
|
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
|
||||||
|
is something like `gnu-as' or `x' (for the X Window System). The
|
||||||
|
`README' should mention any `--enable-' and `--with-' options that the
|
||||||
|
package recognizes.
|
||||||
|
|
||||||
|
For packages that use the X Window System, `configure' can usually
|
||||||
|
find the X include and library files automatically, but if it doesn't,
|
||||||
|
you can use the `configure' options `--x-includes=DIR' and
|
||||||
|
`--x-libraries=DIR' to specify their locations.
|
||||||
|
|
||||||
|
Some packages offer the ability to configure how verbose the
|
||||||
|
execution of `make' will be. For these packages, running `./configure
|
||||||
|
--enable-silent-rules' sets the default to minimal output, which can be
|
||||||
|
overridden with `make V=1'; while running `./configure
|
||||||
|
--disable-silent-rules' sets the default to verbose, which can be
|
||||||
|
overridden with `make V=0'.
|
||||||
|
|
||||||
|
Particular systems
|
||||||
|
==================
|
||||||
|
|
||||||
|
On HP-UX, the default C compiler is not ANSI C compatible. If GNU
|
||||||
|
CC is not installed, it is recommended to use the following options in
|
||||||
|
order to use an ANSI C compiler:
|
||||||
|
|
||||||
|
./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
|
||||||
|
|
||||||
|
and if that doesn't work, install pre-built binaries of GCC for HP-UX.
|
||||||
|
|
||||||
|
HP-UX `make' updates targets which have the same time stamps as
|
||||||
|
their prerequisites, which makes it generally unusable when shipped
|
||||||
|
generated files such as `configure' are involved. Use GNU `make'
|
||||||
|
instead.
|
||||||
|
|
||||||
|
On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
|
||||||
|
parse its `<wchar.h>' header file. The option `-nodtk' can be used as
|
||||||
|
a workaround. If GNU CC is not installed, it is therefore recommended
|
||||||
|
to try
|
||||||
|
|
||||||
|
./configure CC="cc"
|
||||||
|
|
||||||
|
and if that doesn't work, try
|
||||||
|
|
||||||
|
./configure CC="cc -nodtk"
|
||||||
|
|
||||||
|
On Solaris, don't put `/usr/ucb' early in your `PATH'. This
|
||||||
|
directory contains several dysfunctional programs; working variants of
|
||||||
|
these programs are available in `/usr/bin'. So, if you need `/usr/ucb'
|
||||||
|
in your `PATH', put it _after_ `/usr/bin'.
|
||||||
|
|
||||||
|
On Haiku, software installed for all users goes in `/boot/common',
|
||||||
|
not `/usr/local'. It is recommended to use the following options:
|
||||||
|
|
||||||
|
./configure --prefix=/boot/common
|
||||||
|
|
||||||
|
Specifying the System Type
|
||||||
|
==========================
|
||||||
|
|
||||||
|
There may be some features `configure' cannot figure out
|
||||||
|
automatically, but needs to determine by the type of machine the package
|
||||||
|
will run on. Usually, assuming the package is built to be run on the
|
||||||
|
_same_ architectures, `configure' can figure that out, but if it prints
|
||||||
|
a message saying it cannot guess the machine type, give it the
|
||||||
|
`--build=TYPE' option. TYPE can either be a short name for the system
|
||||||
|
type, such as `sun4', or a canonical name which has the form:
|
||||||
|
|
||||||
|
CPU-COMPANY-SYSTEM
|
||||||
|
|
||||||
|
where SYSTEM can have one of these forms:
|
||||||
|
|
||||||
|
OS
|
||||||
|
KERNEL-OS
|
||||||
|
|
||||||
|
See the file `config.sub' for the possible values of each field. If
|
||||||
|
`config.sub' isn't included in this package, then this package doesn't
|
||||||
|
need to know the machine type.
|
||||||
|
|
||||||
|
If you are _building_ compiler tools for cross-compiling, you should
|
||||||
|
use the option `--target=TYPE' to select the type of system they will
|
||||||
|
produce code for.
|
||||||
|
|
||||||
|
If you want to _use_ a cross compiler, that generates code for a
|
||||||
|
platform different from the build platform, you should specify the
|
||||||
|
"host" platform (i.e., that on which the generated programs will
|
||||||
|
eventually be run) with `--host=TYPE'.
|
||||||
|
|
||||||
|
Sharing Defaults
|
||||||
|
================
|
||||||
|
|
||||||
|
If you want to set default values for `configure' scripts to share,
|
||||||
|
you can create a site shell script called `config.site' that gives
|
||||||
|
default values for variables like `CC', `cache_file', and `prefix'.
|
||||||
|
`configure' looks for `PREFIX/share/config.site' if it exists, then
|
||||||
|
`PREFIX/etc/config.site' if it exists. Or, you can set the
|
||||||
|
`CONFIG_SITE' environment variable to the location of the site script.
|
||||||
|
A warning: not all `configure' scripts look for a site script.
|
||||||
|
|
||||||
|
Defining Variables
|
||||||
|
==================
|
||||||
|
|
||||||
|
Variables not defined in a site shell script can be set in the
|
||||||
|
environment passed to `configure'. However, some packages may run
|
||||||
|
configure again during the build, and the customized values of these
|
||||||
|
variables may be lost. In order to avoid this problem, you should set
|
||||||
|
them in the `configure' command line, using `VAR=value'. For example:
|
||||||
|
|
||||||
|
./configure CC=/usr/local2/bin/gcc
|
||||||
|
|
||||||
|
causes the specified `gcc' to be used as the C compiler (unless it is
|
||||||
|
overridden in the site shell script).
|
||||||
|
|
||||||
|
Unfortunately, this technique does not work for `CONFIG_SHELL' due to
|
||||||
|
an Autoconf bug. Until the bug is fixed you can use this workaround:
|
||||||
|
|
||||||
|
CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
|
||||||
|
|
||||||
|
`configure' Invocation
|
||||||
|
======================
|
||||||
|
|
||||||
|
`configure' recognizes the following options to control how it
|
||||||
|
operates.
|
||||||
|
|
||||||
|
`--help'
|
||||||
|
`-h'
|
||||||
|
Print a summary of all of the options to `configure', and exit.
|
||||||
|
|
||||||
|
`--help=short'
|
||||||
|
`--help=recursive'
|
||||||
|
Print a summary of the options unique to this package's
|
||||||
|
`configure', and exit. The `short' variant lists options used
|
||||||
|
only in the top level, while the `recursive' variant lists options
|
||||||
|
also present in any nested packages.
|
||||||
|
|
||||||
|
`--version'
|
||||||
|
`-V'
|
||||||
|
Print the version of Autoconf used to generate the `configure'
|
||||||
|
script, and exit.
|
||||||
|
|
||||||
|
`--cache-file=FILE'
|
||||||
|
Enable the cache: use and save the results of the tests in FILE,
|
||||||
|
traditionally `config.cache'. FILE defaults to `/dev/null' to
|
||||||
|
disable caching.
|
||||||
|
|
||||||
|
`--config-cache'
|
||||||
|
`-C'
|
||||||
|
Alias for `--cache-file=config.cache'.
|
||||||
|
|
||||||
|
`--quiet'
|
||||||
|
`--silent'
|
||||||
|
`-q'
|
||||||
|
Do not print messages saying which checks are being made. To
|
||||||
|
suppress all normal output, redirect it to `/dev/null' (any error
|
||||||
|
messages will still be shown).
|
||||||
|
|
||||||
|
`--srcdir=DIR'
|
||||||
|
Look for the package's source code in directory DIR. Usually
|
||||||
|
`configure' can determine that directory automatically.
|
||||||
|
|
||||||
|
`--prefix=DIR'
|
||||||
|
Use DIR as the installation prefix. *note Installation Names::
|
||||||
|
for more details, including other options available for fine-tuning
|
||||||
|
the installation locations.
|
||||||
|
|
||||||
|
`--no-create'
|
||||||
|
`-n'
|
||||||
|
Run the configure checks, but stop before creating any output
|
||||||
|
files.
|
||||||
|
|
||||||
|
`configure' also accepts some other, not widely useful, options. Run
|
||||||
|
`configure --help' for more details.
|
||||||
|
|
@ -0,0 +1,219 @@
|
|||||||
|
#AUTOMAKE_OPTIONS = foreign
|
||||||
|
bin_PROGRAMS = goaccess
|
||||||
|
AUTOMAKE_OPTIONS = subdir-objects
|
||||||
|
|
||||||
|
dist_noinst_DATA = \
|
||||||
|
resources/tpls.html \
|
||||||
|
resources/css/app.css \
|
||||||
|
resources/css/bootstrap.min.css \
|
||||||
|
resources/css/fa.min.css \
|
||||||
|
resources/js/app.js \
|
||||||
|
resources/js/charts.js \
|
||||||
|
resources/js/d3.v3.min.js \
|
||||||
|
resources/js/hogan.min.js
|
||||||
|
|
||||||
|
noinst_PROGRAMS = bin2c
|
||||||
|
bin2c_SOURCES = src/bin2c.c
|
||||||
|
|
||||||
|
BUILT_SOURCES = \
|
||||||
|
tpls.h \
|
||||||
|
bootstrapcss.h \
|
||||||
|
facss.h \
|
||||||
|
appcss.h \
|
||||||
|
d3js.h \
|
||||||
|
hoganjs.h \
|
||||||
|
chartsjs.h \
|
||||||
|
appjs.h
|
||||||
|
|
||||||
|
CLEANFILES = \
|
||||||
|
src/tpls.h \
|
||||||
|
src/bootstrapcss.h \
|
||||||
|
src/facss.h \
|
||||||
|
src/appcss.h \
|
||||||
|
src/d3js.h \
|
||||||
|
src/hoganjs.h \
|
||||||
|
src/chartsjs.h \
|
||||||
|
src/appjs.h \
|
||||||
|
resources/tpls.html.tmp \
|
||||||
|
resources/css/bootstrap.min.css.tmp \
|
||||||
|
resources/css/fa.min.css.tmp \
|
||||||
|
resources/css/app.css.tmp \
|
||||||
|
resources/js/d3.v3.min.js.tmp \
|
||||||
|
resources/js/hogan.min.js.tmp \
|
||||||
|
resources/js/charts.js.tmp \
|
||||||
|
resources/js/app.js.tmp
|
||||||
|
|
||||||
|
# Tpls
|
||||||
|
tpls.h: bin2c$(EXEEXT) resources/tpls.html
|
||||||
|
if HAS_SEDTR
|
||||||
|
cat resources/tpls.html | sed "s/^[[:space:]]*//" | sed "/^$$/d" | tr -d "\r\n" > resources/tpls.html.tmp
|
||||||
|
./bin2c resources/tpls.html.tmp src/tpls.h tpls
|
||||||
|
else
|
||||||
|
./bin2c resources/tpls.html src/tpls.h tpls
|
||||||
|
endif
|
||||||
|
# Bootstrap
|
||||||
|
bootstrapcss.h: bin2c$(EXEEXT) resources/css/bootstrap.min.css
|
||||||
|
if HAS_SEDTR
|
||||||
|
cat resources/css/bootstrap.min.css | sed "s/^[[:space:]]*//" | sed "/^$$/d" | tr -d "\r\n" > resources/css/bootstrap.min.css.tmp
|
||||||
|
./bin2c resources/css/bootstrap.min.css.tmp src/bootstrapcss.h bootstrap_css
|
||||||
|
else
|
||||||
|
./bin2c resources/css/bootstrap.min.css src/bootstrapcss.h bootstrap_css
|
||||||
|
endif
|
||||||
|
# Font Awesome
|
||||||
|
facss.h: bin2c$(EXEEXT) resources/css/fa.min.css
|
||||||
|
if HAS_SEDTR
|
||||||
|
cat resources/css/fa.min.css | sed "s/^[[:space:]]*//" | sed "/^$$/d" | tr -d "\r\n" > resources/css/fa.min.css.tmp
|
||||||
|
./bin2c resources/css/fa.min.css.tmp src/facss.h fa_css
|
||||||
|
else
|
||||||
|
./bin2c resources/css/fa.min.css src/facss.h fa_css
|
||||||
|
endif
|
||||||
|
# App.css
|
||||||
|
appcss.h: bin2c$(EXEEXT) resources/css/app.css
|
||||||
|
if HAS_SEDTR
|
||||||
|
cat resources/css/app.css | sed "s/^[[:space:]]*//" | sed "/^$$/d" | tr -d "\r\n" > resources/css/app.css.tmp
|
||||||
|
./bin2c resources/css/app.css.tmp src/appcss.h app_css
|
||||||
|
else
|
||||||
|
./bin2c resources/css/app.css src/appcss.h app_css
|
||||||
|
endif
|
||||||
|
# D3.js
|
||||||
|
d3js.h: bin2c$(EXEEXT) resources/js/d3.v3.min.js
|
||||||
|
if HAS_SEDTR
|
||||||
|
cat resources/js/d3.v3.min.js | sed "s/^[[:space:]]*//" | sed "/^$$/d" | tr -d "\r\n" > resources/js/d3.v3.min.js.tmp
|
||||||
|
./bin2c resources/js/d3.v3.min.js.tmp src/d3js.h d3_js
|
||||||
|
else
|
||||||
|
./bin2c resources/js/d3.v3.min.js src/d3js.h d3_js
|
||||||
|
endif
|
||||||
|
# Hogan.js
|
||||||
|
hoganjs.h: bin2c$(EXEEXT) resources/js/hogan.min.js
|
||||||
|
if HAS_SEDTR
|
||||||
|
cat resources/js/hogan.min.js | sed "s/^[[:space:]]*//" | sed "/^$$/d" | tr -d "\r\n" > resources/js/hogan.min.js.tmp
|
||||||
|
./bin2c resources/js/hogan.min.js.tmp src/hoganjs.h hogan_js
|
||||||
|
else
|
||||||
|
./bin2c resources/js/hogan.min.js src/hoganjs.h hogan_js
|
||||||
|
endif
|
||||||
|
# Charts.js
|
||||||
|
chartsjs.h: bin2c$(EXEEXT) resources/js/charts.js
|
||||||
|
if HAS_SEDTR
|
||||||
|
cat resources/js/charts.js | sed -E "s@(,|;)[[:space:]]*//..*@\1@g" | sed -E "s@^[[:space:]]*//..*@@g" | sed "s/^[[:space:]]*//" | sed "/^$$/d" | tr -d "\r\n" > resources/js/charts.js.tmp
|
||||||
|
./bin2c resources/js/charts.js.tmp src/chartsjs.h charts_js
|
||||||
|
else
|
||||||
|
./bin2c resources/js/charts.js src/chartsjs.h charts_js
|
||||||
|
endif
|
||||||
|
# App.js
|
||||||
|
appjs.h: bin2c$(EXEEXT) resources/js/app.js
|
||||||
|
if HAS_SEDTR
|
||||||
|
cat resources/js/app.js | sed -E "s@(,|;)[[:space:]]*//..*@\1@g" | sed -E "s@^[[:space:]]*//..*@@g" | sed "s/^[[:space:]]*//" | sed "/^$$/d" | tr -d "\r\n" > resources/js/app.js.tmp
|
||||||
|
./bin2c resources/js/app.js.tmp src/appjs.h app_js
|
||||||
|
else
|
||||||
|
./bin2c resources/js/app.js src/appjs.h app_js
|
||||||
|
endif
|
||||||
|
|
||||||
|
confdir = $(sysconfdir)/goaccess
|
||||||
|
dist_conf_DATA = config/goaccess.conf
|
||||||
|
dist_conf_DATA += config/browsers.list
|
||||||
|
|
||||||
|
goaccess_SOURCES = \
|
||||||
|
src/base64.c \
|
||||||
|
src/base64.h \
|
||||||
|
src/browsers.c \
|
||||||
|
src/browsers.h \
|
||||||
|
src/color.c \
|
||||||
|
src/color.h \
|
||||||
|
src/commons.c \
|
||||||
|
src/commons.h \
|
||||||
|
src/csv.c \
|
||||||
|
src/csv.h \
|
||||||
|
src/error.c \
|
||||||
|
src/error.h \
|
||||||
|
src/gdashboard.c \
|
||||||
|
src/gdashboard.h \
|
||||||
|
src/gdns.c \
|
||||||
|
src/gdns.h \
|
||||||
|
src/gholder.c \
|
||||||
|
src/gholder.h \
|
||||||
|
src/gmenu.c \
|
||||||
|
src/gmenu.h \
|
||||||
|
src/goaccess.c \
|
||||||
|
src/goaccess.h \
|
||||||
|
src/gslist.c \
|
||||||
|
src/gslist.h \
|
||||||
|
src/gstorage.c \
|
||||||
|
src/gstorage.h \
|
||||||
|
src/gwsocket.c \
|
||||||
|
src/gwsocket.h \
|
||||||
|
src/json.c \
|
||||||
|
src/json.h \
|
||||||
|
src/labels.h \
|
||||||
|
src/opesys.c \
|
||||||
|
src/opesys.h \
|
||||||
|
src/options.c \
|
||||||
|
src/options.h \
|
||||||
|
src/output.c \
|
||||||
|
src/output.h \
|
||||||
|
src/parser.c \
|
||||||
|
src/parser.h \
|
||||||
|
src/settings.c \
|
||||||
|
src/settings.h \
|
||||||
|
src/sha1.c \
|
||||||
|
src/sha1.h \
|
||||||
|
src/sort.c \
|
||||||
|
src/sort.h \
|
||||||
|
src/ui.c \
|
||||||
|
src/ui.h \
|
||||||
|
src/util.c \
|
||||||
|
src/util.h \
|
||||||
|
src/websocket.c \
|
||||||
|
src/websocket.h \
|
||||||
|
src/xmalloc.c \
|
||||||
|
src/xmalloc.h
|
||||||
|
|
||||||
|
if TCB
|
||||||
|
goaccess_SOURCES += \
|
||||||
|
src/tcabdb.c \
|
||||||
|
src/tcabdb.h \
|
||||||
|
src/tcbtdb.c \
|
||||||
|
src/tcbtdb.h
|
||||||
|
else
|
||||||
|
goaccess_SOURCES += \
|
||||||
|
src/khash.h \
|
||||||
|
src/gkhash.c \
|
||||||
|
src/gkhash.h
|
||||||
|
endif
|
||||||
|
|
||||||
|
if GEOIP_LEGACY
|
||||||
|
goaccess_SOURCES += \
|
||||||
|
src/geoip1.c \
|
||||||
|
src/geoip1.h
|
||||||
|
endif
|
||||||
|
|
||||||
|
if GEOIP_MMDB
|
||||||
|
goaccess_SOURCES += \
|
||||||
|
src/geoip2.c \
|
||||||
|
src/geoip1.h
|
||||||
|
endif
|
||||||
|
|
||||||
|
if DEBUG
|
||||||
|
AM_CFLAGS = -DDEBUG -O0 -g -DSYSCONFDIR=\"$(sysconfdir)\"
|
||||||
|
else
|
||||||
|
AM_CFLAGS = -O2 -DSYSCONFDIR=\"$(sysconfdir)\"
|
||||||
|
endif
|
||||||
|
|
||||||
|
if WITH_RDYNAMIC
|
||||||
|
AM_LDFLAGS = -rdynamic
|
||||||
|
endif
|
||||||
|
|
||||||
|
AM_CFLAGS += -Wno-long-long -Wall -W -Wnested-externs -Wformat=2
|
||||||
|
AM_CFLAGS += -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations
|
||||||
|
AM_CFLAGS += -Wwrite-strings -Wshadow -Wpointer-arith -Wsign-compare
|
||||||
|
AM_CFLAGS += -Wbad-function-cast -Winline -Wcast-align -Wextra
|
||||||
|
AM_CFLAGS += -Wdeclaration-after-statement -Wno-missing-field-initializers
|
||||||
|
|
||||||
|
dist_man_MANS = goaccess.1
|
||||||
|
|
||||||
|
SUBDIRS = po
|
||||||
|
|
||||||
|
ACLOCAL_AMFLAGS = -I m4
|
||||||
|
|
||||||
|
DEFS = -DLOCALEDIR=\"$(localedir)\" @DEFS@
|
||||||
|
|
||||||
|
EXTRA_DIST = config.rpath
|
@ -0,0 +1,80 @@
|
|||||||
|
Copyright (C) 2009-2018
|
||||||
|
Gerardo Orellana <goaccess@prosoftcorp.com>
|
||||||
|
|
||||||
|
* Version history:
|
||||||
|
- 1.3 [Friday, November 23, 2018]
|
||||||
|
. GoAccess 1.3 Released. See ChangeLog for new features/bug-fixes.
|
||||||
|
- 1.2 [Tuesday, March 07, 2017]
|
||||||
|
. GoAccess 1.2 Released. See ChangeLog for new features/bug-fixes.
|
||||||
|
- 1.1.1 [Wednesday, November 23, 2016]
|
||||||
|
. GoAccess 1.1.1 Released. See ChangeLog for new features/bug-fixes.
|
||||||
|
- 1.1 [Tuesday, November 08, 2016]
|
||||||
|
. GoAccess 1.1 Released. See ChangeLog for new features/bug-fixes.
|
||||||
|
- 1.0.2 [Tuesday, July 05, 2016]
|
||||||
|
. GoAccess 1.0.2 Released. See ChangeLog for new features/bug-fixes.
|
||||||
|
- 1.0.1 [Friday, June 17, 2016]
|
||||||
|
. GoAccess 1.0.1 Released. See ChangeLog for new features/bug-fixes.
|
||||||
|
- 1.0 [Thursday, June 09, 2016]
|
||||||
|
. GoAccess 1.0 Released. See ChangeLog for new features/bug-fixes.
|
||||||
|
- 0.9.8 [Monday, February 29, 2016]
|
||||||
|
. GoAccess 0.9.8 Released. See ChangeLog for new features/bug-fixes.
|
||||||
|
- 0.9.7 [Monday, December 21, 2015]
|
||||||
|
. GoAccess 0.9.7 Released. See ChangeLog for new features/bug-fixes.
|
||||||
|
- 0.9.6 [Tuesday, October 27, 2015]
|
||||||
|
. GoAccess 0.9.6 Released. See ChangeLog for new features/bug-fixes.
|
||||||
|
- 0.9.5 [Thursday, October 22, 2015]
|
||||||
|
. GoAccess 0.9.5 Released. See ChangeLog for new features/bug-fixes.
|
||||||
|
- 0.9.4 [Tuesday, September 08 , 2015]
|
||||||
|
. GoAccess 0.9.4 Released. See ChangeLog for new features/bug-fixes.
|
||||||
|
- 0.9.3 [Wednesday, August 28, 2015]
|
||||||
|
. GoAccess 0.9.3 Released. See ChangeLog for new features/bug-fixes.
|
||||||
|
- 0.9.2 [Monday, July 06, 2015]
|
||||||
|
. GoAccess 0.9.2 Released. See ChangeLog for new features/bug-fixes.
|
||||||
|
- 0.9.1 [Tuesday, May 26, 2015]
|
||||||
|
. GoAccess 0.9.1 Released. See ChangeLog for new features/bug-fixes.
|
||||||
|
- 0.9 [Thursday, March 19, 2015]
|
||||||
|
. GoAccess 0.9 Released. See ChangeLog for new features/bug-fixes.
|
||||||
|
- 0.8.5 [Sunday, September 14, 2014]
|
||||||
|
. GoAccess 0.8.5 Released. See ChangeLog for new features/bug-fixes.
|
||||||
|
- 0.8.4 [Monday, September 08, 2014]
|
||||||
|
. GoAccess 0.8.4 Released. See ChangeLog for new features/bug-fixes.
|
||||||
|
- 0.8.3 [Monday, July 28, 2014]
|
||||||
|
. GoAccess 0.8.3 Released. See ChangeLog for new features/bug-fixes.
|
||||||
|
- 0.8.2 [Monday, July 21, 2014]
|
||||||
|
. GoAccess 0.8.2 Released. See ChangeLog for new features/bug-fixes.
|
||||||
|
- 0.8.1 [Monday, June 16, 2014]
|
||||||
|
. GoAccess 0.8.1 Released. See ChangeLog for new features/bug-fixes.
|
||||||
|
- 0.8 [Monday, May 20, 2013]
|
||||||
|
. GoAccess 0.8 Released. See ChangeLog for new features/bug-fixes.
|
||||||
|
- 0.7.1 [Monday, February 17, 2014]
|
||||||
|
. GoAccess 0.7.1 Released. See ChangeLog for new features/bug-fixes.
|
||||||
|
- 0.7 [Monday, December 16, 2013]
|
||||||
|
. GoAccess 0.7 Released. See ChangeLog for new features/bug-fixes.
|
||||||
|
- 0.6.1 [Monday, October 07, 2013]
|
||||||
|
. GoAccess 0.6.1 Released. See ChangeLog for new features/bug-fixes.
|
||||||
|
- 0.6 [Monday, July 15, 2013]
|
||||||
|
. GoAccess 0.6 Released. See ChangeLog for new features/bug-fixes.
|
||||||
|
- 0.5 [Monday, June 04, 2012]
|
||||||
|
. GoAccess 0.5 Released. See ChangeLog for new features/bug-fixes.
|
||||||
|
- 0.4.2 [Monday, January 03, 2011]
|
||||||
|
. GoAccess 0.4.2 Released. See ChangeLog for new features/bug-fixes.
|
||||||
|
- 0.4.1 [Monday, December 13, 2010]
|
||||||
|
. GoAccess 0.4.1 Released. See ChangeLog for new features/bug-fixes.
|
||||||
|
- 0.4 [Tuesday, November 30, 2010]
|
||||||
|
. GoAccess 0.4 Released. See ChangeLog for new features/bug-fixes.
|
||||||
|
- 0.3.3 [Monday, September 27, 2010]
|
||||||
|
. GoAccess 0.3.3 Released. See ChangeLog for new features/bug-fixes.
|
||||||
|
- 0.3.2 [Thursday, September 09 2010]
|
||||||
|
. GoAccess 0.3.2 Released. See ChangeLog for new features/bug-fixes.
|
||||||
|
- 0.3.1 [Friday, September 03, 2010]
|
||||||
|
. GoAccess 0.3.1 Released. See ChangeLog for new features/bug-fixes.
|
||||||
|
- 0.3 [Sunday, August 29, 2010]
|
||||||
|
. GoAccess 0.3 Released. See ChangeLog for new features/bug-fixes.
|
||||||
|
- 0.2 [Sunday, July 25, 2010]
|
||||||
|
. GoAccess 0.2 Released. See ChangeLog for new features/bug-fixes.
|
||||||
|
- 0.1.2 [Tuesday, July 13, 2010]
|
||||||
|
. GoAccess 0.1.2 Released. See ChangeLog for new features/bug-fixes.
|
||||||
|
- 0.1.1 [Saturday, July 10, 2010]
|
||||||
|
. GoAccess 0.1.1 Released. See ChangeLog for new features/bug-fixes.
|
||||||
|
- 0.1 [Wednesday, July 07, 2010]
|
||||||
|
. Welcome to the GoAccess 0.1 Released.
|
@ -0,0 +1,100 @@
|
|||||||
|
What is it?
|
||||||
|
-------------
|
||||||
|
GoAccess is an open source real-time web log analyzer and interactive viewer
|
||||||
|
that runs in a terminal in *nix systems or through your browser.
|
||||||
|
|
||||||
|
It provides fast and valuable HTTP statistics for system administrators that
|
||||||
|
require a visual server report on the fly.
|
||||||
|
|
||||||
|
Features
|
||||||
|
-------------------------------
|
||||||
|
GoAccess parses the specified web log file and
|
||||||
|
outputs the data to the X terminal. Features include:
|
||||||
|
|
||||||
|
* Completely Real Time
|
||||||
|
All panels and metrics are timed to be updated every 200 ms on the terminal
|
||||||
|
output and every second on the HTML output.
|
||||||
|
|
||||||
|
* No configuration needed
|
||||||
|
You can just run it against your access log file, pick the log format and
|
||||||
|
let GoAccess parse the access log and show you the stats.
|
||||||
|
|
||||||
|
* Track Application Response Time
|
||||||
|
Track the time taken to serve the request. Extremely useful if you want to
|
||||||
|
track pages that are slowing down your site.
|
||||||
|
|
||||||
|
* Nearly All Web Log Formats
|
||||||
|
GoAccess allows any custom log format string. Predefined options include,
|
||||||
|
Apache, Nginx, Amazon S3, Elastic Load Balancing, CloudFront, etc
|
||||||
|
|
||||||
|
* Incremental Log Processing
|
||||||
|
Need data persistence? GoAccess has the ability to process logs incrementally
|
||||||
|
through the on-disk B+Tree database.
|
||||||
|
|
||||||
|
* Only one dependency
|
||||||
|
GoAccess is written in C. To run it, you only need ncurses as a dependency.
|
||||||
|
That's it. It even has its own Web Socket server - http://gwsocket.io/.
|
||||||
|
|
||||||
|
* Visitors
|
||||||
|
Determine the amount of hits, visitors, bandwidth, and metrics for slowest
|
||||||
|
running requests by the hour, or date.
|
||||||
|
|
||||||
|
* Metrics per Virtual Host
|
||||||
|
Have multiple Virtual Hosts (Server Blocks)? A panel that displays which
|
||||||
|
virtual host is consuming most of the web server resources.
|
||||||
|
|
||||||
|
* Color Scheme Customizable
|
||||||
|
Tailor GoAccess to suit your own color taste/schemes. Either through the
|
||||||
|
terminal, or by simply updating the stylesheet on the HTML output.
|
||||||
|
|
||||||
|
* Support for large datasets
|
||||||
|
GoAccess features an on-disk B+Tree storage for large datasets where it is not
|
||||||
|
possible to fit everything in memory.
|
||||||
|
|
||||||
|
* Docker support
|
||||||
|
GoAccess comes with a default Docker (https://hub.docker.com/r/allinurl/goaccess/)
|
||||||
|
that will listen for HTTP connections on port 7890. Although, you can still
|
||||||
|
fully configure it, by using Volume mapping and editing goaccess.conf.
|
||||||
|
|
||||||
|
* and more... visit https://goaccess.io for more details.
|
||||||
|
|
||||||
|
|
||||||
|
Why GoAccess?
|
||||||
|
-------------
|
||||||
|
GoAccess was designed to be a fast, terminal-based log analyzer. Its core idea
|
||||||
|
is to quickly analyze and view web server statistics in real time without
|
||||||
|
needing to use your browser (great if you want to do a quick analysis of your
|
||||||
|
access log via SSH, or if you simply love working in the terminal).
|
||||||
|
|
||||||
|
While the terminal output is the default output, it has the capability to
|
||||||
|
generate a complete real-time HTML report, as well as a JSON, and CSV report.
|
||||||
|
|
||||||
|
You can see it more of a monitor command tool than anything else.
|
||||||
|
|
||||||
|
Keys
|
||||||
|
----
|
||||||
|
The user can make use of the following keys:
|
||||||
|
|
||||||
|
* ^F1^ or ^h^ Main help,
|
||||||
|
* ^F5^ Redraw [main window],
|
||||||
|
* ^q^ Quit the program, current window or module,
|
||||||
|
* ^o^ or ^ENTER^ Expand selected module,
|
||||||
|
* ^[Shift]0-9^ Set selected module to active,
|
||||||
|
* ^Up^ arrow Scroll up main dashboard,
|
||||||
|
* ^Down^ arrow Scroll down main dashboard,
|
||||||
|
* ^j^ Scroll down within expanded module,
|
||||||
|
* ^k^ Scroll up within expanded module,
|
||||||
|
* ^c^ Set or change scheme color,
|
||||||
|
* ^CTRL^ + ^f^ Scroll forward one screen within,
|
||||||
|
* active module,
|
||||||
|
* ^CTRL^ + ^b^ Scroll backward one screen within,
|
||||||
|
* active module,
|
||||||
|
* ^TAB^ Iterate modules (forward),
|
||||||
|
* ^SHIFT^ + ^TAB^ Iterate modules (backward),
|
||||||
|
* ^s^ Sort options for current module,
|
||||||
|
* ^/^ Search across all modules,
|
||||||
|
* ^n^ Find position of the next occurrence,
|
||||||
|
* ^g^ Move to the first item or top of screen,
|
||||||
|
* ^G^ Move to the last item or bottom of screen,
|
||||||
|
|
||||||
|
Examples can be found by running `man goaccess`.
|
@ -0,0 +1,10 @@
|
|||||||
|
1Copyright (C) 2009-2018
|
||||||
|
6erardo Orellana <goaccess@prosoftcorp.com>
|
||||||
|
|
||||||
|
For a more comprehensive list of to-do items, please refer to the GitHub site.
|
||||||
|
https://github.com/allinurl/goaccess/issues
|
||||||
|
|
||||||
|
or visit http://goaccess.io/faq#todo
|
||||||
|
|
||||||
|
If you are interested in working on any of the items listed in there, email
|
||||||
|
goaccess@prosoftcorp.com or better, open a new issue:
|
@ -0,0 +1,343 @@
|
|||||||
|
#! /bin/sh
|
||||||
|
# Wrapper for compilers which do not understand '-c -o'.
|
||||||
|
|
||||||
|
scriptversion=2012-03-05.13; # UTC
|
||||||
|
|
||||||
|
# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2009, 2010, 2012 Free
|
||||||
|
# Software Foundation, Inc.
|
||||||
|
# Written by Tom Tromey <tromey@cygnus.com>.
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; either version 2, or (at your option)
|
||||||
|
# any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
# As a special exception to the GNU General Public License, if you
|
||||||
|
# distribute this file as part of a program that contains a
|
||||||
|
# configuration script generated by Autoconf, you may include it under
|
||||||
|
# the same distribution terms that you use for the rest of that program.
|
||||||
|
|
||||||
|
# This file is maintained in Automake, please report
|
||||||
|
# bugs to <bug-automake@gnu.org> or send patches to
|
||||||
|
# <automake-patches@gnu.org>.
|
||||||
|
|
||||||
|
nl='
|
||||||
|
'
|
||||||
|
|
||||||
|
# We need space, tab and new line, in precisely that order. Quoting is
|
||||||
|
# there to prevent tools from complaining about whitespace usage.
|
||||||
|
IFS=" "" $nl"
|
||||||
|
|
||||||
|
file_conv=
|
||||||
|
|
||||||
|
# func_file_conv build_file lazy
|
||||||
|
# Convert a $build file to $host form and store it in $file
|
||||||
|
# Currently only supports Windows hosts. If the determined conversion
|
||||||
|
# type is listed in (the comma separated) LAZY, no conversion will
|
||||||
|
# take place.
|
||||||
|
func_file_conv ()
|
||||||
|
{
|
||||||
|
file=$1
|
||||||
|
case $file in
|
||||||
|
/ | /[!/]*) # absolute file, and not a UNC file
|
||||||
|
if test -z "$file_conv"; then
|
||||||
|
# lazily determine how to convert abs files
|
||||||
|
case `uname -s` in
|
||||||
|
MINGW*)
|
||||||
|
file_conv=mingw
|
||||||
|
;;
|
||||||
|
CYGWIN*)
|
||||||
|
file_conv=cygwin
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
file_conv=wine
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
case $file_conv/,$2, in
|
||||||
|
*,$file_conv,*)
|
||||||
|
;;
|
||||||
|
mingw/*)
|
||||||
|
file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
|
||||||
|
;;
|
||||||
|
cygwin/*)
|
||||||
|
file=`cygpath -m "$file" || echo "$file"`
|
||||||
|
;;
|
||||||
|
wine/*)
|
||||||
|
file=`winepath -w "$file" || echo "$file"`
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
# func_cl_dashL linkdir
|
||||||
|
# Make cl look for libraries in LINKDIR
|
||||||
|
func_cl_dashL ()
|
||||||
|
{
|
||||||
|
func_file_conv "$1"
|
||||||
|
if test -z "$lib_path"; then
|
||||||
|
lib_path=$file
|
||||||
|
else
|
||||||
|
lib_path="$lib_path;$file"
|
||||||
|
fi
|
||||||
|
linker_opts="$linker_opts -LIBPATH:$file"
|
||||||
|
}
|
||||||
|
|
||||||
|
# func_cl_dashl library
|
||||||
|
# Do a library search-path lookup for cl
|
||||||
|
func_cl_dashl ()
|
||||||
|
{
|
||||||
|
lib=$1
|
||||||
|
found=no
|
||||||
|
save_IFS=$IFS
|
||||||
|
IFS=';'
|
||||||
|
for dir in $lib_path $LIB
|
||||||
|
do
|
||||||
|
IFS=$save_IFS
|
||||||
|
if $shared && test -f "$dir/$lib.dll.lib"; then
|
||||||
|
found=yes
|
||||||
|
lib=$dir/$lib.dll.lib
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
if test -f "$dir/$lib.lib"; then
|
||||||
|
found=yes
|
||||||
|
lib=$dir/$lib.lib
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
IFS=$save_IFS
|
||||||
|
|
||||||
|
if test "$found" != yes; then
|
||||||
|
lib=$lib.lib
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# func_cl_wrapper cl arg...
|
||||||
|
# Adjust compile command to suit cl
|
||||||
|
func_cl_wrapper ()
|
||||||
|
{
|
||||||
|
# Assume a capable shell
|
||||||
|
lib_path=
|
||||||
|
shared=:
|
||||||
|
linker_opts=
|
||||||
|
for arg
|
||||||
|
do
|
||||||
|
if test -n "$eat"; then
|
||||||
|
eat=
|
||||||
|
else
|
||||||
|
case $1 in
|
||||||
|
-o)
|
||||||
|
# configure might choose to run compile as 'compile cc -o foo foo.c'.
|
||||||
|
eat=1
|
||||||
|
case $2 in
|
||||||
|
*.o | *.[oO][bB][jJ])
|
||||||
|
func_file_conv "$2"
|
||||||
|
set x "$@" -Fo"$file"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
func_file_conv "$2"
|
||||||
|
set x "$@" -Fe"$file"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
-I)
|
||||||
|
eat=1
|
||||||
|
func_file_conv "$2" mingw
|
||||||
|
set x "$@" -I"$file"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-I*)
|
||||||
|
func_file_conv "${1#-I}" mingw
|
||||||
|
set x "$@" -I"$file"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-l)
|
||||||
|
eat=1
|
||||||
|
func_cl_dashl "$2"
|
||||||
|
set x "$@" "$lib"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-l*)
|
||||||
|
func_cl_dashl "${1#-l}"
|
||||||
|
set x "$@" "$lib"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-L)
|
||||||
|
eat=1
|
||||||
|
func_cl_dashL "$2"
|
||||||
|
;;
|
||||||
|
-L*)
|
||||||
|
func_cl_dashL "${1#-L}"
|
||||||
|
;;
|
||||||
|
-static)
|
||||||
|
shared=false
|
||||||
|
;;
|
||||||
|
-Wl,*)
|
||||||
|
arg=${1#-Wl,}
|
||||||
|
save_ifs="$IFS"; IFS=','
|
||||||
|
for flag in $arg; do
|
||||||
|
IFS="$save_ifs"
|
||||||
|
linker_opts="$linker_opts $flag"
|
||||||
|
done
|
||||||
|
IFS="$save_ifs"
|
||||||
|
;;
|
||||||
|
-Xlinker)
|
||||||
|
eat=1
|
||||||
|
linker_opts="$linker_opts $2"
|
||||||
|
;;
|
||||||
|
-*)
|
||||||
|
set x "$@" "$1"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
|
||||||
|
func_file_conv "$1"
|
||||||
|
set x "$@" -Tp"$file"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
|
||||||
|
func_file_conv "$1" mingw
|
||||||
|
set x "$@" "$file"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
set x "$@" "$1"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
if test -n "$linker_opts"; then
|
||||||
|
linker_opts="-link$linker_opts"
|
||||||
|
fi
|
||||||
|
exec "$@" $linker_opts
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
eat=
|
||||||
|
|
||||||
|
case $1 in
|
||||||
|
'')
|
||||||
|
echo "$0: No command. Try '$0 --help' for more information." 1>&2
|
||||||
|
exit 1;
|
||||||
|
;;
|
||||||
|
-h | --h*)
|
||||||
|
cat <<\EOF
|
||||||
|
Usage: compile [--help] [--version] PROGRAM [ARGS]
|
||||||
|
|
||||||
|
Wrapper for compilers which do not understand '-c -o'.
|
||||||
|
Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
|
||||||
|
arguments, and rename the output as expected.
|
||||||
|
|
||||||
|
If you are trying to build a whole package this is not the
|
||||||
|
right script to run: please start by reading the file 'INSTALL'.
|
||||||
|
|
||||||
|
Report bugs to <bug-automake@gnu.org>.
|
||||||
|
EOF
|
||||||
|
exit $?
|
||||||
|
;;
|
||||||
|
-v | --v*)
|
||||||
|
echo "compile $scriptversion"
|
||||||
|
exit $?
|
||||||
|
;;
|
||||||
|
cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
|
||||||
|
func_cl_wrapper "$@" # Doesn't return...
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
ofile=
|
||||||
|
cfile=
|
||||||
|
|
||||||
|
for arg
|
||||||
|
do
|
||||||
|
if test -n "$eat"; then
|
||||||
|
eat=
|
||||||
|
else
|
||||||
|
case $1 in
|
||||||
|
-o)
|
||||||
|
# configure might choose to run compile as 'compile cc -o foo foo.c'.
|
||||||
|
# So we strip '-o arg' only if arg is an object.
|
||||||
|
eat=1
|
||||||
|
case $2 in
|
||||||
|
*.o | *.obj)
|
||||||
|
ofile=$2
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
set x "$@" -o "$2"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
*.c)
|
||||||
|
cfile=$1
|
||||||
|
set x "$@" "$1"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
set x "$@" "$1"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
|
if test -z "$ofile" || test -z "$cfile"; then
|
||||||
|
# If no '-o' option was seen then we might have been invoked from a
|
||||||
|
# pattern rule where we don't need one. That is ok -- this is a
|
||||||
|
# normal compilation that the losing compiler can handle. If no
|
||||||
|
# '.c' file was seen then we are probably linking. That is also
|
||||||
|
# ok.
|
||||||
|
exec "$@"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Name of file we expect compiler to create.
|
||||||
|
cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
|
||||||
|
|
||||||
|
# Create the lock directory.
|
||||||
|
# Note: use '[/\\:.-]' here to ensure that we don't use the same name
|
||||||
|
# that we are using for the .o file. Also, base the name on the expected
|
||||||
|
# object file name, since that is what matters with a parallel build.
|
||||||
|
lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
|
||||||
|
while true; do
|
||||||
|
if mkdir "$lockdir" >/dev/null 2>&1; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
# FIXME: race condition here if user kills between mkdir and trap.
|
||||||
|
trap "rmdir '$lockdir'; exit 1" 1 2 15
|
||||||
|
|
||||||
|
# Run the compile.
|
||||||
|
"$@"
|
||||||
|
ret=$?
|
||||||
|
|
||||||
|
if test -f "$cofile"; then
|
||||||
|
test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
|
||||||
|
elif test -f "${cofile}bj"; then
|
||||||
|
test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
|
||||||
|
fi
|
||||||
|
|
||||||
|
rmdir "$lockdir"
|
||||||
|
exit $ret
|
||||||
|
|
||||||
|
# Local Variables:
|
||||||
|
# mode: shell-script
|
||||||
|
# sh-indentation: 2
|
||||||
|
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||||
|
# time-stamp-start: "scriptversion="
|
||||||
|
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||||
|
# time-stamp-time-zone: "UTC"
|
||||||
|
# time-stamp-end: "; # UTC"
|
||||||
|
# End:
|
@ -0,0 +1,672 @@
|
|||||||
|
#! /bin/sh
|
||||||
|
# Output a system dependent set of variables, describing how to set the
|
||||||
|
# run time search path of shared libraries in an executable.
|
||||||
|
#
|
||||||
|
# Copyright 1996-2010 Free Software Foundation, Inc.
|
||||||
|
# Taken from GNU libtool, 2001
|
||||||
|
# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
|
||||||
|
#
|
||||||
|
# This file is free software; the Free Software Foundation gives
|
||||||
|
# unlimited permission to copy and/or distribute it, with or without
|
||||||
|
# modifications, as long as this notice is preserved.
|
||||||
|
#
|
||||||
|
# The first argument passed to this file is the canonical host specification,
|
||||||
|
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
|
||||||
|
# or
|
||||||
|
# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
|
||||||
|
# The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld
|
||||||
|
# should be set by the caller.
|
||||||
|
#
|
||||||
|
# The set of defined variables is at the end of this script.
|
||||||
|
|
||||||
|
# Known limitations:
|
||||||
|
# - On IRIX 6.5 with CC="cc", the run time search patch must not be longer
|
||||||
|
# than 256 bytes, otherwise the compiler driver will dump core. The only
|
||||||
|
# known workaround is to choose shorter directory names for the build
|
||||||
|
# directory and/or the installation directory.
|
||||||
|
|
||||||
|
# All known linkers require a `.a' archive for static linking (except MSVC,
|
||||||
|
# which needs '.lib').
|
||||||
|
libext=a
|
||||||
|
shrext=.so
|
||||||
|
|
||||||
|
host="$1"
|
||||||
|
host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
|
||||||
|
host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
|
||||||
|
host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
|
||||||
|
|
||||||
|
# Code taken from libtool.m4's _LT_CC_BASENAME.
|
||||||
|
|
||||||
|
for cc_temp in $CC""; do
|
||||||
|
case $cc_temp in
|
||||||
|
compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
|
||||||
|
distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
|
||||||
|
\-*) ;;
|
||||||
|
*) break;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'`
|
||||||
|
|
||||||
|
# Code taken from libtool.m4's _LT_COMPILER_PIC.
|
||||||
|
|
||||||
|
wl=
|
||||||
|
if test "$GCC" = yes; then
|
||||||
|
wl='-Wl,'
|
||||||
|
else
|
||||||
|
case "$host_os" in
|
||||||
|
aix*)
|
||||||
|
wl='-Wl,'
|
||||||
|
;;
|
||||||
|
darwin*)
|
||||||
|
case $cc_basename in
|
||||||
|
xlc*)
|
||||||
|
wl='-Wl,'
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
mingw* | cygwin* | pw32* | os2* | cegcc*)
|
||||||
|
;;
|
||||||
|
hpux9* | hpux10* | hpux11*)
|
||||||
|
wl='-Wl,'
|
||||||
|
;;
|
||||||
|
irix5* | irix6* | nonstopux*)
|
||||||
|
wl='-Wl,'
|
||||||
|
;;
|
||||||
|
newsos6)
|
||||||
|
;;
|
||||||
|
linux* | k*bsd*-gnu)
|
||||||
|
case $cc_basename in
|
||||||
|
ecc*)
|
||||||
|
wl='-Wl,'
|
||||||
|
;;
|
||||||
|
icc* | ifort*)
|
||||||
|
wl='-Wl,'
|
||||||
|
;;
|
||||||
|
lf95*)
|
||||||
|
wl='-Wl,'
|
||||||
|
;;
|
||||||
|
pgcc | pgf77 | pgf90)
|
||||||
|
wl='-Wl,'
|
||||||
|
;;
|
||||||
|
ccc*)
|
||||||
|
wl='-Wl,'
|
||||||
|
;;
|
||||||
|
como)
|
||||||
|
wl='-lopt='
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
case `$CC -V 2>&1 | sed 5q` in
|
||||||
|
*Sun\ C*)
|
||||||
|
wl='-Wl,'
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
osf3* | osf4* | osf5*)
|
||||||
|
wl='-Wl,'
|
||||||
|
;;
|
||||||
|
rdos*)
|
||||||
|
;;
|
||||||
|
solaris*)
|
||||||
|
wl='-Wl,'
|
||||||
|
;;
|
||||||
|
sunos4*)
|
||||||
|
wl='-Qoption ld '
|
||||||
|
;;
|
||||||
|
sysv4 | sysv4.2uw2* | sysv4.3*)
|
||||||
|
wl='-Wl,'
|
||||||
|
;;
|
||||||
|
sysv4*MP*)
|
||||||
|
;;
|
||||||
|
sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
|
||||||
|
wl='-Wl,'
|
||||||
|
;;
|
||||||
|
unicos*)
|
||||||
|
wl='-Wl,'
|
||||||
|
;;
|
||||||
|
uts4*)
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Code taken from libtool.m4's _LT_LINKER_SHLIBS.
|
||||||
|
|
||||||
|
hardcode_libdir_flag_spec=
|
||||||
|
hardcode_libdir_separator=
|
||||||
|
hardcode_direct=no
|
||||||
|
hardcode_minus_L=no
|
||||||
|
|
||||||
|
case "$host_os" in
|
||||||
|
cygwin* | mingw* | pw32* | cegcc*)
|
||||||
|
# FIXME: the MSVC++ port hasn't been tested in a loooong time
|
||||||
|
# When not using gcc, we currently assume that we are using
|
||||||
|
# Microsoft Visual C++.
|
||||||
|
if test "$GCC" != yes; then
|
||||||
|
with_gnu_ld=no
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
interix*)
|
||||||
|
# we just hope/assume this is gcc and not c89 (= MSVC++)
|
||||||
|
with_gnu_ld=yes
|
||||||
|
;;
|
||||||
|
openbsd*)
|
||||||
|
with_gnu_ld=no
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
ld_shlibs=yes
|
||||||
|
if test "$with_gnu_ld" = yes; then
|
||||||
|
# Set some defaults for GNU ld with shared library support. These
|
||||||
|
# are reset later if shared libraries are not supported. Putting them
|
||||||
|
# here allows them to be overridden if necessary.
|
||||||
|
# Unlike libtool, we use -rpath here, not --rpath, since the documented
|
||||||
|
# option of GNU ld is called -rpath, not --rpath.
|
||||||
|
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
|
||||||
|
case "$host_os" in
|
||||||
|
aix[3-9]*)
|
||||||
|
# On AIX/PPC, the GNU linker is very broken
|
||||||
|
if test "$host_cpu" != ia64; then
|
||||||
|
ld_shlibs=no
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
amigaos*)
|
||||||
|
hardcode_libdir_flag_spec='-L$libdir'
|
||||||
|
hardcode_minus_L=yes
|
||||||
|
# Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
|
||||||
|
# that the semantics of dynamic libraries on AmigaOS, at least up
|
||||||
|
# to version 4, is to share data among multiple programs linked
|
||||||
|
# with the same dynamic library. Since this doesn't match the
|
||||||
|
# behavior of shared libraries on other platforms, we cannot use
|
||||||
|
# them.
|
||||||
|
ld_shlibs=no
|
||||||
|
;;
|
||||||
|
beos*)
|
||||||
|
if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
|
||||||
|
:
|
||||||
|
else
|
||||||
|
ld_shlibs=no
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
cygwin* | mingw* | pw32* | cegcc*)
|
||||||
|
# hardcode_libdir_flag_spec is actually meaningless, as there is
|
||||||
|
# no search path for DLLs.
|
||||||
|
hardcode_libdir_flag_spec='-L$libdir'
|
||||||
|
if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
|
||||||
|
:
|
||||||
|
else
|
||||||
|
ld_shlibs=no
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
interix[3-9]*)
|
||||||
|
hardcode_direct=no
|
||||||
|
hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
|
||||||
|
;;
|
||||||
|
gnu* | linux* | k*bsd*-gnu)
|
||||||
|
if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
|
||||||
|
:
|
||||||
|
else
|
||||||
|
ld_shlibs=no
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
netbsd*)
|
||||||
|
;;
|
||||||
|
solaris*)
|
||||||
|
if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
|
||||||
|
ld_shlibs=no
|
||||||
|
elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
|
||||||
|
:
|
||||||
|
else
|
||||||
|
ld_shlibs=no
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
|
||||||
|
case `$LD -v 2>&1` in
|
||||||
|
*\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
|
||||||
|
ld_shlibs=no
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
|
||||||
|
hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
|
||||||
|
else
|
||||||
|
ld_shlibs=no
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
sunos4*)
|
||||||
|
hardcode_direct=yes
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
|
||||||
|
:
|
||||||
|
else
|
||||||
|
ld_shlibs=no
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
if test "$ld_shlibs" = no; then
|
||||||
|
hardcode_libdir_flag_spec=
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
case "$host_os" in
|
||||||
|
aix3*)
|
||||||
|
# Note: this linker hardcodes the directories in LIBPATH if there
|
||||||
|
# are no directories specified by -L.
|
||||||
|
hardcode_minus_L=yes
|
||||||
|
if test "$GCC" = yes; then
|
||||||
|
# Neither direct hardcoding nor static linking is supported with a
|
||||||
|
# broken collect2.
|
||||||
|
hardcode_direct=unsupported
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
aix[4-9]*)
|
||||||
|
if test "$host_cpu" = ia64; then
|
||||||
|
# On IA64, the linker does run time linking by default, so we don't
|
||||||
|
# have to do anything special.
|
||||||
|
aix_use_runtimelinking=no
|
||||||
|
else
|
||||||
|
aix_use_runtimelinking=no
|
||||||
|
# Test if we are trying to use run time linking or normal
|
||||||
|
# AIX style linking. If -brtl is somewhere in LDFLAGS, we
|
||||||
|
# need to do runtime linking.
|
||||||
|
case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
|
||||||
|
for ld_flag in $LDFLAGS; do
|
||||||
|
if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
|
||||||
|
aix_use_runtimelinking=yes
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
hardcode_direct=yes
|
||||||
|
hardcode_libdir_separator=':'
|
||||||
|
if test "$GCC" = yes; then
|
||||||
|
case $host_os in aix4.[012]|aix4.[012].*)
|
||||||
|
collect2name=`${CC} -print-prog-name=collect2`
|
||||||
|
if test -f "$collect2name" && \
|
||||||
|
strings "$collect2name" | grep resolve_lib_name >/dev/null
|
||||||
|
then
|
||||||
|
# We have reworked collect2
|
||||||
|
:
|
||||||
|
else
|
||||||
|
# We have old collect2
|
||||||
|
hardcode_direct=unsupported
|
||||||
|
hardcode_minus_L=yes
|
||||||
|
hardcode_libdir_flag_spec='-L$libdir'
|
||||||
|
hardcode_libdir_separator=
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
# Begin _LT_AC_SYS_LIBPATH_AIX.
|
||||||
|
echo 'int main () { return 0; }' > conftest.c
|
||||||
|
${CC} ${LDFLAGS} conftest.c -o conftest
|
||||||
|
aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
|
||||||
|
}'`
|
||||||
|
if test -z "$aix_libpath"; then
|
||||||
|
aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
|
||||||
|
}'`
|
||||||
|
fi
|
||||||
|
if test -z "$aix_libpath"; then
|
||||||
|
aix_libpath="/usr/lib:/lib"
|
||||||
|
fi
|
||||||
|
rm -f conftest.c conftest
|
||||||
|
# End _LT_AC_SYS_LIBPATH_AIX.
|
||||||
|
if test "$aix_use_runtimelinking" = yes; then
|
||||||
|
hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
|
||||||
|
else
|
||||||
|
if test "$host_cpu" = ia64; then
|
||||||
|
hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
|
||||||
|
else
|
||||||
|
hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
amigaos*)
|
||||||
|
hardcode_libdir_flag_spec='-L$libdir'
|
||||||
|
hardcode_minus_L=yes
|
||||||
|
# see comment about different semantics on the GNU ld section
|
||||||
|
ld_shlibs=no
|
||||||
|
;;
|
||||||
|
bsdi[45]*)
|
||||||
|
;;
|
||||||
|
cygwin* | mingw* | pw32* | cegcc*)
|
||||||
|
# When not using gcc, we currently assume that we are using
|
||||||
|
# Microsoft Visual C++.
|
||||||
|
# hardcode_libdir_flag_spec is actually meaningless, as there is
|
||||||
|
# no search path for DLLs.
|
||||||
|
hardcode_libdir_flag_spec=' '
|
||||||
|
libext=lib
|
||||||
|
;;
|
||||||
|
darwin* | rhapsody*)
|
||||||
|
hardcode_direct=no
|
||||||
|
if test "$GCC" = yes ; then
|
||||||
|
:
|
||||||
|
else
|
||||||
|
case $cc_basename in
|
||||||
|
xlc*)
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
ld_shlibs=no
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
dgux*)
|
||||||
|
hardcode_libdir_flag_spec='-L$libdir'
|
||||||
|
;;
|
||||||
|
freebsd1*)
|
||||||
|
ld_shlibs=no
|
||||||
|
;;
|
||||||
|
freebsd2.2*)
|
||||||
|
hardcode_libdir_flag_spec='-R$libdir'
|
||||||
|
hardcode_direct=yes
|
||||||
|
;;
|
||||||
|
freebsd2*)
|
||||||
|
hardcode_direct=yes
|
||||||
|
hardcode_minus_L=yes
|
||||||
|
;;
|
||||||
|
freebsd* | dragonfly*)
|
||||||
|
hardcode_libdir_flag_spec='-R$libdir'
|
||||||
|
hardcode_direct=yes
|
||||||
|
;;
|
||||||
|
hpux9*)
|
||||||
|
hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
|
||||||
|
hardcode_libdir_separator=:
|
||||||
|
hardcode_direct=yes
|
||||||
|
# hardcode_minus_L: Not really in the search PATH,
|
||||||
|
# but as the default location of the library.
|
||||||
|
hardcode_minus_L=yes
|
||||||
|
;;
|
||||||
|
hpux10*)
|
||||||
|
if test "$with_gnu_ld" = no; then
|
||||||
|
hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
|
||||||
|
hardcode_libdir_separator=:
|
||||||
|
hardcode_direct=yes
|
||||||
|
# hardcode_minus_L: Not really in the search PATH,
|
||||||
|
# but as the default location of the library.
|
||||||
|
hardcode_minus_L=yes
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
hpux11*)
|
||||||
|
if test "$with_gnu_ld" = no; then
|
||||||
|
hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
|
||||||
|
hardcode_libdir_separator=:
|
||||||
|
case $host_cpu in
|
||||||
|
hppa*64*|ia64*)
|
||||||
|
hardcode_direct=no
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
hardcode_direct=yes
|
||||||
|
# hardcode_minus_L: Not really in the search PATH,
|
||||||
|
# but as the default location of the library.
|
||||||
|
hardcode_minus_L=yes
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
irix5* | irix6* | nonstopux*)
|
||||||
|
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
|
||||||
|
hardcode_libdir_separator=:
|
||||||
|
;;
|
||||||
|
netbsd*)
|
||||||
|
hardcode_libdir_flag_spec='-R$libdir'
|
||||||
|
hardcode_direct=yes
|
||||||
|
;;
|
||||||
|
newsos6)
|
||||||
|
hardcode_direct=yes
|
||||||
|
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
|
||||||
|
hardcode_libdir_separator=:
|
||||||
|
;;
|
||||||
|
openbsd*)
|
||||||
|
if test -f /usr/libexec/ld.so; then
|
||||||
|
hardcode_direct=yes
|
||||||
|
if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
|
||||||
|
hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
|
||||||
|
else
|
||||||
|
case "$host_os" in
|
||||||
|
openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
|
||||||
|
hardcode_libdir_flag_spec='-R$libdir'
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
ld_shlibs=no
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
os2*)
|
||||||
|
hardcode_libdir_flag_spec='-L$libdir'
|
||||||
|
hardcode_minus_L=yes
|
||||||
|
;;
|
||||||
|
osf3*)
|
||||||
|
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
|
||||||
|
hardcode_libdir_separator=:
|
||||||
|
;;
|
||||||
|
osf4* | osf5*)
|
||||||
|
if test "$GCC" = yes; then
|
||||||
|
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
|
||||||
|
else
|
||||||
|
# Both cc and cxx compiler support -rpath directly
|
||||||
|
hardcode_libdir_flag_spec='-rpath $libdir'
|
||||||
|
fi
|
||||||
|
hardcode_libdir_separator=:
|
||||||
|
;;
|
||||||
|
solaris*)
|
||||||
|
hardcode_libdir_flag_spec='-R$libdir'
|
||||||
|
;;
|
||||||
|
sunos4*)
|
||||||
|
hardcode_libdir_flag_spec='-L$libdir'
|
||||||
|
hardcode_direct=yes
|
||||||
|
hardcode_minus_L=yes
|
||||||
|
;;
|
||||||
|
sysv4)
|
||||||
|
case $host_vendor in
|
||||||
|
sni)
|
||||||
|
hardcode_direct=yes # is this really true???
|
||||||
|
;;
|
||||||
|
siemens)
|
||||||
|
hardcode_direct=no
|
||||||
|
;;
|
||||||
|
motorola)
|
||||||
|
hardcode_direct=no #Motorola manual says yes, but my tests say they lie
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
sysv4.3*)
|
||||||
|
;;
|
||||||
|
sysv4*MP*)
|
||||||
|
if test -d /usr/nec; then
|
||||||
|
ld_shlibs=yes
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
|
||||||
|
;;
|
||||||
|
sysv5* | sco3.2v5* | sco5v6*)
|
||||||
|
hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
|
||||||
|
hardcode_libdir_separator=':'
|
||||||
|
;;
|
||||||
|
uts4*)
|
||||||
|
hardcode_libdir_flag_spec='-L$libdir'
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
ld_shlibs=no
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check dynamic linker characteristics
|
||||||
|
# Code taken from libtool.m4's _LT_SYS_DYNAMIC_LINKER.
|
||||||
|
# Unlike libtool.m4, here we don't care about _all_ names of the library, but
|
||||||
|
# only about the one the linker finds when passed -lNAME. This is the last
|
||||||
|
# element of library_names_spec in libtool.m4, or possibly two of them if the
|
||||||
|
# linker has special search rules.
|
||||||
|
library_names_spec= # the last element of library_names_spec in libtool.m4
|
||||||
|
libname_spec='lib$name'
|
||||||
|
case "$host_os" in
|
||||||
|
aix3*)
|
||||||
|
library_names_spec='$libname.a'
|
||||||
|
;;
|
||||||
|
aix[4-9]*)
|
||||||
|
library_names_spec='$libname$shrext'
|
||||||
|
;;
|
||||||
|
amigaos*)
|
||||||
|
library_names_spec='$libname.a'
|
||||||
|
;;
|
||||||
|
beos*)
|
||||||
|
library_names_spec='$libname$shrext'
|
||||||
|
;;
|
||||||
|
bsdi[45]*)
|
||||||
|
library_names_spec='$libname$shrext'
|
||||||
|
;;
|
||||||
|
cygwin* | mingw* | pw32* | cegcc*)
|
||||||
|
shrext=.dll
|
||||||
|
library_names_spec='$libname.dll.a $libname.lib'
|
||||||
|
;;
|
||||||
|
darwin* | rhapsody*)
|
||||||
|
shrext=.dylib
|
||||||
|
library_names_spec='$libname$shrext'
|
||||||
|
;;
|
||||||
|
dgux*)
|
||||||
|
library_names_spec='$libname$shrext'
|
||||||
|
;;
|
||||||
|
freebsd1*)
|
||||||
|
;;
|
||||||
|
freebsd* | dragonfly*)
|
||||||
|
case "$host_os" in
|
||||||
|
freebsd[123]*)
|
||||||
|
library_names_spec='$libname$shrext$versuffix' ;;
|
||||||
|
*)
|
||||||
|
library_names_spec='$libname$shrext' ;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
gnu*)
|
||||||
|
library_names_spec='$libname$shrext'
|
||||||
|
;;
|
||||||
|
hpux9* | hpux10* | hpux11*)
|
||||||
|
case $host_cpu in
|
||||||
|
ia64*)
|
||||||
|
shrext=.so
|
||||||
|
;;
|
||||||
|
hppa*64*)
|
||||||
|
shrext=.sl
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
shrext=.sl
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
library_names_spec='$libname$shrext'
|
||||||
|
;;
|
||||||
|
interix[3-9]*)
|
||||||
|
library_names_spec='$libname$shrext'
|
||||||
|
;;
|
||||||
|
irix5* | irix6* | nonstopux*)
|
||||||
|
library_names_spec='$libname$shrext'
|
||||||
|
case "$host_os" in
|
||||||
|
irix5* | nonstopux*)
|
||||||
|
libsuff= shlibsuff=
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
case $LD in
|
||||||
|
*-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;;
|
||||||
|
*-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;;
|
||||||
|
*-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;;
|
||||||
|
*) libsuff= shlibsuff= ;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
linux*oldld* | linux*aout* | linux*coff*)
|
||||||
|
;;
|
||||||
|
linux* | k*bsd*-gnu)
|
||||||
|
library_names_spec='$libname$shrext'
|
||||||
|
;;
|
||||||
|
knetbsd*-gnu)
|
||||||
|
library_names_spec='$libname$shrext'
|
||||||
|
;;
|
||||||
|
netbsd*)
|
||||||
|
library_names_spec='$libname$shrext'
|
||||||
|
;;
|
||||||
|
newsos6)
|
||||||
|
library_names_spec='$libname$shrext'
|
||||||
|
;;
|
||||||
|
nto-qnx*)
|
||||||
|
library_names_spec='$libname$shrext'
|
||||||
|
;;
|
||||||
|
openbsd*)
|
||||||
|
library_names_spec='$libname$shrext$versuffix'
|
||||||
|
;;
|
||||||
|
os2*)
|
||||||
|
libname_spec='$name'
|
||||||
|
shrext=.dll
|
||||||
|
library_names_spec='$libname.a'
|
||||||
|
;;
|
||||||
|
osf3* | osf4* | osf5*)
|
||||||
|
library_names_spec='$libname$shrext'
|
||||||
|
;;
|
||||||
|
rdos*)
|
||||||
|
;;
|
||||||
|
solaris*)
|
||||||
|
library_names_spec='$libname$shrext'
|
||||||
|
;;
|
||||||
|
sunos4*)
|
||||||
|
library_names_spec='$libname$shrext$versuffix'
|
||||||
|
;;
|
||||||
|
sysv4 | sysv4.3*)
|
||||||
|
library_names_spec='$libname$shrext'
|
||||||
|
;;
|
||||||
|
sysv4*MP*)
|
||||||
|
library_names_spec='$libname$shrext'
|
||||||
|
;;
|
||||||
|
sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
|
||||||
|
library_names_spec='$libname$shrext'
|
||||||
|
;;
|
||||||
|
uts4*)
|
||||||
|
library_names_spec='$libname$shrext'
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
|
||||||
|
escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"`
|
||||||
|
shlibext=`echo "$shrext" | sed -e 's,^\.,,'`
|
||||||
|
escaped_libname_spec=`echo "X$libname_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
|
||||||
|
escaped_library_names_spec=`echo "X$library_names_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
|
||||||
|
escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
|
||||||
|
|
||||||
|
LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <<EOF
|
||||||
|
|
||||||
|
# How to pass a linker flag through the compiler.
|
||||||
|
wl="$escaped_wl"
|
||||||
|
|
||||||
|
# Static library suffix (normally "a").
|
||||||
|
libext="$libext"
|
||||||
|
|
||||||
|
# Shared library suffix (normally "so").
|
||||||
|
shlibext="$shlibext"
|
||||||
|
|
||||||
|
# Format of library name prefix.
|
||||||
|
libname_spec="$escaped_libname_spec"
|
||||||
|
|
||||||
|
# Library names that the linker finds when passed -lNAME.
|
||||||
|
library_names_spec="$escaped_library_names_spec"
|
||||||
|
|
||||||
|
# Flag to hardcode \$libdir into a binary during linking.
|
||||||
|
# This must work even if \$libdir does not exist.
|
||||||
|
hardcode_libdir_flag_spec="$escaped_hardcode_libdir_flag_spec"
|
||||||
|
|
||||||
|
# Whether we need a single -rpath flag with a separated argument.
|
||||||
|
hardcode_libdir_separator="$hardcode_libdir_separator"
|
||||||
|
|
||||||
|
# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the
|
||||||
|
# resulting binary.
|
||||||
|
hardcode_direct="$hardcode_direct"
|
||||||
|
|
||||||
|
# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
|
||||||
|
# resulting binary.
|
||||||
|
hardcode_minus_L="$hardcode_minus_L"
|
||||||
|
|
||||||
|
EOF
|
@ -0,0 +1,102 @@
|
|||||||
|
# List of browsers and their categories
|
||||||
|
# e.g., WORD delimited by tab(s) TYPE
|
||||||
|
#
|
||||||
|
# **IMPORTANT NOTE**:
|
||||||
|
# ---------------------
|
||||||
|
# The SIZE of the list is proportional to the run time.
|
||||||
|
# Thus, the longer the list, the more time GoAccess will take to parse it.
|
||||||
|
#
|
||||||
|
# Also, you should note that the higher the browser/item is on the list, the
|
||||||
|
# faster the parsing will be.
|
||||||
|
#
|
||||||
|
# The list needs to be specified using --browsers-file=<path>. This file is not
|
||||||
|
# parsed by default.
|
||||||
|
#
|
||||||
|
# The items below are sample crawlers, adjust as needed.
|
||||||
|
|
||||||
|
Chef Client Crawlers
|
||||||
|
Abonti Crawlers
|
||||||
|
SISTRIX Crawlers
|
||||||
|
DotBot Crawlers
|
||||||
|
Speedy Spider Crawlers
|
||||||
|
Sosospider Crawlers
|
||||||
|
BPImageWalker Crawlers
|
||||||
|
DoCoMo Crawlers
|
||||||
|
GSLFbot Crawlers
|
||||||
|
YodaoBot Crawlers
|
||||||
|
AddThis Crawlers
|
||||||
|
Purebot Crawlers
|
||||||
|
CCBot Crawlers
|
||||||
|
findlinks Crawlers
|
||||||
|
ichiro Crawlers
|
||||||
|
Linguee Bot Crawlers
|
||||||
|
Gigabot Crawlers
|
||||||
|
BacklinkCrawler Crawlers
|
||||||
|
distilator Crawlers
|
||||||
|
Aboundex Crawlers
|
||||||
|
UnwindFetchor Crawlers
|
||||||
|
SBIder Crawlers
|
||||||
|
TestNutch Crawlers
|
||||||
|
DomainCrawler Crawlers
|
||||||
|
NextGenSearchBot Crawlers
|
||||||
|
SEOENGWorldBot Crawlers
|
||||||
|
Cityreview Crawlers
|
||||||
|
PagePeeker Crawlers
|
||||||
|
JS-Kit Crawlers
|
||||||
|
ScreenerBot Crawlers
|
||||||
|
ShowyouBot Crawlers
|
||||||
|
SolomonoBot Crawlers
|
||||||
|
Domnutch Crawlers
|
||||||
|
MaxPoint Crawlers
|
||||||
|
NCBot Crawlers
|
||||||
|
TosCrawler Crawlers
|
||||||
|
Updownerbot Crawlers
|
||||||
|
OpenWebSpider Crawlers
|
||||||
|
WordPress Crawlers
|
||||||
|
PEAR Crawlers
|
||||||
|
ZumBot Crawlers
|
||||||
|
YisouSpider Crawlers
|
||||||
|
W3C Crawlers
|
||||||
|
vcheck Crawlers
|
||||||
|
PercolateCrawler Crawlers
|
||||||
|
NING Crawlers
|
||||||
|
gvfs Crawlers
|
||||||
|
CatchBot Crawlers
|
||||||
|
Combine Crawlers
|
||||||
|
A6-Indexer Crawlers
|
||||||
|
Altresium Crawlers
|
||||||
|
Comodo Crawlers
|
||||||
|
crawler4j Crawlers
|
||||||
|
Cricket Crawlers
|
||||||
|
EC2LinkFinder Crawlers
|
||||||
|
envolk Crawlers
|
||||||
|
GeoHasher Crawlers
|
||||||
|
HTMLParser Crawlers
|
||||||
|
MLBot Crawlers
|
||||||
|
Jaxified Crawlers
|
||||||
|
LinkWalker Crawlers
|
||||||
|
nutch Crawlers
|
||||||
|
PostRank Crawlers
|
||||||
|
keybase-proofs Crawlers
|
||||||
|
CommonCrawler Crawlers
|
||||||
|
X-CAD-SE Crawlers
|
||||||
|
Safeassign Crawlers
|
||||||
|
Nmap Crawlers
|
||||||
|
sqlmap Crawlers
|
||||||
|
Jorgee Crawlers
|
||||||
|
PxBroker Crawlers
|
||||||
|
Seekport Crawlers
|
||||||
|
adscanner Crawlers
|
||||||
|
AfD-Verbotsverfahren_JETZT! Crawlers
|
||||||
|
|
||||||
|
Vienna Feeds
|
||||||
|
Windows-RSS-Platform Feeds
|
||||||
|
newsbeuter Feeds
|
||||||
|
Wrangler Feeds
|
||||||
|
Fever Feeds
|
||||||
|
Tiny Feeds
|
||||||
|
FreshRSS Feeds
|
||||||
|
KrISS Feeds
|
||||||
|
SimplePie Feeds
|
||||||
|
Feedsubs Feeds
|
||||||
|
UniversalFeedParser Feeds
|
@ -0,0 +1,766 @@
|
|||||||
|
######################################
|
||||||
|
# Time Format Options (required)
|
||||||
|
######################################
|
||||||
|
#
|
||||||
|
# The hour (24-hour clock) [00,23]; leading zeros are permitted but not required.
|
||||||
|
# The minute [00,59]; leading zeros are permitted but not required.
|
||||||
|
# The seconds [00,60]; leading zeros are permitted but not required.
|
||||||
|
# See `man strftime` for more details
|
||||||
|
#
|
||||||
|
# The following time format works with any of the
|
||||||
|
# Apache/NGINX's log formats below.
|
||||||
|
#
|
||||||
|
#time-format %H:%M:%S
|
||||||
|
#
|
||||||
|
# Google Cloud Storage or
|
||||||
|
# The time in microseconds since the Unix epoch.
|
||||||
|
#
|
||||||
|
#time-format %f
|
||||||
|
|
||||||
|
# Squid native log format
|
||||||
|
#
|
||||||
|
#time-format %s
|
||||||
|
|
||||||
|
######################################
|
||||||
|
# Date Format Options (required)
|
||||||
|
######################################
|
||||||
|
#
|
||||||
|
# The date-format variable followed by a space, specifies
|
||||||
|
# the log format date containing any combination of regular
|
||||||
|
# characters and special format specifiers. They all begin with a
|
||||||
|
# percentage (%) sign. See `man strftime`
|
||||||
|
#
|
||||||
|
# The following date format works with any of the
|
||||||
|
# Apache/NGINX's log formats below.
|
||||||
|
#
|
||||||
|
#date-format %d/%b/%Y
|
||||||
|
#
|
||||||
|
# AWS | Amazon CloudFront (Download Distribution)
|
||||||
|
# AWS | Elastic Load Balancing
|
||||||
|
# W3C (IIS)
|
||||||
|
#
|
||||||
|
#date-format %Y-%m-%d
|
||||||
|
#
|
||||||
|
# Google Cloud Storage or
|
||||||
|
# The time in microseconds since the Unix epoch.
|
||||||
|
#
|
||||||
|
#date-format %f
|
||||||
|
|
||||||
|
# Squid native log format
|
||||||
|
#
|
||||||
|
#date-format %s
|
||||||
|
|
||||||
|
######################################
|
||||||
|
# Log Format Options (required)
|
||||||
|
######################################
|
||||||
|
#
|
||||||
|
# The log-format variable followed by a space or \t for
|
||||||
|
# tab-delimited, specifies the log format string.
|
||||||
|
#
|
||||||
|
# NOTE: If the time/date is a timestamp in seconds or microseconds
|
||||||
|
# %x must be used instead of %d & %t to represent the date & time.
|
||||||
|
|
||||||
|
# NCSA Combined Log Format
|
||||||
|
#log-format %h %^[%d:%t %^] "%r" %s %b "%R" "%u"
|
||||||
|
|
||||||
|
# NCSA Combined Log Format with Virtual Host
|
||||||
|
#log-format %v:%^ %h %^[%d:%t %^] "%r" %s %b "%R" "%u"
|
||||||
|
|
||||||
|
# Common Log Format (CLF)
|
||||||
|
#log-format %h %^[%d:%t %^] "%r" %s %b
|
||||||
|
|
||||||
|
# Common Log Format (CLF) with Virtual Host
|
||||||
|
#log-format %v:%^ %h %^[%d:%t %^] "%r" %s %b
|
||||||
|
|
||||||
|
# W3C
|
||||||
|
#log-format %d %t %h %^ %^ %^ %^ %r %^ %s %b %^ %^ %u %R
|
||||||
|
|
||||||
|
# Squid native log format
|
||||||
|
#log-format %^ %^ %^ %v %^: %x.%^ %~%L %h %^/%s %b %m %U
|
||||||
|
|
||||||
|
# AWS | Amazon CloudFront (Download Distribution)
|
||||||
|
#log-format %d\t%t\t%^\t%b\t%h\t%m\t%^\t%r\t%s\t%R\t%u\t%^
|
||||||
|
|
||||||
|
# Google Cloud Storage
|
||||||
|
#log-format "%x","%h",%^,%^,"%m","%U","%s",%^,"%b","%D",%^,"%R","%u"
|
||||||
|
|
||||||
|
# AWS | Elastic Load Balancing
|
||||||
|
#log-format %dT%t.%^ %^ %h:%^ %^ %T %^ %^ %^ %s %^ %b "%r" "%u"
|
||||||
|
|
||||||
|
# AWSS3 | Amazon Simple Storage Service (S3)
|
||||||
|
#log-format %^[%d:%t %^] %h %^"%r" %s %^ %b %^ %L %^ "%R" "%u"
|
||||||
|
|
||||||
|
# Virtualmin Log Format with Virtual Host
|
||||||
|
#log-format %h %^ %v %^[%d:%t %^] "%r" %s %b "%R" "%u"
|
||||||
|
|
||||||
|
# In addition to specifying the raw log/date/time formats, for
|
||||||
|
# simplicity, any of the following predefined log format names can be
|
||||||
|
# supplied to the log/date/time-format variables. GoAccess can also
|
||||||
|
# handle one predefined name in one variable and another predefined
|
||||||
|
# name in another variable.
|
||||||
|
#
|
||||||
|
#log-format COMBINED
|
||||||
|
#log-format VCOMBINED
|
||||||
|
#log-format COMMON
|
||||||
|
#log-format VCOMMON
|
||||||
|
#log-format W3C
|
||||||
|
#log-format SQUID
|
||||||
|
#log-format CLOUDFRONT
|
||||||
|
#log-format CLOUDSTORAGE
|
||||||
|
#log-format AWSELB
|
||||||
|
#log-format AWSS3
|
||||||
|
|
||||||
|
######################################
|
||||||
|
# UI Options
|
||||||
|
######################################
|
||||||
|
|
||||||
|
# Choose among color schemes
|
||||||
|
# 1 : Monochrome
|
||||||
|
# 2 : Green
|
||||||
|
# 3 : Monokai (if 256-colors supported)
|
||||||
|
#
|
||||||
|
#color-scheme 3
|
||||||
|
|
||||||
|
# Prompt log/date configuration window on program start.
|
||||||
|
#
|
||||||
|
config-dialog false
|
||||||
|
|
||||||
|
# Color highlight active panel.
|
||||||
|
#
|
||||||
|
hl-header true
|
||||||
|
|
||||||
|
# Specify a custom CSS file in the HTML report.
|
||||||
|
#
|
||||||
|
#html-custom-css /path/file.css
|
||||||
|
|
||||||
|
# Specify a custom JS file in the HTML report.
|
||||||
|
#
|
||||||
|
#html-custom-js /path/file.js
|
||||||
|
|
||||||
|
# Set default HTML preferences.
|
||||||
|
#
|
||||||
|
# NOTE: A valid JSON object is required.
|
||||||
|
# DO NOT USE A MULTILINE JSON OBJECT.
|
||||||
|
# The parser will only parse the value next to `html-prefs` (single line)
|
||||||
|
# It allows the ability to customize each panel plot. See example below.
|
||||||
|
#
|
||||||
|
#html-prefs {"theme":"bright","perPage":5,"layout":"horizontal","showTables":true,"visitors":{"plot":{"chartType":"bar"}}}
|
||||||
|
|
||||||
|
# Set HTML report page title and header.
|
||||||
|
#
|
||||||
|
#html-report-title My Awesome Web Stats
|
||||||
|
|
||||||
|
# Format JSON output using tabs and newlines.
|
||||||
|
#
|
||||||
|
json-pretty-print false
|
||||||
|
|
||||||
|
# Turn off colored output. This is the default output on
|
||||||
|
# terminals that do not support colors.
|
||||||
|
# true : for no color output
|
||||||
|
# false : use color-scheme
|
||||||
|
#
|
||||||
|
no-color false
|
||||||
|
|
||||||
|
# Don't write column names in the terminal output. By default, it displays
|
||||||
|
# column names for each available metric in every panel.
|
||||||
|
#
|
||||||
|
no-column-names false
|
||||||
|
|
||||||
|
# Disable summary metrics on the CSV output.
|
||||||
|
#
|
||||||
|
no-csv-summary false
|
||||||
|
|
||||||
|
# Disable progress metrics.
|
||||||
|
#
|
||||||
|
no-progress false
|
||||||
|
|
||||||
|
# Disable scrolling through panels on TAB.
|
||||||
|
#
|
||||||
|
no-tab-scroll false
|
||||||
|
|
||||||
|
# Disable progress metrics and parsing spinner.
|
||||||
|
#
|
||||||
|
#no-parsing-spinner true
|
||||||
|
|
||||||
|
# Do not show the last updated field displayed in the HTML generated report.
|
||||||
|
#
|
||||||
|
#no-html-last-updated true
|
||||||
|
|
||||||
|
# Enable mouse support on main dashboard.
|
||||||
|
#
|
||||||
|
with-mouse false
|
||||||
|
|
||||||
|
# Maximum number of items to show per panel.
|
||||||
|
# Note: Only the CSV and JSON outputs allow a maximum greater than the
|
||||||
|
# default value of 366.
|
||||||
|
#
|
||||||
|
#max-items 366
|
||||||
|
|
||||||
|
# Custom colors for the terminal output
|
||||||
|
# Tailor GoAccess to suit your own tastes.
|
||||||
|
#
|
||||||
|
# Color Syntax:
|
||||||
|
# DEFINITION space/tab colorFG#:colorBG# [[attributes,] PANEL]
|
||||||
|
#
|
||||||
|
# FG# = foreground color number [-1...255] (-1 = default terminal color)
|
||||||
|
# BG# = background color number [-1...255] (-1 = default terminal color)
|
||||||
|
#
|
||||||
|
# Optionally:
|
||||||
|
#
|
||||||
|
# It is possible to apply color attributes, such as:
|
||||||
|
# bold,underline,normal,reverse,blink.
|
||||||
|
# Multiple attributes are comma separated
|
||||||
|
#
|
||||||
|
# If desired, it is possible to apply custom colors per panel, that is, a
|
||||||
|
# metric in the REQUESTS panel can be of color A, while the same metric in the
|
||||||
|
# BROWSERS panel can be of color B.
|
||||||
|
#
|
||||||
|
# The following is a 256 color scheme (hybrid palette)
|
||||||
|
#
|
||||||
|
#color COLOR_MTRC_HITS color110:color-1
|
||||||
|
#color COLOR_MTRC_VISITORS color173:color-1
|
||||||
|
#color COLOR_MTRC_DATA color221:color-1
|
||||||
|
#color COLOR_MTRC_BW color167:color-1
|
||||||
|
#color COLOR_MTRC_AVGTS color143:color-1
|
||||||
|
#color COLOR_MTRC_CUMTS color247:color-1
|
||||||
|
#color COLOR_MTRC_MAXTS color186:color-1
|
||||||
|
#color COLOR_MTRC_PROT color109:color-1
|
||||||
|
#color COLOR_MTRC_MTHD color139:color-1
|
||||||
|
#color COLOR_MTRC_HITS_PERC color186:color-1
|
||||||
|
#color COLOR_MTRC_HITS_PERC_MAX color139:color-1
|
||||||
|
#color COLOR_MTRC_HITS_PERC_MAX color139:color-1 VISITORS
|
||||||
|
#color COLOR_MTRC_HITS_PERC_MAX color139:color-1 OS
|
||||||
|
#color COLOR_MTRC_HITS_PERC_MAX color139:color-1 BROWSERS
|
||||||
|
#color COLOR_MTRC_HITS_PERC_MAX color139:color-1 VISIT_TIMES
|
||||||
|
#color COLOR_MTRC_VISITORS_PERC color186:color-1
|
||||||
|
#color COLOR_MTRC_VISITORS_PERC_MAX color139:color-1
|
||||||
|
#color COLOR_PANEL_COLS color243:color-1
|
||||||
|
#color COLOR_BARS color250:color-1
|
||||||
|
#color COLOR_ERROR color231:color167
|
||||||
|
#color COLOR_SELECTED color7:color167
|
||||||
|
#color COLOR_PANEL_ACTIVE color7:color237
|
||||||
|
#color COLOR_PANEL_HEADER color250:color235
|
||||||
|
#color COLOR_PANEL_DESC color242:color-1
|
||||||
|
#color COLOR_OVERALL_LBLS color243:color-1
|
||||||
|
#color COLOR_OVERALL_VALS color167:color-1
|
||||||
|
#color COLOR_OVERALL_PATH color186:color-1
|
||||||
|
#color COLOR_ACTIVE_LABEL color139:color235 bold underline
|
||||||
|
#color COLOR_BG color250:color-1
|
||||||
|
#color COLOR_DEFAULT color243:color-1
|
||||||
|
#color COLOR_PROGRESS color7:color110
|
||||||
|
|
||||||
|
######################################
|
||||||
|
# Server Options
|
||||||
|
######################################
|
||||||
|
|
||||||
|
# Specify IP address to bind server to.
|
||||||
|
#
|
||||||
|
#addr 0.0.0.0
|
||||||
|
|
||||||
|
# Run GoAccess as daemon (if --real-time-html enabled).
|
||||||
|
#
|
||||||
|
#daemonize false
|
||||||
|
|
||||||
|
# Ensure clients send the specified origin header upon the WebSocket
|
||||||
|
# handshake.
|
||||||
|
#
|
||||||
|
#origin http://example.org
|
||||||
|
|
||||||
|
# The port to which the connection is being attempted to connect.
|
||||||
|
# By default GoAccess' WebSocket server listens on port 7890
|
||||||
|
# See man page or http://gwsocket.io for details.
|
||||||
|
#
|
||||||
|
#port 7890
|
||||||
|
|
||||||
|
# Write the PID to a file when used along the daemonize option.
|
||||||
|
#
|
||||||
|
#pid-file /var/run/goaccess.pid
|
||||||
|
|
||||||
|
# Enable real-time HTML output.
|
||||||
|
#
|
||||||
|
#real-time-html true
|
||||||
|
|
||||||
|
# Path to TLS/SSL certificate.
|
||||||
|
# Note that ssl-cert and ssl-key need to be used to enable TLS/SSL.
|
||||||
|
#
|
||||||
|
#ssl-cert /path/ssl/domain.crt
|
||||||
|
|
||||||
|
# Path to TLS/SSL private key.
|
||||||
|
# Note that ssl-cert and ssl-key need to be used to enable TLS/SSL.
|
||||||
|
#
|
||||||
|
#ssl-key /path/ssl/domain.key
|
||||||
|
|
||||||
|
# URL to which the WebSocket server responds. This is the URL supplied
|
||||||
|
# to the WebSocket constructor on the client side.
|
||||||
|
#
|
||||||
|
# Optionally, it is possible to specify the WebSocket URI scheme, such as ws://
|
||||||
|
# or wss:// for unencrypted and encrypted connections.
|
||||||
|
# e.g., ws-url wss://goaccess.io
|
||||||
|
#
|
||||||
|
# If GoAccess is running behind a proxy, you could set the client side
|
||||||
|
# to connect to a different port by specifying the host followed by a
|
||||||
|
# colon and the port.
|
||||||
|
# e.g., ws-url goaccess.io:9999
|
||||||
|
#
|
||||||
|
# By default, it will attempt to connect to localhost. If GoAccess is
|
||||||
|
# running on a remote server, the host of the remote server should be
|
||||||
|
# specified here. Also, make sure it is a valid host and NOT an http
|
||||||
|
# address.
|
||||||
|
#
|
||||||
|
#ws-url goaccess.io
|
||||||
|
|
||||||
|
# Path to read named pipe (FIFO).
|
||||||
|
#
|
||||||
|
#fifo-in /tmp/wspipein.fifo
|
||||||
|
|
||||||
|
# Path to write named pipe (FIFO).
|
||||||
|
#
|
||||||
|
#fifo-in /tmp/wspipeout.fifo
|
||||||
|
|
||||||
|
######################################
|
||||||
|
# File Options
|
||||||
|
######################################
|
||||||
|
|
||||||
|
# Specify the path to the input log file. If set, it will take
|
||||||
|
# priority over -f from the command line.
|
||||||
|
#
|
||||||
|
#log-file /var/log/apache2/access.log
|
||||||
|
|
||||||
|
# Send all debug messages to the specified file.
|
||||||
|
#
|
||||||
|
#debug-file debug.log
|
||||||
|
|
||||||
|
# Specify a custom configuration file to use. If set, it will take
|
||||||
|
# priority over the global configuration file (if any).
|
||||||
|
#
|
||||||
|
#config-file <filename>
|
||||||
|
|
||||||
|
# Log invalid requests to the specified file.
|
||||||
|
#
|
||||||
|
#invalid-requests <filename>
|
||||||
|
|
||||||
|
# Do not load the global configuration file.
|
||||||
|
#
|
||||||
|
#no-global-config false
|
||||||
|
|
||||||
|
######################################
|
||||||
|
# Parse Options
|
||||||
|
######################################
|
||||||
|
|
||||||
|
# Enable a list of user-agents by host. For faster parsing, do not
|
||||||
|
# enable this flag.
|
||||||
|
#
|
||||||
|
agent-list false
|
||||||
|
|
||||||
|
# Enable IP resolver on HTML|JSON|CSV output.
|
||||||
|
#
|
||||||
|
with-output-resolver false
|
||||||
|
|
||||||
|
# Exclude an IPv4 or IPv6 from being counted.
|
||||||
|
# Ranges can be included as well using a dash in between
|
||||||
|
# the IPs (start-end).
|
||||||
|
#
|
||||||
|
#exclude-ip 127.0.0.1
|
||||||
|
#exclude-ip 192.168.0.1-192.168.0.100
|
||||||
|
#exclude-ip ::1
|
||||||
|
#exclude-ip 0:0:0:0:0:ffff:808:804-0:0:0:0:0:ffff:808:808
|
||||||
|
|
||||||
|
# Include HTTP request method if found. This will create a
|
||||||
|
# request key containing the request method + the actual request.
|
||||||
|
#
|
||||||
|
# <yes|no> [default: yes]
|
||||||
|
#
|
||||||
|
http-method yes
|
||||||
|
|
||||||
|
# Include HTTP request protocol if found. This will create a
|
||||||
|
# request key containing the request protocol + the actual request.
|
||||||
|
#
|
||||||
|
# <yes|no> [default: yes]
|
||||||
|
#
|
||||||
|
http-protocol yes
|
||||||
|
|
||||||
|
# Write output to stdout given one of the following files and the
|
||||||
|
# corresponding extension for the output format:
|
||||||
|
#
|
||||||
|
# /path/file.csv - Comma-separated values (CSV)
|
||||||
|
# /path/file.json - JSON (JavaScript Object Notation)
|
||||||
|
# /path/file.html - HTML
|
||||||
|
#
|
||||||
|
# output /path/file.html
|
||||||
|
|
||||||
|
# Ignore request's query string.
|
||||||
|
# i.e., www.google.com/page.htm?query => www.google.com/page.htm
|
||||||
|
#
|
||||||
|
# Note: Removing the query string can greatly decrease memory
|
||||||
|
# consumption, especially on timestamped requests.
|
||||||
|
#
|
||||||
|
no-query-string false
|
||||||
|
|
||||||
|
# Disable IP resolver on terminal output.
|
||||||
|
#
|
||||||
|
no-term-resolver false
|
||||||
|
|
||||||
|
# Treat non-standard status code 444 as 404.
|
||||||
|
#
|
||||||
|
444-as-404 false
|
||||||
|
|
||||||
|
# Add 4xx client errors to the unique visitors count.
|
||||||
|
#
|
||||||
|
4xx-to-unique-count false
|
||||||
|
|
||||||
|
# Store accumulated processing time from parsing day-by-day logs.
|
||||||
|
# Only if configured with --enable-tcb=btree
|
||||||
|
#
|
||||||
|
#accumulated-time false
|
||||||
|
|
||||||
|
# IP address anonymization
|
||||||
|
# The IP anonymization option sets the last octet of IPv4 user IP addresses and
|
||||||
|
# the last 80 bits of IPv6 addresses to zeros.
|
||||||
|
# e.g., 192.168.20.100 => 192.168.20.0
|
||||||
|
# e.g., 2a03:2880:2110:df07:face:b00c::1 => 2a03:2880:2110:df07::
|
||||||
|
#
|
||||||
|
#anonymize-ip false
|
||||||
|
|
||||||
|
# Include static files that contain a query string in the static files
|
||||||
|
# panel.
|
||||||
|
# e.g., /fonts/fontawesome-webfont.woff?v=4.0.3
|
||||||
|
#
|
||||||
|
all-static-files false
|
||||||
|
|
||||||
|
# Include an additional delimited list of browsers/crawlers/feeds etc.
|
||||||
|
# See config/browsers.list for an example or
|
||||||
|
# https://raw.githubusercontent.com/allinurl/goaccess/master/config/browsers.list
|
||||||
|
#
|
||||||
|
#browsers-file <filename>
|
||||||
|
|
||||||
|
# Date specificity. Possible values: `date` (default), or `hr`.
|
||||||
|
#
|
||||||
|
#date-spec hr
|
||||||
|
|
||||||
|
# Decode double-encoded values.
|
||||||
|
#
|
||||||
|
double-decode false
|
||||||
|
|
||||||
|
# Enable parsing/displaying the given panel.
|
||||||
|
#
|
||||||
|
#enable-panel VISITORS
|
||||||
|
#enable-panel REQUESTS
|
||||||
|
#enable-panel REQUESTS_STATIC
|
||||||
|
#enable-panel NOT_FOUND
|
||||||
|
#enable-panel HOSTS
|
||||||
|
#enable-panel OS
|
||||||
|
#enable-panel BROWSERS
|
||||||
|
#enable-panel VISIT_TIMES
|
||||||
|
#enable-panel VIRTUAL_HOSTS
|
||||||
|
#enable-panel REFERRERS
|
||||||
|
#enable-panel REFERRING_SITES
|
||||||
|
#enable-panel KEYPHRASES
|
||||||
|
#enable-panel STATUS_CODES
|
||||||
|
#enable-panel REMOTE_USER
|
||||||
|
#enable-panel GEO_LOCATION
|
||||||
|
|
||||||
|
# Hide a referer but still count it. Wild cards are allowed. i.e., *.bing.com
|
||||||
|
#
|
||||||
|
#hide-referer *.google.com
|
||||||
|
#hide-referer bing.com
|
||||||
|
|
||||||
|
# Hour specificity. Possible values: `hr` (default), or `min` (tenth
|
||||||
|
# of a minute).
|
||||||
|
#
|
||||||
|
#hour-spec min
|
||||||
|
|
||||||
|
# Ignore crawlers from being counted.
|
||||||
|
# This will ignore robots listed under browsers.c
|
||||||
|
# Note that it will count them towards the total
|
||||||
|
# number of requests, but excluded from any of the panels.
|
||||||
|
#
|
||||||
|
ignore-crawlers false
|
||||||
|
|
||||||
|
# Parse and display crawlers only.
|
||||||
|
# This will ignore robots listed under browsers.c
|
||||||
|
# Note that it will count them towards the total
|
||||||
|
# number of requests, but excluded from any of the panels.
|
||||||
|
#
|
||||||
|
crawlers-only false
|
||||||
|
|
||||||
|
# Ignore static file requests.
|
||||||
|
# req : Only ignore request from valid requests
|
||||||
|
# panels : Ignore request from panels.
|
||||||
|
# Note that it will count them towards the total number of requests
|
||||||
|
# ignore-statics req
|
||||||
|
|
||||||
|
# Ignore parsing and displaying the given panel.
|
||||||
|
#
|
||||||
|
#ignore-panel VISITORS
|
||||||
|
#ignore-panel REQUESTS
|
||||||
|
#ignore-panel REQUESTS_STATIC
|
||||||
|
#ignore-panel NOT_FOUND
|
||||||
|
#ignore-panel HOSTS
|
||||||
|
#ignore-panel OS
|
||||||
|
#ignore-panel BROWSERS
|
||||||
|
#ignore-panel VISIT_TIMES
|
||||||
|
#ignore-panel VIRTUAL_HOSTS
|
||||||
|
ignore-panel REFERRERS
|
||||||
|
#ignore-panel REFERRING_SITES
|
||||||
|
ignore-panel KEYPHRASES
|
||||||
|
#ignore-panel STATUS_CODES
|
||||||
|
#ignore-panel REMOTE_USER
|
||||||
|
#ignore-panel GEO_LOCATION
|
||||||
|
|
||||||
|
# Ignore referers from being counted.
|
||||||
|
# This supports wild cards. For instance,
|
||||||
|
# '*' matches 0 or more characters (including spaces)
|
||||||
|
# '?' matches exactly one character
|
||||||
|
#
|
||||||
|
#ignore-referer *.domain.com
|
||||||
|
#ignore-referer ww?.domain.*
|
||||||
|
|
||||||
|
# Ignore parsing and displaying one or multiple status code(s)
|
||||||
|
#
|
||||||
|
#ignore-status 400
|
||||||
|
#ignore-status 502
|
||||||
|
|
||||||
|
# Number of lines from the access log to test against the provided
|
||||||
|
# log/date/time format. By default, the parser is set to test 10
|
||||||
|
# lines. If set to 0, the parser won't test any lines and will parse
|
||||||
|
# the whole access log.
|
||||||
|
#
|
||||||
|
#num-tests 10
|
||||||
|
|
||||||
|
# Parse log and exit without outputting data.
|
||||||
|
#
|
||||||
|
#process-and-exit false
|
||||||
|
|
||||||
|
# Display real OS names. e.g, Windows XP, Snow Leopard.
|
||||||
|
#
|
||||||
|
real-os true
|
||||||
|
|
||||||
|
# Sort panel on initial load.
|
||||||
|
# Sort options are separated by comma.
|
||||||
|
# Options are in the form: PANEL,METRIC,ORDER
|
||||||
|
#
|
||||||
|
# Available metrics:
|
||||||
|
# BY_HITS - Sort by hits
|
||||||
|
# BY_VISITORS - Sort by unique visitors
|
||||||
|
# BY_DATA - Sort by data
|
||||||
|
# BY_BW - Sort by bandwidth
|
||||||
|
# BY_AVGTS - Sort by average time served
|
||||||
|
# BY_CUMTS - Sort by cumulative time served
|
||||||
|
# BY_MAXTS - Sort by maximum time served
|
||||||
|
# BY_PROT - Sort by http protocol
|
||||||
|
# BY_MTHD - Sort by http method
|
||||||
|
# Available orders:
|
||||||
|
# ASC
|
||||||
|
# DESC
|
||||||
|
#
|
||||||
|
#sort-panel VISITORS,BY_DATA,ASC
|
||||||
|
#sort-panel REQUESTS,BY_HITS,ASC
|
||||||
|
#sort-panel REQUESTS_STATIC,BY_HITS,ASC
|
||||||
|
#sort-panel NOT_FOUND,BY_HITS,ASC
|
||||||
|
#sort-panel HOSTS,BY_HITS,ASC
|
||||||
|
#sort-panel OS,BY_HITS,ASC
|
||||||
|
#sort-panel BROWSERS,BY_HITS,ASC
|
||||||
|
#sort-panel VISIT_TIMES,BY_DATA,DESC
|
||||||
|
#sort-panel VIRTUAL_HOSTS,BY_HITS,ASC
|
||||||
|
#sort-panel REFERRERS,BY_HITS,ASC
|
||||||
|
#sort-panel REFERRING_SITES,BY_HITS,ASC
|
||||||
|
#sort-panel KEYPHRASES,BY_HITS,ASC
|
||||||
|
#sort-panel STATUS_CODES,BY_HITS,ASC
|
||||||
|
#sort-panel REMOTE_USER,BY_HITS,ASC
|
||||||
|
#sort-panel GEO_LOCATION,BY_HITS,ASC
|
||||||
|
|
||||||
|
# Consider the following extensions as static files
|
||||||
|
# The actual '.' is required and extensions are case sensitive
|
||||||
|
# For a full list, uncomment the less common static extensions below.
|
||||||
|
#
|
||||||
|
static-file .css
|
||||||
|
static-file .js
|
||||||
|
static-file .jpg
|
||||||
|
static-file .png
|
||||||
|
static-file .gif
|
||||||
|
static-file .ico
|
||||||
|
static-file .jpeg
|
||||||
|
static-file .pdf
|
||||||
|
static-file .csv
|
||||||
|
static-file .mpeg
|
||||||
|
static-file .mpg
|
||||||
|
static-file .swf
|
||||||
|
static-file .woff
|
||||||
|
static-file .woff2
|
||||||
|
static-file .xls
|
||||||
|
static-file .xlsx
|
||||||
|
static-file .doc
|
||||||
|
static-file .docx
|
||||||
|
static-file .ppt
|
||||||
|
static-file .pptx
|
||||||
|
static-file .txt
|
||||||
|
static-file .zip
|
||||||
|
static-file .ogg
|
||||||
|
static-file .mp3
|
||||||
|
static-file .mp4
|
||||||
|
static-file .exe
|
||||||
|
static-file .iso
|
||||||
|
static-file .gz
|
||||||
|
static-file .rar
|
||||||
|
static-file .svg
|
||||||
|
static-file .bmp
|
||||||
|
static-file .tar
|
||||||
|
static-file .tgz
|
||||||
|
static-file .tiff
|
||||||
|
static-file .tif
|
||||||
|
static-file .ttf
|
||||||
|
static-file .flv
|
||||||
|
#static-file .less
|
||||||
|
#static-file .ac3
|
||||||
|
#static-file .avi
|
||||||
|
#static-file .bz2
|
||||||
|
#static-file .class
|
||||||
|
#static-file .cue
|
||||||
|
#static-file .dae
|
||||||
|
#static-file .dat
|
||||||
|
#static-file .dts
|
||||||
|
#static-file .ejs
|
||||||
|
#static-file .eot
|
||||||
|
#static-file .eps
|
||||||
|
#static-file .img
|
||||||
|
#static-file .jar
|
||||||
|
#static-file .map
|
||||||
|
#static-file .mid
|
||||||
|
#static-file .midi
|
||||||
|
#static-file .ogv
|
||||||
|
#static-file .webm
|
||||||
|
#static-file .mkv
|
||||||
|
#static-file .odp
|
||||||
|
#static-file .ods
|
||||||
|
#static-file .odt
|
||||||
|
#static-file .otf
|
||||||
|
#static-file .pict
|
||||||
|
#static-file .pls
|
||||||
|
#static-file .ps
|
||||||
|
#static-file .qt
|
||||||
|
#static-file .rm
|
||||||
|
#static-file .svgz
|
||||||
|
#static-file .wav
|
||||||
|
#static-file .webp
|
||||||
|
|
||||||
|
######################################
|
||||||
|
# GeoIP Options
|
||||||
|
# Only if configured with --enable-geoip
|
||||||
|
######################################
|
||||||
|
|
||||||
|
# Standard GeoIP database for less memory usage.
|
||||||
|
#
|
||||||
|
#std-geoip false
|
||||||
|
|
||||||
|
# Specify path to GeoIP database file. i.e., GeoLiteCity.dat
|
||||||
|
# .dat file needs to be downloaded from maxmind.com.
|
||||||
|
#
|
||||||
|
# For IPv4 City database:
|
||||||
|
# wget -N http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
|
||||||
|
# gunzip GeoLiteCity.dat.gz
|
||||||
|
#
|
||||||
|
# For IPv6 City database:
|
||||||
|
# wget -N http://geolite.maxmind.com/download/geoip/database/GeoLiteCityv6-beta/GeoLiteCityv6.dat.gz
|
||||||
|
# gunzip GeoLiteCityv6.dat.gz
|
||||||
|
#
|
||||||
|
# For IPv6 Country database:
|
||||||
|
# wget -N http://geolite.maxmind.com/download/geoip/database/GeoIPv6.dat.gz
|
||||||
|
# gunzip GeoIPv6.dat.gz
|
||||||
|
#
|
||||||
|
# For GeoIP2 City database:
|
||||||
|
# wget -N http://geolite.maxmind.com/download/geoip/database/GeoLite2-City.mmdb.gz
|
||||||
|
# gunzip GeoLite2-City.mmdb.gz
|
||||||
|
#
|
||||||
|
# For GeoIP2 Country database:
|
||||||
|
# wget -N http://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.mmdb.gz
|
||||||
|
# gunzip GeoLite2-Country.mmdb.gz
|
||||||
|
#
|
||||||
|
# Note: `geoip-city-data` is an alias of `geoip-database`
|
||||||
|
#
|
||||||
|
#geoip-database /usr/local/share/GeoIP/GeoLiteCity.dat
|
||||||
|
|
||||||
|
######################################
|
||||||
|
# Tokyo Cabinet Options
|
||||||
|
# Only if configured with --enable-tcb=btree
|
||||||
|
######################################
|
||||||
|
|
||||||
|
# GoAccess has the ability to process logs incrementally through the on-disk
|
||||||
|
# B+Tree database.
|
||||||
|
#
|
||||||
|
# It works in the following way:
|
||||||
|
# - A data set must be persisted first with --keep-db-files, then the same data
|
||||||
|
# set can be loaded with --load-from-disk.
|
||||||
|
# - If new data is passed (piped or through a log file), it will append it to
|
||||||
|
# the original data set.
|
||||||
|
# - To preserve the data at all times, --keep-db-files must be used.
|
||||||
|
# - If --load-from-disk is used without --keep-db-files, database files will be
|
||||||
|
# deleted upon closing the program.
|
||||||
|
|
||||||
|
# On-disk B+ Tree
|
||||||
|
# Persist parsed data into disk. This should be set to
|
||||||
|
# the first dataset prior to use `load-from-disk`.
|
||||||
|
# Setting it to false will delete all database files
|
||||||
|
# when exiting the program.
|
||||||
|
#keep-db-files true
|
||||||
|
|
||||||
|
# On-disk B+ Tree
|
||||||
|
# Load previously stored data from disk.
|
||||||
|
# Database files need to exist. See `keep-db-files`.
|
||||||
|
#load-from-disk false
|
||||||
|
|
||||||
|
# On-disk B+ Tree
|
||||||
|
# Path where the on-disk database files are stored.
|
||||||
|
# The default value is the /tmp/ directory
|
||||||
|
# Note the trailing forward-slash.
|
||||||
|
#
|
||||||
|
#db-path /tmp/
|
||||||
|
|
||||||
|
# On-disk B+ Tree
|
||||||
|
# Set the size in bytes of the extra mapped memory.
|
||||||
|
# The default value is 0.
|
||||||
|
#
|
||||||
|
#xmmap 0
|
||||||
|
|
||||||
|
# On-disk B+ Tree
|
||||||
|
# Max number of leaf nodes to be cached.
|
||||||
|
# Specifies the maximum number of leaf nodes to be cached.
|
||||||
|
# If it is not more than 0, the default value is specified.
|
||||||
|
# The default value is 1024.
|
||||||
|
#
|
||||||
|
#cache-lcnum 1024
|
||||||
|
|
||||||
|
# On-disk B+ Tree
|
||||||
|
# Specifies the maximum number of non-leaf nodes to be cached.
|
||||||
|
# If it is not more than 0, the default value is specified.
|
||||||
|
# The default value is 512.
|
||||||
|
#
|
||||||
|
#cache-ncnum 512
|
||||||
|
|
||||||
|
# On-disk B+ Tree
|
||||||
|
# Specifies the number of members in each leaf page.
|
||||||
|
# If it is not more than 0, the default value is specified.
|
||||||
|
# The default value is 128.
|
||||||
|
#
|
||||||
|
#tune-lmemb 128
|
||||||
|
|
||||||
|
# On-disk B+ Tree
|
||||||
|
# Specifies the number of members in each non-leaf page.
|
||||||
|
# If it is not more than 0, the default value is specified.
|
||||||
|
# The default value is 256.
|
||||||
|
#
|
||||||
|
#tune-nmemb 256
|
||||||
|
|
||||||
|
# On-disk B+ Tree
|
||||||
|
# Specifies the number of elements of the bucket array.
|
||||||
|
# If it is not more than 0, the default value is specified.
|
||||||
|
# The default value is 32749.
|
||||||
|
# Suggested size of the bucket array is about from 1 to 4
|
||||||
|
# times of the number of all pages to be stored.
|
||||||
|
#
|
||||||
|
#tune-bnum 32749
|
||||||
|
|
||||||
|
# On-disk B+ Tree
|
||||||
|
# Specifies that each page is compressed with ZLIB|BZ2 encoding.
|
||||||
|
# Disabled by default.
|
||||||
|
#
|
||||||
|
#compression zlib
|
@ -0,0 +1,309 @@
|
|||||||
|
# -*- Autoconf -*-
|
||||||
|
# Process this file with autoconf to produce a configure script.
|
||||||
|
|
||||||
|
AC_PREREQ(2.59)
|
||||||
|
AC_INIT([goaccess], [1.3], [goaccess@prosoftcorp.com], [], [http://goaccess.io])
|
||||||
|
AM_INIT_AUTOMAKE
|
||||||
|
AC_CONFIG_SRCDIR([src/goaccess.c])
|
||||||
|
AC_CONFIG_HEADERS([src/config.h])
|
||||||
|
|
||||||
|
# Use empty CFLAGS by default so autoconf does not add
|
||||||
|
# CFLAGS="-O2 -g"
|
||||||
|
# NOTE: Needs to go after AC_INIT and before AC_PROG_CC to select an
|
||||||
|
# empty default instead.
|
||||||
|
: ${CFLAGS=""}
|
||||||
|
|
||||||
|
# Checks for programs.
|
||||||
|
AC_PROG_CC
|
||||||
|
AM_PROG_CC_C_O
|
||||||
|
|
||||||
|
AM_GNU_GETTEXT([external])
|
||||||
|
AM_GNU_GETTEXT_VERSION([0.18])
|
||||||
|
# Fix `undefined reference to `libintl_gettext'` on docker:
|
||||||
|
AC_CHECK_LIB([intl], [libintl_dgettext])
|
||||||
|
|
||||||
|
# pthread
|
||||||
|
AC_CHECK_LIB([pthread], [pthread_create], [], [AC_MSG_ERROR([pthread is missing])])
|
||||||
|
CFLAGS="$CFLAGS -pthread"
|
||||||
|
|
||||||
|
# DEBUG
|
||||||
|
AC_ARG_ENABLE(debug, [ --enable-debug Create a debug build. Default is disabled],
|
||||||
|
[debug="$enableval"], debug=no)
|
||||||
|
|
||||||
|
if test "$debug" = "yes"; then
|
||||||
|
AC_DEFINE([_DEBUG], 1, [Debug option])
|
||||||
|
fi
|
||||||
|
AM_CONDITIONAL([DEBUG], [test "x$debug" = "xyes"])
|
||||||
|
|
||||||
|
# Handle rdynamic only on systems using GNU ld
|
||||||
|
AC_CANONICAL_HOST
|
||||||
|
AC_MSG_CHECKING([whether to build with rdynamic for GNU ld])
|
||||||
|
with_rdyanimc=yes
|
||||||
|
case "$host_os" in
|
||||||
|
*darwin*|*cygwin*|*aix*|*mingw*) with_rdyanimc=no
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
AC_MSG_RESULT([$with_rdyanimc])
|
||||||
|
AM_CONDITIONAL([WITH_RDYNAMIC], [test "x$with_rdyanimc" = "xyes"])
|
||||||
|
|
||||||
|
# Build with OpenSSL
|
||||||
|
AC_ARG_WITH([openssl],AC_HELP_STRING([--with-openssl], [build with OpenSSL support]),
|
||||||
|
[openssl="$withval"],[openssl="no"])
|
||||||
|
|
||||||
|
if test "$openssl" = 'yes'; then
|
||||||
|
AC_CHECK_LIB([ssl], [SSL_CTX_new],,[AC_MSG_ERROR([ssl library missing])])
|
||||||
|
AC_CHECK_LIB([crypto], [CRYPTO_free],,[AC_MSG_ERROR([crypto library missing])])
|
||||||
|
fi
|
||||||
|
|
||||||
|
# GeoIP
|
||||||
|
AC_ARG_ENABLE(geoip, [ --enable-geoip Enable GeoIP country lookup. Default is disabled],
|
||||||
|
[geoip="$enableval"], geoip=no)
|
||||||
|
|
||||||
|
geolocation="N/A"
|
||||||
|
if test "$geoip" = "mmdb"; then
|
||||||
|
AC_CHECK_LIB([maxminddb], [MMDB_open], [], [AC_MSG_ERROR([
|
||||||
|
*** Missing development files for libmaxminddb library.
|
||||||
|
])])
|
||||||
|
geolocation="GeoIP2"
|
||||||
|
AC_DEFINE([HAVE_GEOLOCATION], 1, [Build using GeoIP.])
|
||||||
|
elif test "$geoip" = "legacy"; then
|
||||||
|
AC_CHECK_LIB([GeoIP], [GeoIP_new], [], [AC_MSG_ERROR([
|
||||||
|
*** Missing development files for the GeoIP library
|
||||||
|
])])
|
||||||
|
geolocation="GeoIP Legacy"
|
||||||
|
AC_DEFINE([HAVE_GEOLOCATION], 1, [Build using GeoIP.])
|
||||||
|
fi
|
||||||
|
AM_CONDITIONAL([GEOIP_LEGACY], [test "x$geoip" = "xlegacy"])
|
||||||
|
AM_CONDITIONAL([GEOIP_MMDB], [test "x$geoip" = "xmmdb"])
|
||||||
|
|
||||||
|
# GNU getline / POSIX.1-2008
|
||||||
|
AC_ARG_WITH(getline, [ --with-getline Build using dynamic line buffer.],
|
||||||
|
[with_getline=$withval], [with_getline=no])
|
||||||
|
|
||||||
|
if test "$with_getline" = "yes"; then
|
||||||
|
AC_DEFINE([WITH_GETLINE], 1, [Build using GNU getline.])
|
||||||
|
fi
|
||||||
|
|
||||||
|
# UTF8
|
||||||
|
AC_ARG_ENABLE(utf8, [ --enable-utf8 Enable ncurses library that handles wide characters],
|
||||||
|
[utf8="$enableval"], utf8=no)
|
||||||
|
|
||||||
|
if test "$utf8" = "yes"; then
|
||||||
|
libncursesw=ncursesw
|
||||||
|
# Simply called libncurses on OS X
|
||||||
|
case "$host_os" in
|
||||||
|
*darwin*) libncursesw=ncurses
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
AC_CHECK_LIB([$libncursesw], [mvaddwstr], [],
|
||||||
|
[AC_MSG_ERROR([*** Missing development libraries for ncursesw])])
|
||||||
|
AC_SEARCH_LIBS([tputs], [tinfow], ,[AC_MSG_ERROR([Cannot find a library providing tputs])])
|
||||||
|
AC_DEFINE([HAVE_LIBNCURSESW], [1], ["ncursesw is present."])
|
||||||
|
|
||||||
|
have_ncurses="yes"
|
||||||
|
AC_CHECK_HEADERS([ncursesw/ncurses.h],[have_ncurses=yes], [], [
|
||||||
|
#ifdef HAVE_NCURSESW_NCURSES_H
|
||||||
|
#include <ncursesw/ncurses.h>
|
||||||
|
#endif
|
||||||
|
])
|
||||||
|
|
||||||
|
AC_CHECK_HEADERS([ncurses.h],[have_ncurses=yes], [], [
|
||||||
|
#ifdef HAVE_NCURSES_H
|
||||||
|
#include <ncurses.h>
|
||||||
|
#endif
|
||||||
|
])
|
||||||
|
|
||||||
|
if test "$have_ncurses" != "yes"; then
|
||||||
|
AC_MSG_ERROR([Missing ncursesw header file])
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
AC_CHECK_LIB([ncurses], [refresh], [],
|
||||||
|
[AC_MSG_ERROR([*** Missing development libraries for ncurses])])
|
||||||
|
AC_SEARCH_LIBS([tputs], [tinfo], ,[AC_MSG_ERROR([Cannot find a library providing tputs])])
|
||||||
|
|
||||||
|
have_ncurses="yes"
|
||||||
|
AC_CHECK_HEADERS([ncurses/ncurses.h],[have_ncurses=yes], [], [
|
||||||
|
#ifdef HAVE_NCURSES_NCURSES_H
|
||||||
|
#include <ncurses/ncurses.h>
|
||||||
|
#endif
|
||||||
|
])
|
||||||
|
|
||||||
|
AC_CHECK_HEADERS([ncurses.h],[have_ncurses=yes], [], [
|
||||||
|
#ifdef HAVE_NCURSES_H
|
||||||
|
#include <ncurses.h>
|
||||||
|
#endif
|
||||||
|
])
|
||||||
|
|
||||||
|
AC_CHECK_HEADERS([curses.h],[have_ncurses=yes], [], [
|
||||||
|
#ifdef HAVE_CURSES_H
|
||||||
|
#include <curses.h>
|
||||||
|
#endif
|
||||||
|
])
|
||||||
|
|
||||||
|
if test "$have_ncurses" != "yes"; then
|
||||||
|
AC_MSG_ERROR([Missing ncursesw header file])
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Tokyo Cabinet
|
||||||
|
AC_ARG_ENABLE(tcb, [ --enable-tcb Enable TokyoCabinet database. Default is disabled],
|
||||||
|
[tcb="$enableval"], tcb=no)
|
||||||
|
|
||||||
|
WITH_TC=no
|
||||||
|
if test "$tcb" = "memhash"; then
|
||||||
|
WITH_TC=yes
|
||||||
|
AC_DEFINE([TCB_MEMHASH], [1], ["Build using on-memory hash database"])
|
||||||
|
elif test "$tcb" = "btree"; then
|
||||||
|
AC_DEFINE([TCB_BTREE], [1], ["Build using on-disk B+ Tree database"])
|
||||||
|
WITH_TC=yes
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "$WITH_TC" = "yes"; then
|
||||||
|
AC_CHECK_LIB([tokyocabinet], [tchdbnew], [],
|
||||||
|
[AC_MSG_ERROR([*** Missing development libraries for Tokyo Cabinet Database])])
|
||||||
|
|
||||||
|
AC_ARG_ENABLE([zlib], [ --disable-zlib Build without ZLIB compression],
|
||||||
|
[zlib="$enableval"], zlib=yes)
|
||||||
|
|
||||||
|
if test "$zlib" = "yes"; then
|
||||||
|
AC_CHECK_LIB(z, gzread, [Z_FLAG=-lz], AC_MSG_ERROR([
|
||||||
|
*** zlib is required. If zlib compression is not needed
|
||||||
|
*** you can use --disable-zlib.
|
||||||
|
*** Debian based distributions zlib1g-dev
|
||||||
|
*** Red Hat based distributions zlib-devel
|
||||||
|
]))
|
||||||
|
AC_DEFINE([HAVE_ZLIB], [1], ["Build using ZLIB"])
|
||||||
|
LDFLAGS="$LDFLAGS $Z_FLAG"
|
||||||
|
fi
|
||||||
|
|
||||||
|
AC_ARG_ENABLE([bzip], [ --disable-bzip Build without BZIP2 compression],
|
||||||
|
[bz2="$enableval"], bz2=yes)
|
||||||
|
|
||||||
|
if test "$bz2" = "yes"; then
|
||||||
|
AC_CHECK_LIB(bz2, BZ2_bzopen, [BZ2_FLAG=-lbz2], AC_MSG_ERROR([
|
||||||
|
*** BZIP2 is required. If BZIP2 compression is not needed
|
||||||
|
*** you can use --disable-bzip.
|
||||||
|
*** Debian based distributions libbz2-dev
|
||||||
|
*** Red Hat based distributions bzip2-devel
|
||||||
|
]))
|
||||||
|
AC_DEFINE([HAVE_BZ2], [1], ["Build using BZ2"])
|
||||||
|
LDFLAGS="$LDFLAGS $BZ2_FLAG"
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$host_os" in
|
||||||
|
*darwin*|*bsd*)
|
||||||
|
LDFLAGS="$LDFLAGS -ltokyocabinet -lc"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
LDFLAGS="$LDFLAGS -ltokyocabinet -lrt -lc"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
AM_CONDITIONAL([TCB], [test "$WITH_TC" = "yes"])
|
||||||
|
|
||||||
|
if test "$tcb" = "memhash"; then
|
||||||
|
storage="In-memory Hash Database (Tokyo Cabinet)"
|
||||||
|
elif test "$tcb" = "btree"; then
|
||||||
|
storage="On-disk B+ Tree Database (Tokyo Cabinet)"
|
||||||
|
else
|
||||||
|
storage="In-memory Hash Database (Default)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
HAS_SEDTR=no
|
||||||
|
AC_CHECK_PROG([SED_CHECK],[sed],[yes],[no])
|
||||||
|
if test x"$SED_CHECK" == x"yes" ; then
|
||||||
|
AC_CHECK_PROG([TR_CHECK],[tr],[yes],[no])
|
||||||
|
if test x"$TR_CHECK" == x"yes" ; then
|
||||||
|
HAS_SEDTR=yes
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
AM_CONDITIONAL([HAS_SEDTR], [test "x$HAS_SEDTR" = xyes])
|
||||||
|
|
||||||
|
# Solaris
|
||||||
|
AC_CHECK_LIB([nsl], [gethostbyname])
|
||||||
|
AC_CHECK_LIB([socket], [socket])
|
||||||
|
|
||||||
|
# Checks for header files.
|
||||||
|
AC_HEADER_STDC
|
||||||
|
AC_CHECK_HEADERS([arpa/inet.h])
|
||||||
|
AC_CHECK_HEADERS([fcntl.h])
|
||||||
|
AC_CHECK_HEADERS([inttypes.h])
|
||||||
|
AC_CHECK_HEADERS([limits.h])
|
||||||
|
AC_CHECK_HEADERS([locale.h])
|
||||||
|
AC_CHECK_HEADERS([netdb.h])
|
||||||
|
AC_CHECK_HEADERS([netinet/in.h])
|
||||||
|
AC_CHECK_HEADERS([stddef.h])
|
||||||
|
AC_CHECK_HEADERS([stdint.h])
|
||||||
|
AC_CHECK_HEADERS([stdlib.h])
|
||||||
|
AC_CHECK_HEADERS([string.h])
|
||||||
|
AC_CHECK_HEADERS([strings.h])
|
||||||
|
AC_CHECK_HEADERS([sys/socket.h])
|
||||||
|
AC_CHECK_HEADERS([sys/time.h])
|
||||||
|
AC_CHECK_HEADERS([unistd.h])
|
||||||
|
|
||||||
|
# Checks for typedefs, structures, and compiler characteristics.
|
||||||
|
AC_C_CONST
|
||||||
|
AC_CHECK_TYPES([ptrdiff_t])
|
||||||
|
AC_STRUCT_TM
|
||||||
|
AC_TYPE_INT64_T
|
||||||
|
AC_TYPE_INT8_T
|
||||||
|
AC_TYPE_OFF_T
|
||||||
|
AC_TYPE_SIZE_T
|
||||||
|
AC_TYPE_UINT32_T
|
||||||
|
AC_TYPE_UINT64_T
|
||||||
|
AC_TYPE_UINT8_T
|
||||||
|
|
||||||
|
# Checks for library functions.
|
||||||
|
AC_FUNC_FSEEKO
|
||||||
|
AC_FUNC_MEMCMP
|
||||||
|
AC_FUNC_MKTIME
|
||||||
|
AC_FUNC_STAT
|
||||||
|
AC_FUNC_STRFTIME
|
||||||
|
AC_FUNC_STRTOD
|
||||||
|
AC_CHECK_FUNCS([floor])
|
||||||
|
AC_CHECK_FUNCS([gethostbyaddr])
|
||||||
|
AC_CHECK_FUNCS([gethostbyname])
|
||||||
|
AC_CHECK_FUNCS([gettimeofday])
|
||||||
|
AC_CHECK_FUNCS([malloc])
|
||||||
|
AC_CHECK_FUNCS([memmove])
|
||||||
|
AC_CHECK_FUNCS([memset])
|
||||||
|
AC_CHECK_FUNCS([mkfifo])
|
||||||
|
AC_CHECK_FUNCS([realloc])
|
||||||
|
AC_CHECK_FUNCS([realpath])
|
||||||
|
AC_CHECK_FUNCS([regcomp])
|
||||||
|
AC_CHECK_FUNCS([select])
|
||||||
|
AC_CHECK_FUNCS([setlocale])
|
||||||
|
AC_CHECK_FUNCS([socket])
|
||||||
|
AC_CHECK_FUNCS([strcasecmp])
|
||||||
|
AC_CHECK_FUNCS([strchr])
|
||||||
|
AC_CHECK_FUNCS([strcspn])
|
||||||
|
AC_CHECK_FUNCS([strdup])
|
||||||
|
AC_CHECK_FUNCS([strerror])
|
||||||
|
AC_CHECK_FUNCS([strncasecmp])
|
||||||
|
AC_CHECK_FUNCS([strpbrk])
|
||||||
|
AC_CHECK_FUNCS([strrchr])
|
||||||
|
AC_CHECK_FUNCS([strspn])
|
||||||
|
AC_CHECK_FUNCS([strstr])
|
||||||
|
AC_CHECK_FUNCS([strtol])
|
||||||
|
AC_CHECK_FUNCS([strtoull])
|
||||||
|
|
||||||
|
AC_CONFIG_FILES([Makefile po/Makefile.in])
|
||||||
|
AC_OUTPUT
|
||||||
|
|
||||||
|
cat << EOF
|
||||||
|
|
||||||
|
Your build configuration:
|
||||||
|
|
||||||
|
Prefix : $prefix
|
||||||
|
Package : $PACKAGE_NAME
|
||||||
|
Version : $VERSION
|
||||||
|
Compiler flags : $CFLAGS
|
||||||
|
Linker flags : $LIBS $LDFLAGS
|
||||||
|
Dynamic buffer : $with_getline
|
||||||
|
Geolocation : $geolocation
|
||||||
|
Storage method : $storage
|
||||||
|
TLS/SSL : $openssl
|
||||||
|
Bugs : $PACKAGE_BUGREPORT
|
||||||
|
|
||||||
|
EOF
|
@ -0,0 +1,708 @@
|
|||||||
|
#! /bin/sh
|
||||||
|
# depcomp - compile a program generating dependencies as side-effects
|
||||||
|
|
||||||
|
scriptversion=2012-03-27.16; # UTC
|
||||||
|
|
||||||
|
# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010,
|
||||||
|
# 2011, 2012 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; either version 2, or (at your option)
|
||||||
|
# any later version.
|
||||||
|
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
# As a special exception to the GNU General Public License, if you
|
||||||
|
# distribute this file as part of a program that contains a
|
||||||
|
# configuration script generated by Autoconf, you may include it under
|
||||||
|
# the same distribution terms that you use for the rest of that program.
|
||||||
|
|
||||||
|
# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
|
||||||
|
|
||||||
|
case $1 in
|
||||||
|
'')
|
||||||
|
echo "$0: No command. Try '$0 --help' for more information." 1>&2
|
||||||
|
exit 1;
|
||||||
|
;;
|
||||||
|
-h | --h*)
|
||||||
|
cat <<\EOF
|
||||||
|
Usage: depcomp [--help] [--version] PROGRAM [ARGS]
|
||||||
|
|
||||||
|
Run PROGRAMS ARGS to compile a file, generating dependencies
|
||||||
|
as side-effects.
|
||||||
|
|
||||||
|
Environment variables:
|
||||||
|
depmode Dependency tracking mode.
|
||||||
|
source Source file read by 'PROGRAMS ARGS'.
|
||||||
|
object Object file output by 'PROGRAMS ARGS'.
|
||||||
|
DEPDIR directory where to store dependencies.
|
||||||
|
depfile Dependency file to output.
|
||||||
|
tmpdepfile Temporary file to use when outputting dependencies.
|
||||||
|
libtool Whether libtool is used (yes/no).
|
||||||
|
|
||||||
|
Report bugs to <bug-automake@gnu.org>.
|
||||||
|
EOF
|
||||||
|
exit $?
|
||||||
|
;;
|
||||||
|
-v | --v*)
|
||||||
|
echo "depcomp $scriptversion"
|
||||||
|
exit $?
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# A tabulation character.
|
||||||
|
tab=' '
|
||||||
|
# A newline character.
|
||||||
|
nl='
|
||||||
|
'
|
||||||
|
|
||||||
|
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
|
||||||
|
echo "depcomp: Variables source, object and depmode must be set" 1>&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
|
||||||
|
depfile=${depfile-`echo "$object" |
|
||||||
|
sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
|
||||||
|
tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
|
||||||
|
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
|
||||||
|
# Some modes work just like other modes, but use different flags. We
|
||||||
|
# parameterize here, but still list the modes in the big case below,
|
||||||
|
# to make depend.m4 easier to write. Note that we *cannot* use a case
|
||||||
|
# here, because this file can only contain one case statement.
|
||||||
|
if test "$depmode" = hp; then
|
||||||
|
# HP compiler uses -M and no extra arg.
|
||||||
|
gccflag=-M
|
||||||
|
depmode=gcc
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "$depmode" = dashXmstdout; then
|
||||||
|
# This is just like dashmstdout with a different argument.
|
||||||
|
dashmflag=-xM
|
||||||
|
depmode=dashmstdout
|
||||||
|
fi
|
||||||
|
|
||||||
|
cygpath_u="cygpath -u -f -"
|
||||||
|
if test "$depmode" = msvcmsys; then
|
||||||
|
# This is just like msvisualcpp but w/o cygpath translation.
|
||||||
|
# Just convert the backslash-escaped backslashes to single forward
|
||||||
|
# slashes to satisfy depend.m4
|
||||||
|
cygpath_u='sed s,\\\\,/,g'
|
||||||
|
depmode=msvisualcpp
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "$depmode" = msvc7msys; then
|
||||||
|
# This is just like msvc7 but w/o cygpath translation.
|
||||||
|
# Just convert the backslash-escaped backslashes to single forward
|
||||||
|
# slashes to satisfy depend.m4
|
||||||
|
cygpath_u='sed s,\\\\,/,g'
|
||||||
|
depmode=msvc7
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "$depmode" = xlc; then
|
||||||
|
# IBM C/C++ Compilers xlc/xlC can output gcc-like dependency informations.
|
||||||
|
gccflag=-qmakedep=gcc,-MF
|
||||||
|
depmode=gcc
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$depmode" in
|
||||||
|
gcc3)
|
||||||
|
## gcc 3 implements dependency tracking that does exactly what
|
||||||
|
## we want. Yay! Note: for some reason libtool 1.4 doesn't like
|
||||||
|
## it if -MD -MP comes after the -MF stuff. Hmm.
|
||||||
|
## Unfortunately, FreeBSD c89 acceptance of flags depends upon
|
||||||
|
## the command line argument order; so add the flags where they
|
||||||
|
## appear in depend2.am. Note that the slowdown incurred here
|
||||||
|
## affects only configure: in makefiles, %FASTDEP% shortcuts this.
|
||||||
|
for arg
|
||||||
|
do
|
||||||
|
case $arg in
|
||||||
|
-c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
|
||||||
|
*) set fnord "$@" "$arg" ;;
|
||||||
|
esac
|
||||||
|
shift # fnord
|
||||||
|
shift # $arg
|
||||||
|
done
|
||||||
|
"$@"
|
||||||
|
stat=$?
|
||||||
|
if test $stat -eq 0; then :
|
||||||
|
else
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
exit $stat
|
||||||
|
fi
|
||||||
|
mv "$tmpdepfile" "$depfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
gcc)
|
||||||
|
## There are various ways to get dependency output from gcc. Here's
|
||||||
|
## why we pick this rather obscure method:
|
||||||
|
## - Don't want to use -MD because we'd like the dependencies to end
|
||||||
|
## up in a subdir. Having to rename by hand is ugly.
|
||||||
|
## (We might end up doing this anyway to support other compilers.)
|
||||||
|
## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
|
||||||
|
## -MM, not -M (despite what the docs say).
|
||||||
|
## - Using -M directly means running the compiler twice (even worse
|
||||||
|
## than renaming).
|
||||||
|
if test -z "$gccflag"; then
|
||||||
|
gccflag=-MD,
|
||||||
|
fi
|
||||||
|
"$@" -Wp,"$gccflag$tmpdepfile"
|
||||||
|
stat=$?
|
||||||
|
if test $stat -eq 0; then :
|
||||||
|
else
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
exit $stat
|
||||||
|
fi
|
||||||
|
rm -f "$depfile"
|
||||||
|
echo "$object : \\" > "$depfile"
|
||||||
|
alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
|
||||||
|
## The second -e expression handles DOS-style file names with drive letters.
|
||||||
|
sed -e 's/^[^:]*: / /' \
|
||||||
|
-e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
|
||||||
|
## This next piece of magic avoids the "deleted header file" problem.
|
||||||
|
## The problem is that when a header file which appears in a .P file
|
||||||
|
## is deleted, the dependency causes make to die (because there is
|
||||||
|
## typically no way to rebuild the header). We avoid this by adding
|
||||||
|
## dummy dependencies for each header file. Too bad gcc doesn't do
|
||||||
|
## this for us directly.
|
||||||
|
tr ' ' "$nl" < "$tmpdepfile" |
|
||||||
|
## Some versions of gcc put a space before the ':'. On the theory
|
||||||
|
## that the space means something, we add a space to the output as
|
||||||
|
## well. hp depmode also adds that space, but also prefixes the VPATH
|
||||||
|
## to the object. Take care to not repeat it in the output.
|
||||||
|
## Some versions of the HPUX 10.20 sed can't process this invocation
|
||||||
|
## correctly. Breaking it into two sed invocations is a workaround.
|
||||||
|
sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
|
||||||
|
| sed -e 's/$/ :/' >> "$depfile"
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
hp)
|
||||||
|
# This case exists only to let depend.m4 do its work. It works by
|
||||||
|
# looking at the text of this script. This case will never be run,
|
||||||
|
# since it is checked for above.
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
|
||||||
|
sgi)
|
||||||
|
if test "$libtool" = yes; then
|
||||||
|
"$@" "-Wp,-MDupdate,$tmpdepfile"
|
||||||
|
else
|
||||||
|
"$@" -MDupdate "$tmpdepfile"
|
||||||
|
fi
|
||||||
|
stat=$?
|
||||||
|
if test $stat -eq 0; then :
|
||||||
|
else
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
exit $stat
|
||||||
|
fi
|
||||||
|
rm -f "$depfile"
|
||||||
|
|
||||||
|
if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
|
||||||
|
echo "$object : \\" > "$depfile"
|
||||||
|
|
||||||
|
# Clip off the initial element (the dependent). Don't try to be
|
||||||
|
# clever and replace this with sed code, as IRIX sed won't handle
|
||||||
|
# lines with more than a fixed number of characters (4096 in
|
||||||
|
# IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
|
||||||
|
# the IRIX cc adds comments like '#:fec' to the end of the
|
||||||
|
# dependency line.
|
||||||
|
tr ' ' "$nl" < "$tmpdepfile" \
|
||||||
|
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
|
||||||
|
tr "$nl" ' ' >> "$depfile"
|
||||||
|
echo >> "$depfile"
|
||||||
|
|
||||||
|
# The second pass generates a dummy entry for each header file.
|
||||||
|
tr ' ' "$nl" < "$tmpdepfile" \
|
||||||
|
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
|
||||||
|
>> "$depfile"
|
||||||
|
else
|
||||||
|
# The sourcefile does not contain any dependencies, so just
|
||||||
|
# store a dummy comment line, to avoid errors with the Makefile
|
||||||
|
# "include basename.Plo" scheme.
|
||||||
|
echo "#dummy" > "$depfile"
|
||||||
|
fi
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
xlc)
|
||||||
|
# This case exists only to let depend.m4 do its work. It works by
|
||||||
|
# looking at the text of this script. This case will never be run,
|
||||||
|
# since it is checked for above.
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
|
||||||
|
aix)
|
||||||
|
# The C for AIX Compiler uses -M and outputs the dependencies
|
||||||
|
# in a .u file. In older versions, this file always lives in the
|
||||||
|
# current directory. Also, the AIX compiler puts '$object:' at the
|
||||||
|
# start of each line; $object doesn't have directory information.
|
||||||
|
# Version 6 uses the directory in both cases.
|
||||||
|
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
|
||||||
|
test "x$dir" = "x$object" && dir=
|
||||||
|
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
|
||||||
|
if test "$libtool" = yes; then
|
||||||
|
tmpdepfile1=$dir$base.u
|
||||||
|
tmpdepfile2=$base.u
|
||||||
|
tmpdepfile3=$dir.libs/$base.u
|
||||||
|
"$@" -Wc,-M
|
||||||
|
else
|
||||||
|
tmpdepfile1=$dir$base.u
|
||||||
|
tmpdepfile2=$dir$base.u
|
||||||
|
tmpdepfile3=$dir$base.u
|
||||||
|
"$@" -M
|
||||||
|
fi
|
||||||
|
stat=$?
|
||||||
|
|
||||||
|
if test $stat -eq 0; then :
|
||||||
|
else
|
||||||
|
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
|
||||||
|
exit $stat
|
||||||
|
fi
|
||||||
|
|
||||||
|
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
|
||||||
|
do
|
||||||
|
test -f "$tmpdepfile" && break
|
||||||
|
done
|
||||||
|
if test -f "$tmpdepfile"; then
|
||||||
|
# Each line is of the form 'foo.o: dependent.h'.
|
||||||
|
# Do two passes, one to just change these to
|
||||||
|
# '$object: dependent.h' and one to simply 'dependent.h:'.
|
||||||
|
sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
|
||||||
|
sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
|
||||||
|
else
|
||||||
|
# The sourcefile does not contain any dependencies, so just
|
||||||
|
# store a dummy comment line, to avoid errors with the Makefile
|
||||||
|
# "include basename.Plo" scheme.
|
||||||
|
echo "#dummy" > "$depfile"
|
||||||
|
fi
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
icc)
|
||||||
|
# Intel's C compiler anf tcc (Tiny C Compiler) understand '-MD -MF file'.
|
||||||
|
# However on
|
||||||
|
# $CC -MD -MF foo.d -c -o sub/foo.o sub/foo.c
|
||||||
|
# ICC 7.0 will fill foo.d with something like
|
||||||
|
# foo.o: sub/foo.c
|
||||||
|
# foo.o: sub/foo.h
|
||||||
|
# which is wrong. We want
|
||||||
|
# sub/foo.o: sub/foo.c
|
||||||
|
# sub/foo.o: sub/foo.h
|
||||||
|
# sub/foo.c:
|
||||||
|
# sub/foo.h:
|
||||||
|
# ICC 7.1 will output
|
||||||
|
# foo.o: sub/foo.c sub/foo.h
|
||||||
|
# and will wrap long lines using '\':
|
||||||
|
# foo.o: sub/foo.c ... \
|
||||||
|
# sub/foo.h ... \
|
||||||
|
# ...
|
||||||
|
# tcc 0.9.26 (FIXME still under development at the moment of writing)
|
||||||
|
# will emit a similar output, but also prepend the continuation lines
|
||||||
|
# with horizontal tabulation characters.
|
||||||
|
"$@" -MD -MF "$tmpdepfile"
|
||||||
|
stat=$?
|
||||||
|
if test $stat -eq 0; then :
|
||||||
|
else
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
exit $stat
|
||||||
|
fi
|
||||||
|
rm -f "$depfile"
|
||||||
|
# Each line is of the form 'foo.o: dependent.h',
|
||||||
|
# or 'foo.o: dep1.h dep2.h \', or ' dep3.h dep4.h \'.
|
||||||
|
# Do two passes, one to just change these to
|
||||||
|
# '$object: dependent.h' and one to simply 'dependent.h:'.
|
||||||
|
sed -e "s/^[ $tab][ $tab]*/ /" -e "s,^[^:]*:,$object :," \
|
||||||
|
< "$tmpdepfile" > "$depfile"
|
||||||
|
sed '
|
||||||
|
s/[ '"$tab"'][ '"$tab"']*/ /g
|
||||||
|
s/^ *//
|
||||||
|
s/ *\\*$//
|
||||||
|
s/^[^:]*: *//
|
||||||
|
/^$/d
|
||||||
|
/:$/d
|
||||||
|
s/$/ :/
|
||||||
|
' < "$tmpdepfile" >> "$depfile"
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
hp2)
|
||||||
|
# The "hp" stanza above does not work with aCC (C++) and HP's ia64
|
||||||
|
# compilers, which have integrated preprocessors. The correct option
|
||||||
|
# to use with these is +Maked; it writes dependencies to a file named
|
||||||
|
# 'foo.d', which lands next to the object file, wherever that
|
||||||
|
# happens to be.
|
||||||
|
# Much of this is similar to the tru64 case; see comments there.
|
||||||
|
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
|
||||||
|
test "x$dir" = "x$object" && dir=
|
||||||
|
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
|
||||||
|
if test "$libtool" = yes; then
|
||||||
|
tmpdepfile1=$dir$base.d
|
||||||
|
tmpdepfile2=$dir.libs/$base.d
|
||||||
|
"$@" -Wc,+Maked
|
||||||
|
else
|
||||||
|
tmpdepfile1=$dir$base.d
|
||||||
|
tmpdepfile2=$dir$base.d
|
||||||
|
"$@" +Maked
|
||||||
|
fi
|
||||||
|
stat=$?
|
||||||
|
if test $stat -eq 0; then :
|
||||||
|
else
|
||||||
|
rm -f "$tmpdepfile1" "$tmpdepfile2"
|
||||||
|
exit $stat
|
||||||
|
fi
|
||||||
|
|
||||||
|
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
|
||||||
|
do
|
||||||
|
test -f "$tmpdepfile" && break
|
||||||
|
done
|
||||||
|
if test -f "$tmpdepfile"; then
|
||||||
|
sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
|
||||||
|
# Add 'dependent.h:' lines.
|
||||||
|
sed -ne '2,${
|
||||||
|
s/^ *//
|
||||||
|
s/ \\*$//
|
||||||
|
s/$/:/
|
||||||
|
p
|
||||||
|
}' "$tmpdepfile" >> "$depfile"
|
||||||
|
else
|
||||||
|
echo "#dummy" > "$depfile"
|
||||||
|
fi
|
||||||
|
rm -f "$tmpdepfile" "$tmpdepfile2"
|
||||||
|
;;
|
||||||
|
|
||||||
|
tru64)
|
||||||
|
# The Tru64 compiler uses -MD to generate dependencies as a side
|
||||||
|
# effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
|
||||||
|
# At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
|
||||||
|
# dependencies in 'foo.d' instead, so we check for that too.
|
||||||
|
# Subdirectories are respected.
|
||||||
|
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
|
||||||
|
test "x$dir" = "x$object" && dir=
|
||||||
|
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
|
||||||
|
|
||||||
|
if test "$libtool" = yes; then
|
||||||
|
# With Tru64 cc, shared objects can also be used to make a
|
||||||
|
# static library. This mechanism is used in libtool 1.4 series to
|
||||||
|
# handle both shared and static libraries in a single compilation.
|
||||||
|
# With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
|
||||||
|
#
|
||||||
|
# With libtool 1.5 this exception was removed, and libtool now
|
||||||
|
# generates 2 separate objects for the 2 libraries. These two
|
||||||
|
# compilations output dependencies in $dir.libs/$base.o.d and
|
||||||
|
# in $dir$base.o.d. We have to check for both files, because
|
||||||
|
# one of the two compilations can be disabled. We should prefer
|
||||||
|
# $dir$base.o.d over $dir.libs/$base.o.d because the latter is
|
||||||
|
# automatically cleaned when .libs/ is deleted, while ignoring
|
||||||
|
# the former would cause a distcleancheck panic.
|
||||||
|
tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4
|
||||||
|
tmpdepfile2=$dir$base.o.d # libtool 1.5
|
||||||
|
tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5
|
||||||
|
tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504
|
||||||
|
"$@" -Wc,-MD
|
||||||
|
else
|
||||||
|
tmpdepfile1=$dir$base.o.d
|
||||||
|
tmpdepfile2=$dir$base.d
|
||||||
|
tmpdepfile3=$dir$base.d
|
||||||
|
tmpdepfile4=$dir$base.d
|
||||||
|
"$@" -MD
|
||||||
|
fi
|
||||||
|
|
||||||
|
stat=$?
|
||||||
|
if test $stat -eq 0; then :
|
||||||
|
else
|
||||||
|
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
|
||||||
|
exit $stat
|
||||||
|
fi
|
||||||
|
|
||||||
|
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
|
||||||
|
do
|
||||||
|
test -f "$tmpdepfile" && break
|
||||||
|
done
|
||||||
|
if test -f "$tmpdepfile"; then
|
||||||
|
sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
|
||||||
|
sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
|
||||||
|
else
|
||||||
|
echo "#dummy" > "$depfile"
|
||||||
|
fi
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
msvc7)
|
||||||
|
if test "$libtool" = yes; then
|
||||||
|
showIncludes=-Wc,-showIncludes
|
||||||
|
else
|
||||||
|
showIncludes=-showIncludes
|
||||||
|
fi
|
||||||
|
"$@" $showIncludes > "$tmpdepfile"
|
||||||
|
stat=$?
|
||||||
|
grep -v '^Note: including file: ' "$tmpdepfile"
|
||||||
|
if test "$stat" = 0; then :
|
||||||
|
else
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
exit $stat
|
||||||
|
fi
|
||||||
|
rm -f "$depfile"
|
||||||
|
echo "$object : \\" > "$depfile"
|
||||||
|
# The first sed program below extracts the file names and escapes
|
||||||
|
# backslashes for cygpath. The second sed program outputs the file
|
||||||
|
# name when reading, but also accumulates all include files in the
|
||||||
|
# hold buffer in order to output them again at the end. This only
|
||||||
|
# works with sed implementations that can handle large buffers.
|
||||||
|
sed < "$tmpdepfile" -n '
|
||||||
|
/^Note: including file: *\(.*\)/ {
|
||||||
|
s//\1/
|
||||||
|
s/\\/\\\\/g
|
||||||
|
p
|
||||||
|
}' | $cygpath_u | sort -u | sed -n '
|
||||||
|
s/ /\\ /g
|
||||||
|
s/\(.*\)/'"$tab"'\1 \\/p
|
||||||
|
s/.\(.*\) \\/\1:/
|
||||||
|
H
|
||||||
|
$ {
|
||||||
|
s/.*/'"$tab"'/
|
||||||
|
G
|
||||||
|
p
|
||||||
|
}' >> "$depfile"
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
msvc7msys)
|
||||||
|
# This case exists only to let depend.m4 do its work. It works by
|
||||||
|
# looking at the text of this script. This case will never be run,
|
||||||
|
# since it is checked for above.
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
|
||||||
|
#nosideeffect)
|
||||||
|
# This comment above is used by automake to tell side-effect
|
||||||
|
# dependency tracking mechanisms from slower ones.
|
||||||
|
|
||||||
|
dashmstdout)
|
||||||
|
# Important note: in order to support this mode, a compiler *must*
|
||||||
|
# always write the preprocessed file to stdout, regardless of -o.
|
||||||
|
"$@" || exit $?
|
||||||
|
|
||||||
|
# Remove the call to Libtool.
|
||||||
|
if test "$libtool" = yes; then
|
||||||
|
while test "X$1" != 'X--mode=compile'; do
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Remove '-o $object'.
|
||||||
|
IFS=" "
|
||||||
|
for arg
|
||||||
|
do
|
||||||
|
case $arg in
|
||||||
|
-o)
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
$object)
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
set fnord "$@" "$arg"
|
||||||
|
shift # fnord
|
||||||
|
shift # $arg
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
test -z "$dashmflag" && dashmflag=-M
|
||||||
|
# Require at least two characters before searching for ':'
|
||||||
|
# in the target name. This is to cope with DOS-style filenames:
|
||||||
|
# a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
|
||||||
|
"$@" $dashmflag |
|
||||||
|
sed 's:^['"$tab"' ]*[^:'"$tab"' ][^:][^:]*\:['"$tab"' ]*:'"$object"'\: :' > "$tmpdepfile"
|
||||||
|
rm -f "$depfile"
|
||||||
|
cat < "$tmpdepfile" > "$depfile"
|
||||||
|
tr ' ' "$nl" < "$tmpdepfile" | \
|
||||||
|
## Some versions of the HPUX 10.20 sed can't process this invocation
|
||||||
|
## correctly. Breaking it into two sed invocations is a workaround.
|
||||||
|
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
dashXmstdout)
|
||||||
|
# This case only exists to satisfy depend.m4. It is never actually
|
||||||
|
# run, as this mode is specially recognized in the preamble.
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
|
||||||
|
makedepend)
|
||||||
|
"$@" || exit $?
|
||||||
|
# Remove any Libtool call
|
||||||
|
if test "$libtool" = yes; then
|
||||||
|
while test "X$1" != 'X--mode=compile'; do
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
# X makedepend
|
||||||
|
shift
|
||||||
|
cleared=no eat=no
|
||||||
|
for arg
|
||||||
|
do
|
||||||
|
case $cleared in
|
||||||
|
no)
|
||||||
|
set ""; shift
|
||||||
|
cleared=yes ;;
|
||||||
|
esac
|
||||||
|
if test $eat = yes; then
|
||||||
|
eat=no
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
case "$arg" in
|
||||||
|
-D*|-I*)
|
||||||
|
set fnord "$@" "$arg"; shift ;;
|
||||||
|
# Strip any option that makedepend may not understand. Remove
|
||||||
|
# the object too, otherwise makedepend will parse it as a source file.
|
||||||
|
-arch)
|
||||||
|
eat=yes ;;
|
||||||
|
-*|$object)
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
set fnord "$@" "$arg"; shift ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
obj_suffix=`echo "$object" | sed 's/^.*\././'`
|
||||||
|
touch "$tmpdepfile"
|
||||||
|
${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
|
||||||
|
rm -f "$depfile"
|
||||||
|
# makedepend may prepend the VPATH from the source file name to the object.
|
||||||
|
# No need to regex-escape $object, excess matching of '.' is harmless.
|
||||||
|
sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
|
||||||
|
sed '1,2d' "$tmpdepfile" | tr ' ' "$nl" | \
|
||||||
|
## Some versions of the HPUX 10.20 sed can't process this invocation
|
||||||
|
## correctly. Breaking it into two sed invocations is a workaround.
|
||||||
|
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
|
||||||
|
rm -f "$tmpdepfile" "$tmpdepfile".bak
|
||||||
|
;;
|
||||||
|
|
||||||
|
cpp)
|
||||||
|
# Important note: in order to support this mode, a compiler *must*
|
||||||
|
# always write the preprocessed file to stdout.
|
||||||
|
"$@" || exit $?
|
||||||
|
|
||||||
|
# Remove the call to Libtool.
|
||||||
|
if test "$libtool" = yes; then
|
||||||
|
while test "X$1" != 'X--mode=compile'; do
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Remove '-o $object'.
|
||||||
|
IFS=" "
|
||||||
|
for arg
|
||||||
|
do
|
||||||
|
case $arg in
|
||||||
|
-o)
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
$object)
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
set fnord "$@" "$arg"
|
||||||
|
shift # fnord
|
||||||
|
shift # $arg
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
"$@" -E |
|
||||||
|
sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
|
||||||
|
-e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
|
||||||
|
sed '$ s: \\$::' > "$tmpdepfile"
|
||||||
|
rm -f "$depfile"
|
||||||
|
echo "$object : \\" > "$depfile"
|
||||||
|
cat < "$tmpdepfile" >> "$depfile"
|
||||||
|
sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
msvisualcpp)
|
||||||
|
# Important note: in order to support this mode, a compiler *must*
|
||||||
|
# always write the preprocessed file to stdout.
|
||||||
|
"$@" || exit $?
|
||||||
|
|
||||||
|
# Remove the call to Libtool.
|
||||||
|
if test "$libtool" = yes; then
|
||||||
|
while test "X$1" != 'X--mode=compile'; do
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
|
||||||
|
IFS=" "
|
||||||
|
for arg
|
||||||
|
do
|
||||||
|
case "$arg" in
|
||||||
|
-o)
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
$object)
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
"-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
|
||||||
|
set fnord "$@"
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
set fnord "$@" "$arg"
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
"$@" -E 2>/dev/null |
|
||||||
|
sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
|
||||||
|
rm -f "$depfile"
|
||||||
|
echo "$object : \\" > "$depfile"
|
||||||
|
sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
|
||||||
|
echo "$tab" >> "$depfile"
|
||||||
|
sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
msvcmsys)
|
||||||
|
# This case exists only to let depend.m4 do its work. It works by
|
||||||
|
# looking at the text of this script. This case will never be run,
|
||||||
|
# since it is checked for above.
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
|
||||||
|
none)
|
||||||
|
exec "$@"
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
echo "Unknown depmode $depmode" 1>&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
# Local Variables:
|
||||||
|
# mode: shell-script
|
||||||
|
# sh-indentation: 2
|
||||||
|
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||||
|
# time-stamp-start: "scriptversion="
|
||||||
|
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||||
|
# time-stamp-time-zone: "UTC"
|
||||||
|
# time-stamp-end: "; # UTC"
|
||||||
|
# End:
|
@ -0,0 +1,527 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# install - install a program, script, or datafile
|
||||||
|
|
||||||
|
scriptversion=2011-01-19.21; # UTC
|
||||||
|
|
||||||
|
# This originates from X11R5 (mit/util/scripts/install.sh), which was
|
||||||
|
# later released in X11R6 (xc/config/util/install.sh) with the
|
||||||
|
# following copyright and license.
|
||||||
|
#
|
||||||
|
# Copyright (C) 1994 X Consortium
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documentation files (the "Software"), to
|
||||||
|
# deal in the Software without restriction, including without limitation the
|
||||||
|
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
# sell copies of the Software, and to permit persons to whom the Software is
|
||||||
|
# furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
|
||||||
|
# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
|
||||||
|
# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
#
|
||||||
|
# Except as contained in this notice, the name of the X Consortium shall not
|
||||||
|
# be used in advertising or otherwise to promote the sale, use or other deal-
|
||||||
|
# ings in this Software without prior written authorization from the X Consor-
|
||||||
|
# tium.
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# FSF changes to this file are in the public domain.
|
||||||
|
#
|
||||||
|
# Calling this script install-sh is preferred over install.sh, to prevent
|
||||||
|
# `make' implicit rules from creating a file called install from it
|
||||||
|
# when there is no Makefile.
|
||||||
|
#
|
||||||
|
# This script is compatible with the BSD install script, but was written
|
||||||
|
# from scratch.
|
||||||
|
|
||||||
|
nl='
|
||||||
|
'
|
||||||
|
IFS=" "" $nl"
|
||||||
|
|
||||||
|
# set DOITPROG to echo to test this script
|
||||||
|
|
||||||
|
# Don't use :- since 4.3BSD and earlier shells don't like it.
|
||||||
|
doit=${DOITPROG-}
|
||||||
|
if test -z "$doit"; then
|
||||||
|
doit_exec=exec
|
||||||
|
else
|
||||||
|
doit_exec=$doit
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Put in absolute file names if you don't have them in your path;
|
||||||
|
# or use environment vars.
|
||||||
|
|
||||||
|
chgrpprog=${CHGRPPROG-chgrp}
|
||||||
|
chmodprog=${CHMODPROG-chmod}
|
||||||
|
chownprog=${CHOWNPROG-chown}
|
||||||
|
cmpprog=${CMPPROG-cmp}
|
||||||
|
cpprog=${CPPROG-cp}
|
||||||
|
mkdirprog=${MKDIRPROG-mkdir}
|
||||||
|
mvprog=${MVPROG-mv}
|
||||||
|
rmprog=${RMPROG-rm}
|
||||||
|
stripprog=${STRIPPROG-strip}
|
||||||
|
|
||||||
|
posix_glob='?'
|
||||||
|
initialize_posix_glob='
|
||||||
|
test "$posix_glob" != "?" || {
|
||||||
|
if (set -f) 2>/dev/null; then
|
||||||
|
posix_glob=
|
||||||
|
else
|
||||||
|
posix_glob=:
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
'
|
||||||
|
|
||||||
|
posix_mkdir=
|
||||||
|
|
||||||
|
# Desired mode of installed file.
|
||||||
|
mode=0755
|
||||||
|
|
||||||
|
chgrpcmd=
|
||||||
|
chmodcmd=$chmodprog
|
||||||
|
chowncmd=
|
||||||
|
mvcmd=$mvprog
|
||||||
|
rmcmd="$rmprog -f"
|
||||||
|
stripcmd=
|
||||||
|
|
||||||
|
src=
|
||||||
|
dst=
|
||||||
|
dir_arg=
|
||||||
|
dst_arg=
|
||||||
|
|
||||||
|
copy_on_change=false
|
||||||
|
no_target_directory=
|
||||||
|
|
||||||
|
usage="\
|
||||||
|
Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
|
||||||
|
or: $0 [OPTION]... SRCFILES... DIRECTORY
|
||||||
|
or: $0 [OPTION]... -t DIRECTORY SRCFILES...
|
||||||
|
or: $0 [OPTION]... -d DIRECTORIES...
|
||||||
|
|
||||||
|
In the 1st form, copy SRCFILE to DSTFILE.
|
||||||
|
In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
|
||||||
|
In the 4th, create DIRECTORIES.
|
||||||
|
|
||||||
|
Options:
|
||||||
|
--help display this help and exit.
|
||||||
|
--version display version info and exit.
|
||||||
|
|
||||||
|
-c (ignored)
|
||||||
|
-C install only if different (preserve the last data modification time)
|
||||||
|
-d create directories instead of installing files.
|
||||||
|
-g GROUP $chgrpprog installed files to GROUP.
|
||||||
|
-m MODE $chmodprog installed files to MODE.
|
||||||
|
-o USER $chownprog installed files to USER.
|
||||||
|
-s $stripprog installed files.
|
||||||
|
-t DIRECTORY install into DIRECTORY.
|
||||||
|
-T report an error if DSTFILE is a directory.
|
||||||
|
|
||||||
|
Environment variables override the default commands:
|
||||||
|
CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
|
||||||
|
RMPROG STRIPPROG
|
||||||
|
"
|
||||||
|
|
||||||
|
while test $# -ne 0; do
|
||||||
|
case $1 in
|
||||||
|
-c) ;;
|
||||||
|
|
||||||
|
-C) copy_on_change=true;;
|
||||||
|
|
||||||
|
-d) dir_arg=true;;
|
||||||
|
|
||||||
|
-g) chgrpcmd="$chgrpprog $2"
|
||||||
|
shift;;
|
||||||
|
|
||||||
|
--help) echo "$usage"; exit $?;;
|
||||||
|
|
||||||
|
-m) mode=$2
|
||||||
|
case $mode in
|
||||||
|
*' '* | *' '* | *'
|
||||||
|
'* | *'*'* | *'?'* | *'['*)
|
||||||
|
echo "$0: invalid mode: $mode" >&2
|
||||||
|
exit 1;;
|
||||||
|
esac
|
||||||
|
shift;;
|
||||||
|
|
||||||
|
-o) chowncmd="$chownprog $2"
|
||||||
|
shift;;
|
||||||
|
|
||||||
|
-s) stripcmd=$stripprog;;
|
||||||
|
|
||||||
|
-t) dst_arg=$2
|
||||||
|
# Protect names problematic for `test' and other utilities.
|
||||||
|
case $dst_arg in
|
||||||
|
-* | [=\(\)!]) dst_arg=./$dst_arg;;
|
||||||
|
esac
|
||||||
|
shift;;
|
||||||
|
|
||||||
|
-T) no_target_directory=true;;
|
||||||
|
|
||||||
|
--version) echo "$0 $scriptversion"; exit $?;;
|
||||||
|
|
||||||
|
--) shift
|
||||||
|
break;;
|
||||||
|
|
||||||
|
-*) echo "$0: invalid option: $1" >&2
|
||||||
|
exit 1;;
|
||||||
|
|
||||||
|
*) break;;
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
|
if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
|
||||||
|
# When -d is used, all remaining arguments are directories to create.
|
||||||
|
# When -t is used, the destination is already specified.
|
||||||
|
# Otherwise, the last argument is the destination. Remove it from $@.
|
||||||
|
for arg
|
||||||
|
do
|
||||||
|
if test -n "$dst_arg"; then
|
||||||
|
# $@ is not empty: it contains at least $arg.
|
||||||
|
set fnord "$@" "$dst_arg"
|
||||||
|
shift # fnord
|
||||||
|
fi
|
||||||
|
shift # arg
|
||||||
|
dst_arg=$arg
|
||||||
|
# Protect names problematic for `test' and other utilities.
|
||||||
|
case $dst_arg in
|
||||||
|
-* | [=\(\)!]) dst_arg=./$dst_arg;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test $# -eq 0; then
|
||||||
|
if test -z "$dir_arg"; then
|
||||||
|
echo "$0: no input file specified." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
# It's OK to call `install-sh -d' without argument.
|
||||||
|
# This can happen when creating conditional directories.
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -z "$dir_arg"; then
|
||||||
|
do_exit='(exit $ret); exit $ret'
|
||||||
|
trap "ret=129; $do_exit" 1
|
||||||
|
trap "ret=130; $do_exit" 2
|
||||||
|
trap "ret=141; $do_exit" 13
|
||||||
|
trap "ret=143; $do_exit" 15
|
||||||
|
|
||||||
|
# Set umask so as not to create temps with too-generous modes.
|
||||||
|
# However, 'strip' requires both read and write access to temps.
|
||||||
|
case $mode in
|
||||||
|
# Optimize common cases.
|
||||||
|
*644) cp_umask=133;;
|
||||||
|
*755) cp_umask=22;;
|
||||||
|
|
||||||
|
*[0-7])
|
||||||
|
if test -z "$stripcmd"; then
|
||||||
|
u_plus_rw=
|
||||||
|
else
|
||||||
|
u_plus_rw='% 200'
|
||||||
|
fi
|
||||||
|
cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
|
||||||
|
*)
|
||||||
|
if test -z "$stripcmd"; then
|
||||||
|
u_plus_rw=
|
||||||
|
else
|
||||||
|
u_plus_rw=,u+rw
|
||||||
|
fi
|
||||||
|
cp_umask=$mode$u_plus_rw;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
|
||||||
|
for src
|
||||||
|
do
|
||||||
|
# Protect names problematic for `test' and other utilities.
|
||||||
|
case $src in
|
||||||
|
-* | [=\(\)!]) src=./$src;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if test -n "$dir_arg"; then
|
||||||
|
dst=$src
|
||||||
|
dstdir=$dst
|
||||||
|
test -d "$dstdir"
|
||||||
|
dstdir_status=$?
|
||||||
|
else
|
||||||
|
|
||||||
|
# Waiting for this to be detected by the "$cpprog $src $dsttmp" command
|
||||||
|
# might cause directories to be created, which would be especially bad
|
||||||
|
# if $src (and thus $dsttmp) contains '*'.
|
||||||
|
if test ! -f "$src" && test ! -d "$src"; then
|
||||||
|
echo "$0: $src does not exist." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -z "$dst_arg"; then
|
||||||
|
echo "$0: no destination specified." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
dst=$dst_arg
|
||||||
|
|
||||||
|
# If destination is a directory, append the input filename; won't work
|
||||||
|
# if double slashes aren't ignored.
|
||||||
|
if test -d "$dst"; then
|
||||||
|
if test -n "$no_target_directory"; then
|
||||||
|
echo "$0: $dst_arg: Is a directory" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
dstdir=$dst
|
||||||
|
dst=$dstdir/`basename "$src"`
|
||||||
|
dstdir_status=0
|
||||||
|
else
|
||||||
|
# Prefer dirname, but fall back on a substitute if dirname fails.
|
||||||
|
dstdir=`
|
||||||
|
(dirname "$dst") 2>/dev/null ||
|
||||||
|
expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
|
||||||
|
X"$dst" : 'X\(//\)[^/]' \| \
|
||||||
|
X"$dst" : 'X\(//\)$' \| \
|
||||||
|
X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
|
||||||
|
echo X"$dst" |
|
||||||
|
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
|
||||||
|
s//\1/
|
||||||
|
q
|
||||||
|
}
|
||||||
|
/^X\(\/\/\)[^/].*/{
|
||||||
|
s//\1/
|
||||||
|
q
|
||||||
|
}
|
||||||
|
/^X\(\/\/\)$/{
|
||||||
|
s//\1/
|
||||||
|
q
|
||||||
|
}
|
||||||
|
/^X\(\/\).*/{
|
||||||
|
s//\1/
|
||||||
|
q
|
||||||
|
}
|
||||||
|
s/.*/./; q'
|
||||||
|
`
|
||||||
|
|
||||||
|
test -d "$dstdir"
|
||||||
|
dstdir_status=$?
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
obsolete_mkdir_used=false
|
||||||
|
|
||||||
|
if test $dstdir_status != 0; then
|
||||||
|
case $posix_mkdir in
|
||||||
|
'')
|
||||||
|
# Create intermediate dirs using mode 755 as modified by the umask.
|
||||||
|
# This is like FreeBSD 'install' as of 1997-10-28.
|
||||||
|
umask=`umask`
|
||||||
|
case $stripcmd.$umask in
|
||||||
|
# Optimize common cases.
|
||||||
|
*[2367][2367]) mkdir_umask=$umask;;
|
||||||
|
.*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
|
||||||
|
|
||||||
|
*[0-7])
|
||||||
|
mkdir_umask=`expr $umask + 22 \
|
||||||
|
- $umask % 100 % 40 + $umask % 20 \
|
||||||
|
- $umask % 10 % 4 + $umask % 2
|
||||||
|
`;;
|
||||||
|
*) mkdir_umask=$umask,go-w;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# With -d, create the new directory with the user-specified mode.
|
||||||
|
# Otherwise, rely on $mkdir_umask.
|
||||||
|
if test -n "$dir_arg"; then
|
||||||
|
mkdir_mode=-m$mode
|
||||||
|
else
|
||||||
|
mkdir_mode=
|
||||||
|
fi
|
||||||
|
|
||||||
|
posix_mkdir=false
|
||||||
|
case $umask in
|
||||||
|
*[123567][0-7][0-7])
|
||||||
|
# POSIX mkdir -p sets u+wx bits regardless of umask, which
|
||||||
|
# is incompatible with FreeBSD 'install' when (umask & 300) != 0.
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
|
||||||
|
trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
|
||||||
|
|
||||||
|
if (umask $mkdir_umask &&
|
||||||
|
exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
|
||||||
|
then
|
||||||
|
if test -z "$dir_arg" || {
|
||||||
|
# Check for POSIX incompatibilities with -m.
|
||||||
|
# HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
|
||||||
|
# other-writeable bit of parent directory when it shouldn't.
|
||||||
|
# FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
|
||||||
|
ls_ld_tmpdir=`ls -ld "$tmpdir"`
|
||||||
|
case $ls_ld_tmpdir in
|
||||||
|
d????-?r-*) different_mode=700;;
|
||||||
|
d????-?--*) different_mode=755;;
|
||||||
|
*) false;;
|
||||||
|
esac &&
|
||||||
|
$mkdirprog -m$different_mode -p -- "$tmpdir" && {
|
||||||
|
ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
|
||||||
|
test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
then posix_mkdir=:
|
||||||
|
fi
|
||||||
|
rmdir "$tmpdir/d" "$tmpdir"
|
||||||
|
else
|
||||||
|
# Remove any dirs left behind by ancient mkdir implementations.
|
||||||
|
rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
|
||||||
|
fi
|
||||||
|
trap '' 0;;
|
||||||
|
esac;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if
|
||||||
|
$posix_mkdir && (
|
||||||
|
umask $mkdir_umask &&
|
||||||
|
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
|
||||||
|
)
|
||||||
|
then :
|
||||||
|
else
|
||||||
|
|
||||||
|
# The umask is ridiculous, or mkdir does not conform to POSIX,
|
||||||
|
# or it failed possibly due to a race condition. Create the
|
||||||
|
# directory the slow way, step by step, checking for races as we go.
|
||||||
|
|
||||||
|
case $dstdir in
|
||||||
|
/*) prefix='/';;
|
||||||
|
[-=\(\)!]*) prefix='./';;
|
||||||
|
*) prefix='';;
|
||||||
|
esac
|
||||||
|
|
||||||
|
eval "$initialize_posix_glob"
|
||||||
|
|
||||||
|
oIFS=$IFS
|
||||||
|
IFS=/
|
||||||
|
$posix_glob set -f
|
||||||
|
set fnord $dstdir
|
||||||
|
shift
|
||||||
|
$posix_glob set +f
|
||||||
|
IFS=$oIFS
|
||||||
|
|
||||||
|
prefixes=
|
||||||
|
|
||||||
|
for d
|
||||||
|
do
|
||||||
|
test X"$d" = X && continue
|
||||||
|
|
||||||
|
prefix=$prefix$d
|
||||||
|
if test -d "$prefix"; then
|
||||||
|
prefixes=
|
||||||
|
else
|
||||||
|
if $posix_mkdir; then
|
||||||
|
(umask=$mkdir_umask &&
|
||||||
|
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
|
||||||
|
# Don't fail if two instances are running concurrently.
|
||||||
|
test -d "$prefix" || exit 1
|
||||||
|
else
|
||||||
|
case $prefix in
|
||||||
|
*\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
|
||||||
|
*) qprefix=$prefix;;
|
||||||
|
esac
|
||||||
|
prefixes="$prefixes '$qprefix'"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
prefix=$prefix/
|
||||||
|
done
|
||||||
|
|
||||||
|
if test -n "$prefixes"; then
|
||||||
|
# Don't fail if two instances are running concurrently.
|
||||||
|
(umask $mkdir_umask &&
|
||||||
|
eval "\$doit_exec \$mkdirprog $prefixes") ||
|
||||||
|
test -d "$dstdir" || exit 1
|
||||||
|
obsolete_mkdir_used=true
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -n "$dir_arg"; then
|
||||||
|
{ test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
|
||||||
|
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
|
||||||
|
{ test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
|
||||||
|
test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
|
||||||
|
else
|
||||||
|
|
||||||
|
# Make a couple of temp file names in the proper directory.
|
||||||
|
dsttmp=$dstdir/_inst.$$_
|
||||||
|
rmtmp=$dstdir/_rm.$$_
|
||||||
|
|
||||||
|
# Trap to clean up those temp files at exit.
|
||||||
|
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
|
||||||
|
|
||||||
|
# Copy the file name to the temp name.
|
||||||
|
(umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
|
||||||
|
|
||||||
|
# and set any options; do chmod last to preserve setuid bits.
|
||||||
|
#
|
||||||
|
# If any of these fail, we abort the whole thing. If we want to
|
||||||
|
# ignore errors from any of these, just make sure not to ignore
|
||||||
|
# errors from the above "$doit $cpprog $src $dsttmp" command.
|
||||||
|
#
|
||||||
|
{ test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
|
||||||
|
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
|
||||||
|
{ test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
|
||||||
|
{ test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
|
||||||
|
|
||||||
|
# If -C, don't bother to copy if it wouldn't change the file.
|
||||||
|
if $copy_on_change &&
|
||||||
|
old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
|
||||||
|
new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
|
||||||
|
|
||||||
|
eval "$initialize_posix_glob" &&
|
||||||
|
$posix_glob set -f &&
|
||||||
|
set X $old && old=:$2:$4:$5:$6 &&
|
||||||
|
set X $new && new=:$2:$4:$5:$6 &&
|
||||||
|
$posix_glob set +f &&
|
||||||
|
|
||||||
|
test "$old" = "$new" &&
|
||||||
|
$cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
|
||||||
|
then
|
||||||
|
rm -f "$dsttmp"
|
||||||
|
else
|
||||||
|
# Rename the file to the real destination.
|
||||||
|
$doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
|
||||||
|
|
||||||
|
# The rename failed, perhaps because mv can't rename something else
|
||||||
|
# to itself, or perhaps because mv is so ancient that it does not
|
||||||
|
# support -f.
|
||||||
|
{
|
||||||
|
# Now remove or move aside any old file at destination location.
|
||||||
|
# We try this two ways since rm can't unlink itself on some
|
||||||
|
# systems and the destination file might be busy for other
|
||||||
|
# reasons. In this case, the final cleanup might fail but the new
|
||||||
|
# file should still install successfully.
|
||||||
|
{
|
||||||
|
test ! -f "$dst" ||
|
||||||
|
$doit $rmcmd -f "$dst" 2>/dev/null ||
|
||||||
|
{ $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
|
||||||
|
{ $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
|
||||||
|
} ||
|
||||||
|
{ echo "$0: cannot unlink or rename $dst" >&2
|
||||||
|
(exit 1); exit 1
|
||||||
|
}
|
||||||
|
} &&
|
||||||
|
|
||||||
|
# Now rename the file to the real destination.
|
||||||
|
$doit $mvcmd "$dsttmp" "$dst"
|
||||||
|
}
|
||||||
|
fi || exit 1
|
||||||
|
|
||||||
|
trap '' 0
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Local variables:
|
||||||
|
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||||
|
# time-stamp-start: "scriptversion="
|
||||||
|
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||||
|
# time-stamp-time-zone: "UTC"
|
||||||
|
# time-stamp-end: "; # UTC"
|
||||||
|
# End:
|
@ -0,0 +1,383 @@
|
|||||||
|
# gettext.m4 serial 63 (gettext-0.18)
|
||||||
|
dnl Copyright (C) 1995-2010 Free Software Foundation, Inc.
|
||||||
|
dnl This file is free software; the Free Software Foundation
|
||||||
|
dnl gives unlimited permission to copy and/or distribute it,
|
||||||
|
dnl with or without modifications, as long as this notice is preserved.
|
||||||
|
dnl
|
||||||
|
dnl This file can can be used in projects which are not available under
|
||||||
|
dnl the GNU General Public License or the GNU Library General Public
|
||||||
|
dnl License but which still want to provide support for the GNU gettext
|
||||||
|
dnl functionality.
|
||||||
|
dnl Please note that the actual code of the GNU gettext library is covered
|
||||||
|
dnl by the GNU Library General Public License, and the rest of the GNU
|
||||||
|
dnl gettext package package is covered by the GNU General Public License.
|
||||||
|
dnl They are *not* in the public domain.
|
||||||
|
|
||||||
|
dnl Authors:
|
||||||
|
dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
|
||||||
|
dnl Bruno Haible <haible@clisp.cons.org>, 2000-2006, 2008-2010.
|
||||||
|
|
||||||
|
dnl Macro to add for using GNU gettext.
|
||||||
|
|
||||||
|
dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]).
|
||||||
|
dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The
|
||||||
|
dnl default (if it is not specified or empty) is 'no-libtool'.
|
||||||
|
dnl INTLSYMBOL should be 'external' for packages with no intl directory,
|
||||||
|
dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory.
|
||||||
|
dnl If INTLSYMBOL is 'use-libtool', then a libtool library
|
||||||
|
dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static,
|
||||||
|
dnl depending on --{enable,disable}-{shared,static} and on the presence of
|
||||||
|
dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library
|
||||||
|
dnl $(top_builddir)/intl/libintl.a will be created.
|
||||||
|
dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext
|
||||||
|
dnl implementations (in libc or libintl) without the ngettext() function
|
||||||
|
dnl will be ignored. If NEEDSYMBOL is specified and is
|
||||||
|
dnl 'need-formatstring-macros', then GNU gettext implementations that don't
|
||||||
|
dnl support the ISO C 99 <inttypes.h> formatstring macros will be ignored.
|
||||||
|
dnl INTLDIR is used to find the intl libraries. If empty,
|
||||||
|
dnl the value `$(top_builddir)/intl/' is used.
|
||||||
|
dnl
|
||||||
|
dnl The result of the configuration is one of three cases:
|
||||||
|
dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled
|
||||||
|
dnl and used.
|
||||||
|
dnl Catalog format: GNU --> install in $(datadir)
|
||||||
|
dnl Catalog extension: .mo after installation, .gmo in source tree
|
||||||
|
dnl 2) GNU gettext has been found in the system's C library.
|
||||||
|
dnl Catalog format: GNU --> install in $(datadir)
|
||||||
|
dnl Catalog extension: .mo after installation, .gmo in source tree
|
||||||
|
dnl 3) No internationalization, always use English msgid.
|
||||||
|
dnl Catalog format: none
|
||||||
|
dnl Catalog extension: none
|
||||||
|
dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur.
|
||||||
|
dnl The use of .gmo is historical (it was needed to avoid overwriting the
|
||||||
|
dnl GNU format catalogs when building on a platform with an X/Open gettext),
|
||||||
|
dnl but we keep it in order not to force irrelevant filename changes on the
|
||||||
|
dnl maintainers.
|
||||||
|
dnl
|
||||||
|
AC_DEFUN([AM_GNU_GETTEXT],
|
||||||
|
[
|
||||||
|
dnl Argument checking.
|
||||||
|
ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], ,
|
||||||
|
[errprint([ERROR: invalid first argument to AM_GNU_GETTEXT
|
||||||
|
])])])])])
|
||||||
|
ifelse(ifelse([$1], [], [old])[]ifelse([$1], [no-libtool], [old]), [old],
|
||||||
|
[AC_DIAGNOSE([obsolete], [Use of AM_GNU_GETTEXT without [external] argument is deprecated.])])
|
||||||
|
ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], ,
|
||||||
|
[errprint([ERROR: invalid second argument to AM_GNU_GETTEXT
|
||||||
|
])])])])
|
||||||
|
define([gt_included_intl],
|
||||||
|
ifelse([$1], [external],
|
||||||
|
ifdef([AM_GNU_GETTEXT_][INTL_SUBDIR], [yes], [no]),
|
||||||
|
[yes]))
|
||||||
|
define([gt_libtool_suffix_prefix], ifelse([$1], [use-libtool], [l], []))
|
||||||
|
gt_NEEDS_INIT
|
||||||
|
AM_GNU_GETTEXT_NEED([$2])
|
||||||
|
|
||||||
|
AC_REQUIRE([AM_PO_SUBDIRS])dnl
|
||||||
|
ifelse(gt_included_intl, yes, [
|
||||||
|
AC_REQUIRE([AM_INTL_SUBDIR])dnl
|
||||||
|
])
|
||||||
|
|
||||||
|
dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
|
||||||
|
AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
|
||||||
|
AC_REQUIRE([AC_LIB_RPATH])
|
||||||
|
|
||||||
|
dnl Sometimes libintl requires libiconv, so first search for libiconv.
|
||||||
|
dnl Ideally we would do this search only after the
|
||||||
|
dnl if test "$USE_NLS" = "yes"; then
|
||||||
|
dnl if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then
|
||||||
|
dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT
|
||||||
|
dnl the configure script would need to contain the same shell code
|
||||||
|
dnl again, outside any 'if'. There are two solutions:
|
||||||
|
dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'.
|
||||||
|
dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE.
|
||||||
|
dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not
|
||||||
|
dnl documented, we avoid it.
|
||||||
|
ifelse(gt_included_intl, yes, , [
|
||||||
|
AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
|
||||||
|
])
|
||||||
|
|
||||||
|
dnl Sometimes, on MacOS X, libintl requires linking with CoreFoundation.
|
||||||
|
gt_INTL_MACOSX
|
||||||
|
|
||||||
|
dnl Set USE_NLS.
|
||||||
|
AC_REQUIRE([AM_NLS])
|
||||||
|
|
||||||
|
ifelse(gt_included_intl, yes, [
|
||||||
|
BUILD_INCLUDED_LIBINTL=no
|
||||||
|
USE_INCLUDED_LIBINTL=no
|
||||||
|
])
|
||||||
|
LIBINTL=
|
||||||
|
LTLIBINTL=
|
||||||
|
POSUB=
|
||||||
|
|
||||||
|
dnl Add a version number to the cache macros.
|
||||||
|
case " $gt_needs " in
|
||||||
|
*" need-formatstring-macros "*) gt_api_version=3 ;;
|
||||||
|
*" need-ngettext "*) gt_api_version=2 ;;
|
||||||
|
*) gt_api_version=1 ;;
|
||||||
|
esac
|
||||||
|
gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc"
|
||||||
|
gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl"
|
||||||
|
|
||||||
|
dnl If we use NLS figure out what method
|
||||||
|
if test "$USE_NLS" = "yes"; then
|
||||||
|
gt_use_preinstalled_gnugettext=no
|
||||||
|
ifelse(gt_included_intl, yes, [
|
||||||
|
AC_MSG_CHECKING([whether included gettext is requested])
|
||||||
|
AC_ARG_WITH([included-gettext],
|
||||||
|
[ --with-included-gettext use the GNU gettext library included here],
|
||||||
|
nls_cv_force_use_gnu_gettext=$withval,
|
||||||
|
nls_cv_force_use_gnu_gettext=no)
|
||||||
|
AC_MSG_RESULT([$nls_cv_force_use_gnu_gettext])
|
||||||
|
|
||||||
|
nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
|
||||||
|
if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
|
||||||
|
])
|
||||||
|
dnl User does not insist on using GNU NLS library. Figure out what
|
||||||
|
dnl to use. If GNU gettext is available we use this. Else we have
|
||||||
|
dnl to fall back to GNU NLS library.
|
||||||
|
|
||||||
|
if test $gt_api_version -ge 3; then
|
||||||
|
gt_revision_test_code='
|
||||||
|
#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
|
||||||
|
#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1)
|
||||||
|
#endif
|
||||||
|
changequote(,)dnl
|
||||||
|
typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1];
|
||||||
|
changequote([,])dnl
|
||||||
|
'
|
||||||
|
else
|
||||||
|
gt_revision_test_code=
|
||||||
|
fi
|
||||||
|
if test $gt_api_version -ge 2; then
|
||||||
|
gt_expression_test_code=' + * ngettext ("", "", 0)'
|
||||||
|
else
|
||||||
|
gt_expression_test_code=
|
||||||
|
fi
|
||||||
|
|
||||||
|
AC_CACHE_CHECK([for GNU gettext in libc], [$gt_func_gnugettext_libc],
|
||||||
|
[AC_TRY_LINK([#include <libintl.h>
|
||||||
|
$gt_revision_test_code
|
||||||
|
extern int _nl_msg_cat_cntr;
|
||||||
|
extern int *_nl_domain_bindings;],
|
||||||
|
[bindtextdomain ("", "");
|
||||||
|
return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings],
|
||||||
|
[eval "$gt_func_gnugettext_libc=yes"],
|
||||||
|
[eval "$gt_func_gnugettext_libc=no"])])
|
||||||
|
|
||||||
|
if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then
|
||||||
|
dnl Sometimes libintl requires libiconv, so first search for libiconv.
|
||||||
|
ifelse(gt_included_intl, yes, , [
|
||||||
|
AM_ICONV_LINK
|
||||||
|
])
|
||||||
|
dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL
|
||||||
|
dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv])
|
||||||
|
dnl because that would add "-liconv" to LIBINTL and LTLIBINTL
|
||||||
|
dnl even if libiconv doesn't exist.
|
||||||
|
AC_LIB_LINKFLAGS_BODY([intl])
|
||||||
|
AC_CACHE_CHECK([for GNU gettext in libintl],
|
||||||
|
[$gt_func_gnugettext_libintl],
|
||||||
|
[gt_save_CPPFLAGS="$CPPFLAGS"
|
||||||
|
CPPFLAGS="$CPPFLAGS $INCINTL"
|
||||||
|
gt_save_LIBS="$LIBS"
|
||||||
|
LIBS="$LIBS $LIBINTL"
|
||||||
|
dnl Now see whether libintl exists and does not depend on libiconv.
|
||||||
|
AC_TRY_LINK([#include <libintl.h>
|
||||||
|
$gt_revision_test_code
|
||||||
|
extern int _nl_msg_cat_cntr;
|
||||||
|
extern
|
||||||
|
#ifdef __cplusplus
|
||||||
|
"C"
|
||||||
|
#endif
|
||||||
|
const char *_nl_expand_alias (const char *);],
|
||||||
|
[bindtextdomain ("", "");
|
||||||
|
return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")],
|
||||||
|
[eval "$gt_func_gnugettext_libintl=yes"],
|
||||||
|
[eval "$gt_func_gnugettext_libintl=no"])
|
||||||
|
dnl Now see whether libintl exists and depends on libiconv.
|
||||||
|
if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then
|
||||||
|
LIBS="$LIBS $LIBICONV"
|
||||||
|
AC_TRY_LINK([#include <libintl.h>
|
||||||
|
$gt_revision_test_code
|
||||||
|
extern int _nl_msg_cat_cntr;
|
||||||
|
extern
|
||||||
|
#ifdef __cplusplus
|
||||||
|
"C"
|
||||||
|
#endif
|
||||||
|
const char *_nl_expand_alias (const char *);],
|
||||||
|
[bindtextdomain ("", "");
|
||||||
|
return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")],
|
||||||
|
[LIBINTL="$LIBINTL $LIBICONV"
|
||||||
|
LTLIBINTL="$LTLIBINTL $LTLIBICONV"
|
||||||
|
eval "$gt_func_gnugettext_libintl=yes"
|
||||||
|
])
|
||||||
|
fi
|
||||||
|
CPPFLAGS="$gt_save_CPPFLAGS"
|
||||||
|
LIBS="$gt_save_LIBS"])
|
||||||
|
fi
|
||||||
|
|
||||||
|
dnl If an already present or preinstalled GNU gettext() is found,
|
||||||
|
dnl use it. But if this macro is used in GNU gettext, and GNU
|
||||||
|
dnl gettext is already preinstalled in libintl, we update this
|
||||||
|
dnl libintl. (Cf. the install rule in intl/Makefile.in.)
|
||||||
|
if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \
|
||||||
|
|| { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \
|
||||||
|
&& test "$PACKAGE" != gettext-runtime \
|
||||||
|
&& test "$PACKAGE" != gettext-tools; }; then
|
||||||
|
gt_use_preinstalled_gnugettext=yes
|
||||||
|
else
|
||||||
|
dnl Reset the values set by searching for libintl.
|
||||||
|
LIBINTL=
|
||||||
|
LTLIBINTL=
|
||||||
|
INCINTL=
|
||||||
|
fi
|
||||||
|
|
||||||
|
ifelse(gt_included_intl, yes, [
|
||||||
|
if test "$gt_use_preinstalled_gnugettext" != "yes"; then
|
||||||
|
dnl GNU gettext is not found in the C library.
|
||||||
|
dnl Fall back on included GNU gettext library.
|
||||||
|
nls_cv_use_gnu_gettext=yes
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "$nls_cv_use_gnu_gettext" = "yes"; then
|
||||||
|
dnl Mark actions used to generate GNU NLS library.
|
||||||
|
BUILD_INCLUDED_LIBINTL=yes
|
||||||
|
USE_INCLUDED_LIBINTL=yes
|
||||||
|
LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV $LIBTHREAD"
|
||||||
|
LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV $LTLIBTHREAD"
|
||||||
|
LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'`
|
||||||
|
fi
|
||||||
|
|
||||||
|
CATOBJEXT=
|
||||||
|
if test "$gt_use_preinstalled_gnugettext" = "yes" \
|
||||||
|
|| test "$nls_cv_use_gnu_gettext" = "yes"; then
|
||||||
|
dnl Mark actions to use GNU gettext tools.
|
||||||
|
CATOBJEXT=.gmo
|
||||||
|
fi
|
||||||
|
])
|
||||||
|
|
||||||
|
if test -n "$INTL_MACOSX_LIBS"; then
|
||||||
|
if test "$gt_use_preinstalled_gnugettext" = "yes" \
|
||||||
|
|| test "$nls_cv_use_gnu_gettext" = "yes"; then
|
||||||
|
dnl Some extra flags are needed during linking.
|
||||||
|
LIBINTL="$LIBINTL $INTL_MACOSX_LIBS"
|
||||||
|
LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "$gt_use_preinstalled_gnugettext" = "yes" \
|
||||||
|
|| test "$nls_cv_use_gnu_gettext" = "yes"; then
|
||||||
|
AC_DEFINE([ENABLE_NLS], [1],
|
||||||
|
[Define to 1 if translation of program messages to the user's native language
|
||||||
|
is requested.])
|
||||||
|
else
|
||||||
|
USE_NLS=no
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
AC_MSG_CHECKING([whether to use NLS])
|
||||||
|
AC_MSG_RESULT([$USE_NLS])
|
||||||
|
if test "$USE_NLS" = "yes"; then
|
||||||
|
AC_MSG_CHECKING([where the gettext function comes from])
|
||||||
|
if test "$gt_use_preinstalled_gnugettext" = "yes"; then
|
||||||
|
if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then
|
||||||
|
gt_source="external libintl"
|
||||||
|
else
|
||||||
|
gt_source="libc"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
gt_source="included intl directory"
|
||||||
|
fi
|
||||||
|
AC_MSG_RESULT([$gt_source])
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "$USE_NLS" = "yes"; then
|
||||||
|
|
||||||
|
if test "$gt_use_preinstalled_gnugettext" = "yes"; then
|
||||||
|
if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then
|
||||||
|
AC_MSG_CHECKING([how to link with libintl])
|
||||||
|
AC_MSG_RESULT([$LIBINTL])
|
||||||
|
AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL])
|
||||||
|
fi
|
||||||
|
|
||||||
|
dnl For backward compatibility. Some packages may be using this.
|
||||||
|
AC_DEFINE([HAVE_GETTEXT], [1],
|
||||||
|
[Define if the GNU gettext() function is already present or preinstalled.])
|
||||||
|
AC_DEFINE([HAVE_DCGETTEXT], [1],
|
||||||
|
[Define if the GNU dcgettext() function is already present or preinstalled.])
|
||||||
|
fi
|
||||||
|
|
||||||
|
dnl We need to process the po/ directory.
|
||||||
|
POSUB=po
|
||||||
|
fi
|
||||||
|
|
||||||
|
ifelse(gt_included_intl, yes, [
|
||||||
|
dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL
|
||||||
|
dnl to 'yes' because some of the testsuite requires it.
|
||||||
|
if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then
|
||||||
|
BUILD_INCLUDED_LIBINTL=yes
|
||||||
|
fi
|
||||||
|
|
||||||
|
dnl Make all variables we use known to autoconf.
|
||||||
|
AC_SUBST([BUILD_INCLUDED_LIBINTL])
|
||||||
|
AC_SUBST([USE_INCLUDED_LIBINTL])
|
||||||
|
AC_SUBST([CATOBJEXT])
|
||||||
|
|
||||||
|
dnl For backward compatibility. Some configure.ins may be using this.
|
||||||
|
nls_cv_header_intl=
|
||||||
|
nls_cv_header_libgt=
|
||||||
|
|
||||||
|
dnl For backward compatibility. Some Makefiles may be using this.
|
||||||
|
DATADIRNAME=share
|
||||||
|
AC_SUBST([DATADIRNAME])
|
||||||
|
|
||||||
|
dnl For backward compatibility. Some Makefiles may be using this.
|
||||||
|
INSTOBJEXT=.mo
|
||||||
|
AC_SUBST([INSTOBJEXT])
|
||||||
|
|
||||||
|
dnl For backward compatibility. Some Makefiles may be using this.
|
||||||
|
GENCAT=gencat
|
||||||
|
AC_SUBST([GENCAT])
|
||||||
|
|
||||||
|
dnl For backward compatibility. Some Makefiles may be using this.
|
||||||
|
INTLOBJS=
|
||||||
|
if test "$USE_INCLUDED_LIBINTL" = yes; then
|
||||||
|
INTLOBJS="\$(GETTOBJS)"
|
||||||
|
fi
|
||||||
|
AC_SUBST([INTLOBJS])
|
||||||
|
|
||||||
|
dnl Enable libtool support if the surrounding package wishes it.
|
||||||
|
INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix
|
||||||
|
AC_SUBST([INTL_LIBTOOL_SUFFIX_PREFIX])
|
||||||
|
])
|
||||||
|
|
||||||
|
dnl For backward compatibility. Some Makefiles may be using this.
|
||||||
|
INTLLIBS="$LIBINTL"
|
||||||
|
AC_SUBST([INTLLIBS])
|
||||||
|
|
||||||
|
dnl Make all documented variables known to autoconf.
|
||||||
|
AC_SUBST([LIBINTL])
|
||||||
|
AC_SUBST([LTLIBINTL])
|
||||||
|
AC_SUBST([POSUB])
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
|
dnl gt_NEEDS_INIT ensures that the gt_needs variable is initialized.
|
||||||
|
m4_define([gt_NEEDS_INIT],
|
||||||
|
[
|
||||||
|
m4_divert_text([DEFAULTS], [gt_needs=])
|
||||||
|
m4_define([gt_NEEDS_INIT], [])
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
|
dnl Usage: AM_GNU_GETTEXT_NEED([NEEDSYMBOL])
|
||||||
|
AC_DEFUN([AM_GNU_GETTEXT_NEED],
|
||||||
|
[
|
||||||
|
m4_divert_text([INIT_PREPARE], [gt_needs="$gt_needs $1"])
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
|
dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version])
|
||||||
|
AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])
|
@ -0,0 +1,199 @@
|
|||||||
|
# iconv.m4 serial 9 (gettext-0.18)
|
||||||
|
dnl Copyright (C) 2000-2002, 2007-2010 Free Software Foundation, Inc.
|
||||||
|
dnl This file is free software; the Free Software Foundation
|
||||||
|
dnl gives unlimited permission to copy and/or distribute it,
|
||||||
|
dnl with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
|
dnl From Bruno Haible.
|
||||||
|
|
||||||
|
AC_DEFUN([AM_ICONV_LINKFLAGS_BODY],
|
||||||
|
[
|
||||||
|
dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
|
||||||
|
AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
|
||||||
|
AC_REQUIRE([AC_LIB_RPATH])
|
||||||
|
|
||||||
|
dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
|
||||||
|
dnl accordingly.
|
||||||
|
AC_LIB_LINKFLAGS_BODY([iconv])
|
||||||
|
])
|
||||||
|
|
||||||
|
AC_DEFUN([AM_ICONV_LINK],
|
||||||
|
[
|
||||||
|
dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and
|
||||||
|
dnl those with the standalone portable GNU libiconv installed).
|
||||||
|
AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
|
||||||
|
|
||||||
|
dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
|
||||||
|
dnl accordingly.
|
||||||
|
AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
|
||||||
|
|
||||||
|
dnl Add $INCICONV to CPPFLAGS before performing the following checks,
|
||||||
|
dnl because if the user has installed libiconv and not disabled its use
|
||||||
|
dnl via --without-libiconv-prefix, he wants to use it. The first
|
||||||
|
dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed.
|
||||||
|
am_save_CPPFLAGS="$CPPFLAGS"
|
||||||
|
AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV])
|
||||||
|
|
||||||
|
AC_CACHE_CHECK([for iconv], [am_cv_func_iconv], [
|
||||||
|
am_cv_func_iconv="no, consider installing GNU libiconv"
|
||||||
|
am_cv_lib_iconv=no
|
||||||
|
AC_TRY_LINK([#include <stdlib.h>
|
||||||
|
#include <iconv.h>],
|
||||||
|
[iconv_t cd = iconv_open("","");
|
||||||
|
iconv(cd,NULL,NULL,NULL,NULL);
|
||||||
|
iconv_close(cd);],
|
||||||
|
[am_cv_func_iconv=yes])
|
||||||
|
if test "$am_cv_func_iconv" != yes; then
|
||||||
|
am_save_LIBS="$LIBS"
|
||||||
|
LIBS="$LIBS $LIBICONV"
|
||||||
|
AC_TRY_LINK([#include <stdlib.h>
|
||||||
|
#include <iconv.h>],
|
||||||
|
[iconv_t cd = iconv_open("","");
|
||||||
|
iconv(cd,NULL,NULL,NULL,NULL);
|
||||||
|
iconv_close(cd);],
|
||||||
|
[am_cv_lib_iconv=yes]
|
||||||
|
[am_cv_func_iconv=yes])
|
||||||
|
LIBS="$am_save_LIBS"
|
||||||
|
fi
|
||||||
|
])
|
||||||
|
if test "$am_cv_func_iconv" = yes; then
|
||||||
|
AC_CACHE_CHECK([for working iconv], [am_cv_func_iconv_works], [
|
||||||
|
dnl This tests against bugs in AIX 5.1, HP-UX 11.11, Solaris 10.
|
||||||
|
am_save_LIBS="$LIBS"
|
||||||
|
if test $am_cv_lib_iconv = yes; then
|
||||||
|
LIBS="$LIBS $LIBICONV"
|
||||||
|
fi
|
||||||
|
AC_TRY_RUN([
|
||||||
|
#include <iconv.h>
|
||||||
|
#include <string.h>
|
||||||
|
int main ()
|
||||||
|
{
|
||||||
|
/* Test against AIX 5.1 bug: Failures are not distinguishable from successful
|
||||||
|
returns. */
|
||||||
|
{
|
||||||
|
iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8");
|
||||||
|
if (cd_utf8_to_88591 != (iconv_t)(-1))
|
||||||
|
{
|
||||||
|
static const char input[] = "\342\202\254"; /* EURO SIGN */
|
||||||
|
char buf[10];
|
||||||
|
const char *inptr = input;
|
||||||
|
size_t inbytesleft = strlen (input);
|
||||||
|
char *outptr = buf;
|
||||||
|
size_t outbytesleft = sizeof (buf);
|
||||||
|
size_t res = iconv (cd_utf8_to_88591,
|
||||||
|
(char **) &inptr, &inbytesleft,
|
||||||
|
&outptr, &outbytesleft);
|
||||||
|
if (res == 0)
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* Test against Solaris 10 bug: Failures are not distinguishable from
|
||||||
|
successful returns. */
|
||||||
|
{
|
||||||
|
iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646");
|
||||||
|
if (cd_ascii_to_88591 != (iconv_t)(-1))
|
||||||
|
{
|
||||||
|
static const char input[] = "\263";
|
||||||
|
char buf[10];
|
||||||
|
const char *inptr = input;
|
||||||
|
size_t inbytesleft = strlen (input);
|
||||||
|
char *outptr = buf;
|
||||||
|
size_t outbytesleft = sizeof (buf);
|
||||||
|
size_t res = iconv (cd_ascii_to_88591,
|
||||||
|
(char **) &inptr, &inbytesleft,
|
||||||
|
&outptr, &outbytesleft);
|
||||||
|
if (res == 0)
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#if 0 /* This bug could be worked around by the caller. */
|
||||||
|
/* Test against HP-UX 11.11 bug: Positive return value instead of 0. */
|
||||||
|
{
|
||||||
|
iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591");
|
||||||
|
if (cd_88591_to_utf8 != (iconv_t)(-1))
|
||||||
|
{
|
||||||
|
static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
|
||||||
|
char buf[50];
|
||||||
|
const char *inptr = input;
|
||||||
|
size_t inbytesleft = strlen (input);
|
||||||
|
char *outptr = buf;
|
||||||
|
size_t outbytesleft = sizeof (buf);
|
||||||
|
size_t res = iconv (cd_88591_to_utf8,
|
||||||
|
(char **) &inptr, &inbytesleft,
|
||||||
|
&outptr, &outbytesleft);
|
||||||
|
if ((int)res > 0)
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
/* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is
|
||||||
|
provided. */
|
||||||
|
if (/* Try standardized names. */
|
||||||
|
iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1)
|
||||||
|
/* Try IRIX, OSF/1 names. */
|
||||||
|
&& iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1)
|
||||||
|
/* Try AIX names. */
|
||||||
|
&& iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1)
|
||||||
|
/* Try HP-UX names. */
|
||||||
|
&& iconv_open ("utf8", "eucJP") == (iconv_t)(-1))
|
||||||
|
return 1;
|
||||||
|
return 0;
|
||||||
|
}], [am_cv_func_iconv_works=yes], [am_cv_func_iconv_works=no],
|
||||||
|
[case "$host_os" in
|
||||||
|
aix* | hpux*) am_cv_func_iconv_works="guessing no" ;;
|
||||||
|
*) am_cv_func_iconv_works="guessing yes" ;;
|
||||||
|
esac])
|
||||||
|
LIBS="$am_save_LIBS"
|
||||||
|
])
|
||||||
|
case "$am_cv_func_iconv_works" in
|
||||||
|
*no) am_func_iconv=no am_cv_lib_iconv=no ;;
|
||||||
|
*) am_func_iconv=yes ;;
|
||||||
|
esac
|
||||||
|
else
|
||||||
|
am_func_iconv=no am_cv_lib_iconv=no
|
||||||
|
fi
|
||||||
|
if test "$am_func_iconv" = yes; then
|
||||||
|
AC_DEFINE([HAVE_ICONV], [1],
|
||||||
|
[Define if you have the iconv() function and it works.])
|
||||||
|
fi
|
||||||
|
if test "$am_cv_lib_iconv" = yes; then
|
||||||
|
AC_MSG_CHECKING([how to link with libiconv])
|
||||||
|
AC_MSG_RESULT([$LIBICONV])
|
||||||
|
else
|
||||||
|
dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV
|
||||||
|
dnl either.
|
||||||
|
CPPFLAGS="$am_save_CPPFLAGS"
|
||||||
|
LIBICONV=
|
||||||
|
LTLIBICONV=
|
||||||
|
fi
|
||||||
|
AC_SUBST([LIBICONV])
|
||||||
|
AC_SUBST([LTLIBICONV])
|
||||||
|
])
|
||||||
|
|
||||||
|
AC_DEFUN([AM_ICONV],
|
||||||
|
[
|
||||||
|
AM_ICONV_LINK
|
||||||
|
if test "$am_cv_func_iconv" = yes; then
|
||||||
|
AC_MSG_CHECKING([for iconv declaration])
|
||||||
|
AC_CACHE_VAL([am_cv_proto_iconv], [
|
||||||
|
AC_TRY_COMPILE([
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <iconv.h>
|
||||||
|
extern
|
||||||
|
#ifdef __cplusplus
|
||||||
|
"C"
|
||||||
|
#endif
|
||||||
|
#if defined(__STDC__) || defined(__cplusplus)
|
||||||
|
size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
|
||||||
|
#else
|
||||||
|
size_t iconv();
|
||||||
|
#endif
|
||||||
|
], [], [am_cv_proto_iconv_arg1=""], [am_cv_proto_iconv_arg1="const"])
|
||||||
|
am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"])
|
||||||
|
am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
|
||||||
|
AC_MSG_RESULT([
|
||||||
|
$am_cv_proto_iconv])
|
||||||
|
AC_DEFINE_UNQUOTED([ICONV_CONST], [$am_cv_proto_iconv_arg1],
|
||||||
|
[Define as const if the declaration of iconv() needs const.])
|
||||||
|
fi
|
||||||
|
])
|
@ -0,0 +1,51 @@
|
|||||||
|
# intlmacosx.m4 serial 3 (gettext-0.18)
|
||||||
|
dnl Copyright (C) 2004-2010 Free Software Foundation, Inc.
|
||||||
|
dnl This file is free software; the Free Software Foundation
|
||||||
|
dnl gives unlimited permission to copy and/or distribute it,
|
||||||
|
dnl with or without modifications, as long as this notice is preserved.
|
||||||
|
dnl
|
||||||
|
dnl This file can can be used in projects which are not available under
|
||||||
|
dnl the GNU General Public License or the GNU Library General Public
|
||||||
|
dnl License but which still want to provide support for the GNU gettext
|
||||||
|
dnl functionality.
|
||||||
|
dnl Please note that the actual code of the GNU gettext library is covered
|
||||||
|
dnl by the GNU Library General Public License, and the rest of the GNU
|
||||||
|
dnl gettext package package is covered by the GNU General Public License.
|
||||||
|
dnl They are *not* in the public domain.
|
||||||
|
|
||||||
|
dnl Checks for special options needed on MacOS X.
|
||||||
|
dnl Defines INTL_MACOSX_LIBS.
|
||||||
|
AC_DEFUN([gt_INTL_MACOSX],
|
||||||
|
[
|
||||||
|
dnl Check for API introduced in MacOS X 10.2.
|
||||||
|
AC_CACHE_CHECK([for CFPreferencesCopyAppValue],
|
||||||
|
[gt_cv_func_CFPreferencesCopyAppValue],
|
||||||
|
[gt_save_LIBS="$LIBS"
|
||||||
|
LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
|
||||||
|
AC_TRY_LINK([#include <CoreFoundation/CFPreferences.h>],
|
||||||
|
[CFPreferencesCopyAppValue(NULL, NULL)],
|
||||||
|
[gt_cv_func_CFPreferencesCopyAppValue=yes],
|
||||||
|
[gt_cv_func_CFPreferencesCopyAppValue=no])
|
||||||
|
LIBS="$gt_save_LIBS"])
|
||||||
|
if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then
|
||||||
|
AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], [1],
|
||||||
|
[Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in the CoreFoundation framework.])
|
||||||
|
fi
|
||||||
|
dnl Check for API introduced in MacOS X 10.3.
|
||||||
|
AC_CACHE_CHECK([for CFLocaleCopyCurrent], [gt_cv_func_CFLocaleCopyCurrent],
|
||||||
|
[gt_save_LIBS="$LIBS"
|
||||||
|
LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
|
||||||
|
AC_TRY_LINK([#include <CoreFoundation/CFLocale.h>], [CFLocaleCopyCurrent();],
|
||||||
|
[gt_cv_func_CFLocaleCopyCurrent=yes],
|
||||||
|
[gt_cv_func_CFLocaleCopyCurrent=no])
|
||||||
|
LIBS="$gt_save_LIBS"])
|
||||||
|
if test $gt_cv_func_CFLocaleCopyCurrent = yes; then
|
||||||
|
AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], [1],
|
||||||
|
[Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the CoreFoundation framework.])
|
||||||
|
fi
|
||||||
|
INTL_MACOSX_LIBS=
|
||||||
|
if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then
|
||||||
|
INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation"
|
||||||
|
fi
|
||||||
|
AC_SUBST([INTL_MACOSX_LIBS])
|
||||||
|
])
|
@ -0,0 +1,110 @@
|
|||||||
|
# lib-ld.m4 serial 4 (gettext-0.18)
|
||||||
|
dnl Copyright (C) 1996-2003, 2009-2010 Free Software Foundation, Inc.
|
||||||
|
dnl This file is free software; the Free Software Foundation
|
||||||
|
dnl gives unlimited permission to copy and/or distribute it,
|
||||||
|
dnl with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
|
dnl Subroutines of libtool.m4,
|
||||||
|
dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision
|
||||||
|
dnl with libtool.m4.
|
||||||
|
|
||||||
|
dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no.
|
||||||
|
AC_DEFUN([AC_LIB_PROG_LD_GNU],
|
||||||
|
[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], [acl_cv_prog_gnu_ld],
|
||||||
|
[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
|
||||||
|
case `$LD -v 2>&1 </dev/null` in
|
||||||
|
*GNU* | *'with BFD'*)
|
||||||
|
acl_cv_prog_gnu_ld=yes ;;
|
||||||
|
*)
|
||||||
|
acl_cv_prog_gnu_ld=no ;;
|
||||||
|
esac])
|
||||||
|
with_gnu_ld=$acl_cv_prog_gnu_ld
|
||||||
|
])
|
||||||
|
|
||||||
|
dnl From libtool-1.4. Sets the variable LD.
|
||||||
|
AC_DEFUN([AC_LIB_PROG_LD],
|
||||||
|
[AC_ARG_WITH([gnu-ld],
|
||||||
|
[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]],
|
||||||
|
test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
|
||||||
|
AC_REQUIRE([AC_PROG_CC])dnl
|
||||||
|
AC_REQUIRE([AC_CANONICAL_HOST])dnl
|
||||||
|
# Prepare PATH_SEPARATOR.
|
||||||
|
# The user is always right.
|
||||||
|
if test "${PATH_SEPARATOR+set}" != set; then
|
||||||
|
echo "#! /bin/sh" >conf$$.sh
|
||||||
|
echo "exit 0" >>conf$$.sh
|
||||||
|
chmod +x conf$$.sh
|
||||||
|
if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
|
||||||
|
PATH_SEPARATOR=';'
|
||||||
|
else
|
||||||
|
PATH_SEPARATOR=:
|
||||||
|
fi
|
||||||
|
rm -f conf$$.sh
|
||||||
|
fi
|
||||||
|
ac_prog=ld
|
||||||
|
if test "$GCC" = yes; then
|
||||||
|
# Check if gcc -print-prog-name=ld gives a path.
|
||||||
|
AC_MSG_CHECKING([for ld used by GCC])
|
||||||
|
case $host in
|
||||||
|
*-*-mingw*)
|
||||||
|
# gcc leaves a trailing carriage return which upsets mingw
|
||||||
|
ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
|
||||||
|
*)
|
||||||
|
ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
|
||||||
|
esac
|
||||||
|
case $ac_prog in
|
||||||
|
# Accept absolute paths.
|
||||||
|
[[\\/]* | [A-Za-z]:[\\/]*)]
|
||||||
|
[re_direlt='/[^/][^/]*/\.\./']
|
||||||
|
# Canonicalize the path of ld
|
||||||
|
ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
|
||||||
|
while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
|
||||||
|
ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
|
||||||
|
done
|
||||||
|
test -z "$LD" && LD="$ac_prog"
|
||||||
|
;;
|
||||||
|
"")
|
||||||
|
# If it fails, then pretend we aren't using GCC.
|
||||||
|
ac_prog=ld
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
# If it is relative, then search for the first ld in PATH.
|
||||||
|
with_gnu_ld=unknown
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
elif test "$with_gnu_ld" = yes; then
|
||||||
|
AC_MSG_CHECKING([for GNU ld])
|
||||||
|
else
|
||||||
|
AC_MSG_CHECKING([for non-GNU ld])
|
||||||
|
fi
|
||||||
|
AC_CACHE_VAL([acl_cv_path_LD],
|
||||||
|
[if test -z "$LD"; then
|
||||||
|
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
|
||||||
|
for ac_dir in $PATH; do
|
||||||
|
test -z "$ac_dir" && ac_dir=.
|
||||||
|
if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
|
||||||
|
acl_cv_path_LD="$ac_dir/$ac_prog"
|
||||||
|
# Check to see if the program is GNU ld. I'd rather use --version,
|
||||||
|
# but apparently some GNU ld's only accept -v.
|
||||||
|
# Break only if it was the GNU/non-GNU ld that we prefer.
|
||||||
|
case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in
|
||||||
|
*GNU* | *'with BFD'*)
|
||||||
|
test "$with_gnu_ld" != no && break ;;
|
||||||
|
*)
|
||||||
|
test "$with_gnu_ld" != yes && break ;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
IFS="$ac_save_ifs"
|
||||||
|
else
|
||||||
|
acl_cv_path_LD="$LD" # Let the user override the test with a path.
|
||||||
|
fi])
|
||||||
|
LD="$acl_cv_path_LD"
|
||||||
|
if test -n "$LD"; then
|
||||||
|
AC_MSG_RESULT([$LD])
|
||||||
|
else
|
||||||
|
AC_MSG_RESULT([no])
|
||||||
|
fi
|
||||||
|
test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
|
||||||
|
AC_LIB_PROG_LD_GNU
|
||||||
|
])
|
@ -0,0 +1,774 @@
|
|||||||
|
# lib-link.m4 serial 21 (gettext-0.18)
|
||||||
|
dnl Copyright (C) 2001-2010 Free Software Foundation, Inc.
|
||||||
|
dnl This file is free software; the Free Software Foundation
|
||||||
|
dnl gives unlimited permission to copy and/or distribute it,
|
||||||
|
dnl with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
|
dnl From Bruno Haible.
|
||||||
|
|
||||||
|
AC_PREREQ([2.54])
|
||||||
|
|
||||||
|
dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and
|
||||||
|
dnl the libraries corresponding to explicit and implicit dependencies.
|
||||||
|
dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and
|
||||||
|
dnl augments the CPPFLAGS variable.
|
||||||
|
dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname
|
||||||
|
dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
|
||||||
|
AC_DEFUN([AC_LIB_LINKFLAGS],
|
||||||
|
[
|
||||||
|
AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
|
||||||
|
AC_REQUIRE([AC_LIB_RPATH])
|
||||||
|
pushdef([Name],[translit([$1],[./-], [___])])
|
||||||
|
pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
|
||||||
|
[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
|
||||||
|
AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [
|
||||||
|
AC_LIB_LINKFLAGS_BODY([$1], [$2])
|
||||||
|
ac_cv_lib[]Name[]_libs="$LIB[]NAME"
|
||||||
|
ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME"
|
||||||
|
ac_cv_lib[]Name[]_cppflags="$INC[]NAME"
|
||||||
|
ac_cv_lib[]Name[]_prefix="$LIB[]NAME[]_PREFIX"
|
||||||
|
])
|
||||||
|
LIB[]NAME="$ac_cv_lib[]Name[]_libs"
|
||||||
|
LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs"
|
||||||
|
INC[]NAME="$ac_cv_lib[]Name[]_cppflags"
|
||||||
|
LIB[]NAME[]_PREFIX="$ac_cv_lib[]Name[]_prefix"
|
||||||
|
AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
|
||||||
|
AC_SUBST([LIB]NAME)
|
||||||
|
AC_SUBST([LTLIB]NAME)
|
||||||
|
AC_SUBST([LIB]NAME[_PREFIX])
|
||||||
|
dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the
|
||||||
|
dnl results of this search when this library appears as a dependency.
|
||||||
|
HAVE_LIB[]NAME=yes
|
||||||
|
popdef([NAME])
|
||||||
|
popdef([Name])
|
||||||
|
])
|
||||||
|
|
||||||
|
dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode, [missing-message])
|
||||||
|
dnl searches for libname and the libraries corresponding to explicit and
|
||||||
|
dnl implicit dependencies, together with the specified include files and
|
||||||
|
dnl the ability to compile and link the specified testcode. The missing-message
|
||||||
|
dnl defaults to 'no' and may contain additional hints for the user.
|
||||||
|
dnl If found, it sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME}
|
||||||
|
dnl and LTLIB${NAME} variables and augments the CPPFLAGS variable, and
|
||||||
|
dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs
|
||||||
|
dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty.
|
||||||
|
dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname
|
||||||
|
dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
|
||||||
|
AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],
|
||||||
|
[
|
||||||
|
AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
|
||||||
|
AC_REQUIRE([AC_LIB_RPATH])
|
||||||
|
pushdef([Name],[translit([$1],[./-], [___])])
|
||||||
|
pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
|
||||||
|
[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
|
||||||
|
|
||||||
|
dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME
|
||||||
|
dnl accordingly.
|
||||||
|
AC_LIB_LINKFLAGS_BODY([$1], [$2])
|
||||||
|
|
||||||
|
dnl Add $INC[]NAME to CPPFLAGS before performing the following checks,
|
||||||
|
dnl because if the user has installed lib[]Name and not disabled its use
|
||||||
|
dnl via --without-lib[]Name-prefix, he wants to use it.
|
||||||
|
ac_save_CPPFLAGS="$CPPFLAGS"
|
||||||
|
AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
|
||||||
|
|
||||||
|
AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [
|
||||||
|
ac_save_LIBS="$LIBS"
|
||||||
|
dnl If $LIB[]NAME contains some -l options, add it to the end of LIBS,
|
||||||
|
dnl because these -l options might require -L options that are present in
|
||||||
|
dnl LIBS. -l options benefit only from the -L options listed before it.
|
||||||
|
dnl Otherwise, add it to the front of LIBS, because it may be a static
|
||||||
|
dnl library that depends on another static library that is present in LIBS.
|
||||||
|
dnl Static libraries benefit only from the static libraries listed after
|
||||||
|
dnl it.
|
||||||
|
case " $LIB[]NAME" in
|
||||||
|
*" -l"*) LIBS="$LIBS $LIB[]NAME" ;;
|
||||||
|
*) LIBS="$LIB[]NAME $LIBS" ;;
|
||||||
|
esac
|
||||||
|
AC_TRY_LINK([$3], [$4],
|
||||||
|
[ac_cv_lib[]Name=yes],
|
||||||
|
[ac_cv_lib[]Name='m4_if([$5], [], [no], [[$5]])'])
|
||||||
|
LIBS="$ac_save_LIBS"
|
||||||
|
])
|
||||||
|
if test "$ac_cv_lib[]Name" = yes; then
|
||||||
|
HAVE_LIB[]NAME=yes
|
||||||
|
AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the lib][$1 library.])
|
||||||
|
AC_MSG_CHECKING([how to link with lib[]$1])
|
||||||
|
AC_MSG_RESULT([$LIB[]NAME])
|
||||||
|
else
|
||||||
|
HAVE_LIB[]NAME=no
|
||||||
|
dnl If $LIB[]NAME didn't lead to a usable library, we don't need
|
||||||
|
dnl $INC[]NAME either.
|
||||||
|
CPPFLAGS="$ac_save_CPPFLAGS"
|
||||||
|
LIB[]NAME=
|
||||||
|
LTLIB[]NAME=
|
||||||
|
LIB[]NAME[]_PREFIX=
|
||||||
|
fi
|
||||||
|
AC_SUBST([HAVE_LIB]NAME)
|
||||||
|
AC_SUBST([LIB]NAME)
|
||||||
|
AC_SUBST([LTLIB]NAME)
|
||||||
|
AC_SUBST([LIB]NAME[_PREFIX])
|
||||||
|
popdef([NAME])
|
||||||
|
popdef([Name])
|
||||||
|
])
|
||||||
|
|
||||||
|
dnl Determine the platform dependent parameters needed to use rpath:
|
||||||
|
dnl acl_libext,
|
||||||
|
dnl acl_shlibext,
|
||||||
|
dnl acl_hardcode_libdir_flag_spec,
|
||||||
|
dnl acl_hardcode_libdir_separator,
|
||||||
|
dnl acl_hardcode_direct,
|
||||||
|
dnl acl_hardcode_minus_L.
|
||||||
|
AC_DEFUN([AC_LIB_RPATH],
|
||||||
|
[
|
||||||
|
dnl Tell automake >= 1.10 to complain if config.rpath is missing.
|
||||||
|
m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.rpath])])
|
||||||
|
AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS
|
||||||
|
AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld
|
||||||
|
AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host
|
||||||
|
AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir
|
||||||
|
AC_CACHE_CHECK([for shared library run path origin], [acl_cv_rpath], [
|
||||||
|
CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \
|
||||||
|
${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh
|
||||||
|
. ./conftest.sh
|
||||||
|
rm -f ./conftest.sh
|
||||||
|
acl_cv_rpath=done
|
||||||
|
])
|
||||||
|
wl="$acl_cv_wl"
|
||||||
|
acl_libext="$acl_cv_libext"
|
||||||
|
acl_shlibext="$acl_cv_shlibext"
|
||||||
|
acl_libname_spec="$acl_cv_libname_spec"
|
||||||
|
acl_library_names_spec="$acl_cv_library_names_spec"
|
||||||
|
acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec"
|
||||||
|
acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
|
||||||
|
acl_hardcode_direct="$acl_cv_hardcode_direct"
|
||||||
|
acl_hardcode_minus_L="$acl_cv_hardcode_minus_L"
|
||||||
|
dnl Determine whether the user wants rpath handling at all.
|
||||||
|
AC_ARG_ENABLE([rpath],
|
||||||
|
[ --disable-rpath do not hardcode runtime library paths],
|
||||||
|
:, enable_rpath=yes)
|
||||||
|
])
|
||||||
|
|
||||||
|
dnl AC_LIB_FROMPACKAGE(name, package)
|
||||||
|
dnl declares that libname comes from the given package. The configure file
|
||||||
|
dnl will then not have a --with-libname-prefix option but a
|
||||||
|
dnl --with-package-prefix option. Several libraries can come from the same
|
||||||
|
dnl package. This declaration must occur before an AC_LIB_LINKFLAGS or similar
|
||||||
|
dnl macro call that searches for libname.
|
||||||
|
AC_DEFUN([AC_LIB_FROMPACKAGE],
|
||||||
|
[
|
||||||
|
pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
|
||||||
|
[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
|
||||||
|
define([acl_frompackage_]NAME, [$2])
|
||||||
|
popdef([NAME])
|
||||||
|
pushdef([PACK],[$2])
|
||||||
|
pushdef([PACKUP],[translit(PACK,[abcdefghijklmnopqrstuvwxyz./-],
|
||||||
|
[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
|
||||||
|
define([acl_libsinpackage_]PACKUP,
|
||||||
|
m4_ifdef([acl_libsinpackage_]PACKUP, [acl_libsinpackage_]PACKUP[[, ]],)[lib$1])
|
||||||
|
popdef([PACKUP])
|
||||||
|
popdef([PACK])
|
||||||
|
])
|
||||||
|
|
||||||
|
dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and
|
||||||
|
dnl the libraries corresponding to explicit and implicit dependencies.
|
||||||
|
dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables.
|
||||||
|
dnl Also, sets the LIB${NAME}_PREFIX variable to nonempty if libname was found
|
||||||
|
dnl in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
|
||||||
|
AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
|
||||||
|
[
|
||||||
|
AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
|
||||||
|
pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
|
||||||
|
[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
|
||||||
|
pushdef([PACK],[m4_ifdef([acl_frompackage_]NAME, [acl_frompackage_]NAME, lib[$1])])
|
||||||
|
pushdef([PACKUP],[translit(PACK,[abcdefghijklmnopqrstuvwxyz./-],
|
||||||
|
[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
|
||||||
|
pushdef([PACKLIBS],[m4_ifdef([acl_frompackage_]NAME, [acl_libsinpackage_]PACKUP, lib[$1])])
|
||||||
|
dnl Autoconf >= 2.61 supports dots in --with options.
|
||||||
|
pushdef([P_A_C_K],[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.61]),[-1],[translit(PACK,[.],[_])],PACK)])
|
||||||
|
dnl By default, look in $includedir and $libdir.
|
||||||
|
use_additional=yes
|
||||||
|
AC_LIB_WITH_FINAL_PREFIX([
|
||||||
|
eval additional_includedir=\"$includedir\"
|
||||||
|
eval additional_libdir=\"$libdir\"
|
||||||
|
])
|
||||||
|
AC_ARG_WITH(P_A_C_K[-prefix],
|
||||||
|
[[ --with-]]P_A_C_K[[-prefix[=DIR] search for ]PACKLIBS[ in DIR/include and DIR/lib
|
||||||
|
--without-]]P_A_C_K[[-prefix don't search for ]PACKLIBS[ in includedir and libdir]],
|
||||||
|
[
|
||||||
|
if test "X$withval" = "Xno"; then
|
||||||
|
use_additional=no
|
||||||
|
else
|
||||||
|
if test "X$withval" = "X"; then
|
||||||
|
AC_LIB_WITH_FINAL_PREFIX([
|
||||||
|
eval additional_includedir=\"$includedir\"
|
||||||
|
eval additional_libdir=\"$libdir\"
|
||||||
|
])
|
||||||
|
else
|
||||||
|
additional_includedir="$withval/include"
|
||||||
|
additional_libdir="$withval/$acl_libdirstem"
|
||||||
|
if test "$acl_libdirstem2" != "$acl_libdirstem" \
|
||||||
|
&& ! test -d "$withval/$acl_libdirstem"; then
|
||||||
|
additional_libdir="$withval/$acl_libdirstem2"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
])
|
||||||
|
dnl Search the library and its dependencies in $additional_libdir and
|
||||||
|
dnl $LDFLAGS. Using breadth-first-seach.
|
||||||
|
LIB[]NAME=
|
||||||
|
LTLIB[]NAME=
|
||||||
|
INC[]NAME=
|
||||||
|
LIB[]NAME[]_PREFIX=
|
||||||
|
dnl HAVE_LIB${NAME} is an indicator that LIB${NAME}, LTLIB${NAME} have been
|
||||||
|
dnl computed. So it has to be reset here.
|
||||||
|
HAVE_LIB[]NAME=
|
||||||
|
rpathdirs=
|
||||||
|
ltrpathdirs=
|
||||||
|
names_already_handled=
|
||||||
|
names_next_round='$1 $2'
|
||||||
|
while test -n "$names_next_round"; do
|
||||||
|
names_this_round="$names_next_round"
|
||||||
|
names_next_round=
|
||||||
|
for name in $names_this_round; do
|
||||||
|
already_handled=
|
||||||
|
for n in $names_already_handled; do
|
||||||
|
if test "$n" = "$name"; then
|
||||||
|
already_handled=yes
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if test -z "$already_handled"; then
|
||||||
|
names_already_handled="$names_already_handled $name"
|
||||||
|
dnl See if it was already located by an earlier AC_LIB_LINKFLAGS
|
||||||
|
dnl or AC_LIB_HAVE_LINKFLAGS call.
|
||||||
|
uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
|
||||||
|
eval value=\"\$HAVE_LIB$uppername\"
|
||||||
|
if test -n "$value"; then
|
||||||
|
if test "$value" = yes; then
|
||||||
|
eval value=\"\$LIB$uppername\"
|
||||||
|
test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value"
|
||||||
|
eval value=\"\$LTLIB$uppername\"
|
||||||
|
test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value"
|
||||||
|
else
|
||||||
|
dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined
|
||||||
|
dnl that this library doesn't exist. So just drop it.
|
||||||
|
:
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
dnl Search the library lib$name in $additional_libdir and $LDFLAGS
|
||||||
|
dnl and the already constructed $LIBNAME/$LTLIBNAME.
|
||||||
|
found_dir=
|
||||||
|
found_la=
|
||||||
|
found_so=
|
||||||
|
found_a=
|
||||||
|
eval libname=\"$acl_libname_spec\" # typically: libname=lib$name
|
||||||
|
if test -n "$acl_shlibext"; then
|
||||||
|
shrext=".$acl_shlibext" # typically: shrext=.so
|
||||||
|
else
|
||||||
|
shrext=
|
||||||
|
fi
|
||||||
|
if test $use_additional = yes; then
|
||||||
|
dir="$additional_libdir"
|
||||||
|
dnl The same code as in the loop below:
|
||||||
|
dnl First look for a shared library.
|
||||||
|
if test -n "$acl_shlibext"; then
|
||||||
|
if test -f "$dir/$libname$shrext"; then
|
||||||
|
found_dir="$dir"
|
||||||
|
found_so="$dir/$libname$shrext"
|
||||||
|
else
|
||||||
|
if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
|
||||||
|
ver=`(cd "$dir" && \
|
||||||
|
for f in "$libname$shrext".*; do echo "$f"; done \
|
||||||
|
| sed -e "s,^$libname$shrext\\\\.,," \
|
||||||
|
| sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
|
||||||
|
| sed 1q ) 2>/dev/null`
|
||||||
|
if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
|
||||||
|
found_dir="$dir"
|
||||||
|
found_so="$dir/$libname$shrext.$ver"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
eval library_names=\"$acl_library_names_spec\"
|
||||||
|
for f in $library_names; do
|
||||||
|
if test -f "$dir/$f"; then
|
||||||
|
found_dir="$dir"
|
||||||
|
found_so="$dir/$f"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
dnl Then look for a static library.
|
||||||
|
if test "X$found_dir" = "X"; then
|
||||||
|
if test -f "$dir/$libname.$acl_libext"; then
|
||||||
|
found_dir="$dir"
|
||||||
|
found_a="$dir/$libname.$acl_libext"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if test "X$found_dir" != "X"; then
|
||||||
|
if test -f "$dir/$libname.la"; then
|
||||||
|
found_la="$dir/$libname.la"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if test "X$found_dir" = "X"; then
|
||||||
|
for x in $LDFLAGS $LTLIB[]NAME; do
|
||||||
|
AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
|
||||||
|
case "$x" in
|
||||||
|
-L*)
|
||||||
|
dir=`echo "X$x" | sed -e 's/^X-L//'`
|
||||||
|
dnl First look for a shared library.
|
||||||
|
if test -n "$acl_shlibext"; then
|
||||||
|
if test -f "$dir/$libname$shrext"; then
|
||||||
|
found_dir="$dir"
|
||||||
|
found_so="$dir/$libname$shrext"
|
||||||
|
else
|
||||||
|
if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
|
||||||
|
ver=`(cd "$dir" && \
|
||||||
|
for f in "$libname$shrext".*; do echo "$f"; done \
|
||||||
|
| sed -e "s,^$libname$shrext\\\\.,," \
|
||||||
|
| sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
|
||||||
|
| sed 1q ) 2>/dev/null`
|
||||||
|
if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
|
||||||
|
found_dir="$dir"
|
||||||
|
found_so="$dir/$libname$shrext.$ver"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
eval library_names=\"$acl_library_names_spec\"
|
||||||
|
for f in $library_names; do
|
||||||
|
if test -f "$dir/$f"; then
|
||||||
|
found_dir="$dir"
|
||||||
|
found_so="$dir/$f"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
dnl Then look for a static library.
|
||||||
|
if test "X$found_dir" = "X"; then
|
||||||
|
if test -f "$dir/$libname.$acl_libext"; then
|
||||||
|
found_dir="$dir"
|
||||||
|
found_a="$dir/$libname.$acl_libext"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if test "X$found_dir" != "X"; then
|
||||||
|
if test -f "$dir/$libname.la"; then
|
||||||
|
found_la="$dir/$libname.la"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
if test "X$found_dir" != "X"; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
if test "X$found_dir" != "X"; then
|
||||||
|
dnl Found the library.
|
||||||
|
LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name"
|
||||||
|
if test "X$found_so" != "X"; then
|
||||||
|
dnl Linking with a shared library. We attempt to hardcode its
|
||||||
|
dnl directory into the executable's runpath, unless it's the
|
||||||
|
dnl standard /usr/lib.
|
||||||
|
if test "$enable_rpath" = no \
|
||||||
|
|| test "X$found_dir" = "X/usr/$acl_libdirstem" \
|
||||||
|
|| test "X$found_dir" = "X/usr/$acl_libdirstem2"; then
|
||||||
|
dnl No hardcoding is needed.
|
||||||
|
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
|
||||||
|
else
|
||||||
|
dnl Use an explicit option to hardcode DIR into the resulting
|
||||||
|
dnl binary.
|
||||||
|
dnl Potentially add DIR to ltrpathdirs.
|
||||||
|
dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
|
||||||
|
haveit=
|
||||||
|
for x in $ltrpathdirs; do
|
||||||
|
if test "X$x" = "X$found_dir"; then
|
||||||
|
haveit=yes
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if test -z "$haveit"; then
|
||||||
|
ltrpathdirs="$ltrpathdirs $found_dir"
|
||||||
|
fi
|
||||||
|
dnl The hardcoding into $LIBNAME is system dependent.
|
||||||
|
if test "$acl_hardcode_direct" = yes; then
|
||||||
|
dnl Using DIR/libNAME.so during linking hardcodes DIR into the
|
||||||
|
dnl resulting binary.
|
||||||
|
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
|
||||||
|
else
|
||||||
|
if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
|
||||||
|
dnl Use an explicit option to hardcode DIR into the resulting
|
||||||
|
dnl binary.
|
||||||
|
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
|
||||||
|
dnl Potentially add DIR to rpathdirs.
|
||||||
|
dnl The rpathdirs will be appended to $LIBNAME at the end.
|
||||||
|
haveit=
|
||||||
|
for x in $rpathdirs; do
|
||||||
|
if test "X$x" = "X$found_dir"; then
|
||||||
|
haveit=yes
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if test -z "$haveit"; then
|
||||||
|
rpathdirs="$rpathdirs $found_dir"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
dnl Rely on "-L$found_dir".
|
||||||
|
dnl But don't add it if it's already contained in the LDFLAGS
|
||||||
|
dnl or the already constructed $LIBNAME
|
||||||
|
haveit=
|
||||||
|
for x in $LDFLAGS $LIB[]NAME; do
|
||||||
|
AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
|
||||||
|
if test "X$x" = "X-L$found_dir"; then
|
||||||
|
haveit=yes
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if test -z "$haveit"; then
|
||||||
|
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir"
|
||||||
|
fi
|
||||||
|
if test "$acl_hardcode_minus_L" != no; then
|
||||||
|
dnl FIXME: Not sure whether we should use
|
||||||
|
dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
|
||||||
|
dnl here.
|
||||||
|
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
|
||||||
|
else
|
||||||
|
dnl We cannot use $acl_hardcode_runpath_var and LD_RUN_PATH
|
||||||
|
dnl here, because this doesn't fit in flags passed to the
|
||||||
|
dnl compiler. So give up. No hardcoding. This affects only
|
||||||
|
dnl very old systems.
|
||||||
|
dnl FIXME: Not sure whether we should use
|
||||||
|
dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
|
||||||
|
dnl here.
|
||||||
|
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
if test "X$found_a" != "X"; then
|
||||||
|
dnl Linking with a static library.
|
||||||
|
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a"
|
||||||
|
else
|
||||||
|
dnl We shouldn't come here, but anyway it's good to have a
|
||||||
|
dnl fallback.
|
||||||
|
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
dnl Assume the include files are nearby.
|
||||||
|
additional_includedir=
|
||||||
|
case "$found_dir" in
|
||||||
|
*/$acl_libdirstem | */$acl_libdirstem/)
|
||||||
|
basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'`
|
||||||
|
if test "$name" = '$1'; then
|
||||||
|
LIB[]NAME[]_PREFIX="$basedir"
|
||||||
|
fi
|
||||||
|
additional_includedir="$basedir/include"
|
||||||
|
;;
|
||||||
|
*/$acl_libdirstem2 | */$acl_libdirstem2/)
|
||||||
|
basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'`
|
||||||
|
if test "$name" = '$1'; then
|
||||||
|
LIB[]NAME[]_PREFIX="$basedir"
|
||||||
|
fi
|
||||||
|
additional_includedir="$basedir/include"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
if test "X$additional_includedir" != "X"; then
|
||||||
|
dnl Potentially add $additional_includedir to $INCNAME.
|
||||||
|
dnl But don't add it
|
||||||
|
dnl 1. if it's the standard /usr/include,
|
||||||
|
dnl 2. if it's /usr/local/include and we are using GCC on Linux,
|
||||||
|
dnl 3. if it's already present in $CPPFLAGS or the already
|
||||||
|
dnl constructed $INCNAME,
|
||||||
|
dnl 4. if it doesn't exist as a directory.
|
||||||
|
if test "X$additional_includedir" != "X/usr/include"; then
|
||||||
|
haveit=
|
||||||
|
if test "X$additional_includedir" = "X/usr/local/include"; then
|
||||||
|
if test -n "$GCC"; then
|
||||||
|
case $host_os in
|
||||||
|
linux* | gnu* | k*bsd*-gnu) haveit=yes;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if test -z "$haveit"; then
|
||||||
|
for x in $CPPFLAGS $INC[]NAME; do
|
||||||
|
AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
|
||||||
|
if test "X$x" = "X-I$additional_includedir"; then
|
||||||
|
haveit=yes
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if test -z "$haveit"; then
|
||||||
|
if test -d "$additional_includedir"; then
|
||||||
|
dnl Really add $additional_includedir to $INCNAME.
|
||||||
|
INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
dnl Look for dependencies.
|
||||||
|
if test -n "$found_la"; then
|
||||||
|
dnl Read the .la file. It defines the variables
|
||||||
|
dnl dlname, library_names, old_library, dependency_libs, current,
|
||||||
|
dnl age, revision, installed, dlopen, dlpreopen, libdir.
|
||||||
|
save_libdir="$libdir"
|
||||||
|
case "$found_la" in
|
||||||
|
*/* | *\\*) . "$found_la" ;;
|
||||||
|
*) . "./$found_la" ;;
|
||||||
|
esac
|
||||||
|
libdir="$save_libdir"
|
||||||
|
dnl We use only dependency_libs.
|
||||||
|
for dep in $dependency_libs; do
|
||||||
|
case "$dep" in
|
||||||
|
-L*)
|
||||||
|
additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
|
||||||
|
dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME.
|
||||||
|
dnl But don't add it
|
||||||
|
dnl 1. if it's the standard /usr/lib,
|
||||||
|
dnl 2. if it's /usr/local/lib and we are using GCC on Linux,
|
||||||
|
dnl 3. if it's already present in $LDFLAGS or the already
|
||||||
|
dnl constructed $LIBNAME,
|
||||||
|
dnl 4. if it doesn't exist as a directory.
|
||||||
|
if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \
|
||||||
|
&& test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then
|
||||||
|
haveit=
|
||||||
|
if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \
|
||||||
|
|| test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then
|
||||||
|
if test -n "$GCC"; then
|
||||||
|
case $host_os in
|
||||||
|
linux* | gnu* | k*bsd*-gnu) haveit=yes;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if test -z "$haveit"; then
|
||||||
|
haveit=
|
||||||
|
for x in $LDFLAGS $LIB[]NAME; do
|
||||||
|
AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
|
||||||
|
if test "X$x" = "X-L$additional_libdir"; then
|
||||||
|
haveit=yes
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if test -z "$haveit"; then
|
||||||
|
if test -d "$additional_libdir"; then
|
||||||
|
dnl Really add $additional_libdir to $LIBNAME.
|
||||||
|
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
haveit=
|
||||||
|
for x in $LDFLAGS $LTLIB[]NAME; do
|
||||||
|
AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
|
||||||
|
if test "X$x" = "X-L$additional_libdir"; then
|
||||||
|
haveit=yes
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if test -z "$haveit"; then
|
||||||
|
if test -d "$additional_libdir"; then
|
||||||
|
dnl Really add $additional_libdir to $LTLIBNAME.
|
||||||
|
LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
-R*)
|
||||||
|
dir=`echo "X$dep" | sed -e 's/^X-R//'`
|
||||||
|
if test "$enable_rpath" != no; then
|
||||||
|
dnl Potentially add DIR to rpathdirs.
|
||||||
|
dnl The rpathdirs will be appended to $LIBNAME at the end.
|
||||||
|
haveit=
|
||||||
|
for x in $rpathdirs; do
|
||||||
|
if test "X$x" = "X$dir"; then
|
||||||
|
haveit=yes
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if test -z "$haveit"; then
|
||||||
|
rpathdirs="$rpathdirs $dir"
|
||||||
|
fi
|
||||||
|
dnl Potentially add DIR to ltrpathdirs.
|
||||||
|
dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
|
||||||
|
haveit=
|
||||||
|
for x in $ltrpathdirs; do
|
||||||
|
if test "X$x" = "X$dir"; then
|
||||||
|
haveit=yes
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if test -z "$haveit"; then
|
||||||
|
ltrpathdirs="$ltrpathdirs $dir"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
-l*)
|
||||||
|
dnl Handle this in the next round.
|
||||||
|
names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
|
||||||
|
;;
|
||||||
|
*.la)
|
||||||
|
dnl Handle this in the next round. Throw away the .la's
|
||||||
|
dnl directory; it is already contained in a preceding -L
|
||||||
|
dnl option.
|
||||||
|
names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
dnl Most likely an immediate library name.
|
||||||
|
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep"
|
||||||
|
LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
dnl Didn't find the library; assume it is in the system directories
|
||||||
|
dnl known to the linker and runtime loader. (All the system
|
||||||
|
dnl directories known to the linker should also be known to the
|
||||||
|
dnl runtime loader, otherwise the system is severely misconfigured.)
|
||||||
|
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
|
||||||
|
LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
done
|
||||||
|
if test "X$rpathdirs" != "X"; then
|
||||||
|
if test -n "$acl_hardcode_libdir_separator"; then
|
||||||
|
dnl Weird platform: only the last -rpath option counts, the user must
|
||||||
|
dnl pass all path elements in one option. We can arrange that for a
|
||||||
|
dnl single library, but not when more than one $LIBNAMEs are used.
|
||||||
|
alldirs=
|
||||||
|
for found_dir in $rpathdirs; do
|
||||||
|
alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir"
|
||||||
|
done
|
||||||
|
dnl Note: acl_hardcode_libdir_flag_spec uses $libdir and $wl.
|
||||||
|
acl_save_libdir="$libdir"
|
||||||
|
libdir="$alldirs"
|
||||||
|
eval flag=\"$acl_hardcode_libdir_flag_spec\"
|
||||||
|
libdir="$acl_save_libdir"
|
||||||
|
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
|
||||||
|
else
|
||||||
|
dnl The -rpath options are cumulative.
|
||||||
|
for found_dir in $rpathdirs; do
|
||||||
|
acl_save_libdir="$libdir"
|
||||||
|
libdir="$found_dir"
|
||||||
|
eval flag=\"$acl_hardcode_libdir_flag_spec\"
|
||||||
|
libdir="$acl_save_libdir"
|
||||||
|
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if test "X$ltrpathdirs" != "X"; then
|
||||||
|
dnl When using libtool, the option that works for both libraries and
|
||||||
|
dnl executables is -R. The -R options are cumulative.
|
||||||
|
for found_dir in $ltrpathdirs; do
|
||||||
|
LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
popdef([P_A_C_K])
|
||||||
|
popdef([PACKLIBS])
|
||||||
|
popdef([PACKUP])
|
||||||
|
popdef([PACK])
|
||||||
|
popdef([NAME])
|
||||||
|
])
|
||||||
|
|
||||||
|
dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR,
|
||||||
|
dnl unless already present in VAR.
|
||||||
|
dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes
|
||||||
|
dnl contains two or three consecutive elements that belong together.
|
||||||
|
AC_DEFUN([AC_LIB_APPENDTOVAR],
|
||||||
|
[
|
||||||
|
for element in [$2]; do
|
||||||
|
haveit=
|
||||||
|
for x in $[$1]; do
|
||||||
|
AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
|
||||||
|
if test "X$x" = "X$element"; then
|
||||||
|
haveit=yes
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if test -z "$haveit"; then
|
||||||
|
[$1]="${[$1]}${[$1]:+ }$element"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
])
|
||||||
|
|
||||||
|
dnl For those cases where a variable contains several -L and -l options
|
||||||
|
dnl referring to unknown libraries and directories, this macro determines the
|
||||||
|
dnl necessary additional linker options for the runtime path.
|
||||||
|
dnl AC_LIB_LINKFLAGS_FROM_LIBS([LDADDVAR], [LIBSVALUE], [USE-LIBTOOL])
|
||||||
|
dnl sets LDADDVAR to linker options needed together with LIBSVALUE.
|
||||||
|
dnl If USE-LIBTOOL evaluates to non-empty, linking with libtool is assumed,
|
||||||
|
dnl otherwise linking without libtool is assumed.
|
||||||
|
AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS],
|
||||||
|
[
|
||||||
|
AC_REQUIRE([AC_LIB_RPATH])
|
||||||
|
AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
|
||||||
|
$1=
|
||||||
|
if test "$enable_rpath" != no; then
|
||||||
|
if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
|
||||||
|
dnl Use an explicit option to hardcode directories into the resulting
|
||||||
|
dnl binary.
|
||||||
|
rpathdirs=
|
||||||
|
next=
|
||||||
|
for opt in $2; do
|
||||||
|
if test -n "$next"; then
|
||||||
|
dir="$next"
|
||||||
|
dnl No need to hardcode the standard /usr/lib.
|
||||||
|
if test "X$dir" != "X/usr/$acl_libdirstem" \
|
||||||
|
&& test "X$dir" != "X/usr/$acl_libdirstem2"; then
|
||||||
|
rpathdirs="$rpathdirs $dir"
|
||||||
|
fi
|
||||||
|
next=
|
||||||
|
else
|
||||||
|
case $opt in
|
||||||
|
-L) next=yes ;;
|
||||||
|
-L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'`
|
||||||
|
dnl No need to hardcode the standard /usr/lib.
|
||||||
|
if test "X$dir" != "X/usr/$acl_libdirstem" \
|
||||||
|
&& test "X$dir" != "X/usr/$acl_libdirstem2"; then
|
||||||
|
rpathdirs="$rpathdirs $dir"
|
||||||
|
fi
|
||||||
|
next= ;;
|
||||||
|
*) next= ;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if test "X$rpathdirs" != "X"; then
|
||||||
|
if test -n ""$3""; then
|
||||||
|
dnl libtool is used for linking. Use -R options.
|
||||||
|
for dir in $rpathdirs; do
|
||||||
|
$1="${$1}${$1:+ }-R$dir"
|
||||||
|
done
|
||||||
|
else
|
||||||
|
dnl The linker is used for linking directly.
|
||||||
|
if test -n "$acl_hardcode_libdir_separator"; then
|
||||||
|
dnl Weird platform: only the last -rpath option counts, the user
|
||||||
|
dnl must pass all path elements in one option.
|
||||||
|
alldirs=
|
||||||
|
for dir in $rpathdirs; do
|
||||||
|
alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$dir"
|
||||||
|
done
|
||||||
|
acl_save_libdir="$libdir"
|
||||||
|
libdir="$alldirs"
|
||||||
|
eval flag=\"$acl_hardcode_libdir_flag_spec\"
|
||||||
|
libdir="$acl_save_libdir"
|
||||||
|
$1="$flag"
|
||||||
|
else
|
||||||
|
dnl The -rpath options are cumulative.
|
||||||
|
for dir in $rpathdirs; do
|
||||||
|
acl_save_libdir="$libdir"
|
||||||
|
libdir="$dir"
|
||||||
|
eval flag=\"$acl_hardcode_libdir_flag_spec\"
|
||||||
|
libdir="$acl_save_libdir"
|
||||||
|
$1="${$1}${$1:+ }$flag"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
AC_SUBST([$1])
|
||||||
|
])
|
@ -0,0 +1,224 @@
|
|||||||
|
# lib-prefix.m4 serial 7 (gettext-0.18)
|
||||||
|
dnl Copyright (C) 2001-2005, 2008-2010 Free Software Foundation, Inc.
|
||||||
|
dnl This file is free software; the Free Software Foundation
|
||||||
|
dnl gives unlimited permission to copy and/or distribute it,
|
||||||
|
dnl with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
|
dnl From Bruno Haible.
|
||||||
|
|
||||||
|
dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and
|
||||||
|
dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't
|
||||||
|
dnl require excessive bracketing.
|
||||||
|
ifdef([AC_HELP_STRING],
|
||||||
|
[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])],
|
||||||
|
[AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])])
|
||||||
|
|
||||||
|
dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed
|
||||||
|
dnl to access previously installed libraries. The basic assumption is that
|
||||||
|
dnl a user will want packages to use other packages he previously installed
|
||||||
|
dnl with the same --prefix option.
|
||||||
|
dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate
|
||||||
|
dnl libraries, but is otherwise very convenient.
|
||||||
|
AC_DEFUN([AC_LIB_PREFIX],
|
||||||
|
[
|
||||||
|
AC_BEFORE([$0], [AC_LIB_LINKFLAGS])
|
||||||
|
AC_REQUIRE([AC_PROG_CC])
|
||||||
|
AC_REQUIRE([AC_CANONICAL_HOST])
|
||||||
|
AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
|
||||||
|
AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
|
||||||
|
dnl By default, look in $includedir and $libdir.
|
||||||
|
use_additional=yes
|
||||||
|
AC_LIB_WITH_FINAL_PREFIX([
|
||||||
|
eval additional_includedir=\"$includedir\"
|
||||||
|
eval additional_libdir=\"$libdir\"
|
||||||
|
])
|
||||||
|
AC_LIB_ARG_WITH([lib-prefix],
|
||||||
|
[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib
|
||||||
|
--without-lib-prefix don't search for libraries in includedir and libdir],
|
||||||
|
[
|
||||||
|
if test "X$withval" = "Xno"; then
|
||||||
|
use_additional=no
|
||||||
|
else
|
||||||
|
if test "X$withval" = "X"; then
|
||||||
|
AC_LIB_WITH_FINAL_PREFIX([
|
||||||
|
eval additional_includedir=\"$includedir\"
|
||||||
|
eval additional_libdir=\"$libdir\"
|
||||||
|
])
|
||||||
|
else
|
||||||
|
additional_includedir="$withval/include"
|
||||||
|
additional_libdir="$withval/$acl_libdirstem"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
])
|
||||||
|
if test $use_additional = yes; then
|
||||||
|
dnl Potentially add $additional_includedir to $CPPFLAGS.
|
||||||
|
dnl But don't add it
|
||||||
|
dnl 1. if it's the standard /usr/include,
|
||||||
|
dnl 2. if it's already present in $CPPFLAGS,
|
||||||
|
dnl 3. if it's /usr/local/include and we are using GCC on Linux,
|
||||||
|
dnl 4. if it doesn't exist as a directory.
|
||||||
|
if test "X$additional_includedir" != "X/usr/include"; then
|
||||||
|
haveit=
|
||||||
|
for x in $CPPFLAGS; do
|
||||||
|
AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
|
||||||
|
if test "X$x" = "X-I$additional_includedir"; then
|
||||||
|
haveit=yes
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if test -z "$haveit"; then
|
||||||
|
if test "X$additional_includedir" = "X/usr/local/include"; then
|
||||||
|
if test -n "$GCC"; then
|
||||||
|
case $host_os in
|
||||||
|
linux* | gnu* | k*bsd*-gnu) haveit=yes;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if test -z "$haveit"; then
|
||||||
|
if test -d "$additional_includedir"; then
|
||||||
|
dnl Really add $additional_includedir to $CPPFLAGS.
|
||||||
|
CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
dnl Potentially add $additional_libdir to $LDFLAGS.
|
||||||
|
dnl But don't add it
|
||||||
|
dnl 1. if it's the standard /usr/lib,
|
||||||
|
dnl 2. if it's already present in $LDFLAGS,
|
||||||
|
dnl 3. if it's /usr/local/lib and we are using GCC on Linux,
|
||||||
|
dnl 4. if it doesn't exist as a directory.
|
||||||
|
if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then
|
||||||
|
haveit=
|
||||||
|
for x in $LDFLAGS; do
|
||||||
|
AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
|
||||||
|
if test "X$x" = "X-L$additional_libdir"; then
|
||||||
|
haveit=yes
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if test -z "$haveit"; then
|
||||||
|
if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then
|
||||||
|
if test -n "$GCC"; then
|
||||||
|
case $host_os in
|
||||||
|
linux*) haveit=yes;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if test -z "$haveit"; then
|
||||||
|
if test -d "$additional_libdir"; then
|
||||||
|
dnl Really add $additional_libdir to $LDFLAGS.
|
||||||
|
LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
])
|
||||||
|
|
||||||
|
dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix,
|
||||||
|
dnl acl_final_exec_prefix, containing the values to which $prefix and
|
||||||
|
dnl $exec_prefix will expand at the end of the configure script.
|
||||||
|
AC_DEFUN([AC_LIB_PREPARE_PREFIX],
|
||||||
|
[
|
||||||
|
dnl Unfortunately, prefix and exec_prefix get only finally determined
|
||||||
|
dnl at the end of configure.
|
||||||
|
if test "X$prefix" = "XNONE"; then
|
||||||
|
acl_final_prefix="$ac_default_prefix"
|
||||||
|
else
|
||||||
|
acl_final_prefix="$prefix"
|
||||||
|
fi
|
||||||
|
if test "X$exec_prefix" = "XNONE"; then
|
||||||
|
acl_final_exec_prefix='${prefix}'
|
||||||
|
else
|
||||||
|
acl_final_exec_prefix="$exec_prefix"
|
||||||
|
fi
|
||||||
|
acl_save_prefix="$prefix"
|
||||||
|
prefix="$acl_final_prefix"
|
||||||
|
eval acl_final_exec_prefix=\"$acl_final_exec_prefix\"
|
||||||
|
prefix="$acl_save_prefix"
|
||||||
|
])
|
||||||
|
|
||||||
|
dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the
|
||||||
|
dnl variables prefix and exec_prefix bound to the values they will have
|
||||||
|
dnl at the end of the configure script.
|
||||||
|
AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX],
|
||||||
|
[
|
||||||
|
acl_save_prefix="$prefix"
|
||||||
|
prefix="$acl_final_prefix"
|
||||||
|
acl_save_exec_prefix="$exec_prefix"
|
||||||
|
exec_prefix="$acl_final_exec_prefix"
|
||||||
|
$1
|
||||||
|
exec_prefix="$acl_save_exec_prefix"
|
||||||
|
prefix="$acl_save_prefix"
|
||||||
|
])
|
||||||
|
|
||||||
|
dnl AC_LIB_PREPARE_MULTILIB creates
|
||||||
|
dnl - a variable acl_libdirstem, containing the basename of the libdir, either
|
||||||
|
dnl "lib" or "lib64" or "lib/64",
|
||||||
|
dnl - a variable acl_libdirstem2, as a secondary possible value for
|
||||||
|
dnl acl_libdirstem, either the same as acl_libdirstem or "lib/sparcv9" or
|
||||||
|
dnl "lib/amd64".
|
||||||
|
AC_DEFUN([AC_LIB_PREPARE_MULTILIB],
|
||||||
|
[
|
||||||
|
dnl There is no formal standard regarding lib and lib64.
|
||||||
|
dnl On glibc systems, the current practice is that on a system supporting
|
||||||
|
dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under
|
||||||
|
dnl $prefix/lib64 and 32-bit libraries go under $prefix/lib. We determine
|
||||||
|
dnl the compiler's default mode by looking at the compiler's library search
|
||||||
|
dnl path. If at least one of its elements ends in /lib64 or points to a
|
||||||
|
dnl directory whose absolute pathname ends in /lib64, we assume a 64-bit ABI.
|
||||||
|
dnl Otherwise we use the default, namely "lib".
|
||||||
|
dnl On Solaris systems, the current practice is that on a system supporting
|
||||||
|
dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under
|
||||||
|
dnl $prefix/lib/64 (which is a symlink to either $prefix/lib/sparcv9 or
|
||||||
|
dnl $prefix/lib/amd64) and 32-bit libraries go under $prefix/lib.
|
||||||
|
AC_REQUIRE([AC_CANONICAL_HOST])
|
||||||
|
acl_libdirstem=lib
|
||||||
|
acl_libdirstem2=
|
||||||
|
case "$host_os" in
|
||||||
|
solaris*)
|
||||||
|
dnl See Solaris 10 Software Developer Collection > Solaris 64-bit Developer's Guide > The Development Environment
|
||||||
|
dnl <http://docs.sun.com/app/docs/doc/816-5138/dev-env?l=en&a=view>.
|
||||||
|
dnl "Portable Makefiles should refer to any library directories using the 64 symbolic link."
|
||||||
|
dnl But we want to recognize the sparcv9 or amd64 subdirectory also if the
|
||||||
|
dnl symlink is missing, so we set acl_libdirstem2 too.
|
||||||
|
AC_CACHE_CHECK([for 64-bit host], [gl_cv_solaris_64bit],
|
||||||
|
[AC_EGREP_CPP([sixtyfour bits], [
|
||||||
|
#ifdef _LP64
|
||||||
|
sixtyfour bits
|
||||||
|
#endif
|
||||||
|
], [gl_cv_solaris_64bit=yes], [gl_cv_solaris_64bit=no])
|
||||||
|
])
|
||||||
|
if test $gl_cv_solaris_64bit = yes; then
|
||||||
|
acl_libdirstem=lib/64
|
||||||
|
case "$host_cpu" in
|
||||||
|
sparc*) acl_libdirstem2=lib/sparcv9 ;;
|
||||||
|
i*86 | x86_64) acl_libdirstem2=lib/amd64 ;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'`
|
||||||
|
if test -n "$searchpath"; then
|
||||||
|
acl_save_IFS="${IFS= }"; IFS=":"
|
||||||
|
for searchdir in $searchpath; do
|
||||||
|
if test -d "$searchdir"; then
|
||||||
|
case "$searchdir" in
|
||||||
|
*/lib64/ | */lib64 ) acl_libdirstem=lib64 ;;
|
||||||
|
*/../ | */.. )
|
||||||
|
# Better ignore directories of this form. They are misleading.
|
||||||
|
;;
|
||||||
|
*) searchdir=`cd "$searchdir" && pwd`
|
||||||
|
case "$searchdir" in
|
||||||
|
*/lib64 ) acl_libdirstem=lib64 ;;
|
||||||
|
esac ;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
IFS="$acl_save_IFS"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem"
|
||||||
|
])
|
@ -0,0 +1,32 @@
|
|||||||
|
# nls.m4 serial 5 (gettext-0.18)
|
||||||
|
dnl Copyright (C) 1995-2003, 2005-2006, 2008-2010 Free Software Foundation,
|
||||||
|
dnl Inc.
|
||||||
|
dnl This file is free software; the Free Software Foundation
|
||||||
|
dnl gives unlimited permission to copy and/or distribute it,
|
||||||
|
dnl with or without modifications, as long as this notice is preserved.
|
||||||
|
dnl
|
||||||
|
dnl This file can can be used in projects which are not available under
|
||||||
|
dnl the GNU General Public License or the GNU Library General Public
|
||||||
|
dnl License but which still want to provide support for the GNU gettext
|
||||||
|
dnl functionality.
|
||||||
|
dnl Please note that the actual code of the GNU gettext library is covered
|
||||||
|
dnl by the GNU Library General Public License, and the rest of the GNU
|
||||||
|
dnl gettext package package is covered by the GNU General Public License.
|
||||||
|
dnl They are *not* in the public domain.
|
||||||
|
|
||||||
|
dnl Authors:
|
||||||
|
dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
|
||||||
|
dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003.
|
||||||
|
|
||||||
|
AC_PREREQ([2.50])
|
||||||
|
|
||||||
|
AC_DEFUN([AM_NLS],
|
||||||
|
[
|
||||||
|
AC_MSG_CHECKING([whether NLS is requested])
|
||||||
|
dnl Default is enabled NLS
|
||||||
|
AC_ARG_ENABLE([nls],
|
||||||
|
[ --disable-nls do not use Native Language Support],
|
||||||
|
USE_NLS=$enableval, USE_NLS=yes)
|
||||||
|
AC_MSG_RESULT([$USE_NLS])
|
||||||
|
AC_SUBST([USE_NLS])
|
||||||
|
])
|
@ -0,0 +1,449 @@
|
|||||||
|
# po.m4 serial 17 (gettext-0.18)
|
||||||
|
dnl Copyright (C) 1995-2010 Free Software Foundation, Inc.
|
||||||
|
dnl This file is free software; the Free Software Foundation
|
||||||
|
dnl gives unlimited permission to copy and/or distribute it,
|
||||||
|
dnl with or without modifications, as long as this notice is preserved.
|
||||||
|
dnl
|
||||||
|
dnl This file can can be used in projects which are not available under
|
||||||
|
dnl the GNU General Public License or the GNU Library General Public
|
||||||
|
dnl License but which still want to provide support for the GNU gettext
|
||||||
|
dnl functionality.
|
||||||
|
dnl Please note that the actual code of the GNU gettext library is covered
|
||||||
|
dnl by the GNU Library General Public License, and the rest of the GNU
|
||||||
|
dnl gettext package package is covered by the GNU General Public License.
|
||||||
|
dnl They are *not* in the public domain.
|
||||||
|
|
||||||
|
dnl Authors:
|
||||||
|
dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
|
||||||
|
dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003.
|
||||||
|
|
||||||
|
AC_PREREQ([2.50])
|
||||||
|
|
||||||
|
dnl Checks for all prerequisites of the po subdirectory.
|
||||||
|
AC_DEFUN([AM_PO_SUBDIRS],
|
||||||
|
[
|
||||||
|
AC_REQUIRE([AC_PROG_MAKE_SET])dnl
|
||||||
|
AC_REQUIRE([AC_PROG_INSTALL])dnl
|
||||||
|
AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake
|
||||||
|
AC_REQUIRE([AM_NLS])dnl
|
||||||
|
|
||||||
|
dnl Release version of the gettext macros. This is used to ensure that
|
||||||
|
dnl the gettext macros and po/Makefile.in.in are in sync.
|
||||||
|
AC_SUBST([GETTEXT_MACRO_VERSION], [0.18])
|
||||||
|
|
||||||
|
dnl Perform the following tests also if --disable-nls has been given,
|
||||||
|
dnl because they are needed for "make dist" to work.
|
||||||
|
|
||||||
|
dnl Search for GNU msgfmt in the PATH.
|
||||||
|
dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions.
|
||||||
|
dnl The second test excludes FreeBSD msgfmt.
|
||||||
|
AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
|
||||||
|
[$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 &&
|
||||||
|
(if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
|
||||||
|
:)
|
||||||
|
AC_PATH_PROG([GMSGFMT], [gmsgfmt], [$MSGFMT])
|
||||||
|
|
||||||
|
dnl Test whether it is GNU msgfmt >= 0.15.
|
||||||
|
changequote(,)dnl
|
||||||
|
case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
|
||||||
|
'' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;;
|
||||||
|
*) MSGFMT_015=$MSGFMT ;;
|
||||||
|
esac
|
||||||
|
changequote([,])dnl
|
||||||
|
AC_SUBST([MSGFMT_015])
|
||||||
|
changequote(,)dnl
|
||||||
|
case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
|
||||||
|
'' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;;
|
||||||
|
*) GMSGFMT_015=$GMSGFMT ;;
|
||||||
|
esac
|
||||||
|
changequote([,])dnl
|
||||||
|
AC_SUBST([GMSGFMT_015])
|
||||||
|
|
||||||
|
dnl Search for GNU xgettext 0.12 or newer in the PATH.
|
||||||
|
dnl The first test excludes Solaris xgettext and early GNU xgettext versions.
|
||||||
|
dnl The second test excludes FreeBSD xgettext.
|
||||||
|
AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
|
||||||
|
[$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 &&
|
||||||
|
(if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
|
||||||
|
:)
|
||||||
|
dnl Remove leftover from FreeBSD xgettext call.
|
||||||
|
rm -f messages.po
|
||||||
|
|
||||||
|
dnl Test whether it is GNU xgettext >= 0.15.
|
||||||
|
changequote(,)dnl
|
||||||
|
case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
|
||||||
|
'' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;;
|
||||||
|
*) XGETTEXT_015=$XGETTEXT ;;
|
||||||
|
esac
|
||||||
|
changequote([,])dnl
|
||||||
|
AC_SUBST([XGETTEXT_015])
|
||||||
|
|
||||||
|
dnl Search for GNU msgmerge 0.11 or newer in the PATH.
|
||||||
|
AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge,
|
||||||
|
[$ac_dir/$ac_word --update -q /dev/null /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1], :)
|
||||||
|
|
||||||
|
dnl Installation directories.
|
||||||
|
dnl Autoconf >= 2.60 defines localedir. For older versions of autoconf, we
|
||||||
|
dnl have to define it here, so that it can be used in po/Makefile.
|
||||||
|
test -n "$localedir" || localedir='${datadir}/locale'
|
||||||
|
AC_SUBST([localedir])
|
||||||
|
|
||||||
|
dnl Support for AM_XGETTEXT_OPTION.
|
||||||
|
test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS=
|
||||||
|
AC_SUBST([XGETTEXT_EXTRA_OPTIONS])
|
||||||
|
|
||||||
|
AC_CONFIG_COMMANDS([po-directories], [[
|
||||||
|
for ac_file in $CONFIG_FILES; do
|
||||||
|
# Support "outfile[:infile[:infile...]]"
|
||||||
|
case "$ac_file" in
|
||||||
|
*:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
|
||||||
|
esac
|
||||||
|
# PO directories have a Makefile.in generated from Makefile.in.in.
|
||||||
|
case "$ac_file" in */Makefile.in)
|
||||||
|
# Adjust a relative srcdir.
|
||||||
|
ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
|
||||||
|
ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
|
||||||
|
ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
|
||||||
|
# In autoconf-2.13 it is called $ac_given_srcdir.
|
||||||
|
# In autoconf-2.50 it is called $srcdir.
|
||||||
|
test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
|
||||||
|
case "$ac_given_srcdir" in
|
||||||
|
.) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
|
||||||
|
/*) top_srcdir="$ac_given_srcdir" ;;
|
||||||
|
*) top_srcdir="$ac_dots$ac_given_srcdir" ;;
|
||||||
|
esac
|
||||||
|
# Treat a directory as a PO directory if and only if it has a
|
||||||
|
# POTFILES.in file. This allows packages to have multiple PO
|
||||||
|
# directories under different names or in different locations.
|
||||||
|
if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then
|
||||||
|
rm -f "$ac_dir/POTFILES"
|
||||||
|
test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES"
|
||||||
|
cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES"
|
||||||
|
POMAKEFILEDEPS="POTFILES.in"
|
||||||
|
# ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend
|
||||||
|
# on $ac_dir but don't depend on user-specified configuration
|
||||||
|
# parameters.
|
||||||
|
if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
|
||||||
|
# The LINGUAS file contains the set of available languages.
|
||||||
|
if test -n "$OBSOLETE_ALL_LINGUAS"; then
|
||||||
|
test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
|
||||||
|
fi
|
||||||
|
ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"`
|
||||||
|
# Hide the ALL_LINGUAS assigment from automake < 1.5.
|
||||||
|
eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
|
||||||
|
POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
|
||||||
|
else
|
||||||
|
# The set of available languages was given in configure.in.
|
||||||
|
# Hide the ALL_LINGUAS assigment from automake < 1.5.
|
||||||
|
eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS'
|
||||||
|
fi
|
||||||
|
# Compute POFILES
|
||||||
|
# as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po)
|
||||||
|
# Compute UPDATEPOFILES
|
||||||
|
# as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update)
|
||||||
|
# Compute DUMMYPOFILES
|
||||||
|
# as $(foreach lang, $(ALL_LINGUAS), $(lang).nop)
|
||||||
|
# Compute GMOFILES
|
||||||
|
# as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo)
|
||||||
|
case "$ac_given_srcdir" in
|
||||||
|
.) srcdirpre= ;;
|
||||||
|
*) srcdirpre='$(srcdir)/' ;;
|
||||||
|
esac
|
||||||
|
POFILES=
|
||||||
|
UPDATEPOFILES=
|
||||||
|
DUMMYPOFILES=
|
||||||
|
GMOFILES=
|
||||||
|
for lang in $ALL_LINGUAS; do
|
||||||
|
POFILES="$POFILES $srcdirpre$lang.po"
|
||||||
|
UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
|
||||||
|
DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
|
||||||
|
GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
|
||||||
|
done
|
||||||
|
# CATALOGS depends on both $ac_dir and the user's LINGUAS
|
||||||
|
# environment variable.
|
||||||
|
INST_LINGUAS=
|
||||||
|
if test -n "$ALL_LINGUAS"; then
|
||||||
|
for presentlang in $ALL_LINGUAS; do
|
||||||
|
useit=no
|
||||||
|
if test "%UNSET%" != "$LINGUAS"; then
|
||||||
|
desiredlanguages="$LINGUAS"
|
||||||
|
else
|
||||||
|
desiredlanguages="$ALL_LINGUAS"
|
||||||
|
fi
|
||||||
|
for desiredlang in $desiredlanguages; do
|
||||||
|
# Use the presentlang catalog if desiredlang is
|
||||||
|
# a. equal to presentlang, or
|
||||||
|
# b. a variant of presentlang (because in this case,
|
||||||
|
# presentlang can be used as a fallback for messages
|
||||||
|
# which are not translated in the desiredlang catalog).
|
||||||
|
case "$desiredlang" in
|
||||||
|
"$presentlang"*) useit=yes;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
if test $useit = yes; then
|
||||||
|
INST_LINGUAS="$INST_LINGUAS $presentlang"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
CATALOGS=
|
||||||
|
if test -n "$INST_LINGUAS"; then
|
||||||
|
for lang in $INST_LINGUAS; do
|
||||||
|
CATALOGS="$CATALOGS $lang.gmo"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile"
|
||||||
|
sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile"
|
||||||
|
for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do
|
||||||
|
if test -f "$f"; then
|
||||||
|
case "$f" in
|
||||||
|
*.orig | *.bak | *~) ;;
|
||||||
|
*) cat "$f" >> "$ac_dir/Makefile" ;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done]],
|
||||||
|
[# Capture the value of obsolete ALL_LINGUAS because we need it to compute
|
||||||
|
# POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it
|
||||||
|
# from automake < 1.5.
|
||||||
|
eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"'
|
||||||
|
# Capture the value of LINGUAS because we need it to compute CATALOGS.
|
||||||
|
LINGUAS="${LINGUAS-%UNSET%}"
|
||||||
|
])
|
||||||
|
])
|
||||||
|
|
||||||
|
dnl Postprocesses a Makefile in a directory containing PO files.
|
||||||
|
AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE],
|
||||||
|
[
|
||||||
|
# When this code is run, in config.status, two variables have already been
|
||||||
|
# set:
|
||||||
|
# - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in,
|
||||||
|
# - LINGUAS is the value of the environment variable LINGUAS at configure
|
||||||
|
# time.
|
||||||
|
|
||||||
|
changequote(,)dnl
|
||||||
|
# Adjust a relative srcdir.
|
||||||
|
ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
|
||||||
|
ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
|
||||||
|
ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
|
||||||
|
# In autoconf-2.13 it is called $ac_given_srcdir.
|
||||||
|
# In autoconf-2.50 it is called $srcdir.
|
||||||
|
test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
|
||||||
|
case "$ac_given_srcdir" in
|
||||||
|
.) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
|
||||||
|
/*) top_srcdir="$ac_given_srcdir" ;;
|
||||||
|
*) top_srcdir="$ac_dots$ac_given_srcdir" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# Find a way to echo strings without interpreting backslash.
|
||||||
|
if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then
|
||||||
|
gt_echo='echo'
|
||||||
|
else
|
||||||
|
if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then
|
||||||
|
gt_echo='printf %s\n'
|
||||||
|
else
|
||||||
|
echo_func () {
|
||||||
|
cat <<EOT
|
||||||
|
$*
|
||||||
|
EOT
|
||||||
|
}
|
||||||
|
gt_echo='echo_func'
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# A sed script that extracts the value of VARIABLE from a Makefile.
|
||||||
|
sed_x_variable='
|
||||||
|
# Test if the hold space is empty.
|
||||||
|
x
|
||||||
|
s/P/P/
|
||||||
|
x
|
||||||
|
ta
|
||||||
|
# Yes it was empty. Look if we have the expected variable definition.
|
||||||
|
/^[ ]*VARIABLE[ ]*=/{
|
||||||
|
# Seen the first line of the variable definition.
|
||||||
|
s/^[ ]*VARIABLE[ ]*=//
|
||||||
|
ba
|
||||||
|
}
|
||||||
|
bd
|
||||||
|
:a
|
||||||
|
# Here we are processing a line from the variable definition.
|
||||||
|
# Remove comment, more precisely replace it with a space.
|
||||||
|
s/#.*$/ /
|
||||||
|
# See if the line ends in a backslash.
|
||||||
|
tb
|
||||||
|
:b
|
||||||
|
s/\\$//
|
||||||
|
# Print the line, without the trailing backslash.
|
||||||
|
p
|
||||||
|
tc
|
||||||
|
# There was no trailing backslash. The end of the variable definition is
|
||||||
|
# reached. Clear the hold space.
|
||||||
|
s/^.*$//
|
||||||
|
x
|
||||||
|
bd
|
||||||
|
:c
|
||||||
|
# A trailing backslash means that the variable definition continues in the
|
||||||
|
# next line. Put a nonempty string into the hold space to indicate this.
|
||||||
|
s/^.*$/P/
|
||||||
|
x
|
||||||
|
:d
|
||||||
|
'
|
||||||
|
changequote([,])dnl
|
||||||
|
|
||||||
|
# Set POTFILES to the value of the Makefile variable POTFILES.
|
||||||
|
sed_x_POTFILES=`$gt_echo "$sed_x_variable" | sed -e '/^ *#/d' -e 's/VARIABLE/POTFILES/g'`
|
||||||
|
POTFILES=`sed -n -e "$sed_x_POTFILES" < "$ac_file"`
|
||||||
|
# Compute POTFILES_DEPS as
|
||||||
|
# $(foreach file, $(POTFILES), $(top_srcdir)/$(file))
|
||||||
|
POTFILES_DEPS=
|
||||||
|
for file in $POTFILES; do
|
||||||
|
POTFILES_DEPS="$POTFILES_DEPS "'$(top_srcdir)/'"$file"
|
||||||
|
done
|
||||||
|
POMAKEFILEDEPS=""
|
||||||
|
|
||||||
|
if test -n "$OBSOLETE_ALL_LINGUAS"; then
|
||||||
|
test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
|
||||||
|
fi
|
||||||
|
if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
|
||||||
|
# The LINGUAS file contains the set of available languages.
|
||||||
|
ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"`
|
||||||
|
POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
|
||||||
|
else
|
||||||
|
# Set ALL_LINGUAS to the value of the Makefile variable LINGUAS.
|
||||||
|
sed_x_LINGUAS=`$gt_echo "$sed_x_variable" | sed -e '/^ *#/d' -e 's/VARIABLE/LINGUAS/g'`
|
||||||
|
ALL_LINGUAS_=`sed -n -e "$sed_x_LINGUAS" < "$ac_file"`
|
||||||
|
fi
|
||||||
|
# Hide the ALL_LINGUAS assigment from automake < 1.5.
|
||||||
|
eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
|
||||||
|
# Compute POFILES
|
||||||
|
# as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po)
|
||||||
|
# Compute UPDATEPOFILES
|
||||||
|
# as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update)
|
||||||
|
# Compute DUMMYPOFILES
|
||||||
|
# as $(foreach lang, $(ALL_LINGUAS), $(lang).nop)
|
||||||
|
# Compute GMOFILES
|
||||||
|
# as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo)
|
||||||
|
# Compute PROPERTIESFILES
|
||||||
|
# as $(foreach lang, $(ALL_LINGUAS), $(top_srcdir)/$(DOMAIN)_$(lang).properties)
|
||||||
|
# Compute CLASSFILES
|
||||||
|
# as $(foreach lang, $(ALL_LINGUAS), $(top_srcdir)/$(DOMAIN)_$(lang).class)
|
||||||
|
# Compute QMFILES
|
||||||
|
# as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).qm)
|
||||||
|
# Compute MSGFILES
|
||||||
|
# as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(frob $(lang)).msg)
|
||||||
|
# Compute RESOURCESDLLFILES
|
||||||
|
# as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(frob $(lang))/$(DOMAIN).resources.dll)
|
||||||
|
case "$ac_given_srcdir" in
|
||||||
|
.) srcdirpre= ;;
|
||||||
|
*) srcdirpre='$(srcdir)/' ;;
|
||||||
|
esac
|
||||||
|
POFILES=
|
||||||
|
UPDATEPOFILES=
|
||||||
|
DUMMYPOFILES=
|
||||||
|
GMOFILES=
|
||||||
|
PROPERTIESFILES=
|
||||||
|
CLASSFILES=
|
||||||
|
QMFILES=
|
||||||
|
MSGFILES=
|
||||||
|
RESOURCESDLLFILES=
|
||||||
|
for lang in $ALL_LINGUAS; do
|
||||||
|
POFILES="$POFILES $srcdirpre$lang.po"
|
||||||
|
UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
|
||||||
|
DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
|
||||||
|
GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
|
||||||
|
PROPERTIESFILES="$PROPERTIESFILES \$(top_srcdir)/\$(DOMAIN)_$lang.properties"
|
||||||
|
CLASSFILES="$CLASSFILES \$(top_srcdir)/\$(DOMAIN)_$lang.class"
|
||||||
|
QMFILES="$QMFILES $srcdirpre$lang.qm"
|
||||||
|
frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
|
||||||
|
MSGFILES="$MSGFILES $srcdirpre$frobbedlang.msg"
|
||||||
|
frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
|
||||||
|
RESOURCESDLLFILES="$RESOURCESDLLFILES $srcdirpre$frobbedlang/\$(DOMAIN).resources.dll"
|
||||||
|
done
|
||||||
|
# CATALOGS depends on both $ac_dir and the user's LINGUAS
|
||||||
|
# environment variable.
|
||||||
|
INST_LINGUAS=
|
||||||
|
if test -n "$ALL_LINGUAS"; then
|
||||||
|
for presentlang in $ALL_LINGUAS; do
|
||||||
|
useit=no
|
||||||
|
if test "%UNSET%" != "$LINGUAS"; then
|
||||||
|
desiredlanguages="$LINGUAS"
|
||||||
|
else
|
||||||
|
desiredlanguages="$ALL_LINGUAS"
|
||||||
|
fi
|
||||||
|
for desiredlang in $desiredlanguages; do
|
||||||
|
# Use the presentlang catalog if desiredlang is
|
||||||
|
# a. equal to presentlang, or
|
||||||
|
# b. a variant of presentlang (because in this case,
|
||||||
|
# presentlang can be used as a fallback for messages
|
||||||
|
# which are not translated in the desiredlang catalog).
|
||||||
|
case "$desiredlang" in
|
||||||
|
"$presentlang"*) useit=yes;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
if test $useit = yes; then
|
||||||
|
INST_LINGUAS="$INST_LINGUAS $presentlang"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
CATALOGS=
|
||||||
|
JAVACATALOGS=
|
||||||
|
QTCATALOGS=
|
||||||
|
TCLCATALOGS=
|
||||||
|
CSHARPCATALOGS=
|
||||||
|
if test -n "$INST_LINGUAS"; then
|
||||||
|
for lang in $INST_LINGUAS; do
|
||||||
|
CATALOGS="$CATALOGS $lang.gmo"
|
||||||
|
JAVACATALOGS="$JAVACATALOGS \$(DOMAIN)_$lang.properties"
|
||||||
|
QTCATALOGS="$QTCATALOGS $lang.qm"
|
||||||
|
frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
|
||||||
|
TCLCATALOGS="$TCLCATALOGS $frobbedlang.msg"
|
||||||
|
frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
|
||||||
|
CSHARPCATALOGS="$CSHARPCATALOGS $frobbedlang/\$(DOMAIN).resources.dll"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
sed -e "s|@POTFILES_DEPS@|$POTFILES_DEPS|g" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@PROPERTIESFILES@|$PROPERTIESFILES|g" -e "s|@CLASSFILES@|$CLASSFILES|g" -e "s|@QMFILES@|$QMFILES|g" -e "s|@MSGFILES@|$MSGFILES|g" -e "s|@RESOURCESDLLFILES@|$RESOURCESDLLFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@JAVACATALOGS@|$JAVACATALOGS|g" -e "s|@QTCATALOGS@|$QTCATALOGS|g" -e "s|@TCLCATALOGS@|$TCLCATALOGS|g" -e "s|@CSHARPCATALOGS@|$CSHARPCATALOGS|g" -e 's,^#distdir:,distdir:,' < "$ac_file" > "$ac_file.tmp"
|
||||||
|
if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then
|
||||||
|
# Add dependencies that cannot be formulated as a simple suffix rule.
|
||||||
|
for lang in $ALL_LINGUAS; do
|
||||||
|
frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
|
||||||
|
cat >> "$ac_file.tmp" <<EOF
|
||||||
|
$frobbedlang.msg: $lang.po
|
||||||
|
@echo "\$(MSGFMT) -c --tcl -d \$(srcdir) -l $lang $srcdirpre$lang.po"; \
|
||||||
|
\$(MSGFMT) -c --tcl -d "\$(srcdir)" -l $lang $srcdirpre$lang.po || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; }
|
||||||
|
EOF
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
if grep -l '@CSHARPCATALOGS@' "$ac_file" > /dev/null; then
|
||||||
|
# Add dependencies that cannot be formulated as a simple suffix rule.
|
||||||
|
for lang in $ALL_LINGUAS; do
|
||||||
|
frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
|
||||||
|
cat >> "$ac_file.tmp" <<EOF
|
||||||
|
$frobbedlang/\$(DOMAIN).resources.dll: $lang.po
|
||||||
|
@echo "\$(MSGFMT) -c --csharp -d \$(srcdir) -l $lang $srcdirpre$lang.po -r \$(DOMAIN)"; \
|
||||||
|
\$(MSGFMT) -c --csharp -d "\$(srcdir)" -l $lang $srcdirpre$lang.po -r "\$(DOMAIN)" || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; }
|
||||||
|
EOF
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
if test -n "$POMAKEFILEDEPS"; then
|
||||||
|
cat >> "$ac_file.tmp" <<EOF
|
||||||
|
Makefile: $POMAKEFILEDEPS
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
mv "$ac_file.tmp" "$ac_file"
|
||||||
|
])
|
||||||
|
|
||||||
|
dnl Initializes the accumulator used by AM_XGETTEXT_OPTION.
|
||||||
|
AC_DEFUN([AM_XGETTEXT_OPTION_INIT],
|
||||||
|
[
|
||||||
|
XGETTEXT_EXTRA_OPTIONS=
|
||||||
|
])
|
||||||
|
|
||||||
|
dnl Registers an option to be passed to xgettext in the po subdirectory.
|
||||||
|
AC_DEFUN([AM_XGETTEXT_OPTION],
|
||||||
|
[
|
||||||
|
AC_REQUIRE([AM_XGETTEXT_OPTION_INIT])
|
||||||
|
XGETTEXT_EXTRA_OPTIONS="$XGETTEXT_EXTRA_OPTIONS $1"
|
||||||
|
])
|
@ -0,0 +1,92 @@
|
|||||||
|
# progtest.m4 serial 6 (gettext-0.18)
|
||||||
|
dnl Copyright (C) 1996-2003, 2005, 2008-2010 Free Software Foundation, Inc.
|
||||||
|
dnl This file is free software; the Free Software Foundation
|
||||||
|
dnl gives unlimited permission to copy and/or distribute it,
|
||||||
|
dnl with or without modifications, as long as this notice is preserved.
|
||||||
|
dnl
|
||||||
|
dnl This file can can be used in projects which are not available under
|
||||||
|
dnl the GNU General Public License or the GNU Library General Public
|
||||||
|
dnl License but which still want to provide support for the GNU gettext
|
||||||
|
dnl functionality.
|
||||||
|
dnl Please note that the actual code of the GNU gettext library is covered
|
||||||
|
dnl by the GNU Library General Public License, and the rest of the GNU
|
||||||
|
dnl gettext package package is covered by the GNU General Public License.
|
||||||
|
dnl They are *not* in the public domain.
|
||||||
|
|
||||||
|
dnl Authors:
|
||||||
|
dnl Ulrich Drepper <drepper@cygnus.com>, 1996.
|
||||||
|
|
||||||
|
AC_PREREQ([2.50])
|
||||||
|
|
||||||
|
# Search path for a program which passes the given test.
|
||||||
|
|
||||||
|
dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
|
||||||
|
dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
|
||||||
|
AC_DEFUN([AM_PATH_PROG_WITH_TEST],
|
||||||
|
[
|
||||||
|
# Prepare PATH_SEPARATOR.
|
||||||
|
# The user is always right.
|
||||||
|
if test "${PATH_SEPARATOR+set}" != set; then
|
||||||
|
echo "#! /bin/sh" >conf$$.sh
|
||||||
|
echo "exit 0" >>conf$$.sh
|
||||||
|
chmod +x conf$$.sh
|
||||||
|
if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
|
||||||
|
PATH_SEPARATOR=';'
|
||||||
|
else
|
||||||
|
PATH_SEPARATOR=:
|
||||||
|
fi
|
||||||
|
rm -f conf$$.sh
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Find out how to test for executable files. Don't use a zero-byte file,
|
||||||
|
# as systems may use methods other than mode bits to determine executability.
|
||||||
|
cat >conf$$.file <<_ASEOF
|
||||||
|
#! /bin/sh
|
||||||
|
exit 0
|
||||||
|
_ASEOF
|
||||||
|
chmod +x conf$$.file
|
||||||
|
if test -x conf$$.file >/dev/null 2>&1; then
|
||||||
|
ac_executable_p="test -x"
|
||||||
|
else
|
||||||
|
ac_executable_p="test -f"
|
||||||
|
fi
|
||||||
|
rm -f conf$$.file
|
||||||
|
|
||||||
|
# Extract the first word of "$2", so it can be a program name with args.
|
||||||
|
set dummy $2; ac_word=[$]2
|
||||||
|
AC_MSG_CHECKING([for $ac_word])
|
||||||
|
AC_CACHE_VAL([ac_cv_path_$1],
|
||||||
|
[case "[$]$1" in
|
||||||
|
[[\\/]]* | ?:[[\\/]]*)
|
||||||
|
ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR
|
||||||
|
for ac_dir in ifelse([$5], , $PATH, [$5]); do
|
||||||
|
IFS="$ac_save_IFS"
|
||||||
|
test -z "$ac_dir" && ac_dir=.
|
||||||
|
for ac_exec_ext in '' $ac_executable_extensions; do
|
||||||
|
if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
|
||||||
|
echo "$as_me: trying $ac_dir/$ac_word..." >&AS_MESSAGE_LOG_FD
|
||||||
|
if [$3]; then
|
||||||
|
ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext"
|
||||||
|
break 2
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
done
|
||||||
|
IFS="$ac_save_IFS"
|
||||||
|
dnl If no 4th arg is given, leave the cache variable unset,
|
||||||
|
dnl so AC_PATH_PROGS will keep looking.
|
||||||
|
ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
|
||||||
|
])dnl
|
||||||
|
;;
|
||||||
|
esac])dnl
|
||||||
|
$1="$ac_cv_path_$1"
|
||||||
|
if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then
|
||||||
|
AC_MSG_RESULT([$][$1])
|
||||||
|
else
|
||||||
|
AC_MSG_RESULT([no])
|
||||||
|
fi
|
||||||
|
AC_SUBST([$1])dnl
|
||||||
|
])
|
@ -0,0 +1,331 @@
|
|||||||
|
#! /bin/sh
|
||||||
|
# Common stub for a few missing GNU programs while installing.
|
||||||
|
|
||||||
|
scriptversion=2012-01-06.13; # UTC
|
||||||
|
|
||||||
|
# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
|
||||||
|
# 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
|
||||||
|
# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
|
||||||
|
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; either version 2, or (at your option)
|
||||||
|
# any later version.
|
||||||
|
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
# As a special exception to the GNU General Public License, if you
|
||||||
|
# distribute this file as part of a program that contains a
|
||||||
|
# configuration script generated by Autoconf, you may include it under
|
||||||
|
# the same distribution terms that you use for the rest of that program.
|
||||||
|
|
||||||
|
if test $# -eq 0; then
|
||||||
|
echo 1>&2 "Try \`$0 --help' for more information"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
run=:
|
||||||
|
sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
|
||||||
|
sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
|
||||||
|
|
||||||
|
# In the cases where this matters, `missing' is being run in the
|
||||||
|
# srcdir already.
|
||||||
|
if test -f configure.ac; then
|
||||||
|
configure_ac=configure.ac
|
||||||
|
else
|
||||||
|
configure_ac=configure.in
|
||||||
|
fi
|
||||||
|
|
||||||
|
msg="missing on your system"
|
||||||
|
|
||||||
|
case $1 in
|
||||||
|
--run)
|
||||||
|
# Try to run requested program, and just exit if it succeeds.
|
||||||
|
run=
|
||||||
|
shift
|
||||||
|
"$@" && exit 0
|
||||||
|
# Exit code 63 means version mismatch. This often happens
|
||||||
|
# when the user try to use an ancient version of a tool on
|
||||||
|
# a file that requires a minimum version. In this case we
|
||||||
|
# we should proceed has if the program had been absent, or
|
||||||
|
# if --run hadn't been passed.
|
||||||
|
if test $? = 63; then
|
||||||
|
run=:
|
||||||
|
msg="probably too old"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
-h|--h|--he|--hel|--help)
|
||||||
|
echo "\
|
||||||
|
$0 [OPTION]... PROGRAM [ARGUMENT]...
|
||||||
|
|
||||||
|
Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
|
||||||
|
error status if there is no known handling for PROGRAM.
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-h, --help display this help and exit
|
||||||
|
-v, --version output version information and exit
|
||||||
|
--run try to run the given command, and emulate it if it fails
|
||||||
|
|
||||||
|
Supported PROGRAM values:
|
||||||
|
aclocal touch file \`aclocal.m4'
|
||||||
|
autoconf touch file \`configure'
|
||||||
|
autoheader touch file \`config.h.in'
|
||||||
|
autom4te touch the output file, or create a stub one
|
||||||
|
automake touch all \`Makefile.in' files
|
||||||
|
bison create \`y.tab.[ch]', if possible, from existing .[ch]
|
||||||
|
flex create \`lex.yy.c', if possible, from existing .c
|
||||||
|
help2man touch the output file
|
||||||
|
lex create \`lex.yy.c', if possible, from existing .c
|
||||||
|
makeinfo touch the output file
|
||||||
|
yacc create \`y.tab.[ch]', if possible, from existing .[ch]
|
||||||
|
|
||||||
|
Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
|
||||||
|
\`g' are ignored when checking the name.
|
||||||
|
|
||||||
|
Send bug reports to <bug-automake@gnu.org>."
|
||||||
|
exit $?
|
||||||
|
;;
|
||||||
|
|
||||||
|
-v|--v|--ve|--ver|--vers|--versi|--versio|--version)
|
||||||
|
echo "missing $scriptversion (GNU Automake)"
|
||||||
|
exit $?
|
||||||
|
;;
|
||||||
|
|
||||||
|
-*)
|
||||||
|
echo 1>&2 "$0: Unknown \`$1' option"
|
||||||
|
echo 1>&2 "Try \`$0 --help' for more information"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
|
||||||
|
# normalize program name to check for.
|
||||||
|
program=`echo "$1" | sed '
|
||||||
|
s/^gnu-//; t
|
||||||
|
s/^gnu//; t
|
||||||
|
s/^g//; t'`
|
||||||
|
|
||||||
|
# Now exit if we have it, but it failed. Also exit now if we
|
||||||
|
# don't have it and --version was passed (most likely to detect
|
||||||
|
# the program). This is about non-GNU programs, so use $1 not
|
||||||
|
# $program.
|
||||||
|
case $1 in
|
||||||
|
lex*|yacc*)
|
||||||
|
# Not GNU programs, they don't have --version.
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
|
||||||
|
# We have it, but it failed.
|
||||||
|
exit 1
|
||||||
|
elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
|
||||||
|
# Could not run --version or --help. This is probably someone
|
||||||
|
# running `$TOOL --version' or `$TOOL --help' to check whether
|
||||||
|
# $TOOL exists and not knowing $TOOL uses missing.
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# If it does not exist, or fails to run (possibly an outdated version),
|
||||||
|
# try to emulate it.
|
||||||
|
case $program in
|
||||||
|
aclocal*)
|
||||||
|
echo 1>&2 "\
|
||||||
|
WARNING: \`$1' is $msg. You should only need it if
|
||||||
|
you modified \`acinclude.m4' or \`${configure_ac}'. You might want
|
||||||
|
to install the \`Automake' and \`Perl' packages. Grab them from
|
||||||
|
any GNU archive site."
|
||||||
|
touch aclocal.m4
|
||||||
|
;;
|
||||||
|
|
||||||
|
autoconf*)
|
||||||
|
echo 1>&2 "\
|
||||||
|
WARNING: \`$1' is $msg. You should only need it if
|
||||||
|
you modified \`${configure_ac}'. You might want to install the
|
||||||
|
\`Autoconf' and \`GNU m4' packages. Grab them from any GNU
|
||||||
|
archive site."
|
||||||
|
touch configure
|
||||||
|
;;
|
||||||
|
|
||||||
|
autoheader*)
|
||||||
|
echo 1>&2 "\
|
||||||
|
WARNING: \`$1' is $msg. You should only need it if
|
||||||
|
you modified \`acconfig.h' or \`${configure_ac}'. You might want
|
||||||
|
to install the \`Autoconf' and \`GNU m4' packages. Grab them
|
||||||
|
from any GNU archive site."
|
||||||
|
files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
|
||||||
|
test -z "$files" && files="config.h"
|
||||||
|
touch_files=
|
||||||
|
for f in $files; do
|
||||||
|
case $f in
|
||||||
|
*:*) touch_files="$touch_files "`echo "$f" |
|
||||||
|
sed -e 's/^[^:]*://' -e 's/:.*//'`;;
|
||||||
|
*) touch_files="$touch_files $f.in";;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
touch $touch_files
|
||||||
|
;;
|
||||||
|
|
||||||
|
automake*)
|
||||||
|
echo 1>&2 "\
|
||||||
|
WARNING: \`$1' is $msg. You should only need it if
|
||||||
|
you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
|
||||||
|
You might want to install the \`Automake' and \`Perl' packages.
|
||||||
|
Grab them from any GNU archive site."
|
||||||
|
find . -type f -name Makefile.am -print |
|
||||||
|
sed 's/\.am$/.in/' |
|
||||||
|
while read f; do touch "$f"; done
|
||||||
|
;;
|
||||||
|
|
||||||
|
autom4te*)
|
||||||
|
echo 1>&2 "\
|
||||||
|
WARNING: \`$1' is needed, but is $msg.
|
||||||
|
You might have modified some files without having the
|
||||||
|
proper tools for further handling them.
|
||||||
|
You can get \`$1' as part of \`Autoconf' from any GNU
|
||||||
|
archive site."
|
||||||
|
|
||||||
|
file=`echo "$*" | sed -n "$sed_output"`
|
||||||
|
test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
|
||||||
|
if test -f "$file"; then
|
||||||
|
touch $file
|
||||||
|
else
|
||||||
|
test -z "$file" || exec >$file
|
||||||
|
echo "#! /bin/sh"
|
||||||
|
echo "# Created by GNU Automake missing as a replacement of"
|
||||||
|
echo "# $ $@"
|
||||||
|
echo "exit 0"
|
||||||
|
chmod +x $file
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
bison*|yacc*)
|
||||||
|
echo 1>&2 "\
|
||||||
|
WARNING: \`$1' $msg. You should only need it if
|
||||||
|
you modified a \`.y' file. You may need the \`Bison' package
|
||||||
|
in order for those modifications to take effect. You can get
|
||||||
|
\`Bison' from any GNU archive site."
|
||||||
|
rm -f y.tab.c y.tab.h
|
||||||
|
if test $# -ne 1; then
|
||||||
|
eval LASTARG=\${$#}
|
||||||
|
case $LASTARG in
|
||||||
|
*.y)
|
||||||
|
SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
|
||||||
|
if test -f "$SRCFILE"; then
|
||||||
|
cp "$SRCFILE" y.tab.c
|
||||||
|
fi
|
||||||
|
SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
|
||||||
|
if test -f "$SRCFILE"; then
|
||||||
|
cp "$SRCFILE" y.tab.h
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
if test ! -f y.tab.h; then
|
||||||
|
echo >y.tab.h
|
||||||
|
fi
|
||||||
|
if test ! -f y.tab.c; then
|
||||||
|
echo 'main() { return 0; }' >y.tab.c
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
lex*|flex*)
|
||||||
|
echo 1>&2 "\
|
||||||
|
WARNING: \`$1' is $msg. You should only need it if
|
||||||
|
you modified a \`.l' file. You may need the \`Flex' package
|
||||||
|
in order for those modifications to take effect. You can get
|
||||||
|
\`Flex' from any GNU archive site."
|
||||||
|
rm -f lex.yy.c
|
||||||
|
if test $# -ne 1; then
|
||||||
|
eval LASTARG=\${$#}
|
||||||
|
case $LASTARG in
|
||||||
|
*.l)
|
||||||
|
SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
|
||||||
|
if test -f "$SRCFILE"; then
|
||||||
|
cp "$SRCFILE" lex.yy.c
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
if test ! -f lex.yy.c; then
|
||||||
|
echo 'main() { return 0; }' >lex.yy.c
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
help2man*)
|
||||||
|
echo 1>&2 "\
|
||||||
|
WARNING: \`$1' is $msg. You should only need it if
|
||||||
|
you modified a dependency of a manual page. You may need the
|
||||||
|
\`Help2man' package in order for those modifications to take
|
||||||
|
effect. You can get \`Help2man' from any GNU archive site."
|
||||||
|
|
||||||
|
file=`echo "$*" | sed -n "$sed_output"`
|
||||||
|
test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
|
||||||
|
if test -f "$file"; then
|
||||||
|
touch $file
|
||||||
|
else
|
||||||
|
test -z "$file" || exec >$file
|
||||||
|
echo ".ab help2man is required to generate this page"
|
||||||
|
exit $?
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
makeinfo*)
|
||||||
|
echo 1>&2 "\
|
||||||
|
WARNING: \`$1' is $msg. You should only need it if
|
||||||
|
you modified a \`.texi' or \`.texinfo' file, or any other file
|
||||||
|
indirectly affecting the aspect of the manual. The spurious
|
||||||
|
call might also be the consequence of using a buggy \`make' (AIX,
|
||||||
|
DU, IRIX). You might want to install the \`Texinfo' package or
|
||||||
|
the \`GNU make' package. Grab either from any GNU archive site."
|
||||||
|
# The file to touch is that specified with -o ...
|
||||||
|
file=`echo "$*" | sed -n "$sed_output"`
|
||||||
|
test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
|
||||||
|
if test -z "$file"; then
|
||||||
|
# ... or it is the one specified with @setfilename ...
|
||||||
|
infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
|
||||||
|
file=`sed -n '
|
||||||
|
/^@setfilename/{
|
||||||
|
s/.* \([^ ]*\) *$/\1/
|
||||||
|
p
|
||||||
|
q
|
||||||
|
}' $infile`
|
||||||
|
# ... or it is derived from the source name (dir/f.texi becomes f.info)
|
||||||
|
test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
|
||||||
|
fi
|
||||||
|
# If the file does not exist, the user really needs makeinfo;
|
||||||
|
# let's fail without touching anything.
|
||||||
|
test -f $file || exit 1
|
||||||
|
touch $file
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
echo 1>&2 "\
|
||||||
|
WARNING: \`$1' is needed, and is $msg.
|
||||||
|
You might have modified some files without having the
|
||||||
|
proper tools for further handling them. Check the \`README' file,
|
||||||
|
it often tells you about the needed prerequisites for installing
|
||||||
|
this package. You may also peek at any GNU archive site, in case
|
||||||
|
some other package would contain this missing \`$1' program."
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
# Local variables:
|
||||||
|
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||||
|
# time-stamp-start: "scriptversion="
|
||||||
|
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||||
|
# time-stamp-time-zone: "UTC"
|
||||||
|
# time-stamp-end: "; # UTC"
|
||||||
|
# End:
|
@ -0,0 +1,4 @@
|
|||||||
|
fr
|
||||||
|
es
|
||||||
|
zh_CN
|
||||||
|
ja
|
@ -0,0 +1,571 @@
|
|||||||
|
# Makefile for PO directory in any package using GNU gettext.
|
||||||
|
# Copyright (C) 1995-1997, 2000-2007, 2009-2010 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
|
||||||
|
#
|
||||||
|
# This file can be copied and used freely without restrictions. It can
|
||||||
|
# be used in projects which are not available under the GNU General Public
|
||||||
|
# License but which still want to provide support for the GNU gettext
|
||||||
|
# functionality.
|
||||||
|
# Please note that the actual code of GNU gettext is covered by the GNU
|
||||||
|
# General Public License and is *not* in the public domain.
|
||||||
|
#
|
||||||
|
# Origin: gettext-0.18
|
||||||
|
GETTEXT_MACRO_VERSION = 0.18
|
||||||
|
|
||||||
|
PACKAGE = goaccess
|
||||||
|
VERSION = 1.3
|
||||||
|
PACKAGE_BUGREPORT = goaccess@prosoftcorp.com
|
||||||
|
|
||||||
|
SHELL = /bin/sh
|
||||||
|
|
||||||
|
|
||||||
|
srcdir = .
|
||||||
|
top_srcdir = ..
|
||||||
|
|
||||||
|
|
||||||
|
prefix = /usr/local
|
||||||
|
exec_prefix = ${prefix}
|
||||||
|
datarootdir = ${prefix}/share
|
||||||
|
datadir = ${datarootdir}
|
||||||
|
localedir = ${datarootdir}/locale
|
||||||
|
gettextsrcdir = $(datadir)/gettext/po
|
||||||
|
|
||||||
|
INSTALL = /usr/bin/install -c
|
||||||
|
INSTALL_DATA = ${INSTALL} -m 644
|
||||||
|
|
||||||
|
# We use $(mkdir_p).
|
||||||
|
# In automake <= 1.9.x, $(mkdir_p) is defined either as "mkdir -p --" or as
|
||||||
|
# "$(mkinstalldirs)" or as "$(install_sh) -d". For these automake versions,
|
||||||
|
# ${SHELL} /home/djq/goaccess-1.3/install-sh does not start with $(SHELL), so we add it.
|
||||||
|
# In automake >= 1.10, /usr/bin/mkdir -p is derived from ${MKDIR_P}, which is defined
|
||||||
|
# either as "/path/to/mkdir -p" or ".../install-sh -c -d". For these automake
|
||||||
|
# versions, $(mkinstalldirs) and $(install_sh) are unused.
|
||||||
|
mkinstalldirs = $(SHELL) ${SHELL} /home/djq/goaccess-1.3/install-sh -d
|
||||||
|
install_sh = $(SHELL) ${SHELL} /home/djq/goaccess-1.3/install-sh
|
||||||
|
MKDIR_P = /usr/bin/mkdir -p
|
||||||
|
mkdir_p = /usr/bin/mkdir -p
|
||||||
|
|
||||||
|
GMSGFMT_ = :
|
||||||
|
GMSGFMT_no = :
|
||||||
|
GMSGFMT_yes = :
|
||||||
|
GMSGFMT = $(GMSGFMT_$(USE_MSGCTXT))
|
||||||
|
MSGFMT_ = :
|
||||||
|
MSGFMT_no = :
|
||||||
|
MSGFMT_yes = :
|
||||||
|
MSGFMT = $(MSGFMT_$(USE_MSGCTXT))
|
||||||
|
XGETTEXT_ = :
|
||||||
|
XGETTEXT_no = :
|
||||||
|
XGETTEXT_yes = :
|
||||||
|
XGETTEXT = $(XGETTEXT_$(USE_MSGCTXT))
|
||||||
|
MSGMERGE = msgmerge
|
||||||
|
MSGMERGE_UPDATE = : --update
|
||||||
|
MSGINIT = msginit
|
||||||
|
MSGCONV = msgconv
|
||||||
|
MSGFILTER = msgfilter
|
||||||
|
|
||||||
|
POFILES = fr.po es.po zh_CN.po ja.po
|
||||||
|
GMOFILES = fr.gmo es.gmo zh_CN.gmo ja.gmo
|
||||||
|
UPDATEPOFILES = fr.po-update es.po-update zh_CN.po-update ja.po-update
|
||||||
|
DUMMYPOFILES = fr.nop es.nop zh_CN.nop ja.nop
|
||||||
|
DISTFILES.common = Makefile.in.in remove-potcdate.sin \
|
||||||
|
$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3)
|
||||||
|
DISTFILES = $(DISTFILES.common) Makevars POTFILES.in \
|
||||||
|
$(POFILES) $(GMOFILES) \
|
||||||
|
$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3)
|
||||||
|
|
||||||
|
POTFILES = \
|
||||||
|
../src/labels.h
|
||||||
|
|
||||||
|
CATALOGS = fr.gmo es.gmo zh_CN.gmo ja.gmo
|
||||||
|
|
||||||
|
# Makevars gets inserted here. (Don't remove this line!)
|
||||||
|
# Makefile variables for PO directory in any package using GNU gettext.
|
||||||
|
|
||||||
|
# Usually the message domain is the same as the package name.
|
||||||
|
DOMAIN = $(PACKAGE)
|
||||||
|
|
||||||
|
# These two variables depend on the location of this directory.
|
||||||
|
subdir = po
|
||||||
|
top_builddir = ..
|
||||||
|
AM_CPPFLAGS = -I. -I$(srcdir)
|
||||||
|
|
||||||
|
# These options get passed to xgettext.
|
||||||
|
XGETTEXT_OPTIONS = --from-code=UTF-8 --keyword=_ --keyword=N_
|
||||||
|
|
||||||
|
# This is the copyright holder that gets inserted into the header of the
|
||||||
|
# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding
|
||||||
|
# package. (Note that the msgstr strings, extracted from the package's
|
||||||
|
# sources, belong to the copyright holder of the package.) Translators are
|
||||||
|
# expected to transfer the copyright for their translations to this person
|
||||||
|
# or entity, or to disclaim their copyright. The empty string stands for
|
||||||
|
# the public domain; in this case the translators are expected to disclaim
|
||||||
|
# their copyright.
|
||||||
|
COPYRIGHT_HOLDER = Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
# This tells whether or not to prepend "GNU " prefix to the package
|
||||||
|
# name that gets inserted into the header of the $(DOMAIN).pot file.
|
||||||
|
# Possible values are "yes", "no", or empty. If it is empty, try to
|
||||||
|
# detect it automatically by scanning the files in $(top_srcdir) for
|
||||||
|
# "GNU packagename" string.
|
||||||
|
PACKAGE_GNU =
|
||||||
|
|
||||||
|
# This is the email address or URL to which the translators shall report
|
||||||
|
# bugs in the untranslated strings:
|
||||||
|
# - Strings which are not entire sentences, see the maintainer guidelines
|
||||||
|
# in the GNU gettext documentation, section 'Preparing Strings'.
|
||||||
|
# - Strings which use unclear terms or require additional context to be
|
||||||
|
# understood.
|
||||||
|
# - Strings which make invalid assumptions about notation of date, time or
|
||||||
|
# money.
|
||||||
|
# - Pluralisation problems.
|
||||||
|
# - Incorrect English spelling.
|
||||||
|
# - Incorrect formatting.
|
||||||
|
# It can be your email address, or a mailing list address where translators
|
||||||
|
# can write to without being subscribed, or the URL of a web page through
|
||||||
|
# which the translators can contact you.
|
||||||
|
MSGID_BUGS_ADDRESS = hello@goaccess.io
|
||||||
|
|
||||||
|
# This is the list of locale categories, beyond LC_MESSAGES, for which the
|
||||||
|
# message catalogs shall be used. It is usually empty.
|
||||||
|
EXTRA_LOCALE_CATEGORIES =
|
||||||
|
|
||||||
|
# This tells whether the $(DOMAIN).pot file contains messages with an 'msgctxt'
|
||||||
|
# context. Possible values are "yes" and "no". Set this to yes if the
|
||||||
|
# package uses functions taking also a message context, like pgettext(), or
|
||||||
|
# if in $(XGETTEXT_OPTIONS) you define keywords with a context argument.
|
||||||
|
USE_MSGCTXT = no
|
||||||
|
|
||||||
|
# These options get passed to msgmerge.
|
||||||
|
# Useful options are in particular:
|
||||||
|
# --previous to keep previous msgids of translated messages,
|
||||||
|
# --quiet to reduce the verbosity.
|
||||||
|
MSGMERGE_OPTIONS =
|
||||||
|
|
||||||
|
# These options get passed to msginit.
|
||||||
|
# If you want to disable line wrapping when writing PO files, add
|
||||||
|
# --no-wrap to MSGMERGE_OPTIONS, XGETTEXT_OPTIONS, and
|
||||||
|
# MSGINIT_OPTIONS.
|
||||||
|
MSGINIT_OPTIONS =
|
||||||
|
|
||||||
|
# This tells whether or not to regenerate a PO file when $(DOMAIN).pot
|
||||||
|
# has changed. Possible values are "yes" and "no". Set this to no if
|
||||||
|
# the POT file is checked in the repository and the version control
|
||||||
|
# program ignores timestamps.
|
||||||
|
PO_DEPENDS_ON_POT = yes
|
||||||
|
|
||||||
|
# This tells whether or not to forcibly update $(DOMAIN).pot and
|
||||||
|
# regenerate PO files on "make dist". Possible values are "yes" and
|
||||||
|
# "no". Set this to no if the POT file and PO files are maintained
|
||||||
|
# externally.
|
||||||
|
DIST_DEPENDS_ON_UPDATE_PO = yes
|
||||||
|
|
||||||
|
.SUFFIXES:
|
||||||
|
.SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update
|
||||||
|
|
||||||
|
.po.mo:
|
||||||
|
@echo "$(MSGFMT) -c -o $@ $<"; \
|
||||||
|
$(MSGFMT) -c -o t-$@ $< && mv t-$@ $@
|
||||||
|
|
||||||
|
.po.gmo:
|
||||||
|
@lang=`echo $* | sed -e 's,.*/,,'`; \
|
||||||
|
test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
|
||||||
|
echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o $${lang}.gmo $${lang}.po"; \
|
||||||
|
cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo
|
||||||
|
|
||||||
|
.sin.sed:
|
||||||
|
sed -e '/^#/d' $< > t-$@
|
||||||
|
mv t-$@ $@
|
||||||
|
|
||||||
|
|
||||||
|
all: check-macro-version all-yes
|
||||||
|
|
||||||
|
all-yes: stamp-po
|
||||||
|
all-no:
|
||||||
|
|
||||||
|
# Ensure that the gettext macros and this Makefile.in.in are in sync.
|
||||||
|
check-macro-version:
|
||||||
|
@test "$(GETTEXT_MACRO_VERSION)" = "0.18" \
|
||||||
|
|| { echo "*** error: gettext infrastructure mismatch: using a Makefile.in.in from gettext version $(GETTEXT_MACRO_VERSION) but the autoconf macros are from gettext version 0.18" 1>&2; \
|
||||||
|
exit 1; \
|
||||||
|
}
|
||||||
|
|
||||||
|
# $(srcdir)/$(DOMAIN).pot is only created when needed. When xgettext finds no
|
||||||
|
# internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because
|
||||||
|
# we don't want to bother translators with empty POT files). We assume that
|
||||||
|
# LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty.
|
||||||
|
# In this case, stamp-po is a nop (i.e. a phony target).
|
||||||
|
|
||||||
|
# stamp-po is a timestamp denoting the last time at which the CATALOGS have
|
||||||
|
# been loosely updated. Its purpose is that when a developer or translator
|
||||||
|
# checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS,
|
||||||
|
# "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent
|
||||||
|
# invocations of "make" will do nothing. This timestamp would not be necessary
|
||||||
|
# if updating the $(CATALOGS) would always touch them; however, the rule for
|
||||||
|
# $(POFILES) has been designed to not touch files that don't need to be
|
||||||
|
# changed.
|
||||||
|
stamp-po: $(srcdir)/$(DOMAIN).pot
|
||||||
|
test ! -f $(srcdir)/$(DOMAIN).pot || \
|
||||||
|
test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES)
|
||||||
|
@test ! -f $(srcdir)/$(DOMAIN).pot || { \
|
||||||
|
echo "touch stamp-po" && \
|
||||||
|
echo timestamp > stamp-poT && \
|
||||||
|
mv stamp-poT stamp-po; \
|
||||||
|
}
|
||||||
|
|
||||||
|
# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update',
|
||||||
|
# otherwise packages like GCC can not be built if only parts of the source
|
||||||
|
# have been downloaded.
|
||||||
|
|
||||||
|
# This target rebuilds $(DOMAIN).pot; it is an expensive operation.
|
||||||
|
# Note that $(DOMAIN).pot is not touched if it doesn't need to be changed.
|
||||||
|
$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed
|
||||||
|
if LC_ALL=C grep 'GNU goaccess' $(top_srcdir)/* 2>/dev/null | grep -v 'libtool:' >/dev/null; then \
|
||||||
|
package_gnu='GNU '; \
|
||||||
|
else \
|
||||||
|
package_gnu=''; \
|
||||||
|
fi; \
|
||||||
|
if test -n '$(MSGID_BUGS_ADDRESS)' || test '$(PACKAGE_BUGREPORT)' = '@'PACKAGE_BUGREPORT'@'; then \
|
||||||
|
msgid_bugs_address='$(MSGID_BUGS_ADDRESS)'; \
|
||||||
|
else \
|
||||||
|
msgid_bugs_address='$(PACKAGE_BUGREPORT)'; \
|
||||||
|
fi; \
|
||||||
|
case `$(XGETTEXT) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
|
||||||
|
'' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].* | 0.16 | 0.16.[0-1]*) \
|
||||||
|
$(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
|
||||||
|
--add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) \
|
||||||
|
--files-from=$(srcdir)/POTFILES.in \
|
||||||
|
--copyright-holder='$(COPYRIGHT_HOLDER)' \
|
||||||
|
--msgid-bugs-address="$$msgid_bugs_address" \
|
||||||
|
;; \
|
||||||
|
*) \
|
||||||
|
$(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
|
||||||
|
--add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) \
|
||||||
|
--files-from=$(srcdir)/POTFILES.in \
|
||||||
|
--copyright-holder='$(COPYRIGHT_HOLDER)' \
|
||||||
|
--package-name="$${package_gnu}goaccess" \
|
||||||
|
--package-version='1.3' \
|
||||||
|
--msgid-bugs-address="$$msgid_bugs_address" \
|
||||||
|
;; \
|
||||||
|
esac
|
||||||
|
test ! -f $(DOMAIN).po || { \
|
||||||
|
if test -f $(srcdir)/$(DOMAIN).pot; then \
|
||||||
|
sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \
|
||||||
|
sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \
|
||||||
|
if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \
|
||||||
|
rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \
|
||||||
|
else \
|
||||||
|
rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \
|
||||||
|
mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
|
||||||
|
fi; \
|
||||||
|
else \
|
||||||
|
mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
|
||||||
|
fi; \
|
||||||
|
}
|
||||||
|
|
||||||
|
# This rule has no dependencies: we don't need to update $(DOMAIN).pot at
|
||||||
|
# every "make" invocation, only create it when it is missing.
|
||||||
|
# Only "make $(DOMAIN).pot-update" or "make dist" will force an update.
|
||||||
|
$(srcdir)/$(DOMAIN).pot:
|
||||||
|
$(MAKE) $(DOMAIN).pot-update
|
||||||
|
|
||||||
|
# This target rebuilds a PO file if $(DOMAIN).pot has changed.
|
||||||
|
# Note that a PO file is not touched if it doesn't need to be changed.
|
||||||
|
$(POFILES): $(srcdir)/$(DOMAIN).pot
|
||||||
|
@lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \
|
||||||
|
if test -f "$(srcdir)/$${lang}.po"; then \
|
||||||
|
test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
|
||||||
|
echo "$${cdcmd}$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot"; \
|
||||||
|
cd $(srcdir) \
|
||||||
|
&& { case `$(MSGMERGE_UPDATE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
|
||||||
|
'' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \
|
||||||
|
$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) $${lang}.po $(DOMAIN).pot;; \
|
||||||
|
*) \
|
||||||
|
$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot;; \
|
||||||
|
esac; \
|
||||||
|
}; \
|
||||||
|
else \
|
||||||
|
$(MAKE) $${lang}.po-create; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
install: install-exec install-data
|
||||||
|
install-exec:
|
||||||
|
install-data: install-data-yes
|
||||||
|
if test "$(PACKAGE)" = "gettext-tools"; then \
|
||||||
|
$(mkdir_p) $(DESTDIR)$(gettextsrcdir); \
|
||||||
|
for file in $(DISTFILES.common) Makevars.template; do \
|
||||||
|
$(INSTALL_DATA) $(srcdir)/$$file \
|
||||||
|
$(DESTDIR)$(gettextsrcdir)/$$file; \
|
||||||
|
done; \
|
||||||
|
for file in Makevars; do \
|
||||||
|
rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
|
||||||
|
done; \
|
||||||
|
else \
|
||||||
|
: ; \
|
||||||
|
fi
|
||||||
|
install-data-no: all
|
||||||
|
install-data-yes: all
|
||||||
|
@catalogs='$(CATALOGS)'; \
|
||||||
|
for cat in $$catalogs; do \
|
||||||
|
cat=`basename $$cat`; \
|
||||||
|
lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
|
||||||
|
dir=$(localedir)/$$lang/LC_MESSAGES; \
|
||||||
|
$(mkdir_p) $(DESTDIR)$$dir; \
|
||||||
|
if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \
|
||||||
|
$(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \
|
||||||
|
echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \
|
||||||
|
for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
|
||||||
|
if test -n "$$lc"; then \
|
||||||
|
if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
|
||||||
|
link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
|
||||||
|
mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
|
||||||
|
mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
|
||||||
|
(cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
|
||||||
|
for file in *; do \
|
||||||
|
if test -f $$file; then \
|
||||||
|
ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
|
||||||
|
fi; \
|
||||||
|
done); \
|
||||||
|
rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
|
||||||
|
else \
|
||||||
|
if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
|
||||||
|
:; \
|
||||||
|
else \
|
||||||
|
rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
|
||||||
|
mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
|
||||||
|
fi; \
|
||||||
|
fi; \
|
||||||
|
rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
|
||||||
|
ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
|
||||||
|
ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
|
||||||
|
cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
|
||||||
|
echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \
|
||||||
|
fi; \
|
||||||
|
done; \
|
||||||
|
done
|
||||||
|
|
||||||
|
install-strip: install
|
||||||
|
|
||||||
|
installdirs: installdirs-exec installdirs-data
|
||||||
|
installdirs-exec:
|
||||||
|
installdirs-data: installdirs-data-yes
|
||||||
|
if test "$(PACKAGE)" = "gettext-tools"; then \
|
||||||
|
$(mkdir_p) $(DESTDIR)$(gettextsrcdir); \
|
||||||
|
else \
|
||||||
|
: ; \
|
||||||
|
fi
|
||||||
|
installdirs-data-no:
|
||||||
|
installdirs-data-yes:
|
||||||
|
@catalogs='$(CATALOGS)'; \
|
||||||
|
for cat in $$catalogs; do \
|
||||||
|
cat=`basename $$cat`; \
|
||||||
|
lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
|
||||||
|
dir=$(localedir)/$$lang/LC_MESSAGES; \
|
||||||
|
$(mkdir_p) $(DESTDIR)$$dir; \
|
||||||
|
for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
|
||||||
|
if test -n "$$lc"; then \
|
||||||
|
if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
|
||||||
|
link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
|
||||||
|
mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
|
||||||
|
mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
|
||||||
|
(cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
|
||||||
|
for file in *; do \
|
||||||
|
if test -f $$file; then \
|
||||||
|
ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
|
||||||
|
fi; \
|
||||||
|
done); \
|
||||||
|
rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
|
||||||
|
else \
|
||||||
|
if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
|
||||||
|
:; \
|
||||||
|
else \
|
||||||
|
rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
|
||||||
|
mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
|
||||||
|
fi; \
|
||||||
|
fi; \
|
||||||
|
fi; \
|
||||||
|
done; \
|
||||||
|
done
|
||||||
|
|
||||||
|
# Define this as empty until I found a useful application.
|
||||||
|
installcheck:
|
||||||
|
|
||||||
|
uninstall: uninstall-exec uninstall-data
|
||||||
|
uninstall-exec:
|
||||||
|
uninstall-data: uninstall-data-yes
|
||||||
|
if test "$(PACKAGE)" = "gettext-tools"; then \
|
||||||
|
for file in $(DISTFILES.common) Makevars.template; do \
|
||||||
|
rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
|
||||||
|
done; \
|
||||||
|
else \
|
||||||
|
: ; \
|
||||||
|
fi
|
||||||
|
uninstall-data-no:
|
||||||
|
uninstall-data-yes:
|
||||||
|
catalogs='$(CATALOGS)'; \
|
||||||
|
for cat in $$catalogs; do \
|
||||||
|
cat=`basename $$cat`; \
|
||||||
|
lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
|
||||||
|
for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \
|
||||||
|
rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
|
||||||
|
done; \
|
||||||
|
done
|
||||||
|
|
||||||
|
check: all
|
||||||
|
|
||||||
|
info dvi ps pdf html tags TAGS ctags CTAGS ID:
|
||||||
|
|
||||||
|
mostlyclean:
|
||||||
|
rm -f remove-potcdate.sed
|
||||||
|
rm -f stamp-poT
|
||||||
|
rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po
|
||||||
|
rm -fr *.o
|
||||||
|
|
||||||
|
clean: mostlyclean
|
||||||
|
|
||||||
|
distclean: clean
|
||||||
|
rm -f Makefile Makefile.in POTFILES *.mo
|
||||||
|
|
||||||
|
maintainer-clean: distclean
|
||||||
|
@echo "This command is intended for maintainers to use;"
|
||||||
|
@echo "it deletes files that may require special tools to rebuild."
|
||||||
|
rm -f stamp-po $(GMOFILES)
|
||||||
|
|
||||||
|
distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
|
||||||
|
dist distdir:
|
||||||
|
$(MAKE) update-po
|
||||||
|
@$(MAKE) dist2
|
||||||
|
# This is a separate target because 'update-po' must be executed before.
|
||||||
|
dist2: stamp-po $(DISTFILES)
|
||||||
|
dists="$(DISTFILES)"; \
|
||||||
|
if test "$(PACKAGE)" = "gettext-tools"; then \
|
||||||
|
dists="$$dists Makevars.template"; \
|
||||||
|
fi; \
|
||||||
|
if test -f $(srcdir)/$(DOMAIN).pot; then \
|
||||||
|
dists="$$dists $(DOMAIN).pot stamp-po"; \
|
||||||
|
fi; \
|
||||||
|
if test -f $(srcdir)/ChangeLog; then \
|
||||||
|
dists="$$dists ChangeLog"; \
|
||||||
|
fi; \
|
||||||
|
for i in 0 1 2 3 4 5 6 7 8 9; do \
|
||||||
|
if test -f $(srcdir)/ChangeLog.$$i; then \
|
||||||
|
dists="$$dists ChangeLog.$$i"; \
|
||||||
|
fi; \
|
||||||
|
done; \
|
||||||
|
if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \
|
||||||
|
for file in $$dists; do \
|
||||||
|
if test -f $$file; then \
|
||||||
|
cp -p $$file $(distdir) || exit 1; \
|
||||||
|
else \
|
||||||
|
cp -p $(srcdir)/$$file $(distdir) || exit 1; \
|
||||||
|
fi; \
|
||||||
|
done
|
||||||
|
|
||||||
|
update-po: Makefile
|
||||||
|
$(MAKE) $(DOMAIN).pot-update
|
||||||
|
test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES)
|
||||||
|
$(MAKE) update-gmo
|
||||||
|
|
||||||
|
# General rule for creating PO files.
|
||||||
|
|
||||||
|
.nop.po-create:
|
||||||
|
@lang=`echo $@ | sed -e 's/\.po-create$$//'`; \
|
||||||
|
echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \
|
||||||
|
exit 1
|
||||||
|
|
||||||
|
# General rule for updating PO files.
|
||||||
|
|
||||||
|
.nop.po-update:
|
||||||
|
@lang=`echo $@ | sed -e 's/\.po-update$$//'`; \
|
||||||
|
if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; fi; \
|
||||||
|
tmpdir=`pwd`; \
|
||||||
|
echo "$$lang:"; \
|
||||||
|
test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
|
||||||
|
echo "$${cdcmd}$(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \
|
||||||
|
cd $(srcdir); \
|
||||||
|
if { case `$(MSGMERGE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
|
||||||
|
'' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \
|
||||||
|
$(MSGMERGE) $(MSGMERGE_OPTIONS) -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \
|
||||||
|
*) \
|
||||||
|
$(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \
|
||||||
|
esac; \
|
||||||
|
}; then \
|
||||||
|
if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
|
||||||
|
rm -f $$tmpdir/$$lang.new.po; \
|
||||||
|
else \
|
||||||
|
if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
|
||||||
|
:; \
|
||||||
|
else \
|
||||||
|
echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
|
||||||
|
exit 1; \
|
||||||
|
fi; \
|
||||||
|
fi; \
|
||||||
|
else \
|
||||||
|
echo "msgmerge for $$lang.po failed!" 1>&2; \
|
||||||
|
rm -f $$tmpdir/$$lang.new.po; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
$(DUMMYPOFILES):
|
||||||
|
|
||||||
|
update-gmo: Makefile $(GMOFILES)
|
||||||
|
@:
|
||||||
|
|
||||||
|
# Recreate Makefile by invoking config.status. Explicitly invoke the shell,
|
||||||
|
# because execution permission bits may not work on the current file system.
|
||||||
|
# Use /bin/bash, which is the shell determined by autoconf for the use by its
|
||||||
|
# scripts, not $(SHELL) which is hardwired to /bin/sh and may be deficient.
|
||||||
|
Makefile: Makefile.in.in Makevars $(top_builddir)/config.status POTFILES.in LINGUAS
|
||||||
|
cd $(top_builddir) \
|
||||||
|
&& /bin/bash ./config.status $(subdir)/$@.in po-directories
|
||||||
|
|
||||||
|
force:
|
||||||
|
|
||||||
|
# Tell versions [3.59,3.63) of GNU make not to export all variables.
|
||||||
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||||
|
.NOEXPORT:
|
||||||
|
# Special Makefile rules for English message catalogs with quotation marks.
|
||||||
|
|
||||||
|
DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot
|
||||||
|
|
||||||
|
.SUFFIXES: .insert-header .po-update-en
|
||||||
|
|
||||||
|
en@quot.po-create:
|
||||||
|
$(MAKE) en@quot.po-update
|
||||||
|
en@boldquot.po-create:
|
||||||
|
$(MAKE) en@boldquot.po-update
|
||||||
|
|
||||||
|
en@quot.po-update: en@quot.po-update-en
|
||||||
|
en@boldquot.po-update: en@boldquot.po-update-en
|
||||||
|
|
||||||
|
.insert-header.po-update-en:
|
||||||
|
@lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \
|
||||||
|
if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \
|
||||||
|
tmpdir=`pwd`; \
|
||||||
|
echo "$$lang:"; \
|
||||||
|
ll=`echo $$lang | sed -e 's/@.*//'`; \
|
||||||
|
LC_ALL=C; export LC_ALL; \
|
||||||
|
cd $(srcdir); \
|
||||||
|
if $(MSGINIT) -i $(DOMAIN).pot --no-translator -l $$lang -o - 2>/dev/null | sed -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | $(MSGFILTER) sed -f `echo $$lang | sed -e 's/.*@//'`.sed 2>/dev/null > $$tmpdir/$$lang.new.po; then \
|
||||||
|
if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
|
||||||
|
rm -f $$tmpdir/$$lang.new.po; \
|
||||||
|
else \
|
||||||
|
if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
|
||||||
|
:; \
|
||||||
|
else \
|
||||||
|
echo "creation of $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
|
||||||
|
exit 1; \
|
||||||
|
fi; \
|
||||||
|
fi; \
|
||||||
|
else \
|
||||||
|
echo "creation of $$lang.po failed!" 1>&2; \
|
||||||
|
rm -f $$tmpdir/$$lang.new.po; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
en@quot.insert-header: insert-header.sin
|
||||||
|
sed -e '/^#/d' -e 's/HEADER/en@quot.header/g' $(srcdir)/insert-header.sin > en@quot.insert-header
|
||||||
|
|
||||||
|
en@boldquot.insert-header: insert-header.sin
|
||||||
|
sed -e '/^#/d' -e 's/HEADER/en@boldquot.header/g' $(srcdir)/insert-header.sin > en@boldquot.insert-header
|
||||||
|
|
||||||
|
mostlyclean: mostlyclean-quot
|
||||||
|
mostlyclean-quot:
|
||||||
|
rm -f *.insert-header
|
@ -0,0 +1,444 @@
|
|||||||
|
# Makefile for PO directory in any package using GNU gettext.
|
||||||
|
# Copyright (C) 1995-1997, 2000-2007, 2009-2010 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
|
||||||
|
#
|
||||||
|
# This file can be copied and used freely without restrictions. It can
|
||||||
|
# be used in projects which are not available under the GNU General Public
|
||||||
|
# License but which still want to provide support for the GNU gettext
|
||||||
|
# functionality.
|
||||||
|
# Please note that the actual code of GNU gettext is covered by the GNU
|
||||||
|
# General Public License and is *not* in the public domain.
|
||||||
|
#
|
||||||
|
# Origin: gettext-0.18
|
||||||
|
GETTEXT_MACRO_VERSION = 0.18
|
||||||
|
|
||||||
|
PACKAGE = goaccess
|
||||||
|
VERSION = 1.3
|
||||||
|
PACKAGE_BUGREPORT = goaccess@prosoftcorp.com
|
||||||
|
|
||||||
|
SHELL = /bin/sh
|
||||||
|
|
||||||
|
|
||||||
|
srcdir = .
|
||||||
|
top_srcdir = ..
|
||||||
|
|
||||||
|
|
||||||
|
prefix = /usr/local
|
||||||
|
exec_prefix = ${prefix}
|
||||||
|
datarootdir = ${prefix}/share
|
||||||
|
datadir = ${datarootdir}
|
||||||
|
localedir = ${datarootdir}/locale
|
||||||
|
gettextsrcdir = $(datadir)/gettext/po
|
||||||
|
|
||||||
|
INSTALL = /usr/bin/install -c
|
||||||
|
INSTALL_DATA = ${INSTALL} -m 644
|
||||||
|
|
||||||
|
# We use $(mkdir_p).
|
||||||
|
# In automake <= 1.9.x, $(mkdir_p) is defined either as "mkdir -p --" or as
|
||||||
|
# "$(mkinstalldirs)" or as "$(install_sh) -d". For these automake versions,
|
||||||
|
# ${SHELL} /home/djq/goaccess-1.3/install-sh does not start with $(SHELL), so we add it.
|
||||||
|
# In automake >= 1.10, /usr/bin/mkdir -p is derived from ${MKDIR_P}, which is defined
|
||||||
|
# either as "/path/to/mkdir -p" or ".../install-sh -c -d". For these automake
|
||||||
|
# versions, $(mkinstalldirs) and $(install_sh) are unused.
|
||||||
|
mkinstalldirs = $(SHELL) ${SHELL} /home/djq/goaccess-1.3/install-sh -d
|
||||||
|
install_sh = $(SHELL) ${SHELL} /home/djq/goaccess-1.3/install-sh
|
||||||
|
MKDIR_P = /usr/bin/mkdir -p
|
||||||
|
mkdir_p = /usr/bin/mkdir -p
|
||||||
|
|
||||||
|
GMSGFMT_ = :
|
||||||
|
GMSGFMT_no = :
|
||||||
|
GMSGFMT_yes = :
|
||||||
|
GMSGFMT = $(GMSGFMT_$(USE_MSGCTXT))
|
||||||
|
MSGFMT_ = :
|
||||||
|
MSGFMT_no = :
|
||||||
|
MSGFMT_yes = :
|
||||||
|
MSGFMT = $(MSGFMT_$(USE_MSGCTXT))
|
||||||
|
XGETTEXT_ = :
|
||||||
|
XGETTEXT_no = :
|
||||||
|
XGETTEXT_yes = :
|
||||||
|
XGETTEXT = $(XGETTEXT_$(USE_MSGCTXT))
|
||||||
|
MSGMERGE = msgmerge
|
||||||
|
MSGMERGE_UPDATE = : --update
|
||||||
|
MSGINIT = msginit
|
||||||
|
MSGCONV = msgconv
|
||||||
|
MSGFILTER = msgfilter
|
||||||
|
|
||||||
|
POFILES = @POFILES@
|
||||||
|
GMOFILES = @GMOFILES@
|
||||||
|
UPDATEPOFILES = @UPDATEPOFILES@
|
||||||
|
DUMMYPOFILES = @DUMMYPOFILES@
|
||||||
|
DISTFILES.common = Makefile.in.in remove-potcdate.sin \
|
||||||
|
$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3)
|
||||||
|
DISTFILES = $(DISTFILES.common) Makevars POTFILES.in \
|
||||||
|
$(POFILES) $(GMOFILES) \
|
||||||
|
$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3)
|
||||||
|
|
||||||
|
POTFILES = \
|
||||||
|
|
||||||
|
CATALOGS = @CATALOGS@
|
||||||
|
|
||||||
|
# Makevars gets inserted here. (Don't remove this line!)
|
||||||
|
|
||||||
|
.SUFFIXES:
|
||||||
|
.SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update
|
||||||
|
|
||||||
|
.po.mo:
|
||||||
|
@echo "$(MSGFMT) -c -o $@ $<"; \
|
||||||
|
$(MSGFMT) -c -o t-$@ $< && mv t-$@ $@
|
||||||
|
|
||||||
|
.po.gmo:
|
||||||
|
@lang=`echo $* | sed -e 's,.*/,,'`; \
|
||||||
|
test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
|
||||||
|
echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o $${lang}.gmo $${lang}.po"; \
|
||||||
|
cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo
|
||||||
|
|
||||||
|
.sin.sed:
|
||||||
|
sed -e '/^#/d' $< > t-$@
|
||||||
|
mv t-$@ $@
|
||||||
|
|
||||||
|
|
||||||
|
all: check-macro-version all-yes
|
||||||
|
|
||||||
|
all-yes: stamp-po
|
||||||
|
all-no:
|
||||||
|
|
||||||
|
# Ensure that the gettext macros and this Makefile.in.in are in sync.
|
||||||
|
check-macro-version:
|
||||||
|
@test "$(GETTEXT_MACRO_VERSION)" = "0.18" \
|
||||||
|
|| { echo "*** error: gettext infrastructure mismatch: using a Makefile.in.in from gettext version $(GETTEXT_MACRO_VERSION) but the autoconf macros are from gettext version 0.18" 1>&2; \
|
||||||
|
exit 1; \
|
||||||
|
}
|
||||||
|
|
||||||
|
# $(srcdir)/$(DOMAIN).pot is only created when needed. When xgettext finds no
|
||||||
|
# internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because
|
||||||
|
# we don't want to bother translators with empty POT files). We assume that
|
||||||
|
# LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty.
|
||||||
|
# In this case, stamp-po is a nop (i.e. a phony target).
|
||||||
|
|
||||||
|
# stamp-po is a timestamp denoting the last time at which the CATALOGS have
|
||||||
|
# been loosely updated. Its purpose is that when a developer or translator
|
||||||
|
# checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS,
|
||||||
|
# "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent
|
||||||
|
# invocations of "make" will do nothing. This timestamp would not be necessary
|
||||||
|
# if updating the $(CATALOGS) would always touch them; however, the rule for
|
||||||
|
# $(POFILES) has been designed to not touch files that don't need to be
|
||||||
|
# changed.
|
||||||
|
stamp-po: $(srcdir)/$(DOMAIN).pot
|
||||||
|
test ! -f $(srcdir)/$(DOMAIN).pot || \
|
||||||
|
test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES)
|
||||||
|
@test ! -f $(srcdir)/$(DOMAIN).pot || { \
|
||||||
|
echo "touch stamp-po" && \
|
||||||
|
echo timestamp > stamp-poT && \
|
||||||
|
mv stamp-poT stamp-po; \
|
||||||
|
}
|
||||||
|
|
||||||
|
# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update',
|
||||||
|
# otherwise packages like GCC can not be built if only parts of the source
|
||||||
|
# have been downloaded.
|
||||||
|
|
||||||
|
# This target rebuilds $(DOMAIN).pot; it is an expensive operation.
|
||||||
|
# Note that $(DOMAIN).pot is not touched if it doesn't need to be changed.
|
||||||
|
$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed
|
||||||
|
if LC_ALL=C grep 'GNU goaccess' $(top_srcdir)/* 2>/dev/null | grep -v 'libtool:' >/dev/null; then \
|
||||||
|
package_gnu='GNU '; \
|
||||||
|
else \
|
||||||
|
package_gnu=''; \
|
||||||
|
fi; \
|
||||||
|
if test -n '$(MSGID_BUGS_ADDRESS)' || test '$(PACKAGE_BUGREPORT)' = '@'PACKAGE_BUGREPORT'@'; then \
|
||||||
|
msgid_bugs_address='$(MSGID_BUGS_ADDRESS)'; \
|
||||||
|
else \
|
||||||
|
msgid_bugs_address='$(PACKAGE_BUGREPORT)'; \
|
||||||
|
fi; \
|
||||||
|
case `$(XGETTEXT) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
|
||||||
|
'' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].* | 0.16 | 0.16.[0-1]*) \
|
||||||
|
$(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
|
||||||
|
--add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) \
|
||||||
|
--files-from=$(srcdir)/POTFILES.in \
|
||||||
|
--copyright-holder='$(COPYRIGHT_HOLDER)' \
|
||||||
|
--msgid-bugs-address="$$msgid_bugs_address" \
|
||||||
|
;; \
|
||||||
|
*) \
|
||||||
|
$(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
|
||||||
|
--add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) \
|
||||||
|
--files-from=$(srcdir)/POTFILES.in \
|
||||||
|
--copyright-holder='$(COPYRIGHT_HOLDER)' \
|
||||||
|
--package-name="$${package_gnu}goaccess" \
|
||||||
|
--package-version='1.3' \
|
||||||
|
--msgid-bugs-address="$$msgid_bugs_address" \
|
||||||
|
;; \
|
||||||
|
esac
|
||||||
|
test ! -f $(DOMAIN).po || { \
|
||||||
|
if test -f $(srcdir)/$(DOMAIN).pot; then \
|
||||||
|
sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \
|
||||||
|
sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \
|
||||||
|
if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \
|
||||||
|
rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \
|
||||||
|
else \
|
||||||
|
rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \
|
||||||
|
mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
|
||||||
|
fi; \
|
||||||
|
else \
|
||||||
|
mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
|
||||||
|
fi; \
|
||||||
|
}
|
||||||
|
|
||||||
|
# This rule has no dependencies: we don't need to update $(DOMAIN).pot at
|
||||||
|
# every "make" invocation, only create it when it is missing.
|
||||||
|
# Only "make $(DOMAIN).pot-update" or "make dist" will force an update.
|
||||||
|
$(srcdir)/$(DOMAIN).pot:
|
||||||
|
$(MAKE) $(DOMAIN).pot-update
|
||||||
|
|
||||||
|
# This target rebuilds a PO file if $(DOMAIN).pot has changed.
|
||||||
|
# Note that a PO file is not touched if it doesn't need to be changed.
|
||||||
|
$(POFILES): $(srcdir)/$(DOMAIN).pot
|
||||||
|
@lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \
|
||||||
|
if test -f "$(srcdir)/$${lang}.po"; then \
|
||||||
|
test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
|
||||||
|
echo "$${cdcmd}$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot"; \
|
||||||
|
cd $(srcdir) \
|
||||||
|
&& { case `$(MSGMERGE_UPDATE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
|
||||||
|
'' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \
|
||||||
|
$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) $${lang}.po $(DOMAIN).pot;; \
|
||||||
|
*) \
|
||||||
|
$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot;; \
|
||||||
|
esac; \
|
||||||
|
}; \
|
||||||
|
else \
|
||||||
|
$(MAKE) $${lang}.po-create; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
install: install-exec install-data
|
||||||
|
install-exec:
|
||||||
|
install-data: install-data-yes
|
||||||
|
if test "$(PACKAGE)" = "gettext-tools"; then \
|
||||||
|
$(mkdir_p) $(DESTDIR)$(gettextsrcdir); \
|
||||||
|
for file in $(DISTFILES.common) Makevars.template; do \
|
||||||
|
$(INSTALL_DATA) $(srcdir)/$$file \
|
||||||
|
$(DESTDIR)$(gettextsrcdir)/$$file; \
|
||||||
|
done; \
|
||||||
|
for file in Makevars; do \
|
||||||
|
rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
|
||||||
|
done; \
|
||||||
|
else \
|
||||||
|
: ; \
|
||||||
|
fi
|
||||||
|
install-data-no: all
|
||||||
|
install-data-yes: all
|
||||||
|
@catalogs='$(CATALOGS)'; \
|
||||||
|
for cat in $$catalogs; do \
|
||||||
|
cat=`basename $$cat`; \
|
||||||
|
lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
|
||||||
|
dir=$(localedir)/$$lang/LC_MESSAGES; \
|
||||||
|
$(mkdir_p) $(DESTDIR)$$dir; \
|
||||||
|
if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \
|
||||||
|
$(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \
|
||||||
|
echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \
|
||||||
|
for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
|
||||||
|
if test -n "$$lc"; then \
|
||||||
|
if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
|
||||||
|
link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
|
||||||
|
mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
|
||||||
|
mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
|
||||||
|
(cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
|
||||||
|
for file in *; do \
|
||||||
|
if test -f $$file; then \
|
||||||
|
ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
|
||||||
|
fi; \
|
||||||
|
done); \
|
||||||
|
rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
|
||||||
|
else \
|
||||||
|
if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
|
||||||
|
:; \
|
||||||
|
else \
|
||||||
|
rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
|
||||||
|
mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
|
||||||
|
fi; \
|
||||||
|
fi; \
|
||||||
|
rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
|
||||||
|
ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
|
||||||
|
ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
|
||||||
|
cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
|
||||||
|
echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \
|
||||||
|
fi; \
|
||||||
|
done; \
|
||||||
|
done
|
||||||
|
|
||||||
|
install-strip: install
|
||||||
|
|
||||||
|
installdirs: installdirs-exec installdirs-data
|
||||||
|
installdirs-exec:
|
||||||
|
installdirs-data: installdirs-data-yes
|
||||||
|
if test "$(PACKAGE)" = "gettext-tools"; then \
|
||||||
|
$(mkdir_p) $(DESTDIR)$(gettextsrcdir); \
|
||||||
|
else \
|
||||||
|
: ; \
|
||||||
|
fi
|
||||||
|
installdirs-data-no:
|
||||||
|
installdirs-data-yes:
|
||||||
|
@catalogs='$(CATALOGS)'; \
|
||||||
|
for cat in $$catalogs; do \
|
||||||
|
cat=`basename $$cat`; \
|
||||||
|
lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
|
||||||
|
dir=$(localedir)/$$lang/LC_MESSAGES; \
|
||||||
|
$(mkdir_p) $(DESTDIR)$$dir; \
|
||||||
|
for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
|
||||||
|
if test -n "$$lc"; then \
|
||||||
|
if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
|
||||||
|
link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
|
||||||
|
mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
|
||||||
|
mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
|
||||||
|
(cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
|
||||||
|
for file in *; do \
|
||||||
|
if test -f $$file; then \
|
||||||
|
ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
|
||||||
|
fi; \
|
||||||
|
done); \
|
||||||
|
rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
|
||||||
|
else \
|
||||||
|
if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
|
||||||
|
:; \
|
||||||
|
else \
|
||||||
|
rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
|
||||||
|
mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
|
||||||
|
fi; \
|
||||||
|
fi; \
|
||||||
|
fi; \
|
||||||
|
done; \
|
||||||
|
done
|
||||||
|
|
||||||
|
# Define this as empty until I found a useful application.
|
||||||
|
installcheck:
|
||||||
|
|
||||||
|
uninstall: uninstall-exec uninstall-data
|
||||||
|
uninstall-exec:
|
||||||
|
uninstall-data: uninstall-data-yes
|
||||||
|
if test "$(PACKAGE)" = "gettext-tools"; then \
|
||||||
|
for file in $(DISTFILES.common) Makevars.template; do \
|
||||||
|
rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
|
||||||
|
done; \
|
||||||
|
else \
|
||||||
|
: ; \
|
||||||
|
fi
|
||||||
|
uninstall-data-no:
|
||||||
|
uninstall-data-yes:
|
||||||
|
catalogs='$(CATALOGS)'; \
|
||||||
|
for cat in $$catalogs; do \
|
||||||
|
cat=`basename $$cat`; \
|
||||||
|
lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
|
||||||
|
for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \
|
||||||
|
rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
|
||||||
|
done; \
|
||||||
|
done
|
||||||
|
|
||||||
|
check: all
|
||||||
|
|
||||||
|
info dvi ps pdf html tags TAGS ctags CTAGS ID:
|
||||||
|
|
||||||
|
mostlyclean:
|
||||||
|
rm -f remove-potcdate.sed
|
||||||
|
rm -f stamp-poT
|
||||||
|
rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po
|
||||||
|
rm -fr *.o
|
||||||
|
|
||||||
|
clean: mostlyclean
|
||||||
|
|
||||||
|
distclean: clean
|
||||||
|
rm -f Makefile Makefile.in POTFILES *.mo
|
||||||
|
|
||||||
|
maintainer-clean: distclean
|
||||||
|
@echo "This command is intended for maintainers to use;"
|
||||||
|
@echo "it deletes files that may require special tools to rebuild."
|
||||||
|
rm -f stamp-po $(GMOFILES)
|
||||||
|
|
||||||
|
distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
|
||||||
|
dist distdir:
|
||||||
|
$(MAKE) update-po
|
||||||
|
@$(MAKE) dist2
|
||||||
|
# This is a separate target because 'update-po' must be executed before.
|
||||||
|
dist2: stamp-po $(DISTFILES)
|
||||||
|
dists="$(DISTFILES)"; \
|
||||||
|
if test "$(PACKAGE)" = "gettext-tools"; then \
|
||||||
|
dists="$$dists Makevars.template"; \
|
||||||
|
fi; \
|
||||||
|
if test -f $(srcdir)/$(DOMAIN).pot; then \
|
||||||
|
dists="$$dists $(DOMAIN).pot stamp-po"; \
|
||||||
|
fi; \
|
||||||
|
if test -f $(srcdir)/ChangeLog; then \
|
||||||
|
dists="$$dists ChangeLog"; \
|
||||||
|
fi; \
|
||||||
|
for i in 0 1 2 3 4 5 6 7 8 9; do \
|
||||||
|
if test -f $(srcdir)/ChangeLog.$$i; then \
|
||||||
|
dists="$$dists ChangeLog.$$i"; \
|
||||||
|
fi; \
|
||||||
|
done; \
|
||||||
|
if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \
|
||||||
|
for file in $$dists; do \
|
||||||
|
if test -f $$file; then \
|
||||||
|
cp -p $$file $(distdir) || exit 1; \
|
||||||
|
else \
|
||||||
|
cp -p $(srcdir)/$$file $(distdir) || exit 1; \
|
||||||
|
fi; \
|
||||||
|
done
|
||||||
|
|
||||||
|
update-po: Makefile
|
||||||
|
$(MAKE) $(DOMAIN).pot-update
|
||||||
|
test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES)
|
||||||
|
$(MAKE) update-gmo
|
||||||
|
|
||||||
|
# General rule for creating PO files.
|
||||||
|
|
||||||
|
.nop.po-create:
|
||||||
|
@lang=`echo $@ | sed -e 's/\.po-create$$//'`; \
|
||||||
|
echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \
|
||||||
|
exit 1
|
||||||
|
|
||||||
|
# General rule for updating PO files.
|
||||||
|
|
||||||
|
.nop.po-update:
|
||||||
|
@lang=`echo $@ | sed -e 's/\.po-update$$//'`; \
|
||||||
|
if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; fi; \
|
||||||
|
tmpdir=`pwd`; \
|
||||||
|
echo "$$lang:"; \
|
||||||
|
test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
|
||||||
|
echo "$${cdcmd}$(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \
|
||||||
|
cd $(srcdir); \
|
||||||
|
if { case `$(MSGMERGE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
|
||||||
|
'' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \
|
||||||
|
$(MSGMERGE) $(MSGMERGE_OPTIONS) -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \
|
||||||
|
*) \
|
||||||
|
$(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \
|
||||||
|
esac; \
|
||||||
|
}; then \
|
||||||
|
if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
|
||||||
|
rm -f $$tmpdir/$$lang.new.po; \
|
||||||
|
else \
|
||||||
|
if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
|
||||||
|
:; \
|
||||||
|
else \
|
||||||
|
echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
|
||||||
|
exit 1; \
|
||||||
|
fi; \
|
||||||
|
fi; \
|
||||||
|
else \
|
||||||
|
echo "msgmerge for $$lang.po failed!" 1>&2; \
|
||||||
|
rm -f $$tmpdir/$$lang.new.po; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
$(DUMMYPOFILES):
|
||||||
|
|
||||||
|
update-gmo: Makefile $(GMOFILES)
|
||||||
|
@:
|
||||||
|
|
||||||
|
# Recreate Makefile by invoking config.status. Explicitly invoke the shell,
|
||||||
|
# because execution permission bits may not work on the current file system.
|
||||||
|
# Use /bin/bash, which is the shell determined by autoconf for the use by its
|
||||||
|
# scripts, not $(SHELL) which is hardwired to /bin/sh and may be deficient.
|
||||||
|
Makefile: Makefile.in.in Makevars $(top_builddir)/config.status @POMAKEFILEDEPS@
|
||||||
|
cd $(top_builddir) \
|
||||||
|
&& /bin/bash ./config.status $(subdir)/$@.in po-directories
|
||||||
|
|
||||||
|
force:
|
||||||
|
|
||||||
|
# Tell versions [3.59,3.63) of GNU make not to export all variables.
|
||||||
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||||
|
.NOEXPORT:
|
@ -0,0 +1,444 @@
|
|||||||
|
# Makefile for PO directory in any package using GNU gettext.
|
||||||
|
# Copyright (C) 1995-1997, 2000-2007, 2009-2010 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
|
||||||
|
#
|
||||||
|
# This file can be copied and used freely without restrictions. It can
|
||||||
|
# be used in projects which are not available under the GNU General Public
|
||||||
|
# License but which still want to provide support for the GNU gettext
|
||||||
|
# functionality.
|
||||||
|
# Please note that the actual code of GNU gettext is covered by the GNU
|
||||||
|
# General Public License and is *not* in the public domain.
|
||||||
|
#
|
||||||
|
# Origin: gettext-0.18
|
||||||
|
GETTEXT_MACRO_VERSION = 0.18
|
||||||
|
|
||||||
|
PACKAGE = @PACKAGE@
|
||||||
|
VERSION = @VERSION@
|
||||||
|
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||||
|
|
||||||
|
SHELL = /bin/sh
|
||||||
|
@SET_MAKE@
|
||||||
|
|
||||||
|
srcdir = @srcdir@
|
||||||
|
top_srcdir = @top_srcdir@
|
||||||
|
VPATH = @srcdir@
|
||||||
|
|
||||||
|
prefix = @prefix@
|
||||||
|
exec_prefix = @exec_prefix@
|
||||||
|
datarootdir = @datarootdir@
|
||||||
|
datadir = @datadir@
|
||||||
|
localedir = @localedir@
|
||||||
|
gettextsrcdir = $(datadir)/gettext/po
|
||||||
|
|
||||||
|
INSTALL = @INSTALL@
|
||||||
|
INSTALL_DATA = @INSTALL_DATA@
|
||||||
|
|
||||||
|
# We use $(mkdir_p).
|
||||||
|
# In automake <= 1.9.x, $(mkdir_p) is defined either as "mkdir -p --" or as
|
||||||
|
# "$(mkinstalldirs)" or as "$(install_sh) -d". For these automake versions,
|
||||||
|
# @install_sh@ does not start with $(SHELL), so we add it.
|
||||||
|
# In automake >= 1.10, @mkdir_p@ is derived from ${MKDIR_P}, which is defined
|
||||||
|
# either as "/path/to/mkdir -p" or ".../install-sh -c -d". For these automake
|
||||||
|
# versions, $(mkinstalldirs) and $(install_sh) are unused.
|
||||||
|
mkinstalldirs = $(SHELL) @install_sh@ -d
|
||||||
|
install_sh = $(SHELL) @install_sh@
|
||||||
|
MKDIR_P = @MKDIR_P@
|
||||||
|
mkdir_p = @mkdir_p@
|
||||||
|
|
||||||
|
GMSGFMT_ = @GMSGFMT@
|
||||||
|
GMSGFMT_no = @GMSGFMT@
|
||||||
|
GMSGFMT_yes = @GMSGFMT_015@
|
||||||
|
GMSGFMT = $(GMSGFMT_$(USE_MSGCTXT))
|
||||||
|
MSGFMT_ = @MSGFMT@
|
||||||
|
MSGFMT_no = @MSGFMT@
|
||||||
|
MSGFMT_yes = @MSGFMT_015@
|
||||||
|
MSGFMT = $(MSGFMT_$(USE_MSGCTXT))
|
||||||
|
XGETTEXT_ = @XGETTEXT@
|
||||||
|
XGETTEXT_no = @XGETTEXT@
|
||||||
|
XGETTEXT_yes = @XGETTEXT_015@
|
||||||
|
XGETTEXT = $(XGETTEXT_$(USE_MSGCTXT))
|
||||||
|
MSGMERGE = msgmerge
|
||||||
|
MSGMERGE_UPDATE = @MSGMERGE@ --update
|
||||||
|
MSGINIT = msginit
|
||||||
|
MSGCONV = msgconv
|
||||||
|
MSGFILTER = msgfilter
|
||||||
|
|
||||||
|
POFILES = @POFILES@
|
||||||
|
GMOFILES = @GMOFILES@
|
||||||
|
UPDATEPOFILES = @UPDATEPOFILES@
|
||||||
|
DUMMYPOFILES = @DUMMYPOFILES@
|
||||||
|
DISTFILES.common = Makefile.in.in remove-potcdate.sin \
|
||||||
|
$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3)
|
||||||
|
DISTFILES = $(DISTFILES.common) Makevars POTFILES.in \
|
||||||
|
$(POFILES) $(GMOFILES) \
|
||||||
|
$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3)
|
||||||
|
|
||||||
|
POTFILES = \
|
||||||
|
|
||||||
|
CATALOGS = @CATALOGS@
|
||||||
|
|
||||||
|
# Makevars gets inserted here. (Don't remove this line!)
|
||||||
|
|
||||||
|
.SUFFIXES:
|
||||||
|
.SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update
|
||||||
|
|
||||||
|
.po.mo:
|
||||||
|
@echo "$(MSGFMT) -c -o $@ $<"; \
|
||||||
|
$(MSGFMT) -c -o t-$@ $< && mv t-$@ $@
|
||||||
|
|
||||||
|
.po.gmo:
|
||||||
|
@lang=`echo $* | sed -e 's,.*/,,'`; \
|
||||||
|
test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
|
||||||
|
echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o $${lang}.gmo $${lang}.po"; \
|
||||||
|
cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo
|
||||||
|
|
||||||
|
.sin.sed:
|
||||||
|
sed -e '/^#/d' $< > t-$@
|
||||||
|
mv t-$@ $@
|
||||||
|
|
||||||
|
|
||||||
|
all: check-macro-version all-@USE_NLS@
|
||||||
|
|
||||||
|
all-yes: stamp-po
|
||||||
|
all-no:
|
||||||
|
|
||||||
|
# Ensure that the gettext macros and this Makefile.in.in are in sync.
|
||||||
|
check-macro-version:
|
||||||
|
@test "$(GETTEXT_MACRO_VERSION)" = "@GETTEXT_MACRO_VERSION@" \
|
||||||
|
|| { echo "*** error: gettext infrastructure mismatch: using a Makefile.in.in from gettext version $(GETTEXT_MACRO_VERSION) but the autoconf macros are from gettext version @GETTEXT_MACRO_VERSION@" 1>&2; \
|
||||||
|
exit 1; \
|
||||||
|
}
|
||||||
|
|
||||||
|
# $(srcdir)/$(DOMAIN).pot is only created when needed. When xgettext finds no
|
||||||
|
# internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because
|
||||||
|
# we don't want to bother translators with empty POT files). We assume that
|
||||||
|
# LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty.
|
||||||
|
# In this case, stamp-po is a nop (i.e. a phony target).
|
||||||
|
|
||||||
|
# stamp-po is a timestamp denoting the last time at which the CATALOGS have
|
||||||
|
# been loosely updated. Its purpose is that when a developer or translator
|
||||||
|
# checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS,
|
||||||
|
# "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent
|
||||||
|
# invocations of "make" will do nothing. This timestamp would not be necessary
|
||||||
|
# if updating the $(CATALOGS) would always touch them; however, the rule for
|
||||||
|
# $(POFILES) has been designed to not touch files that don't need to be
|
||||||
|
# changed.
|
||||||
|
stamp-po: $(srcdir)/$(DOMAIN).pot
|
||||||
|
test ! -f $(srcdir)/$(DOMAIN).pot || \
|
||||||
|
test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES)
|
||||||
|
@test ! -f $(srcdir)/$(DOMAIN).pot || { \
|
||||||
|
echo "touch stamp-po" && \
|
||||||
|
echo timestamp > stamp-poT && \
|
||||||
|
mv stamp-poT stamp-po; \
|
||||||
|
}
|
||||||
|
|
||||||
|
# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update',
|
||||||
|
# otherwise packages like GCC can not be built if only parts of the source
|
||||||
|
# have been downloaded.
|
||||||
|
|
||||||
|
# This target rebuilds $(DOMAIN).pot; it is an expensive operation.
|
||||||
|
# Note that $(DOMAIN).pot is not touched if it doesn't need to be changed.
|
||||||
|
$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed
|
||||||
|
if LC_ALL=C grep 'GNU @PACKAGE@' $(top_srcdir)/* 2>/dev/null | grep -v 'libtool:' >/dev/null; then \
|
||||||
|
package_gnu='GNU '; \
|
||||||
|
else \
|
||||||
|
package_gnu=''; \
|
||||||
|
fi; \
|
||||||
|
if test -n '$(MSGID_BUGS_ADDRESS)' || test '$(PACKAGE_BUGREPORT)' = '@'PACKAGE_BUGREPORT'@'; then \
|
||||||
|
msgid_bugs_address='$(MSGID_BUGS_ADDRESS)'; \
|
||||||
|
else \
|
||||||
|
msgid_bugs_address='$(PACKAGE_BUGREPORT)'; \
|
||||||
|
fi; \
|
||||||
|
case `$(XGETTEXT) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
|
||||||
|
'' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].* | 0.16 | 0.16.[0-1]*) \
|
||||||
|
$(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
|
||||||
|
--add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \
|
||||||
|
--files-from=$(srcdir)/POTFILES.in \
|
||||||
|
--copyright-holder='$(COPYRIGHT_HOLDER)' \
|
||||||
|
--msgid-bugs-address="$$msgid_bugs_address" \
|
||||||
|
;; \
|
||||||
|
*) \
|
||||||
|
$(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
|
||||||
|
--add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \
|
||||||
|
--files-from=$(srcdir)/POTFILES.in \
|
||||||
|
--copyright-holder='$(COPYRIGHT_HOLDER)' \
|
||||||
|
--package-name="$${package_gnu}@PACKAGE@" \
|
||||||
|
--package-version='@VERSION@' \
|
||||||
|
--msgid-bugs-address="$$msgid_bugs_address" \
|
||||||
|
;; \
|
||||||
|
esac
|
||||||
|
test ! -f $(DOMAIN).po || { \
|
||||||
|
if test -f $(srcdir)/$(DOMAIN).pot; then \
|
||||||
|
sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \
|
||||||
|
sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \
|
||||||
|
if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \
|
||||||
|
rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \
|
||||||
|
else \
|
||||||
|
rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \
|
||||||
|
mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
|
||||||
|
fi; \
|
||||||
|
else \
|
||||||
|
mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
|
||||||
|
fi; \
|
||||||
|
}
|
||||||
|
|
||||||
|
# This rule has no dependencies: we don't need to update $(DOMAIN).pot at
|
||||||
|
# every "make" invocation, only create it when it is missing.
|
||||||
|
# Only "make $(DOMAIN).pot-update" or "make dist" will force an update.
|
||||||
|
$(srcdir)/$(DOMAIN).pot:
|
||||||
|
$(MAKE) $(DOMAIN).pot-update
|
||||||
|
|
||||||
|
# This target rebuilds a PO file if $(DOMAIN).pot has changed.
|
||||||
|
# Note that a PO file is not touched if it doesn't need to be changed.
|
||||||
|
$(POFILES): $(srcdir)/$(DOMAIN).pot
|
||||||
|
@lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \
|
||||||
|
if test -f "$(srcdir)/$${lang}.po"; then \
|
||||||
|
test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
|
||||||
|
echo "$${cdcmd}$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot"; \
|
||||||
|
cd $(srcdir) \
|
||||||
|
&& { case `$(MSGMERGE_UPDATE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
|
||||||
|
'' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \
|
||||||
|
$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) $${lang}.po $(DOMAIN).pot;; \
|
||||||
|
*) \
|
||||||
|
$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot;; \
|
||||||
|
esac; \
|
||||||
|
}; \
|
||||||
|
else \
|
||||||
|
$(MAKE) $${lang}.po-create; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
install: install-exec install-data
|
||||||
|
install-exec:
|
||||||
|
install-data: install-data-@USE_NLS@
|
||||||
|
if test "$(PACKAGE)" = "gettext-tools"; then \
|
||||||
|
$(mkdir_p) $(DESTDIR)$(gettextsrcdir); \
|
||||||
|
for file in $(DISTFILES.common) Makevars.template; do \
|
||||||
|
$(INSTALL_DATA) $(srcdir)/$$file \
|
||||||
|
$(DESTDIR)$(gettextsrcdir)/$$file; \
|
||||||
|
done; \
|
||||||
|
for file in Makevars; do \
|
||||||
|
rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
|
||||||
|
done; \
|
||||||
|
else \
|
||||||
|
: ; \
|
||||||
|
fi
|
||||||
|
install-data-no: all
|
||||||
|
install-data-yes: all
|
||||||
|
@catalogs='$(CATALOGS)'; \
|
||||||
|
for cat in $$catalogs; do \
|
||||||
|
cat=`basename $$cat`; \
|
||||||
|
lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
|
||||||
|
dir=$(localedir)/$$lang/LC_MESSAGES; \
|
||||||
|
$(mkdir_p) $(DESTDIR)$$dir; \
|
||||||
|
if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \
|
||||||
|
$(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \
|
||||||
|
echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \
|
||||||
|
for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
|
||||||
|
if test -n "$$lc"; then \
|
||||||
|
if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
|
||||||
|
link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
|
||||||
|
mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
|
||||||
|
mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
|
||||||
|
(cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
|
||||||
|
for file in *; do \
|
||||||
|
if test -f $$file; then \
|
||||||
|
ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
|
||||||
|
fi; \
|
||||||
|
done); \
|
||||||
|
rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
|
||||||
|
else \
|
||||||
|
if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
|
||||||
|
:; \
|
||||||
|
else \
|
||||||
|
rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
|
||||||
|
mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
|
||||||
|
fi; \
|
||||||
|
fi; \
|
||||||
|
rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
|
||||||
|
ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
|
||||||
|
ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
|
||||||
|
cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
|
||||||
|
echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \
|
||||||
|
fi; \
|
||||||
|
done; \
|
||||||
|
done
|
||||||
|
|
||||||
|
install-strip: install
|
||||||
|
|
||||||
|
installdirs: installdirs-exec installdirs-data
|
||||||
|
installdirs-exec:
|
||||||
|
installdirs-data: installdirs-data-@USE_NLS@
|
||||||
|
if test "$(PACKAGE)" = "gettext-tools"; then \
|
||||||
|
$(mkdir_p) $(DESTDIR)$(gettextsrcdir); \
|
||||||
|
else \
|
||||||
|
: ; \
|
||||||
|
fi
|
||||||
|
installdirs-data-no:
|
||||||
|
installdirs-data-yes:
|
||||||
|
@catalogs='$(CATALOGS)'; \
|
||||||
|
for cat in $$catalogs; do \
|
||||||
|
cat=`basename $$cat`; \
|
||||||
|
lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
|
||||||
|
dir=$(localedir)/$$lang/LC_MESSAGES; \
|
||||||
|
$(mkdir_p) $(DESTDIR)$$dir; \
|
||||||
|
for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
|
||||||
|
if test -n "$$lc"; then \
|
||||||
|
if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
|
||||||
|
link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
|
||||||
|
mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
|
||||||
|
mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
|
||||||
|
(cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
|
||||||
|
for file in *; do \
|
||||||
|
if test -f $$file; then \
|
||||||
|
ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
|
||||||
|
fi; \
|
||||||
|
done); \
|
||||||
|
rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
|
||||||
|
else \
|
||||||
|
if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
|
||||||
|
:; \
|
||||||
|
else \
|
||||||
|
rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
|
||||||
|
mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
|
||||||
|
fi; \
|
||||||
|
fi; \
|
||||||
|
fi; \
|
||||||
|
done; \
|
||||||
|
done
|
||||||
|
|
||||||
|
# Define this as empty until I found a useful application.
|
||||||
|
installcheck:
|
||||||
|
|
||||||
|
uninstall: uninstall-exec uninstall-data
|
||||||
|
uninstall-exec:
|
||||||
|
uninstall-data: uninstall-data-@USE_NLS@
|
||||||
|
if test "$(PACKAGE)" = "gettext-tools"; then \
|
||||||
|
for file in $(DISTFILES.common) Makevars.template; do \
|
||||||
|
rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
|
||||||
|
done; \
|
||||||
|
else \
|
||||||
|
: ; \
|
||||||
|
fi
|
||||||
|
uninstall-data-no:
|
||||||
|
uninstall-data-yes:
|
||||||
|
catalogs='$(CATALOGS)'; \
|
||||||
|
for cat in $$catalogs; do \
|
||||||
|
cat=`basename $$cat`; \
|
||||||
|
lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
|
||||||
|
for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \
|
||||||
|
rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
|
||||||
|
done; \
|
||||||
|
done
|
||||||
|
|
||||||
|
check: all
|
||||||
|
|
||||||
|
info dvi ps pdf html tags TAGS ctags CTAGS ID:
|
||||||
|
|
||||||
|
mostlyclean:
|
||||||
|
rm -f remove-potcdate.sed
|
||||||
|
rm -f stamp-poT
|
||||||
|
rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po
|
||||||
|
rm -fr *.o
|
||||||
|
|
||||||
|
clean: mostlyclean
|
||||||
|
|
||||||
|
distclean: clean
|
||||||
|
rm -f Makefile Makefile.in POTFILES *.mo
|
||||||
|
|
||||||
|
maintainer-clean: distclean
|
||||||
|
@echo "This command is intended for maintainers to use;"
|
||||||
|
@echo "it deletes files that may require special tools to rebuild."
|
||||||
|
rm -f stamp-po $(GMOFILES)
|
||||||
|
|
||||||
|
distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
|
||||||
|
dist distdir:
|
||||||
|
$(MAKE) update-po
|
||||||
|
@$(MAKE) dist2
|
||||||
|
# This is a separate target because 'update-po' must be executed before.
|
||||||
|
dist2: stamp-po $(DISTFILES)
|
||||||
|
dists="$(DISTFILES)"; \
|
||||||
|
if test "$(PACKAGE)" = "gettext-tools"; then \
|
||||||
|
dists="$$dists Makevars.template"; \
|
||||||
|
fi; \
|
||||||
|
if test -f $(srcdir)/$(DOMAIN).pot; then \
|
||||||
|
dists="$$dists $(DOMAIN).pot stamp-po"; \
|
||||||
|
fi; \
|
||||||
|
if test -f $(srcdir)/ChangeLog; then \
|
||||||
|
dists="$$dists ChangeLog"; \
|
||||||
|
fi; \
|
||||||
|
for i in 0 1 2 3 4 5 6 7 8 9; do \
|
||||||
|
if test -f $(srcdir)/ChangeLog.$$i; then \
|
||||||
|
dists="$$dists ChangeLog.$$i"; \
|
||||||
|
fi; \
|
||||||
|
done; \
|
||||||
|
if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \
|
||||||
|
for file in $$dists; do \
|
||||||
|
if test -f $$file; then \
|
||||||
|
cp -p $$file $(distdir) || exit 1; \
|
||||||
|
else \
|
||||||
|
cp -p $(srcdir)/$$file $(distdir) || exit 1; \
|
||||||
|
fi; \
|
||||||
|
done
|
||||||
|
|
||||||
|
update-po: Makefile
|
||||||
|
$(MAKE) $(DOMAIN).pot-update
|
||||||
|
test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES)
|
||||||
|
$(MAKE) update-gmo
|
||||||
|
|
||||||
|
# General rule for creating PO files.
|
||||||
|
|
||||||
|
.nop.po-create:
|
||||||
|
@lang=`echo $@ | sed -e 's/\.po-create$$//'`; \
|
||||||
|
echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \
|
||||||
|
exit 1
|
||||||
|
|
||||||
|
# General rule for updating PO files.
|
||||||
|
|
||||||
|
.nop.po-update:
|
||||||
|
@lang=`echo $@ | sed -e 's/\.po-update$$//'`; \
|
||||||
|
if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; fi; \
|
||||||
|
tmpdir=`pwd`; \
|
||||||
|
echo "$$lang:"; \
|
||||||
|
test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
|
||||||
|
echo "$${cdcmd}$(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \
|
||||||
|
cd $(srcdir); \
|
||||||
|
if { case `$(MSGMERGE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
|
||||||
|
'' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \
|
||||||
|
$(MSGMERGE) $(MSGMERGE_OPTIONS) -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \
|
||||||
|
*) \
|
||||||
|
$(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \
|
||||||
|
esac; \
|
||||||
|
}; then \
|
||||||
|
if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
|
||||||
|
rm -f $$tmpdir/$$lang.new.po; \
|
||||||
|
else \
|
||||||
|
if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
|
||||||
|
:; \
|
||||||
|
else \
|
||||||
|
echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
|
||||||
|
exit 1; \
|
||||||
|
fi; \
|
||||||
|
fi; \
|
||||||
|
else \
|
||||||
|
echo "msgmerge for $$lang.po failed!" 1>&2; \
|
||||||
|
rm -f $$tmpdir/$$lang.new.po; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
$(DUMMYPOFILES):
|
||||||
|
|
||||||
|
update-gmo: Makefile $(GMOFILES)
|
||||||
|
@:
|
||||||
|
|
||||||
|
# Recreate Makefile by invoking config.status. Explicitly invoke the shell,
|
||||||
|
# because execution permission bits may not work on the current file system.
|
||||||
|
# Use @SHELL@, which is the shell determined by autoconf for the use by its
|
||||||
|
# scripts, not $(SHELL) which is hardwired to /bin/sh and may be deficient.
|
||||||
|
Makefile: Makefile.in.in Makevars $(top_builddir)/config.status @POMAKEFILEDEPS@
|
||||||
|
cd $(top_builddir) \
|
||||||
|
&& @SHELL@ ./config.status $(subdir)/$@.in po-directories
|
||||||
|
|
||||||
|
force:
|
||||||
|
|
||||||
|
# Tell versions [3.59,3.63) of GNU make not to export all variables.
|
||||||
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||||
|
.NOEXPORT:
|
@ -0,0 +1,79 @@
|
|||||||
|
# Makefile variables for PO directory in any package using GNU gettext.
|
||||||
|
|
||||||
|
# Usually the message domain is the same as the package name.
|
||||||
|
DOMAIN = $(PACKAGE)
|
||||||
|
|
||||||
|
# These two variables depend on the location of this directory.
|
||||||
|
subdir = po
|
||||||
|
top_builddir = ..
|
||||||
|
AM_CPPFLAGS = -I. -I$(srcdir)
|
||||||
|
|
||||||
|
# These options get passed to xgettext.
|
||||||
|
XGETTEXT_OPTIONS = --from-code=UTF-8 --keyword=_ --keyword=N_
|
||||||
|
|
||||||
|
# This is the copyright holder that gets inserted into the header of the
|
||||||
|
# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding
|
||||||
|
# package. (Note that the msgstr strings, extracted from the package's
|
||||||
|
# sources, belong to the copyright holder of the package.) Translators are
|
||||||
|
# expected to transfer the copyright for their translations to this person
|
||||||
|
# or entity, or to disclaim their copyright. The empty string stands for
|
||||||
|
# the public domain; in this case the translators are expected to disclaim
|
||||||
|
# their copyright.
|
||||||
|
COPYRIGHT_HOLDER = Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
# This tells whether or not to prepend "GNU " prefix to the package
|
||||||
|
# name that gets inserted into the header of the $(DOMAIN).pot file.
|
||||||
|
# Possible values are "yes", "no", or empty. If it is empty, try to
|
||||||
|
# detect it automatically by scanning the files in $(top_srcdir) for
|
||||||
|
# "GNU packagename" string.
|
||||||
|
PACKAGE_GNU =
|
||||||
|
|
||||||
|
# This is the email address or URL to which the translators shall report
|
||||||
|
# bugs in the untranslated strings:
|
||||||
|
# - Strings which are not entire sentences, see the maintainer guidelines
|
||||||
|
# in the GNU gettext documentation, section 'Preparing Strings'.
|
||||||
|
# - Strings which use unclear terms or require additional context to be
|
||||||
|
# understood.
|
||||||
|
# - Strings which make invalid assumptions about notation of date, time or
|
||||||
|
# money.
|
||||||
|
# - Pluralisation problems.
|
||||||
|
# - Incorrect English spelling.
|
||||||
|
# - Incorrect formatting.
|
||||||
|
# It can be your email address, or a mailing list address where translators
|
||||||
|
# can write to without being subscribed, or the URL of a web page through
|
||||||
|
# which the translators can contact you.
|
||||||
|
MSGID_BUGS_ADDRESS = hello@goaccess.io
|
||||||
|
|
||||||
|
# This is the list of locale categories, beyond LC_MESSAGES, for which the
|
||||||
|
# message catalogs shall be used. It is usually empty.
|
||||||
|
EXTRA_LOCALE_CATEGORIES =
|
||||||
|
|
||||||
|
# This tells whether the $(DOMAIN).pot file contains messages with an 'msgctxt'
|
||||||
|
# context. Possible values are "yes" and "no". Set this to yes if the
|
||||||
|
# package uses functions taking also a message context, like pgettext(), or
|
||||||
|
# if in $(XGETTEXT_OPTIONS) you define keywords with a context argument.
|
||||||
|
USE_MSGCTXT = no
|
||||||
|
|
||||||
|
# These options get passed to msgmerge.
|
||||||
|
# Useful options are in particular:
|
||||||
|
# --previous to keep previous msgids of translated messages,
|
||||||
|
# --quiet to reduce the verbosity.
|
||||||
|
MSGMERGE_OPTIONS =
|
||||||
|
|
||||||
|
# These options get passed to msginit.
|
||||||
|
# If you want to disable line wrapping when writing PO files, add
|
||||||
|
# --no-wrap to MSGMERGE_OPTIONS, XGETTEXT_OPTIONS, and
|
||||||
|
# MSGINIT_OPTIONS.
|
||||||
|
MSGINIT_OPTIONS =
|
||||||
|
|
||||||
|
# This tells whether or not to regenerate a PO file when $(DOMAIN).pot
|
||||||
|
# has changed. Possible values are "yes" and "no". Set this to no if
|
||||||
|
# the POT file is checked in the repository and the version control
|
||||||
|
# program ignores timestamps.
|
||||||
|
PO_DEPENDS_ON_POT = yes
|
||||||
|
|
||||||
|
# This tells whether or not to forcibly update $(DOMAIN).pot and
|
||||||
|
# regenerate PO files on "make dist". Possible values are "yes" and
|
||||||
|
# "no". Set this to no if the POT file and PO files are maintained
|
||||||
|
# externally.
|
||||||
|
DIST_DEPENDS_ON_UPDATE_PO = yes
|
@ -0,0 +1 @@
|
|||||||
|
../src/labels.h
|
@ -0,0 +1,2 @@
|
|||||||
|
# List of source files which contain translatable strings.
|
||||||
|
src/labels.h
|
@ -0,0 +1,47 @@
|
|||||||
|
# Special Makefile rules for English message catalogs with quotation marks.
|
||||||
|
|
||||||
|
DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot
|
||||||
|
|
||||||
|
.SUFFIXES: .insert-header .po-update-en
|
||||||
|
|
||||||
|
en@quot.po-create:
|
||||||
|
$(MAKE) en@quot.po-update
|
||||||
|
en@boldquot.po-create:
|
||||||
|
$(MAKE) en@boldquot.po-update
|
||||||
|
|
||||||
|
en@quot.po-update: en@quot.po-update-en
|
||||||
|
en@boldquot.po-update: en@boldquot.po-update-en
|
||||||
|
|
||||||
|
.insert-header.po-update-en:
|
||||||
|
@lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \
|
||||||
|
if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \
|
||||||
|
tmpdir=`pwd`; \
|
||||||
|
echo "$$lang:"; \
|
||||||
|
ll=`echo $$lang | sed -e 's/@.*//'`; \
|
||||||
|
LC_ALL=C; export LC_ALL; \
|
||||||
|
cd $(srcdir); \
|
||||||
|
if $(MSGINIT) -i $(DOMAIN).pot --no-translator -l $$lang -o - 2>/dev/null | sed -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | $(MSGFILTER) sed -f `echo $$lang | sed -e 's/.*@//'`.sed 2>/dev/null > $$tmpdir/$$lang.new.po; then \
|
||||||
|
if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
|
||||||
|
rm -f $$tmpdir/$$lang.new.po; \
|
||||||
|
else \
|
||||||
|
if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
|
||||||
|
:; \
|
||||||
|
else \
|
||||||
|
echo "creation of $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
|
||||||
|
exit 1; \
|
||||||
|
fi; \
|
||||||
|
fi; \
|
||||||
|
else \
|
||||||
|
echo "creation of $$lang.po failed!" 1>&2; \
|
||||||
|
rm -f $$tmpdir/$$lang.new.po; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
en@quot.insert-header: insert-header.sin
|
||||||
|
sed -e '/^#/d' -e 's/HEADER/en@quot.header/g' $(srcdir)/insert-header.sin > en@quot.insert-header
|
||||||
|
|
||||||
|
en@boldquot.insert-header: insert-header.sin
|
||||||
|
sed -e '/^#/d' -e 's/HEADER/en@boldquot.header/g' $(srcdir)/insert-header.sin > en@boldquot.insert-header
|
||||||
|
|
||||||
|
mostlyclean: mostlyclean-quot
|
||||||
|
mostlyclean-quot:
|
||||||
|
rm -f *.insert-header
|
@ -0,0 +1,25 @@
|
|||||||
|
# All this catalog "translates" are quotation characters.
|
||||||
|
# The msgids must be ASCII and therefore cannot contain real quotation
|
||||||
|
# characters, only substitutes like grave accent (0x60), apostrophe (0x27)
|
||||||
|
# and double quote (0x22). These substitutes look strange; see
|
||||||
|
# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
|
||||||
|
#
|
||||||
|
# This catalog translates grave accent (0x60) and apostrophe (0x27) to
|
||||||
|
# left single quotation mark (U+2018) and right single quotation mark (U+2019).
|
||||||
|
# It also translates pairs of apostrophe (0x27) to
|
||||||
|
# left single quotation mark (U+2018) and right single quotation mark (U+2019)
|
||||||
|
# and pairs of quotation mark (0x22) to
|
||||||
|
# left double quotation mark (U+201C) and right double quotation mark (U+201D).
|
||||||
|
#
|
||||||
|
# When output to an UTF-8 terminal, the quotation characters appear perfectly.
|
||||||
|
# When output to an ISO-8859-1 terminal, the single quotation marks are
|
||||||
|
# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to
|
||||||
|
# grave/acute accent (by libiconv), and the double quotation marks are
|
||||||
|
# transliterated to 0x22.
|
||||||
|
# When output to an ASCII terminal, the single quotation marks are
|
||||||
|
# transliterated to apostrophes, and the double quotation marks are
|
||||||
|
# transliterated to 0x22.
|
||||||
|
#
|
||||||
|
# This catalog furthermore displays the text between the quotation marks in
|
||||||
|
# bold face, assuming the VT100/XTerm escape sequences.
|
||||||
|
#
|
@ -0,0 +1,22 @@
|
|||||||
|
# All this catalog "translates" are quotation characters.
|
||||||
|
# The msgids must be ASCII and therefore cannot contain real quotation
|
||||||
|
# characters, only substitutes like grave accent (0x60), apostrophe (0x27)
|
||||||
|
# and double quote (0x22). These substitutes look strange; see
|
||||||
|
# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
|
||||||
|
#
|
||||||
|
# This catalog translates grave accent (0x60) and apostrophe (0x27) to
|
||||||
|
# left single quotation mark (U+2018) and right single quotation mark (U+2019).
|
||||||
|
# It also translates pairs of apostrophe (0x27) to
|
||||||
|
# left single quotation mark (U+2018) and right single quotation mark (U+2019)
|
||||||
|
# and pairs of quotation mark (0x22) to
|
||||||
|
# left double quotation mark (U+201C) and right double quotation mark (U+201D).
|
||||||
|
#
|
||||||
|
# When output to an UTF-8 terminal, the quotation characters appear perfectly.
|
||||||
|
# When output to an ISO-8859-1 terminal, the single quotation marks are
|
||||||
|
# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to
|
||||||
|
# grave/acute accent (by libiconv), and the double quotation marks are
|
||||||
|
# transliterated to 0x22.
|
||||||
|
# When output to an ASCII terminal, the single quotation marks are
|
||||||
|
# transliterated to apostrophes, and the double quotation marks are
|
||||||
|
# transliterated to 0x22.
|
||||||
|
#
|
@ -0,0 +1,902 @@
|
|||||||
|
# SOME DESCRIPTIVE TITLE.
|
||||||
|
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||||
|
# This file is distributed under the same license as the PACKAGE package.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Goaccess\n"
|
||||||
|
"Report-Msgid-Bugs-To: hello@goaccess.io\n"
|
||||||
|
"POT-Creation-Date: 2018-11-22 23:38-0600\n"
|
||||||
|
"PO-Revision-Date: 2017-08-04 13:00-0300\n"
|
||||||
|
"Last-Translator: Enrique Becerra <kabeza@gmail.com>\n"
|
||||||
|
"Language-Team: \n"
|
||||||
|
"Language: es\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"X-Generator: Poedit 1.5.4\n"
|
||||||
|
|
||||||
|
#: src/labels.h:40
|
||||||
|
msgid "en"
|
||||||
|
msgstr "es"
|
||||||
|
|
||||||
|
#: src/labels.h:43
|
||||||
|
msgid "Exp. Panel"
|
||||||
|
msgstr "Exp. Panel"
|
||||||
|
|
||||||
|
#: src/labels.h:44
|
||||||
|
msgid "Help"
|
||||||
|
msgstr "Ayuda"
|
||||||
|
|
||||||
|
#: src/labels.h:45
|
||||||
|
msgid "Quit"
|
||||||
|
msgstr "Salir"
|
||||||
|
|
||||||
|
#: src/labels.h:46
|
||||||
|
msgid "Total"
|
||||||
|
msgstr "Total"
|
||||||
|
|
||||||
|
#: src/labels.h:49
|
||||||
|
msgid "[x] ASC [ ] DESC"
|
||||||
|
msgstr "[x] ASC [ ] DESC"
|
||||||
|
|
||||||
|
#: src/labels.h:50
|
||||||
|
msgid "[ ] ASC [x] DESC"
|
||||||
|
msgstr "[ ] ASC [x] DESC"
|
||||||
|
|
||||||
|
#: src/labels.h:53
|
||||||
|
#, c-format
|
||||||
|
msgid "[Active Panel: %1$s]"
|
||||||
|
msgstr "[Panel Activo: %1$s]"
|
||||||
|
|
||||||
|
#: src/labels.h:54
|
||||||
|
msgid "[q]uit GoAccess"
|
||||||
|
msgstr "[q]Salir GoAccess"
|
||||||
|
|
||||||
|
#: src/labels.h:55
|
||||||
|
msgid "[?] Help [Enter] Exp. Panel"
|
||||||
|
msgstr "[?] Ayuda [Enter] Exp. Panel"
|
||||||
|
|
||||||
|
#: src/labels.h:56
|
||||||
|
msgid "Dashboard"
|
||||||
|
msgstr "Panel de Control"
|
||||||
|
|
||||||
|
#: src/labels.h:57
|
||||||
|
msgid "Dashboard - Overall Analyzed Requests"
|
||||||
|
msgstr "Panel de Control - Peticiones Analizadas En General"
|
||||||
|
|
||||||
|
#: src/labels.h:58
|
||||||
|
msgid "Overall Analyzed Requests"
|
||||||
|
msgstr "Peticiones Analizadas en General"
|
||||||
|
|
||||||
|
#: src/labels.h:60 src/labels.h:81
|
||||||
|
msgid "Tx. Amount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:61
|
||||||
|
msgid "Date/Time"
|
||||||
|
msgstr "Fecha/Hora"
|
||||||
|
|
||||||
|
#: src/labels.h:62
|
||||||
|
msgid "Excl. IP Hits"
|
||||||
|
msgstr "Accesos IP Excl."
|
||||||
|
|
||||||
|
#: src/labels.h:63
|
||||||
|
msgid "Failed Requests"
|
||||||
|
msgstr "Peticiones Fallidas"
|
||||||
|
|
||||||
|
#: src/labels.h:64
|
||||||
|
msgid "Init. Proc. Time"
|
||||||
|
msgstr "Hora Inicio Proc."
|
||||||
|
|
||||||
|
#: src/labels.h:65
|
||||||
|
msgid "Log Size"
|
||||||
|
msgstr "Tamaño Log"
|
||||||
|
|
||||||
|
#: src/labels.h:66
|
||||||
|
msgid "Log Source"
|
||||||
|
msgstr "Origen de Log"
|
||||||
|
|
||||||
|
#: src/labels.h:67 src/labels.h:174
|
||||||
|
msgid "Referrers"
|
||||||
|
msgstr "Referidos"
|
||||||
|
|
||||||
|
#: src/labels.h:68
|
||||||
|
msgid "Total Requests"
|
||||||
|
msgstr "Peticiones Totales"
|
||||||
|
|
||||||
|
#: src/labels.h:69
|
||||||
|
msgid "Static Files"
|
||||||
|
msgstr "Archivos Estaticos"
|
||||||
|
|
||||||
|
#: src/labels.h:70 src/labels.h:146
|
||||||
|
msgid "Not Found"
|
||||||
|
msgstr "No Encontrado"
|
||||||
|
|
||||||
|
#: src/labels.h:71
|
||||||
|
#, fuzzy
|
||||||
|
msgid "Requested Files"
|
||||||
|
msgstr "Archivos Requeridos (URLs)"
|
||||||
|
|
||||||
|
#: src/labels.h:72
|
||||||
|
msgid "Unique Visitors"
|
||||||
|
msgstr "Visitantes Unicos"
|
||||||
|
|
||||||
|
#: src/labels.h:73
|
||||||
|
msgid "Valid Requests"
|
||||||
|
msgstr "Peticiones Validas"
|
||||||
|
|
||||||
|
#: src/labels.h:76
|
||||||
|
msgid "Hits"
|
||||||
|
msgstr "Hits"
|
||||||
|
|
||||||
|
#: src/labels.h:77
|
||||||
|
msgid "h%"
|
||||||
|
msgstr "h%"
|
||||||
|
|
||||||
|
#: src/labels.h:78 src/labels.h:104
|
||||||
|
msgid "Visitors"
|
||||||
|
msgstr "Visitantes"
|
||||||
|
|
||||||
|
#: src/labels.h:79
|
||||||
|
msgid "Vis."
|
||||||
|
msgstr "Vis."
|
||||||
|
|
||||||
|
#: src/labels.h:80
|
||||||
|
msgid "v%"
|
||||||
|
msgstr "v%"
|
||||||
|
|
||||||
|
#: src/labels.h:82
|
||||||
|
msgid "Avg. T.S."
|
||||||
|
msgstr "Prom. T.S."
|
||||||
|
|
||||||
|
#: src/labels.h:83
|
||||||
|
msgid "Cum. T.S."
|
||||||
|
msgstr "Cum. T.S."
|
||||||
|
|
||||||
|
#: src/labels.h:84
|
||||||
|
msgid "Max. T.S."
|
||||||
|
msgstr "Max. T.S."
|
||||||
|
|
||||||
|
#: src/labels.h:85
|
||||||
|
msgid "Method"
|
||||||
|
msgstr "Metodo"
|
||||||
|
|
||||||
|
#: src/labels.h:86
|
||||||
|
msgid "Mtd"
|
||||||
|
msgstr "Mtd"
|
||||||
|
|
||||||
|
#: src/labels.h:87
|
||||||
|
msgid "Protocol"
|
||||||
|
msgstr "Protocolo"
|
||||||
|
|
||||||
|
#: src/labels.h:88
|
||||||
|
msgid "Proto"
|
||||||
|
msgstr "Proto"
|
||||||
|
|
||||||
|
#: src/labels.h:89
|
||||||
|
msgid "City"
|
||||||
|
msgstr "Ciudad"
|
||||||
|
|
||||||
|
#: src/labels.h:90
|
||||||
|
msgid "Country"
|
||||||
|
msgstr "Pais"
|
||||||
|
|
||||||
|
#: src/labels.h:91
|
||||||
|
msgid "Hostname"
|
||||||
|
msgstr "Hostname"
|
||||||
|
|
||||||
|
#: src/labels.h:92
|
||||||
|
msgid "Data"
|
||||||
|
msgstr "Datos"
|
||||||
|
|
||||||
|
#: src/labels.h:94
|
||||||
|
msgid "Hits/Visitors"
|
||||||
|
msgstr "Hits/Visitas"
|
||||||
|
|
||||||
|
#: src/labels.h:98
|
||||||
|
msgid "Unique visitors per day"
|
||||||
|
msgstr "Visitantes unicos por dia"
|
||||||
|
|
||||||
|
#: src/labels.h:100
|
||||||
|
msgid "Unique visitors per day - Including spiders"
|
||||||
|
msgstr "Visitantes unicos por dia - Incluyendo M.Busqueda"
|
||||||
|
|
||||||
|
#: src/labels.h:102
|
||||||
|
msgid "Hits having the same IP, date and agent are a unique visit."
|
||||||
|
msgstr "Hits con el mismo IP, fecha y agente son unica visita"
|
||||||
|
|
||||||
|
#: src/labels.h:107
|
||||||
|
msgid "Requested Files (URLs)"
|
||||||
|
msgstr "Archivos Requeridos (URLs)"
|
||||||
|
|
||||||
|
#: src/labels.h:109
|
||||||
|
msgid "Top requests sorted by hits [, avgts, cumts, maxts, mthd, proto]"
|
||||||
|
msgstr "Peticiones Top ordenadas por hits [, avgts, cumts, maxts, mthd, proto]"
|
||||||
|
|
||||||
|
#: src/labels.h:111
|
||||||
|
msgid "Requests"
|
||||||
|
msgstr "Peticiones"
|
||||||
|
|
||||||
|
#: src/labels.h:114 src/labels.h:118
|
||||||
|
msgid "Static Requests"
|
||||||
|
msgstr "Peticiones Estaticas"
|
||||||
|
|
||||||
|
#: src/labels.h:116
|
||||||
|
msgid "Top static requests sorted by hits [, avgts, cumts, maxts, mthd, proto]"
|
||||||
|
msgstr ""
|
||||||
|
"Peticiones estaticas top ordenadas por hits [, avgts, cumts, maxts, mthd, "
|
||||||
|
"proto]"
|
||||||
|
|
||||||
|
#: src/labels.h:121
|
||||||
|
msgid "Time Distribution"
|
||||||
|
msgstr "Distribucion Horaria"
|
||||||
|
|
||||||
|
#: src/labels.h:123
|
||||||
|
msgid "Data sorted by hour [, avgts, cumts, maxts]"
|
||||||
|
msgstr "Datos ordenados por hora [, avgts, cumts, maxts]"
|
||||||
|
|
||||||
|
#: src/labels.h:125
|
||||||
|
msgid "Time"
|
||||||
|
msgstr "Hora"
|
||||||
|
|
||||||
|
#: src/labels.h:128 src/labels.h:132
|
||||||
|
msgid "Virtual Hosts"
|
||||||
|
msgstr "Hosts Virtuales"
|
||||||
|
|
||||||
|
#: src/labels.h:130 src/labels.h:137
|
||||||
|
msgid "Data sorted by hits [, avgts, cumts, maxts]"
|
||||||
|
msgstr "Datos ordenados por hits [, avgts, cumts, maxts]"
|
||||||
|
|
||||||
|
#: src/labels.h:135
|
||||||
|
msgid "Remote User (HTTP authentication)"
|
||||||
|
msgstr "Usuario Remoto (Autenticacion HTTP)"
|
||||||
|
|
||||||
|
#: src/labels.h:139
|
||||||
|
msgid "Remote User"
|
||||||
|
msgstr "Usuario Remoto"
|
||||||
|
|
||||||
|
#: src/labels.h:142
|
||||||
|
msgid "Not Found URLs (404s)"
|
||||||
|
msgstr "URLs no encontradas (404)"
|
||||||
|
|
||||||
|
#: src/labels.h:144
|
||||||
|
msgid "Top not found URLs sorted by hits [, avgts, cumts, maxts, mthd, proto]"
|
||||||
|
msgstr ""
|
||||||
|
"URLs no encontradas top ordenadas por hits [, avgts, cumts, maxts, mthd, "
|
||||||
|
"proto]"
|
||||||
|
|
||||||
|
#: src/labels.h:149
|
||||||
|
msgid "Visitor Hostnames and IPs"
|
||||||
|
msgstr "Hosts e IPs de los Visitantes"
|
||||||
|
|
||||||
|
#: src/labels.h:151
|
||||||
|
msgid "Top visitor hosts sorted by hits [, avgts, cumts, maxts]"
|
||||||
|
msgstr "Hosts de visitante top ordenado por hits [, avgts, cumts, maxts]"
|
||||||
|
|
||||||
|
#: src/labels.h:153
|
||||||
|
msgid "Hosts"
|
||||||
|
msgstr "Hosts"
|
||||||
|
|
||||||
|
#: src/labels.h:156
|
||||||
|
msgid "Operating Systems"
|
||||||
|
msgstr "Sistemas Operativos"
|
||||||
|
|
||||||
|
#: src/labels.h:158
|
||||||
|
msgid "Top Operating Systems sorted by hits [, avgts, cumts, maxts]"
|
||||||
|
msgstr "Sistemas Operativos top ordenados por hits [, avgts, cumts, maxts]"
|
||||||
|
|
||||||
|
#: src/labels.h:160
|
||||||
|
msgid "OS"
|
||||||
|
msgstr "SO"
|
||||||
|
|
||||||
|
#: src/labels.h:163 src/labels.h:167
|
||||||
|
msgid "Browsers"
|
||||||
|
msgstr "Navegadores"
|
||||||
|
|
||||||
|
#: src/labels.h:165
|
||||||
|
msgid "Top Browsers sorted by hits [, avgts, cumts, maxts]"
|
||||||
|
msgstr "Navegadores top ordenados por hits [, avgts, cumts, maxts]"
|
||||||
|
|
||||||
|
#: src/labels.h:170
|
||||||
|
msgid "Referrers URLs"
|
||||||
|
msgstr "URLs Referidos"
|
||||||
|
|
||||||
|
#: src/labels.h:172
|
||||||
|
msgid "Top Requested Referrers sorted by hits [, avgts, cumts, maxts]"
|
||||||
|
msgstr "Peticiones top de referidos ordenadas por hits [, avgts, cumts, maxts]"
|
||||||
|
|
||||||
|
#: src/labels.h:177 src/labels.h:181
|
||||||
|
msgid "Referring Sites"
|
||||||
|
msgstr "Sitios Referidos"
|
||||||
|
|
||||||
|
#: src/labels.h:179
|
||||||
|
msgid "Top Referring Sites sorted by hits [, avgts, cumts, maxts]"
|
||||||
|
msgstr "Sitios Referidos top ordenados por hits [, avgts, cumts, maxts]"
|
||||||
|
|
||||||
|
#: src/labels.h:184
|
||||||
|
msgid "Keyphrases from Google's search engine"
|
||||||
|
msgstr "Frases de busqueda de motor de busqueda Google"
|
||||||
|
|
||||||
|
#: src/labels.h:186
|
||||||
|
msgid "Top Keyphrases sorted by hits [, avgts, cumts, maxts]"
|
||||||
|
msgstr "Frases de busqueda top ordenadas por hits [, avgts, cumts, maxts]"
|
||||||
|
|
||||||
|
#: src/labels.h:188
|
||||||
|
msgid "Keyphrases"
|
||||||
|
msgstr "Frases Clave"
|
||||||
|
|
||||||
|
#: src/labels.h:191 src/labels.h:195
|
||||||
|
msgid "Geo Location"
|
||||||
|
msgstr "Geo Localizacion"
|
||||||
|
|
||||||
|
#: src/labels.h:193
|
||||||
|
msgid "Continent > Country sorted by unique hits [, avgts, cumts, maxts]"
|
||||||
|
msgstr "Continente > Pais ordenado por hits unicos [, avgts, cumts, maxts]"
|
||||||
|
|
||||||
|
#: src/labels.h:198
|
||||||
|
msgid "HTTP Status Codes"
|
||||||
|
msgstr "Codigos de Estado HTTP"
|
||||||
|
|
||||||
|
#: src/labels.h:200
|
||||||
|
msgid "Top HTTP Status Codes sorted by hits [, avgts, cumts, maxts]"
|
||||||
|
msgstr "Codigos de Estado HTTP top ordenados por hits [, avgts, cumts, maxts]"
|
||||||
|
|
||||||
|
#: src/labels.h:202
|
||||||
|
msgid "Status Codes"
|
||||||
|
msgstr "Codigos de Estado"
|
||||||
|
|
||||||
|
#: src/labels.h:206
|
||||||
|
msgid "[ ] case sensitive"
|
||||||
|
msgstr "[ ] distinguir mayusculas"
|
||||||
|
|
||||||
|
#: src/labels.h:208
|
||||||
|
msgid "[x] case sensitive"
|
||||||
|
msgstr "[x] distinguir mayusculas"
|
||||||
|
|
||||||
|
#: src/labels.h:210
|
||||||
|
msgid "Regex allowed - ^g to cancel - TAB switch case"
|
||||||
|
msgstr "Permitido Regex - ^g para cancelar - TAB cambiar case"
|
||||||
|
|
||||||
|
#: src/labels.h:212
|
||||||
|
msgid "Find pattern in all views"
|
||||||
|
msgstr "Encontrar patron en todas las vistas"
|
||||||
|
|
||||||
|
#: src/labels.h:216
|
||||||
|
msgid "Log Format Configuration"
|
||||||
|
msgstr "Configuracion de Formato de Log"
|
||||||
|
|
||||||
|
#: src/labels.h:218
|
||||||
|
msgid "[SPACE] to toggle - [ENTER] to proceed - [q] to quit"
|
||||||
|
msgstr "[ESPACIO] para alternar - [ENTER] para proceder - [q] para salir"
|
||||||
|
|
||||||
|
#: src/labels.h:220
|
||||||
|
msgid "Log Format - [c] to add/edit format"
|
||||||
|
msgstr "Formato de Log - [c] para agregar/editar formato"
|
||||||
|
|
||||||
|
#: src/labels.h:222
|
||||||
|
msgid "Date Format - [d] to add/edit format"
|
||||||
|
msgstr "Formato de Fecha - [d] para agregar/editar formato"
|
||||||
|
|
||||||
|
#: src/labels.h:224
|
||||||
|
msgid "Time Format - [t] to add/edit format"
|
||||||
|
msgstr "Formato de Hora - [t] para agregar/editar formato"
|
||||||
|
|
||||||
|
#: src/labels.h:226 src/labels.h:230
|
||||||
|
msgid "[UP/DOWN] to scroll - [q] to close window"
|
||||||
|
msgstr "[ARRIBA/ABAJO] para scrollear - [q] para cerrar ventana"
|
||||||
|
|
||||||
|
#: src/labels.h:232
|
||||||
|
#, c-format
|
||||||
|
msgid "User Agents for %1$s"
|
||||||
|
msgstr "Agentes de Usuario para %1$s"
|
||||||
|
|
||||||
|
#: src/labels.h:236
|
||||||
|
msgid "Scheme Configuration"
|
||||||
|
msgstr "Configuracion de Esquema"
|
||||||
|
|
||||||
|
#: src/labels.h:238
|
||||||
|
msgid "[ENTER] to use scheme - [q]uit"
|
||||||
|
msgstr "[ENTER] para usar esquema - [q]Salir"
|
||||||
|
|
||||||
|
#: src/labels.h:242
|
||||||
|
msgid "Sort active module by"
|
||||||
|
msgstr "Ordenar modulo activo por"
|
||||||
|
|
||||||
|
#: src/labels.h:244
|
||||||
|
msgid "[ENTER] select - [TAB] sort - [q]uit"
|
||||||
|
msgstr "[ENTER] seleccionar - [TAB] ordenar - [q]Salir"
|
||||||
|
|
||||||
|
#: src/labels.h:248
|
||||||
|
msgid "GoAccess Quick Help"
|
||||||
|
msgstr "Ayuda Rapida de GoAccess"
|
||||||
|
|
||||||
|
#: src/labels.h:250
|
||||||
|
msgid "[UP/DOWN] to scroll - [q] to quit"
|
||||||
|
msgstr "[ARRIBA/ABAJO] para scrollear - [q] para salir"
|
||||||
|
|
||||||
|
#: src/labels.h:254
|
||||||
|
msgid "Built using Tokyo Cabinet on-disk B+ Tree."
|
||||||
|
msgstr "Construido usando Tokyo Cabinet on-disk B+ Tree."
|
||||||
|
|
||||||
|
#: src/labels.h:256
|
||||||
|
msgid "Built using Tokyo Cabinet in-memory hash database."
|
||||||
|
msgstr "Construido usando Tokyo Cabinet in-memory hash database."
|
||||||
|
|
||||||
|
#: src/labels.h:258
|
||||||
|
msgid "Built using the default in-memory hash database."
|
||||||
|
msgstr "Construido usando base de datos hash por defecto en-memoria"
|
||||||
|
|
||||||
|
#: src/labels.h:262
|
||||||
|
msgid "Format Errors - Verify your log/date/time format"
|
||||||
|
msgstr "Errores de Formato - Verifique su formato de log/fecha/hora"
|
||||||
|
|
||||||
|
#: src/labels.h:264
|
||||||
|
msgid "No date format was found on your conf file."
|
||||||
|
msgstr "No se encontro formato de fecha en su archivo de configuracion"
|
||||||
|
|
||||||
|
#: src/labels.h:266
|
||||||
|
msgid "No log format was found on your conf file."
|
||||||
|
msgstr "No se encontro formato de log en su archivo de configuracion"
|
||||||
|
|
||||||
|
#: src/labels.h:268
|
||||||
|
msgid "No time format was found on your conf file."
|
||||||
|
msgstr "No se encontro formato de hora en su archivo de configuracion"
|
||||||
|
|
||||||
|
#: src/labels.h:270
|
||||||
|
msgid "No default config file found."
|
||||||
|
msgstr "No se encontro archivo de configuracion por defecto."
|
||||||
|
|
||||||
|
#: src/labels.h:272
|
||||||
|
msgid "You may specify one with"
|
||||||
|
msgstr "Ud. puede especificar un ancho"
|
||||||
|
|
||||||
|
#: src/labels.h:274
|
||||||
|
msgid "producing the following errors"
|
||||||
|
msgstr "produciendo los siguientes errores"
|
||||||
|
|
||||||
|
#: src/labels.h:276
|
||||||
|
#, c-format
|
||||||
|
msgid "Parsed %1$d lines"
|
||||||
|
msgstr "Analizadas %1$d lineas"
|
||||||
|
|
||||||
|
#: src/labels.h:278
|
||||||
|
msgid "Please report it by opening an issue on GitHub"
|
||||||
|
msgstr "Por favor avise abriendo un issue en GitHub"
|
||||||
|
|
||||||
|
#: src/labels.h:280
|
||||||
|
msgid "Select a time format."
|
||||||
|
msgstr "Elija un formato de hora."
|
||||||
|
|
||||||
|
#: src/labels.h:282
|
||||||
|
msgid "Select a date format."
|
||||||
|
msgstr "Elija un formato de fecha."
|
||||||
|
|
||||||
|
#: src/labels.h:284
|
||||||
|
msgid "Select a log format."
|
||||||
|
msgstr "Elija un formato de log."
|
||||||
|
|
||||||
|
#: src/labels.h:286
|
||||||
|
#, c-format
|
||||||
|
msgid "'%1$s' panel is disabled"
|
||||||
|
msgstr "'%1$s' panel esta desactivado"
|
||||||
|
|
||||||
|
#: src/labels.h:290
|
||||||
|
msgid "For more details visit"
|
||||||
|
msgstr "Para mas detalles visite"
|
||||||
|
|
||||||
|
#: src/labels.h:292
|
||||||
|
msgid "Last Updated"
|
||||||
|
msgstr "Ultima actualizacion"
|
||||||
|
|
||||||
|
#: src/labels.h:294
|
||||||
|
msgid "WebSocket server ready to accept new client connections"
|
||||||
|
msgstr "Servidor WebSocket listo para aceptar nuevas conexiones de clientes"
|
||||||
|
|
||||||
|
#: src/labels.h:297
|
||||||
|
msgid "The following options can also be supplied to the command"
|
||||||
|
msgstr "Las siguientes opciones pueden ser ademas suplirse en el comando"
|
||||||
|
|
||||||
|
#: src/labels.h:299
|
||||||
|
msgid "Examples can be found by running"
|
||||||
|
msgstr "Ejemplos pueden encontrarse ejecutando"
|
||||||
|
|
||||||
|
#: src/labels.h:302
|
||||||
|
msgid "Server Statistics"
|
||||||
|
msgstr "Estadisticas de Servidor"
|
||||||
|
|
||||||
|
#: src/labels.h:304
|
||||||
|
msgid "Theme"
|
||||||
|
msgstr "Skin"
|
||||||
|
|
||||||
|
#: src/labels.h:306
|
||||||
|
msgid "Dark Gray"
|
||||||
|
msgstr "Gris Oscuro"
|
||||||
|
|
||||||
|
#: src/labels.h:308
|
||||||
|
msgid "Bright"
|
||||||
|
msgstr "Clara"
|
||||||
|
|
||||||
|
#: src/labels.h:310
|
||||||
|
msgid "Dark Blue"
|
||||||
|
msgstr "Azul Oscuro"
|
||||||
|
|
||||||
|
#: src/labels.h:312
|
||||||
|
#, fuzzy
|
||||||
|
msgid "Dark Purple"
|
||||||
|
msgstr "Azul Oscuro"
|
||||||
|
|
||||||
|
#: src/labels.h:314
|
||||||
|
msgid "Panels"
|
||||||
|
msgstr "Paneles"
|
||||||
|
|
||||||
|
#: src/labels.h:316
|
||||||
|
msgid "Items per Page"
|
||||||
|
msgstr "Items por pagina"
|
||||||
|
|
||||||
|
#: src/labels.h:318
|
||||||
|
msgid "Tables"
|
||||||
|
msgstr "Tablas"
|
||||||
|
|
||||||
|
#: src/labels.h:320
|
||||||
|
msgid "Display Tables"
|
||||||
|
msgstr "Mostrar Tablas"
|
||||||
|
|
||||||
|
#: src/labels.h:322
|
||||||
|
msgid "Auto-Hide on Small Devices"
|
||||||
|
msgstr "Auto-ocultar en Pequeños Dispositivos"
|
||||||
|
|
||||||
|
#: src/labels.h:324
|
||||||
|
msgid "Automatically hide tables on small screen devices"
|
||||||
|
msgstr "Automaticamente ocultar tablas en pequeños dispositivos"
|
||||||
|
|
||||||
|
#: src/labels.h:326
|
||||||
|
msgid "Layout"
|
||||||
|
msgstr "Diseño"
|
||||||
|
|
||||||
|
#: src/labels.h:328
|
||||||
|
msgid "Horizontal"
|
||||||
|
msgstr "Horizontal"
|
||||||
|
|
||||||
|
#: src/labels.h:330
|
||||||
|
msgid "Vertical"
|
||||||
|
msgstr "Vertical"
|
||||||
|
|
||||||
|
#: src/labels.h:332
|
||||||
|
msgid "File Options"
|
||||||
|
msgstr "Opciones de Archivo"
|
||||||
|
|
||||||
|
#: src/labels.h:334
|
||||||
|
msgid "Export as JSON"
|
||||||
|
msgstr "Exportar como JSON"
|
||||||
|
|
||||||
|
#: src/labels.h:336
|
||||||
|
msgid "Panel Options"
|
||||||
|
msgstr "Opciones de Panel"
|
||||||
|
|
||||||
|
#: src/labels.h:338
|
||||||
|
msgid "Previous"
|
||||||
|
msgstr "Anterior"
|
||||||
|
|
||||||
|
#: src/labels.h:340
|
||||||
|
msgid "Next"
|
||||||
|
msgstr "Siguiente"
|
||||||
|
|
||||||
|
#: src/labels.h:342
|
||||||
|
msgid "First"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:344
|
||||||
|
msgid "Last"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:346
|
||||||
|
msgid "Chart Options"
|
||||||
|
msgstr "Opciones de Grafico"
|
||||||
|
|
||||||
|
#: src/labels.h:348
|
||||||
|
msgid "Chart"
|
||||||
|
msgstr "Grafico"
|
||||||
|
|
||||||
|
#: src/labels.h:350
|
||||||
|
msgid "Type"
|
||||||
|
msgstr "Tipo"
|
||||||
|
|
||||||
|
#: src/labels.h:352
|
||||||
|
msgid "Area Spline"
|
||||||
|
msgstr "Area Ranura"
|
||||||
|
|
||||||
|
#: src/labels.h:354
|
||||||
|
msgid "Bar"
|
||||||
|
msgstr "Bar"
|
||||||
|
|
||||||
|
#: src/labels.h:356
|
||||||
|
msgid "Plot Metric"
|
||||||
|
msgstr "Trazado"
|
||||||
|
|
||||||
|
#: src/labels.h:358
|
||||||
|
msgid "Table Columns"
|
||||||
|
msgstr "Columnas de Tabla"
|
||||||
|
|
||||||
|
#: src/labels.h:362
|
||||||
|
msgid "1xx Informational"
|
||||||
|
msgstr "1xx Informativo"
|
||||||
|
|
||||||
|
#: src/labels.h:364
|
||||||
|
msgid "2xx Success"
|
||||||
|
msgstr "2xx Exito"
|
||||||
|
|
||||||
|
#: src/labels.h:366
|
||||||
|
msgid "3xx Redirection"
|
||||||
|
msgstr "3xx Redireccion"
|
||||||
|
|
||||||
|
#: src/labels.h:368
|
||||||
|
msgid "4xx Client Errors"
|
||||||
|
msgstr "4xx Errores de Cliente"
|
||||||
|
|
||||||
|
#: src/labels.h:370
|
||||||
|
msgid "5xx Server Errors"
|
||||||
|
msgstr "5xx Errores de Servidor"
|
||||||
|
|
||||||
|
#: src/labels.h:373
|
||||||
|
msgid "100 - Continue: Server received the initial part of the request"
|
||||||
|
msgstr "100 - Continuar: Servidor recibio la parte inicial de la peticion"
|
||||||
|
|
||||||
|
#: src/labels.h:375
|
||||||
|
msgid "101 - Switching Protocols: Client asked to switch protocols"
|
||||||
|
msgstr "101 - Cambiando Protocolos: Cliente pidio cambiar protocolos"
|
||||||
|
|
||||||
|
#: src/labels.h:377
|
||||||
|
msgid "200 - OK: The request sent by the client was successful"
|
||||||
|
msgstr "200 - OK: La peticion enviada por el cliente fue exitosa"
|
||||||
|
|
||||||
|
#: src/labels.h:379
|
||||||
|
msgid "201 - Created: The request has been fulfilled and created"
|
||||||
|
msgstr "201 - Creada: La peticion ha sido completada y creada"
|
||||||
|
|
||||||
|
#: src/labels.h:381
|
||||||
|
msgid "202 - Accepted: The request has been accepted for processing"
|
||||||
|
msgstr "202 - Aceptada: La peticion fue aceptada para procesar"
|
||||||
|
|
||||||
|
#: src/labels.h:383
|
||||||
|
msgid "203 - Non-authoritative Information: Response from a third party"
|
||||||
|
msgstr "203 - No-autoritario Informativo: Respuesta de una 3er. parte"
|
||||||
|
|
||||||
|
#: src/labels.h:385
|
||||||
|
msgid "204 - No Content: Request did not return any content"
|
||||||
|
msgstr "204 - Sin Contenido: Peticion no retorno ningun contenido"
|
||||||
|
|
||||||
|
#: src/labels.h:387
|
||||||
|
msgid "205 - Reset Content: Server asked the client to reset the document"
|
||||||
|
msgstr ""
|
||||||
|
"205 - Resetear Contenido: Servidor pidio al cliente resetear el documento"
|
||||||
|
|
||||||
|
#: src/labels.h:389
|
||||||
|
msgid "206 - Partial Content: The partial GET has been successful"
|
||||||
|
msgstr "206 - Contenido Parcial: el GET parcial fue exitoso"
|
||||||
|
|
||||||
|
#: src/labels.h:391
|
||||||
|
msgid "207 - Multi-Status: WebDAV; RFC 4918"
|
||||||
|
msgstr "207 - Multi-Estado: WebDAV; RFC 4918"
|
||||||
|
|
||||||
|
#: src/labels.h:393
|
||||||
|
msgid "208 - Already Reported: WebDAV; RFC 5842"
|
||||||
|
msgstr "208 - Ya Reportado: WebDAV; RFC 5842"
|
||||||
|
|
||||||
|
#: src/labels.h:395
|
||||||
|
msgid "300 - Multiple Choices: Multiple options for the resource"
|
||||||
|
msgstr "300 - Multiples Opciones: Multiples opciones para el recurso"
|
||||||
|
|
||||||
|
#: src/labels.h:397
|
||||||
|
msgid "301 - Moved Permanently: Resource has permanently moved"
|
||||||
|
msgstr "301 - Movido Permanente: Recurso ha sido permanentemente movido"
|
||||||
|
|
||||||
|
#: src/labels.h:399
|
||||||
|
msgid "302 - Moved Temporarily (redirect)"
|
||||||
|
msgstr "302 - Movido Temporalmente (redireccion)"
|
||||||
|
|
||||||
|
#: src/labels.h:401
|
||||||
|
msgid "303 - See Other Document: The response is at a different URI"
|
||||||
|
msgstr "303 - Ver Otro Documento: La respuesta es en una URI diferente"
|
||||||
|
|
||||||
|
#: src/labels.h:403
|
||||||
|
msgid "304 - Not Modified: Resource has not been modified"
|
||||||
|
msgstr "304 - No Modificado: Recurso no ha sido modificado"
|
||||||
|
|
||||||
|
#: src/labels.h:405
|
||||||
|
msgid "305 - Use Proxy: Can only be accessed through the proxy"
|
||||||
|
msgstr "305 - Usar Proxy: Puede ser accedido solo a traves de proxy"
|
||||||
|
|
||||||
|
#: src/labels.h:407
|
||||||
|
msgid "307 - Temporary Redirect: Resource temporarily moved"
|
||||||
|
msgstr "307 - Redireccion Temporal: Recurso movido temporalmente"
|
||||||
|
|
||||||
|
#: src/labels.h:409
|
||||||
|
msgid "400 - Bad Request: The syntax of the request is invalid"
|
||||||
|
msgstr "400 - Peticion Mala: La sintaxis de la peticion es invalida"
|
||||||
|
|
||||||
|
#: src/labels.h:411
|
||||||
|
msgid "401 - Unauthorized: Request needs user authentication"
|
||||||
|
msgstr "401 - Sin Autorizacion: Peticion necesita autenticacion de usuario"
|
||||||
|
|
||||||
|
#: src/labels.h:413
|
||||||
|
msgid "402 - Payment Required"
|
||||||
|
msgstr "402 - Pago Requerido"
|
||||||
|
|
||||||
|
#: src/labels.h:415
|
||||||
|
msgid "403 - Forbidden: Server is refusing to respond to it"
|
||||||
|
msgstr "403 - Prohibido: Servidor esta rechazando respuesta"
|
||||||
|
|
||||||
|
#: src/labels.h:417
|
||||||
|
msgid "404 - Not Found: Requested resource could not be found"
|
||||||
|
msgstr "404 - No Encontrado: Peticion de recurso no pudo encontrarse"
|
||||||
|
|
||||||
|
#: src/labels.h:419
|
||||||
|
msgid "405 - Method Not Allowed: Request method not supported"
|
||||||
|
msgstr "405 - Metodo No Permitido: Metodo de Peticion no soportado"
|
||||||
|
|
||||||
|
#: src/labels.h:421
|
||||||
|
msgid "406 - Not Acceptable"
|
||||||
|
msgstr "406 - No Aceptable"
|
||||||
|
|
||||||
|
#: src/labels.h:423
|
||||||
|
msgid "407 - Proxy Authentication Required"
|
||||||
|
msgstr "407 - Autenticacion de Proxy Requerida"
|
||||||
|
|
||||||
|
#: src/labels.h:425
|
||||||
|
msgid "408 - Request Timeout: Server timed out waiting for the request"
|
||||||
|
msgstr "408 - Timeout de Peticion: Tiempo agotado de espera para la solicitud"
|
||||||
|
|
||||||
|
#: src/labels.h:427
|
||||||
|
msgid "409 - Conflict: Conflict in the request"
|
||||||
|
msgstr "409 - Conflicto: Conflicto en la peticion"
|
||||||
|
|
||||||
|
#: src/labels.h:429
|
||||||
|
msgid "410 - Gone: Resource requested is no longer available"
|
||||||
|
msgstr "410 - Fue: Recurso requerido no esta mas disponible"
|
||||||
|
|
||||||
|
#: src/labels.h:431
|
||||||
|
msgid "411 - Length Required: Invalid Content-Length"
|
||||||
|
msgstr "411 - Longitud Requerida: Content-Length Invalido"
|
||||||
|
|
||||||
|
#: src/labels.h:433
|
||||||
|
msgid "412 - Precondition Failed: Server does not meet preconditions"
|
||||||
|
msgstr "412 - Precondicion Fallida: Servidor no cumple precondiciones"
|
||||||
|
|
||||||
|
#: src/labels.h:435
|
||||||
|
msgid "413 - Payload Too Large"
|
||||||
|
msgstr "413 - Carga Util Demasiado larga"
|
||||||
|
|
||||||
|
#: src/labels.h:437
|
||||||
|
msgid "414 - Request-URI Too Long"
|
||||||
|
msgstr "414 - Request-URI demasiado larga"
|
||||||
|
|
||||||
|
#: src/labels.h:439
|
||||||
|
msgid "415 - Unsupported Media Type: Media type is not supported"
|
||||||
|
msgstr "415 - Tipo de medios no soportado: El tipo de medios no es soportado"
|
||||||
|
|
||||||
|
#: src/labels.h:441
|
||||||
|
msgid "416 - Requested Range Not Satisfiable: Cannot supply that portion"
|
||||||
|
msgstr "416 - Rango requerido no satisfacible: No puede proveer esa porcion"
|
||||||
|
|
||||||
|
#: src/labels.h:443
|
||||||
|
msgid "417 - Expectation Failed"
|
||||||
|
msgstr "417 - Expectativa Fallida"
|
||||||
|
|
||||||
|
#: src/labels.h:445
|
||||||
|
msgid "421 - Misdirected Request"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:447
|
||||||
|
msgid "422 - Unprocessable Entity due to semantic errors: WebDAV"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:449
|
||||||
|
msgid "423 - The resource that is being accessed is locked"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:451
|
||||||
|
msgid "424 - Failed Dependency: WebDAV"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:453
|
||||||
|
msgid "426 - Upgrade Required: Client should switch to a different protocol"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:455
|
||||||
|
#, fuzzy
|
||||||
|
msgid "428 - Precondition Required"
|
||||||
|
msgstr "402 - Pago Requerido"
|
||||||
|
|
||||||
|
#: src/labels.h:457
|
||||||
|
msgid "429 - Too Many Requests: The user has sent too many requests"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:459
|
||||||
|
#, fuzzy
|
||||||
|
msgid "431 - Request Header Fields Too Large"
|
||||||
|
msgstr "494 - (Nginx) Cabecera de Peticion demasiada larga"
|
||||||
|
|
||||||
|
#: src/labels.h:461
|
||||||
|
msgid "451 - Unavailable For Legal Reasons"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:463
|
||||||
|
msgid "444 - (Nginx) Connection closed without sending any headers"
|
||||||
|
msgstr "444 - (Nginx) Conexion cerrada sin enviar cabeceras"
|
||||||
|
|
||||||
|
#: src/labels.h:465
|
||||||
|
msgid "494 - (Nginx) Request Header Too Large"
|
||||||
|
msgstr "494 - (Nginx) Cabecera de Peticion demasiada larga"
|
||||||
|
|
||||||
|
#: src/labels.h:467
|
||||||
|
msgid "495 - (Nginx) SSL client certificate error"
|
||||||
|
msgstr "495 - (Nginx) Cliente SSL certificado erroneo"
|
||||||
|
|
||||||
|
#: src/labels.h:469
|
||||||
|
msgid "496 - (Nginx) Client didn't provide certificate"
|
||||||
|
msgstr "496 - (Nginx) Client no proveyo certificado"
|
||||||
|
|
||||||
|
#: src/labels.h:471
|
||||||
|
msgid "497 - (Nginx) HTTP request sent to HTTPS port"
|
||||||
|
msgstr "497 - (Nginx) Peticion HTTP enviada a puerto HTTPS"
|
||||||
|
|
||||||
|
#: src/labels.h:473
|
||||||
|
msgid "499 - (Nginx) Connection closed by client while processing request"
|
||||||
|
msgstr "499 - (Nginx) Conexion cerrada por cliente mientras procesaba peticion"
|
||||||
|
|
||||||
|
#: src/labels.h:475
|
||||||
|
msgid "500 - Internal Server Error"
|
||||||
|
msgstr "500 - Error Interno de Servidor"
|
||||||
|
|
||||||
|
#: src/labels.h:477
|
||||||
|
msgid "501 - Not Implemented"
|
||||||
|
msgstr "501 - No Implementado"
|
||||||
|
|
||||||
|
#: src/labels.h:479
|
||||||
|
msgid "502 - Bad Gateway: Received an invalid response from the upstream"
|
||||||
|
msgstr "502 - Entrada Erronea: Recibio respuesta invalida"
|
||||||
|
|
||||||
|
#: src/labels.h:481
|
||||||
|
msgid "503 - Service Unavailable: The server is currently unavailable"
|
||||||
|
msgstr ""
|
||||||
|
"503 - Servicio no disponible: El servidor actualmente no esta disponible"
|
||||||
|
|
||||||
|
#: src/labels.h:483
|
||||||
|
msgid "504 - Gateway Timeout: The upstream server failed to send request"
|
||||||
|
msgstr ""
|
||||||
|
"504 - Timeout de Gateway: El servidor upstream fallo al enviar peticion"
|
||||||
|
|
||||||
|
#: src/labels.h:485
|
||||||
|
msgid "505 - HTTP Version Not Supported"
|
||||||
|
msgstr "505 - Version HTTP no soportada"
|
||||||
|
|
||||||
|
#: src/labels.h:487
|
||||||
|
msgid "520 - CloudFlare - Web server is returning an unknown error"
|
||||||
|
msgstr "520 - CloudFlare - El servidor esta retornando un error desconocido"
|
||||||
|
|
||||||
|
#: src/labels.h:489
|
||||||
|
msgid "521 - CloudFlare - Web server is down"
|
||||||
|
msgstr "521 - CloudFlare - Servidor Web caido"
|
||||||
|
|
||||||
|
#: src/labels.h:491
|
||||||
|
msgid "522 - CloudFlare - Connection timed out"
|
||||||
|
msgstr "522 - CloudFlare - Tiempo de espera de conexion agotado "
|
||||||
|
|
||||||
|
#: src/labels.h:493
|
||||||
|
msgid "523 - CloudFlare - Origin is unreachable"
|
||||||
|
msgstr "523 - CloudFlare - Origen es inaccesible"
|
||||||
|
|
||||||
|
#: src/labels.h:495
|
||||||
|
msgid "524 - CloudFlare - A timeout occurred"
|
||||||
|
msgstr "524 - CloudFlare - Ocurrio cese de tiempo"
|
||||||
|
|
||||||
|
#~ msgid "Bandwidth"
|
||||||
|
#~ msgstr "Ancho de Banda"
|
||||||
|
|
||||||
|
#~ msgid "Unique Files"
|
||||||
|
#~ msgstr "Archivos Unicos"
|
||||||
|
|
||||||
|
#~ msgid "Unique 404"
|
||||||
|
#~ msgstr "404 Unico"
|
@ -0,0 +1,904 @@
|
|||||||
|
# This file is distributed under the same license as the goaccess package.
|
||||||
|
# Nicolas P <np>, 2017.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: goaccess 1.2\n"
|
||||||
|
"Report-Msgid-Bugs-To: hello@goaccess.io\n"
|
||||||
|
"POT-Creation-Date: 2018-11-22 23:38-0600\n"
|
||||||
|
"PO-Revision-Date: 2017-04-03 09:43+0200\n"
|
||||||
|
"Last-Translator: Nicolas P <np.pascal@gmail.com>\n"
|
||||||
|
"Language-Team: français\n"
|
||||||
|
"Language: fr\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
"X-Generator: Gtranslator 2.91.7\n"
|
||||||
|
|
||||||
|
#: src/labels.h:40
|
||||||
|
msgid "en"
|
||||||
|
msgstr "fr"
|
||||||
|
|
||||||
|
#: src/labels.h:43
|
||||||
|
msgid "Exp. Panel"
|
||||||
|
msgstr "Dev. Panneau"
|
||||||
|
|
||||||
|
#: src/labels.h:44
|
||||||
|
msgid "Help"
|
||||||
|
msgstr "Aide"
|
||||||
|
|
||||||
|
#: src/labels.h:45
|
||||||
|
msgid "Quit"
|
||||||
|
msgstr "Quitter"
|
||||||
|
|
||||||
|
#: src/labels.h:46
|
||||||
|
msgid "Total"
|
||||||
|
msgstr "Total"
|
||||||
|
|
||||||
|
#: src/labels.h:49
|
||||||
|
msgid "[x] ASC [ ] DESC"
|
||||||
|
msgstr "[x] ASC [ ] DESC"
|
||||||
|
|
||||||
|
#: src/labels.h:50
|
||||||
|
msgid "[ ] ASC [x] DESC"
|
||||||
|
msgstr "[ ] ASC [x] DESC"
|
||||||
|
|
||||||
|
#: src/labels.h:53
|
||||||
|
#, c-format
|
||||||
|
msgid "[Active Panel: %1$s]"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:54
|
||||||
|
msgid "[q]uit GoAccess"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:55
|
||||||
|
msgid "[?] Help [Enter] Exp. Panel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:56
|
||||||
|
msgid "Dashboard"
|
||||||
|
msgstr "Tableau de bord"
|
||||||
|
|
||||||
|
#: src/labels.h:57
|
||||||
|
msgid "Dashboard - Overall Analyzed Requests"
|
||||||
|
msgstr "Tableau de bord - Requêtes analysées, vue d'ensemble"
|
||||||
|
|
||||||
|
#: src/labels.h:58
|
||||||
|
msgid "Overall Analyzed Requests"
|
||||||
|
msgstr "Requêtes analysées, vue d'ensemble"
|
||||||
|
|
||||||
|
#: src/labels.h:60 src/labels.h:81
|
||||||
|
msgid "Tx. Amount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:61
|
||||||
|
msgid "Date/Time"
|
||||||
|
msgstr "Date/Heure"
|
||||||
|
|
||||||
|
#: src/labels.h:62
|
||||||
|
msgid "Excl. IP Hits"
|
||||||
|
msgstr "Excl. IP Hits"
|
||||||
|
|
||||||
|
#: src/labels.h:63
|
||||||
|
msgid "Failed Requests"
|
||||||
|
msgstr "Requêtes échouées"
|
||||||
|
|
||||||
|
#: src/labels.h:64
|
||||||
|
msgid "Init. Proc. Time"
|
||||||
|
msgstr "Init. Proc. Time"
|
||||||
|
|
||||||
|
#: src/labels.h:65
|
||||||
|
msgid "Log Size"
|
||||||
|
msgstr "Taille du log"
|
||||||
|
|
||||||
|
#: src/labels.h:66
|
||||||
|
msgid "Log Source"
|
||||||
|
msgstr "Fichier de log"
|
||||||
|
|
||||||
|
#: src/labels.h:67 src/labels.h:174
|
||||||
|
msgid "Referrers"
|
||||||
|
msgstr "Origine"
|
||||||
|
|
||||||
|
#: src/labels.h:68
|
||||||
|
msgid "Total Requests"
|
||||||
|
msgstr "Requêtes totales"
|
||||||
|
|
||||||
|
#: src/labels.h:69
|
||||||
|
msgid "Static Files"
|
||||||
|
msgstr "Fichiers statiques"
|
||||||
|
|
||||||
|
#: src/labels.h:70 src/labels.h:146
|
||||||
|
msgid "Not Found"
|
||||||
|
msgstr "Non Trouvé"
|
||||||
|
|
||||||
|
#: src/labels.h:71
|
||||||
|
#, fuzzy
|
||||||
|
msgid "Requested Files"
|
||||||
|
msgstr "Fichiers demandés (URLs)"
|
||||||
|
|
||||||
|
#: src/labels.h:72
|
||||||
|
msgid "Unique Visitors"
|
||||||
|
msgstr "Visiteurs uniques"
|
||||||
|
|
||||||
|
#: src/labels.h:73
|
||||||
|
msgid "Valid Requests"
|
||||||
|
msgstr "Requêtes valides"
|
||||||
|
|
||||||
|
#: src/labels.h:76
|
||||||
|
msgid "Hits"
|
||||||
|
msgstr "Hits"
|
||||||
|
|
||||||
|
#: src/labels.h:77
|
||||||
|
msgid "h%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:78 src/labels.h:104
|
||||||
|
msgid "Visitors"
|
||||||
|
msgstr "Visiteurs"
|
||||||
|
|
||||||
|
#: src/labels.h:79
|
||||||
|
msgid "Vis."
|
||||||
|
msgstr "Vis."
|
||||||
|
|
||||||
|
#: src/labels.h:80
|
||||||
|
msgid "v%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:82
|
||||||
|
msgid "Avg. T.S."
|
||||||
|
msgstr "Avg. T.S."
|
||||||
|
|
||||||
|
#: src/labels.h:83
|
||||||
|
msgid "Cum. T.S."
|
||||||
|
msgstr "Cum. T.S."
|
||||||
|
|
||||||
|
#: src/labels.h:84
|
||||||
|
msgid "Max. T.S."
|
||||||
|
msgstr "Max. T.S."
|
||||||
|
|
||||||
|
#: src/labels.h:85
|
||||||
|
msgid "Method"
|
||||||
|
msgstr "Méthode"
|
||||||
|
|
||||||
|
#: src/labels.h:86
|
||||||
|
msgid "Mtd"
|
||||||
|
msgstr "Mtd"
|
||||||
|
|
||||||
|
#: src/labels.h:87
|
||||||
|
msgid "Protocol"
|
||||||
|
msgstr "Protocole"
|
||||||
|
|
||||||
|
#: src/labels.h:88
|
||||||
|
msgid "Proto"
|
||||||
|
msgstr "Proto"
|
||||||
|
|
||||||
|
#: src/labels.h:89
|
||||||
|
msgid "City"
|
||||||
|
msgstr "Ville"
|
||||||
|
|
||||||
|
#: src/labels.h:90
|
||||||
|
msgid "Country"
|
||||||
|
msgstr "Pays"
|
||||||
|
|
||||||
|
#: src/labels.h:91
|
||||||
|
msgid "Hostname"
|
||||||
|
msgstr "Nom d'hôte"
|
||||||
|
|
||||||
|
#: src/labels.h:92
|
||||||
|
msgid "Data"
|
||||||
|
msgstr "Données"
|
||||||
|
|
||||||
|
#: src/labels.h:94
|
||||||
|
#, fuzzy
|
||||||
|
msgid "Hits/Visitors"
|
||||||
|
msgstr "Visiteurs"
|
||||||
|
|
||||||
|
#: src/labels.h:98
|
||||||
|
msgid "Unique visitors per day"
|
||||||
|
msgstr "Visiteurs uniques par jour"
|
||||||
|
|
||||||
|
#: src/labels.h:100
|
||||||
|
msgid "Unique visitors per day - Including spiders"
|
||||||
|
msgstr "Visiteurs uniques/jour - Y compris bots"
|
||||||
|
|
||||||
|
#: src/labels.h:102
|
||||||
|
msgid "Hits having the same IP, date and agent are a unique visit."
|
||||||
|
msgstr ""
|
||||||
|
"Les hits depuis la même IP, date et user-agent comptent comme visite unique"
|
||||||
|
|
||||||
|
#: src/labels.h:107
|
||||||
|
msgid "Requested Files (URLs)"
|
||||||
|
msgstr "Fichiers demandés (URLs)"
|
||||||
|
|
||||||
|
#: src/labels.h:109
|
||||||
|
msgid "Top requests sorted by hits [, avgts, cumts, maxts, mthd, proto]"
|
||||||
|
msgstr "Top des requêtes trié par hits [, avgts, cumts, maxts, mthd, proto]"
|
||||||
|
|
||||||
|
#: src/labels.h:111
|
||||||
|
msgid "Requests"
|
||||||
|
msgstr "Requêtes"
|
||||||
|
|
||||||
|
#: src/labels.h:114 src/labels.h:118
|
||||||
|
msgid "Static Requests"
|
||||||
|
msgstr "Requêtes statiques"
|
||||||
|
|
||||||
|
#: src/labels.h:116
|
||||||
|
msgid "Top static requests sorted by hits [, avgts, cumts, maxts, mthd, proto]"
|
||||||
|
msgstr ""
|
||||||
|
"Top des requêtes statiques trié par hits [, avgts, cumts, maxts, mthd, proto]"
|
||||||
|
|
||||||
|
#: src/labels.h:121
|
||||||
|
msgid "Time Distribution"
|
||||||
|
msgstr "Distribution temporelle"
|
||||||
|
|
||||||
|
#: src/labels.h:123
|
||||||
|
msgid "Data sorted by hour [, avgts, cumts, maxts]"
|
||||||
|
msgstr "Données triées par heure [, avgts, cumts, maxts]"
|
||||||
|
|
||||||
|
#: src/labels.h:125
|
||||||
|
msgid "Time"
|
||||||
|
msgstr "Temps"
|
||||||
|
|
||||||
|
#: src/labels.h:128 src/labels.h:132
|
||||||
|
msgid "Virtual Hosts"
|
||||||
|
msgstr "Hôtes virtuels"
|
||||||
|
|
||||||
|
#: src/labels.h:130 src/labels.h:137
|
||||||
|
msgid "Data sorted by hits [, avgts, cumts, maxts]"
|
||||||
|
msgstr "Données triées par hits [, avgts, cumts, maxts]"
|
||||||
|
|
||||||
|
#: src/labels.h:135
|
||||||
|
msgid "Remote User (HTTP authentication)"
|
||||||
|
msgstr "Utilisateur distant (authentification HTTP)"
|
||||||
|
|
||||||
|
#: src/labels.h:139
|
||||||
|
msgid "Remote User"
|
||||||
|
msgstr "Remote Utilisateur"
|
||||||
|
|
||||||
|
#: src/labels.h:142
|
||||||
|
msgid "Not Found URLs (404s)"
|
||||||
|
msgstr "URLs Non trouvées (404s)"
|
||||||
|
|
||||||
|
#: src/labels.h:144
|
||||||
|
msgid "Top not found URLs sorted by hits [, avgts, cumts, maxts, mthd, proto]"
|
||||||
|
msgstr ""
|
||||||
|
"Top des URLs non trouvées trié par hits [, avgts, cumts, maxts, mthd, proto]"
|
||||||
|
|
||||||
|
#: src/labels.h:149
|
||||||
|
msgid "Visitor Hostnames and IPs"
|
||||||
|
msgstr "Nom de machine et IPs des visiteurs"
|
||||||
|
|
||||||
|
#: src/labels.h:151
|
||||||
|
msgid "Top visitor hosts sorted by hits [, avgts, cumts, maxts]"
|
||||||
|
msgstr "Top des visiteurs trié par hits [, avgts, cumts, maxts]"
|
||||||
|
|
||||||
|
#: src/labels.h:153
|
||||||
|
msgid "Hosts"
|
||||||
|
msgstr "Hôtes"
|
||||||
|
|
||||||
|
#: src/labels.h:156
|
||||||
|
msgid "Operating Systems"
|
||||||
|
msgstr "Systèmes d'exploitation"
|
||||||
|
|
||||||
|
#: src/labels.h:158
|
||||||
|
msgid "Top Operating Systems sorted by hits [, avgts, cumts, maxts]"
|
||||||
|
msgstr "Top des SE trié par hits [, avgts, cumts, maxts]"
|
||||||
|
|
||||||
|
#: src/labels.h:160
|
||||||
|
msgid "OS"
|
||||||
|
msgstr "SE"
|
||||||
|
|
||||||
|
#: src/labels.h:163 src/labels.h:167
|
||||||
|
msgid "Browsers"
|
||||||
|
msgstr "Navigateurs"
|
||||||
|
|
||||||
|
#: src/labels.h:165
|
||||||
|
msgid "Top Browsers sorted by hits [, avgts, cumts, maxts]"
|
||||||
|
msgstr "Top des Navigateurs trié par hits [, avgts, cumts, maxts]"
|
||||||
|
|
||||||
|
#: src/labels.h:170
|
||||||
|
msgid "Referrers URLs"
|
||||||
|
msgstr "URLs d'origine"
|
||||||
|
|
||||||
|
#: src/labels.h:172
|
||||||
|
msgid "Top Requested Referrers sorted by hits [, avgts, cumts, maxts]"
|
||||||
|
msgstr "Top des URLs d'origine trié par hits [, avgts, cumts, maxts]"
|
||||||
|
|
||||||
|
#: src/labels.h:177 src/labels.h:181
|
||||||
|
msgid "Referring Sites"
|
||||||
|
msgstr "Sites d'origine"
|
||||||
|
|
||||||
|
#: src/labels.h:179
|
||||||
|
msgid "Top Referring Sites sorted by hits [, avgts, cumts, maxts]"
|
||||||
|
msgstr "Top des sites d'origine trié par hits [, avgts, cumts, maxts]"
|
||||||
|
|
||||||
|
#: src/labels.h:184
|
||||||
|
msgid "Keyphrases from Google's search engine"
|
||||||
|
msgstr "Mot-clés Google"
|
||||||
|
|
||||||
|
#: src/labels.h:186
|
||||||
|
msgid "Top Keyphrases sorted by hits [, avgts, cumts, maxts]"
|
||||||
|
msgstr "Top des Mot-clés trié par hits [, avgts, cumts, maxts]"
|
||||||
|
|
||||||
|
#: src/labels.h:188
|
||||||
|
msgid "Keyphrases"
|
||||||
|
msgstr "Mot-clés"
|
||||||
|
|
||||||
|
#: src/labels.h:191 src/labels.h:195
|
||||||
|
msgid "Geo Location"
|
||||||
|
msgstr "Géo Localisation"
|
||||||
|
|
||||||
|
#: src/labels.h:193
|
||||||
|
msgid "Continent > Country sorted by unique hits [, avgts, cumts, maxts]"
|
||||||
|
msgstr "Continent > Pays trié par hits unique [, avgts, cumts, maxts]"
|
||||||
|
|
||||||
|
#: src/labels.h:198
|
||||||
|
msgid "HTTP Status Codes"
|
||||||
|
msgstr "Status HTTP"
|
||||||
|
|
||||||
|
#: src/labels.h:200
|
||||||
|
msgid "Top HTTP Status Codes sorted by hits [, avgts, cumts, maxts]"
|
||||||
|
msgstr "Top des status HTTP trié par hits [, avgts, cumts, maxts]"
|
||||||
|
|
||||||
|
#: src/labels.h:202
|
||||||
|
msgid "Status Codes"
|
||||||
|
msgstr "Status HTTP"
|
||||||
|
|
||||||
|
#: src/labels.h:206
|
||||||
|
msgid "[ ] case sensitive"
|
||||||
|
msgstr "[ ] sensible à la casse"
|
||||||
|
|
||||||
|
#: src/labels.h:208
|
||||||
|
msgid "[x] case sensitive"
|
||||||
|
msgstr "[x] sensible à la casse"
|
||||||
|
|
||||||
|
#: src/labels.h:210
|
||||||
|
msgid "Regex allowed - ^g to cancel - TAB switch case"
|
||||||
|
msgstr "Regex OK - ^g pour annuler - TAB pour changer la casse"
|
||||||
|
|
||||||
|
#: src/labels.h:212
|
||||||
|
msgid "Find pattern in all views"
|
||||||
|
msgstr "Trouver tous les motifs dans toutes les vues"
|
||||||
|
|
||||||
|
#: src/labels.h:216
|
||||||
|
msgid "Log Format Configuration"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:218
|
||||||
|
msgid "[SPACE] to toggle - [ENTER] to proceed - [q] to quit"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:220
|
||||||
|
msgid "Log Format - [c] to add/edit format"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:222
|
||||||
|
msgid "Date Format - [d] to add/edit format"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:224
|
||||||
|
msgid "Time Format - [t] to add/edit format"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:226 src/labels.h:230
|
||||||
|
msgid "[UP/DOWN] to scroll - [q] to close window"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:232
|
||||||
|
#, c-format
|
||||||
|
msgid "User Agents for %1$s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:236
|
||||||
|
msgid "Scheme Configuration"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:238
|
||||||
|
msgid "[ENTER] to use scheme - [q]uit"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:242
|
||||||
|
msgid "Sort active module by"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:244
|
||||||
|
msgid "[ENTER] select - [TAB] sort - [q]uit"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:248
|
||||||
|
msgid "GoAccess Quick Help"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:250
|
||||||
|
msgid "[UP/DOWN] to scroll - [q] to quit"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:254
|
||||||
|
msgid "Built using Tokyo Cabinet on-disk B+ Tree."
|
||||||
|
msgstr "Construit sur le disque en arbre B+ en utilisant Tokyo Cabinet."
|
||||||
|
|
||||||
|
#: src/labels.h:256
|
||||||
|
msgid "Built using Tokyo Cabinet in-memory hash database."
|
||||||
|
msgstr ""
|
||||||
|
"Construit en mémoire avec une base de données de la table de hachage en "
|
||||||
|
"utilisant Tokyo Cabinet"
|
||||||
|
|
||||||
|
#: src/labels.h:258
|
||||||
|
msgid "Built using the default in-memory hash database."
|
||||||
|
msgstr ""
|
||||||
|
"Construit par défaut en mémoire avec une base de données de la table de "
|
||||||
|
"hachage"
|
||||||
|
|
||||||
|
#: src/labels.h:262
|
||||||
|
msgid "Format Errors - Verify your log/date/time format"
|
||||||
|
msgstr "Erreurs de format - Vérifiez votre format de journal / date / heure"
|
||||||
|
|
||||||
|
#: src/labels.h:264
|
||||||
|
msgid "No date format was found on your conf file."
|
||||||
|
msgstr "Aucun format de date n'a été trouvé sur votre fichier conf."
|
||||||
|
|
||||||
|
#: src/labels.h:266
|
||||||
|
msgid "No log format was found on your conf file."
|
||||||
|
msgstr "Aucun format de journal n'a été trouvé sur votre fichier conf."
|
||||||
|
|
||||||
|
#: src/labels.h:268
|
||||||
|
msgid "No time format was found on your conf file."
|
||||||
|
msgstr "Aucun format de journal n'a été trouvé sur votre fichier conf."
|
||||||
|
|
||||||
|
#: src/labels.h:270
|
||||||
|
msgid "No default config file found."
|
||||||
|
msgstr "Aucun fichier de configuration par défaut trouvé."
|
||||||
|
|
||||||
|
#: src/labels.h:272
|
||||||
|
msgid "You may specify one with"
|
||||||
|
msgstr "Vous pouvez en préciser un avec"
|
||||||
|
|
||||||
|
#: src/labels.h:274
|
||||||
|
msgid "producing the following errors"
|
||||||
|
msgstr "produisant les erreurs suivantes"
|
||||||
|
|
||||||
|
#: src/labels.h:276
|
||||||
|
#, c-format
|
||||||
|
msgid "Parsed %1$d lines"
|
||||||
|
msgstr "Analysé %1$d lignes"
|
||||||
|
|
||||||
|
#: src/labels.h:278
|
||||||
|
msgid "Please report it by opening an issue on GitHub"
|
||||||
|
msgstr "Si vous plaît, rapporter cela en ouvrant un probleme sur GitHub"
|
||||||
|
|
||||||
|
#: src/labels.h:280
|
||||||
|
msgid "Select a time format."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:282
|
||||||
|
msgid "Select a date format."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:284
|
||||||
|
msgid "Select a log format."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:286
|
||||||
|
#, c-format
|
||||||
|
msgid "'%1$s' panel is disabled"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:290
|
||||||
|
msgid "For more details visit"
|
||||||
|
msgstr "Pour plus de détails, visitez"
|
||||||
|
|
||||||
|
#: src/labels.h:292
|
||||||
|
msgid "Last Updated"
|
||||||
|
msgstr "Dernière mise à jour"
|
||||||
|
|
||||||
|
#: src/labels.h:294
|
||||||
|
msgid "WebSocket server ready to accept new client connections"
|
||||||
|
msgstr "WebSocket serveur prêt à accepter les nouvelles connexions client"
|
||||||
|
|
||||||
|
#: src/labels.h:297
|
||||||
|
msgid "The following options can also be supplied to the command"
|
||||||
|
msgstr "Les options suivantes peuvent également être fournies à la commande"
|
||||||
|
|
||||||
|
#: src/labels.h:299
|
||||||
|
msgid "Examples can be found by running"
|
||||||
|
msgstr "Des exemples peuvent être trouvés en cours d'exécution"
|
||||||
|
|
||||||
|
#: src/labels.h:302
|
||||||
|
msgid "Server Statistics"
|
||||||
|
msgstr "Statistiques du serveur"
|
||||||
|
|
||||||
|
#: src/labels.h:304
|
||||||
|
msgid "Theme"
|
||||||
|
msgstr "Thème"
|
||||||
|
|
||||||
|
#: src/labels.h:306
|
||||||
|
msgid "Dark Gray"
|
||||||
|
msgstr "Gris foncé"
|
||||||
|
|
||||||
|
#: src/labels.h:308
|
||||||
|
msgid "Bright"
|
||||||
|
msgstr "Brillant"
|
||||||
|
|
||||||
|
#: src/labels.h:310
|
||||||
|
msgid "Dark Blue"
|
||||||
|
msgstr "Bleu foncé"
|
||||||
|
|
||||||
|
#: src/labels.h:312
|
||||||
|
#, fuzzy
|
||||||
|
msgid "Dark Purple"
|
||||||
|
msgstr "Bleu foncé"
|
||||||
|
|
||||||
|
#: src/labels.h:314
|
||||||
|
msgid "Panels"
|
||||||
|
msgstr "Panneaux"
|
||||||
|
|
||||||
|
#: src/labels.h:316
|
||||||
|
msgid "Items per Page"
|
||||||
|
msgstr "Objets par page"
|
||||||
|
|
||||||
|
#: src/labels.h:318
|
||||||
|
msgid "Tables"
|
||||||
|
msgstr "Tableaux"
|
||||||
|
|
||||||
|
#: src/labels.h:320
|
||||||
|
msgid "Display Tables"
|
||||||
|
msgstr "Afficher les tableaux"
|
||||||
|
|
||||||
|
#: src/labels.h:322
|
||||||
|
msgid "Auto-Hide on Small Devices"
|
||||||
|
msgstr "Masquage-auto/Petits appareils"
|
||||||
|
|
||||||
|
#: src/labels.h:324
|
||||||
|
msgid "Automatically hide tables on small screen devices"
|
||||||
|
msgstr ""
|
||||||
|
"Masquer automatiquement les tableaux sur les appareils avec un petit écran"
|
||||||
|
|
||||||
|
#: src/labels.h:326
|
||||||
|
msgid "Layout"
|
||||||
|
msgstr "Disposition"
|
||||||
|
|
||||||
|
#: src/labels.h:328
|
||||||
|
msgid "Horizontal"
|
||||||
|
msgstr "Horizontal"
|
||||||
|
|
||||||
|
#: src/labels.h:330
|
||||||
|
msgid "Vertical"
|
||||||
|
msgstr "Verticale"
|
||||||
|
|
||||||
|
#: src/labels.h:332
|
||||||
|
msgid "File Options"
|
||||||
|
msgstr "Options de fichier"
|
||||||
|
|
||||||
|
#: src/labels.h:334
|
||||||
|
msgid "Export as JSON"
|
||||||
|
msgstr "Exporter en tant que JSON"
|
||||||
|
|
||||||
|
#: src/labels.h:336
|
||||||
|
msgid "Panel Options"
|
||||||
|
msgstr "Options du panneau"
|
||||||
|
|
||||||
|
#: src/labels.h:338
|
||||||
|
msgid "Previous"
|
||||||
|
msgstr "Précédent"
|
||||||
|
|
||||||
|
#: src/labels.h:340
|
||||||
|
msgid "Next"
|
||||||
|
msgstr "Suivant"
|
||||||
|
|
||||||
|
#: src/labels.h:342
|
||||||
|
msgid "First"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:344
|
||||||
|
msgid "Last"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:346
|
||||||
|
msgid "Chart Options"
|
||||||
|
msgstr "Options du graphique"
|
||||||
|
|
||||||
|
#: src/labels.h:348
|
||||||
|
msgid "Chart"
|
||||||
|
msgstr "Graphique"
|
||||||
|
|
||||||
|
#: src/labels.h:350
|
||||||
|
msgid "Type"
|
||||||
|
msgstr "Type"
|
||||||
|
|
||||||
|
#: src/labels.h:352
|
||||||
|
msgid "Area Spline"
|
||||||
|
msgstr "Courbe vectorielle"
|
||||||
|
|
||||||
|
#: src/labels.h:354
|
||||||
|
msgid "Bar"
|
||||||
|
msgstr "Barre"
|
||||||
|
|
||||||
|
#: src/labels.h:356
|
||||||
|
msgid "Plot Metric"
|
||||||
|
msgstr "Tracé métrique"
|
||||||
|
|
||||||
|
#: src/labels.h:358
|
||||||
|
msgid "Table Columns"
|
||||||
|
msgstr "Colonnes de tableau"
|
||||||
|
|
||||||
|
#: src/labels.h:362
|
||||||
|
msgid "1xx Informational"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:364
|
||||||
|
msgid "2xx Success"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:366
|
||||||
|
msgid "3xx Redirection"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:368
|
||||||
|
msgid "4xx Client Errors"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:370
|
||||||
|
msgid "5xx Server Errors"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:373
|
||||||
|
msgid "100 - Continue: Server received the initial part of the request"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:375
|
||||||
|
msgid "101 - Switching Protocols: Client asked to switch protocols"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:377
|
||||||
|
msgid "200 - OK: The request sent by the client was successful"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:379
|
||||||
|
msgid "201 - Created: The request has been fulfilled and created"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:381
|
||||||
|
msgid "202 - Accepted: The request has been accepted for processing"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:383
|
||||||
|
msgid "203 - Non-authoritative Information: Response from a third party"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:385
|
||||||
|
msgid "204 - No Content: Request did not return any content"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:387
|
||||||
|
msgid "205 - Reset Content: Server asked the client to reset the document"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:389
|
||||||
|
msgid "206 - Partial Content: The partial GET has been successful"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:391
|
||||||
|
msgid "207 - Multi-Status: WebDAV; RFC 4918"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:393
|
||||||
|
msgid "208 - Already Reported: WebDAV; RFC 5842"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:395
|
||||||
|
msgid "300 - Multiple Choices: Multiple options for the resource"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:397
|
||||||
|
msgid "301 - Moved Permanently: Resource has permanently moved"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:399
|
||||||
|
msgid "302 - Moved Temporarily (redirect)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:401
|
||||||
|
msgid "303 - See Other Document: The response is at a different URI"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:403
|
||||||
|
msgid "304 - Not Modified: Resource has not been modified"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:405
|
||||||
|
msgid "305 - Use Proxy: Can only be accessed through the proxy"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:407
|
||||||
|
msgid "307 - Temporary Redirect: Resource temporarily moved"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:409
|
||||||
|
msgid "400 - Bad Request: The syntax of the request is invalid"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:411
|
||||||
|
msgid "401 - Unauthorized: Request needs user authentication"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:413
|
||||||
|
msgid "402 - Payment Required"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:415
|
||||||
|
msgid "403 - Forbidden: Server is refusing to respond to it"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:417
|
||||||
|
msgid "404 - Not Found: Requested resource could not be found"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:419
|
||||||
|
msgid "405 - Method Not Allowed: Request method not supported"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:421
|
||||||
|
msgid "406 - Not Acceptable"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:423
|
||||||
|
msgid "407 - Proxy Authentication Required"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:425
|
||||||
|
msgid "408 - Request Timeout: Server timed out waiting for the request"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:427
|
||||||
|
msgid "409 - Conflict: Conflict in the request"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:429
|
||||||
|
msgid "410 - Gone: Resource requested is no longer available"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:431
|
||||||
|
msgid "411 - Length Required: Invalid Content-Length"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:433
|
||||||
|
msgid "412 - Precondition Failed: Server does not meet preconditions"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:435
|
||||||
|
msgid "413 - Payload Too Large"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:437
|
||||||
|
msgid "414 - Request-URI Too Long"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:439
|
||||||
|
msgid "415 - Unsupported Media Type: Media type is not supported"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:441
|
||||||
|
msgid "416 - Requested Range Not Satisfiable: Cannot supply that portion"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:443
|
||||||
|
msgid "417 - Expectation Failed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:445
|
||||||
|
msgid "421 - Misdirected Request"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:447
|
||||||
|
msgid "422 - Unprocessable Entity due to semantic errors: WebDAV"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:449
|
||||||
|
msgid "423 - The resource that is being accessed is locked"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:451
|
||||||
|
msgid "424 - Failed Dependency: WebDAV"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:453
|
||||||
|
msgid "426 - Upgrade Required: Client should switch to a different protocol"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:455
|
||||||
|
msgid "428 - Precondition Required"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:457
|
||||||
|
msgid "429 - Too Many Requests: The user has sent too many requests"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:459
|
||||||
|
msgid "431 - Request Header Fields Too Large"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:461
|
||||||
|
msgid "451 - Unavailable For Legal Reasons"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:463
|
||||||
|
msgid "444 - (Nginx) Connection closed without sending any headers"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:465
|
||||||
|
msgid "494 - (Nginx) Request Header Too Large"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:467
|
||||||
|
msgid "495 - (Nginx) SSL client certificate error"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:469
|
||||||
|
msgid "496 - (Nginx) Client didn't provide certificate"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:471
|
||||||
|
msgid "497 - (Nginx) HTTP request sent to HTTPS port"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:473
|
||||||
|
msgid "499 - (Nginx) Connection closed by client while processing request"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:475
|
||||||
|
msgid "500 - Internal Server Error"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:477
|
||||||
|
msgid "501 - Not Implemented"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:479
|
||||||
|
msgid "502 - Bad Gateway: Received an invalid response from the upstream"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:481
|
||||||
|
msgid "503 - Service Unavailable: The server is currently unavailable"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:483
|
||||||
|
msgid "504 - Gateway Timeout: The upstream server failed to send request"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:485
|
||||||
|
msgid "505 - HTTP Version Not Supported"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:487
|
||||||
|
msgid "520 - CloudFlare - Web server is returning an unknown error"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:489
|
||||||
|
msgid "521 - CloudFlare - Web server is down"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:491
|
||||||
|
msgid "522 - CloudFlare - Connection timed out"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:493
|
||||||
|
msgid "523 - CloudFlare - Origin is unreachable"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:495
|
||||||
|
msgid "524 - CloudFlare - A timeout occurred"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Bandwidth"
|
||||||
|
#~ msgstr "Bande passante"
|
||||||
|
|
||||||
|
#~ msgid "Unique Files"
|
||||||
|
#~ msgstr "Fichiers uniques"
|
||||||
|
|
||||||
|
#~ msgid "Unique 404"
|
||||||
|
#~ msgstr "Unique 404"
|
||||||
|
|
||||||
|
#~ msgid " - Including spiders"
|
||||||
|
#~ msgstr "- Inclus robots d'indexation"
|
@ -0,0 +1,882 @@
|
|||||||
|
# SOME DESCRIPTIVE TITLE.
|
||||||
|
# Copyright (C) YEAR Free Software Foundation, Inc.
|
||||||
|
# This file is distributed under the same license as the PACKAGE package.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
#, fuzzy
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: goaccess 1.3\n"
|
||||||
|
"Report-Msgid-Bugs-To: hello@goaccess.io\n"
|
||||||
|
"POT-Creation-Date: 2018-11-22 23:38-0600\n"
|
||||||
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
"Language: \n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=CHARSET\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
|
#: src/labels.h:40
|
||||||
|
msgid "en"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:43
|
||||||
|
msgid "Exp. Panel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:44
|
||||||
|
msgid "Help"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:45
|
||||||
|
msgid "Quit"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:46
|
||||||
|
msgid "Total"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:49
|
||||||
|
msgid "[x] ASC [ ] DESC"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:50
|
||||||
|
msgid "[ ] ASC [x] DESC"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:53
|
||||||
|
#, c-format
|
||||||
|
msgid "[Active Panel: %1$s]"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:54
|
||||||
|
msgid "[q]uit GoAccess"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:55
|
||||||
|
msgid "[?] Help [Enter] Exp. Panel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:56
|
||||||
|
msgid "Dashboard"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:57
|
||||||
|
msgid "Dashboard - Overall Analyzed Requests"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:58
|
||||||
|
msgid "Overall Analyzed Requests"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:60 src/labels.h:81
|
||||||
|
msgid "Tx. Amount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:61
|
||||||
|
msgid "Date/Time"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:62
|
||||||
|
msgid "Excl. IP Hits"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:63
|
||||||
|
msgid "Failed Requests"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:64
|
||||||
|
msgid "Init. Proc. Time"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:65
|
||||||
|
msgid "Log Size"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:66
|
||||||
|
msgid "Log Source"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:67 src/labels.h:174
|
||||||
|
msgid "Referrers"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:68
|
||||||
|
msgid "Total Requests"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:69
|
||||||
|
msgid "Static Files"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:70 src/labels.h:146
|
||||||
|
msgid "Not Found"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:71
|
||||||
|
msgid "Requested Files"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:72
|
||||||
|
msgid "Unique Visitors"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:73
|
||||||
|
msgid "Valid Requests"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:76
|
||||||
|
msgid "Hits"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:77
|
||||||
|
msgid "h%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:78 src/labels.h:104
|
||||||
|
msgid "Visitors"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:79
|
||||||
|
msgid "Vis."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:80
|
||||||
|
msgid "v%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:82
|
||||||
|
msgid "Avg. T.S."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:83
|
||||||
|
msgid "Cum. T.S."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:84
|
||||||
|
msgid "Max. T.S."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:85
|
||||||
|
msgid "Method"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:86
|
||||||
|
msgid "Mtd"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:87
|
||||||
|
msgid "Protocol"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:88
|
||||||
|
msgid "Proto"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:89
|
||||||
|
msgid "City"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:90
|
||||||
|
msgid "Country"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:91
|
||||||
|
msgid "Hostname"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:92
|
||||||
|
msgid "Data"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:94
|
||||||
|
msgid "Hits/Visitors"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:98
|
||||||
|
msgid "Unique visitors per day"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:100
|
||||||
|
msgid "Unique visitors per day - Including spiders"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:102
|
||||||
|
msgid "Hits having the same IP, date and agent are a unique visit."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:107
|
||||||
|
msgid "Requested Files (URLs)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:109
|
||||||
|
msgid "Top requests sorted by hits [, avgts, cumts, maxts, mthd, proto]"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:111
|
||||||
|
msgid "Requests"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:114 src/labels.h:118
|
||||||
|
msgid "Static Requests"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:116
|
||||||
|
msgid "Top static requests sorted by hits [, avgts, cumts, maxts, mthd, proto]"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:121
|
||||||
|
msgid "Time Distribution"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:123
|
||||||
|
msgid "Data sorted by hour [, avgts, cumts, maxts]"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:125
|
||||||
|
msgid "Time"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:128 src/labels.h:132
|
||||||
|
msgid "Virtual Hosts"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:130 src/labels.h:137
|
||||||
|
msgid "Data sorted by hits [, avgts, cumts, maxts]"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:135
|
||||||
|
msgid "Remote User (HTTP authentication)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:139
|
||||||
|
msgid "Remote User"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:142
|
||||||
|
msgid "Not Found URLs (404s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:144
|
||||||
|
msgid "Top not found URLs sorted by hits [, avgts, cumts, maxts, mthd, proto]"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:149
|
||||||
|
msgid "Visitor Hostnames and IPs"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:151
|
||||||
|
msgid "Top visitor hosts sorted by hits [, avgts, cumts, maxts]"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:153
|
||||||
|
msgid "Hosts"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:156
|
||||||
|
msgid "Operating Systems"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:158
|
||||||
|
msgid "Top Operating Systems sorted by hits [, avgts, cumts, maxts]"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:160
|
||||||
|
msgid "OS"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:163 src/labels.h:167
|
||||||
|
msgid "Browsers"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:165
|
||||||
|
msgid "Top Browsers sorted by hits [, avgts, cumts, maxts]"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:170
|
||||||
|
msgid "Referrers URLs"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:172
|
||||||
|
msgid "Top Requested Referrers sorted by hits [, avgts, cumts, maxts]"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:177 src/labels.h:181
|
||||||
|
msgid "Referring Sites"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:179
|
||||||
|
msgid "Top Referring Sites sorted by hits [, avgts, cumts, maxts]"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:184
|
||||||
|
msgid "Keyphrases from Google's search engine"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:186
|
||||||
|
msgid "Top Keyphrases sorted by hits [, avgts, cumts, maxts]"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:188
|
||||||
|
msgid "Keyphrases"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:191 src/labels.h:195
|
||||||
|
msgid "Geo Location"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:193
|
||||||
|
msgid "Continent > Country sorted by unique hits [, avgts, cumts, maxts]"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:198
|
||||||
|
msgid "HTTP Status Codes"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:200
|
||||||
|
msgid "Top HTTP Status Codes sorted by hits [, avgts, cumts, maxts]"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:202
|
||||||
|
msgid "Status Codes"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:206
|
||||||
|
msgid "[ ] case sensitive"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:208
|
||||||
|
msgid "[x] case sensitive"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:210
|
||||||
|
msgid "Regex allowed - ^g to cancel - TAB switch case"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:212
|
||||||
|
msgid "Find pattern in all views"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:216
|
||||||
|
msgid "Log Format Configuration"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:218
|
||||||
|
msgid "[SPACE] to toggle - [ENTER] to proceed - [q] to quit"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:220
|
||||||
|
msgid "Log Format - [c] to add/edit format"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:222
|
||||||
|
msgid "Date Format - [d] to add/edit format"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:224
|
||||||
|
msgid "Time Format - [t] to add/edit format"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:226 src/labels.h:230
|
||||||
|
msgid "[UP/DOWN] to scroll - [q] to close window"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:232
|
||||||
|
#, c-format
|
||||||
|
msgid "User Agents for %1$s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:236
|
||||||
|
msgid "Scheme Configuration"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:238
|
||||||
|
msgid "[ENTER] to use scheme - [q]uit"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:242
|
||||||
|
msgid "Sort active module by"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:244
|
||||||
|
msgid "[ENTER] select - [TAB] sort - [q]uit"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:248
|
||||||
|
msgid "GoAccess Quick Help"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:250
|
||||||
|
msgid "[UP/DOWN] to scroll - [q] to quit"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:254
|
||||||
|
msgid "Built using Tokyo Cabinet on-disk B+ Tree."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:256
|
||||||
|
msgid "Built using Tokyo Cabinet in-memory hash database."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:258
|
||||||
|
msgid "Built using the default in-memory hash database."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:262
|
||||||
|
msgid "Format Errors - Verify your log/date/time format"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:264
|
||||||
|
msgid "No date format was found on your conf file."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:266
|
||||||
|
msgid "No log format was found on your conf file."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:268
|
||||||
|
msgid "No time format was found on your conf file."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:270
|
||||||
|
msgid "No default config file found."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:272
|
||||||
|
msgid "You may specify one with"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:274
|
||||||
|
msgid "producing the following errors"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:276
|
||||||
|
#, c-format
|
||||||
|
msgid "Parsed %1$d lines"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:278
|
||||||
|
msgid "Please report it by opening an issue on GitHub"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:280
|
||||||
|
msgid "Select a time format."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:282
|
||||||
|
msgid "Select a date format."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:284
|
||||||
|
msgid "Select a log format."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:286
|
||||||
|
#, c-format
|
||||||
|
msgid "'%1$s' panel is disabled"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:290
|
||||||
|
msgid "For more details visit"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:292
|
||||||
|
msgid "Last Updated"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:294
|
||||||
|
msgid "WebSocket server ready to accept new client connections"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:297
|
||||||
|
msgid "The following options can also be supplied to the command"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:299
|
||||||
|
msgid "Examples can be found by running"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:302
|
||||||
|
msgid "Server Statistics"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:304
|
||||||
|
msgid "Theme"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:306
|
||||||
|
msgid "Dark Gray"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:308
|
||||||
|
msgid "Bright"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:310
|
||||||
|
msgid "Dark Blue"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:312
|
||||||
|
msgid "Dark Purple"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:314
|
||||||
|
msgid "Panels"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:316
|
||||||
|
msgid "Items per Page"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:318
|
||||||
|
msgid "Tables"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:320
|
||||||
|
msgid "Display Tables"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:322
|
||||||
|
msgid "Auto-Hide on Small Devices"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:324
|
||||||
|
msgid "Automatically hide tables on small screen devices"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:326
|
||||||
|
msgid "Layout"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:328
|
||||||
|
msgid "Horizontal"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:330
|
||||||
|
msgid "Vertical"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:332
|
||||||
|
msgid "File Options"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:334
|
||||||
|
msgid "Export as JSON"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:336
|
||||||
|
msgid "Panel Options"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:338
|
||||||
|
msgid "Previous"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:340
|
||||||
|
msgid "Next"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:342
|
||||||
|
msgid "First"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:344
|
||||||
|
msgid "Last"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:346
|
||||||
|
msgid "Chart Options"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:348
|
||||||
|
msgid "Chart"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:350
|
||||||
|
msgid "Type"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:352
|
||||||
|
msgid "Area Spline"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:354
|
||||||
|
msgid "Bar"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:356
|
||||||
|
msgid "Plot Metric"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:358
|
||||||
|
msgid "Table Columns"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:362
|
||||||
|
msgid "1xx Informational"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:364
|
||||||
|
msgid "2xx Success"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:366
|
||||||
|
msgid "3xx Redirection"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:368
|
||||||
|
msgid "4xx Client Errors"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:370
|
||||||
|
msgid "5xx Server Errors"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:373
|
||||||
|
msgid "100 - Continue: Server received the initial part of the request"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:375
|
||||||
|
msgid "101 - Switching Protocols: Client asked to switch protocols"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:377
|
||||||
|
msgid "200 - OK: The request sent by the client was successful"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:379
|
||||||
|
msgid "201 - Created: The request has been fulfilled and created"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:381
|
||||||
|
msgid "202 - Accepted: The request has been accepted for processing"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:383
|
||||||
|
msgid "203 - Non-authoritative Information: Response from a third party"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:385
|
||||||
|
msgid "204 - No Content: Request did not return any content"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:387
|
||||||
|
msgid "205 - Reset Content: Server asked the client to reset the document"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:389
|
||||||
|
msgid "206 - Partial Content: The partial GET has been successful"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:391
|
||||||
|
msgid "207 - Multi-Status: WebDAV; RFC 4918"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:393
|
||||||
|
msgid "208 - Already Reported: WebDAV; RFC 5842"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:395
|
||||||
|
msgid "300 - Multiple Choices: Multiple options for the resource"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:397
|
||||||
|
msgid "301 - Moved Permanently: Resource has permanently moved"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:399
|
||||||
|
msgid "302 - Moved Temporarily (redirect)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:401
|
||||||
|
msgid "303 - See Other Document: The response is at a different URI"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:403
|
||||||
|
msgid "304 - Not Modified: Resource has not been modified"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:405
|
||||||
|
msgid "305 - Use Proxy: Can only be accessed through the proxy"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:407
|
||||||
|
msgid "307 - Temporary Redirect: Resource temporarily moved"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:409
|
||||||
|
msgid "400 - Bad Request: The syntax of the request is invalid"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:411
|
||||||
|
msgid "401 - Unauthorized: Request needs user authentication"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:413
|
||||||
|
msgid "402 - Payment Required"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:415
|
||||||
|
msgid "403 - Forbidden: Server is refusing to respond to it"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:417
|
||||||
|
msgid "404 - Not Found: Requested resource could not be found"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:419
|
||||||
|
msgid "405 - Method Not Allowed: Request method not supported"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:421
|
||||||
|
msgid "406 - Not Acceptable"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:423
|
||||||
|
msgid "407 - Proxy Authentication Required"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:425
|
||||||
|
msgid "408 - Request Timeout: Server timed out waiting for the request"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:427
|
||||||
|
msgid "409 - Conflict: Conflict in the request"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:429
|
||||||
|
msgid "410 - Gone: Resource requested is no longer available"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:431
|
||||||
|
msgid "411 - Length Required: Invalid Content-Length"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:433
|
||||||
|
msgid "412 - Precondition Failed: Server does not meet preconditions"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:435
|
||||||
|
msgid "413 - Payload Too Large"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:437
|
||||||
|
msgid "414 - Request-URI Too Long"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:439
|
||||||
|
msgid "415 - Unsupported Media Type: Media type is not supported"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:441
|
||||||
|
msgid "416 - Requested Range Not Satisfiable: Cannot supply that portion"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:443
|
||||||
|
msgid "417 - Expectation Failed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:445
|
||||||
|
msgid "421 - Misdirected Request"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:447
|
||||||
|
msgid "422 - Unprocessable Entity due to semantic errors: WebDAV"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:449
|
||||||
|
msgid "423 - The resource that is being accessed is locked"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:451
|
||||||
|
msgid "424 - Failed Dependency: WebDAV"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:453
|
||||||
|
msgid "426 - Upgrade Required: Client should switch to a different protocol"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:455
|
||||||
|
msgid "428 - Precondition Required"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:457
|
||||||
|
msgid "429 - Too Many Requests: The user has sent too many requests"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:459
|
||||||
|
msgid "431 - Request Header Fields Too Large"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:461
|
||||||
|
msgid "451 - Unavailable For Legal Reasons"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:463
|
||||||
|
msgid "444 - (Nginx) Connection closed without sending any headers"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:465
|
||||||
|
msgid "494 - (Nginx) Request Header Too Large"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:467
|
||||||
|
msgid "495 - (Nginx) SSL client certificate error"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:469
|
||||||
|
msgid "496 - (Nginx) Client didn't provide certificate"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:471
|
||||||
|
msgid "497 - (Nginx) HTTP request sent to HTTPS port"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:473
|
||||||
|
msgid "499 - (Nginx) Connection closed by client while processing request"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:475
|
||||||
|
msgid "500 - Internal Server Error"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:477
|
||||||
|
msgid "501 - Not Implemented"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:479
|
||||||
|
msgid "502 - Bad Gateway: Received an invalid response from the upstream"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:481
|
||||||
|
msgid "503 - Service Unavailable: The server is currently unavailable"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:483
|
||||||
|
msgid "504 - Gateway Timeout: The upstream server failed to send request"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:485
|
||||||
|
msgid "505 - HTTP Version Not Supported"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:487
|
||||||
|
msgid "520 - CloudFlare - Web server is returning an unknown error"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:489
|
||||||
|
msgid "521 - CloudFlare - Web server is down"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:491
|
||||||
|
msgid "522 - CloudFlare - Connection timed out"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:493
|
||||||
|
msgid "523 - CloudFlare - Origin is unreachable"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:495
|
||||||
|
msgid "524 - CloudFlare - A timeout occurred"
|
||||||
|
msgstr ""
|
@ -0,0 +1,23 @@
|
|||||||
|
# Sed script that inserts the file called HEADER before the header entry.
|
||||||
|
#
|
||||||
|
# At each occurrence of a line starting with "msgid ", we execute the following
|
||||||
|
# commands. At the first occurrence, insert the file. At the following
|
||||||
|
# occurrences, do nothing. The distinction between the first and the following
|
||||||
|
# occurrences is achieved by looking at the hold space.
|
||||||
|
/^msgid /{
|
||||||
|
x
|
||||||
|
# Test if the hold space is empty.
|
||||||
|
s/m/m/
|
||||||
|
ta
|
||||||
|
# Yes it was empty. First occurrence. Read the file.
|
||||||
|
r HEADER
|
||||||
|
# Output the file's contents by reading the next line. But don't lose the
|
||||||
|
# current line while doing this.
|
||||||
|
g
|
||||||
|
N
|
||||||
|
bb
|
||||||
|
:a
|
||||||
|
# The hold space was nonempty. Following occurrences. Do nothing.
|
||||||
|
x
|
||||||
|
:b
|
||||||
|
}
|
@ -0,0 +1,19 @@
|
|||||||
|
# Sed script that remove the POT-Creation-Date line in the header entry
|
||||||
|
# from a POT file.
|
||||||
|
#
|
||||||
|
# The distinction between the first and the following occurrences of the
|
||||||
|
# pattern is achieved by looking at the hold space.
|
||||||
|
/^"POT-Creation-Date: .*"$/{
|
||||||
|
x
|
||||||
|
# Test if the hold space is empty.
|
||||||
|
s/P/P/
|
||||||
|
ta
|
||||||
|
# Yes it was empty. First occurrence. Remove the line.
|
||||||
|
g
|
||||||
|
d
|
||||||
|
bb
|
||||||
|
:a
|
||||||
|
# The hold space was nonempty. Following occurrences. Do nothing.
|
||||||
|
x
|
||||||
|
:b
|
||||||
|
}
|
@ -0,0 +1 @@
|
|||||||
|
timestamp
|
@ -0,0 +1,899 @@
|
|||||||
|
# This file is distributed under the same license as the goaccess package.
|
||||||
|
# Ai, 2018.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: goaccess 1.2\n"
|
||||||
|
"Report-Msgid-Bugs-To: hello@goaccess.io\n"
|
||||||
|
"POT-Creation-Date: 2018-11-22 23:38-0600\n"
|
||||||
|
"PO-Revision-Date: 2017-04-03 09:43+0200\n"
|
||||||
|
"Last-Translator: Ai<hello@goaccess.io>\n"
|
||||||
|
"Language-Team: Ai\n"
|
||||||
|
"Language: zh_CN\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
"X-Generator: Gtranslator 2.91.7\n"
|
||||||
|
|
||||||
|
#: src/labels.h:40
|
||||||
|
msgid "en"
|
||||||
|
msgstr "zh-CN"
|
||||||
|
|
||||||
|
#: src/labels.h:43
|
||||||
|
msgid "Exp. Panel"
|
||||||
|
msgstr "展开面板"
|
||||||
|
|
||||||
|
#: src/labels.h:44
|
||||||
|
msgid "Help"
|
||||||
|
msgstr "帮助"
|
||||||
|
|
||||||
|
#: src/labels.h:45
|
||||||
|
msgid "Quit"
|
||||||
|
msgstr "退出"
|
||||||
|
|
||||||
|
#: src/labels.h:46
|
||||||
|
msgid "Total"
|
||||||
|
msgstr "总共"
|
||||||
|
|
||||||
|
#: src/labels.h:49
|
||||||
|
msgid "[x] ASC [ ] DESC"
|
||||||
|
msgstr "[x] 递增 [ ] 递减"
|
||||||
|
|
||||||
|
#: src/labels.h:50
|
||||||
|
msgid "[ ] ASC [x] DESC"
|
||||||
|
msgstr "[ ] 递增 [x] 递减"
|
||||||
|
|
||||||
|
#: src/labels.h:53
|
||||||
|
#, c-format
|
||||||
|
msgid "[Active Panel: %1$s]"
|
||||||
|
msgstr "[当前面板: %1$s]"
|
||||||
|
|
||||||
|
#: src/labels.h:54
|
||||||
|
msgid "[q]uit GoAccess"
|
||||||
|
msgstr "[q]退出GoAccess"
|
||||||
|
|
||||||
|
#: src/labels.h:55
|
||||||
|
msgid "[?] Help [Enter] Exp. Panel"
|
||||||
|
msgstr "[?]帮助 [回车]展开面板"
|
||||||
|
|
||||||
|
#: src/labels.h:56
|
||||||
|
msgid "Dashboard"
|
||||||
|
msgstr "概览"
|
||||||
|
|
||||||
|
#: src/labels.h:57
|
||||||
|
msgid "Dashboard - Overall Analyzed Requests"
|
||||||
|
msgstr "概览-所有已分析的请求"
|
||||||
|
|
||||||
|
#: src/labels.h:58
|
||||||
|
msgid "Overall Analyzed Requests"
|
||||||
|
msgstr "所有已分析的请求"
|
||||||
|
|
||||||
|
#: src/labels.h:60 src/labels.h:81
|
||||||
|
msgid "Tx. Amount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:61
|
||||||
|
msgid "Date/Time"
|
||||||
|
msgstr "时期/时间"
|
||||||
|
|
||||||
|
#: src/labels.h:62
|
||||||
|
msgid "Excl. IP Hits"
|
||||||
|
msgstr "过滤来自此IP的请求"
|
||||||
|
|
||||||
|
#: src/labels.h:63
|
||||||
|
msgid "Failed Requests"
|
||||||
|
msgstr "失败的请求"
|
||||||
|
|
||||||
|
#: src/labels.h:64
|
||||||
|
msgid "Init. Proc. Time"
|
||||||
|
msgstr "第一次处理耗时"
|
||||||
|
|
||||||
|
#: src/labels.h:65
|
||||||
|
msgid "Log Size"
|
||||||
|
msgstr "日志大小"
|
||||||
|
|
||||||
|
#: src/labels.h:66
|
||||||
|
msgid "Log Source"
|
||||||
|
msgstr "日志文件夹地址"
|
||||||
|
|
||||||
|
#: src/labels.h:67 src/labels.h:174
|
||||||
|
msgid "Referrers"
|
||||||
|
msgstr "来源地址"
|
||||||
|
|
||||||
|
#: src/labels.h:68
|
||||||
|
msgid "Total Requests"
|
||||||
|
msgstr "所有请求"
|
||||||
|
|
||||||
|
#: src/labels.h:69
|
||||||
|
msgid "Static Files"
|
||||||
|
msgstr "静态文件"
|
||||||
|
|
||||||
|
#: src/labels.h:70 src/labels.h:146
|
||||||
|
msgid "Not Found"
|
||||||
|
msgstr "未找到(404)"
|
||||||
|
|
||||||
|
#: src/labels.h:71
|
||||||
|
msgid "Requested Files"
|
||||||
|
msgstr "请求的文件"
|
||||||
|
|
||||||
|
#: src/labels.h:72
|
||||||
|
msgid "Unique Visitors"
|
||||||
|
msgstr "独立访客"
|
||||||
|
|
||||||
|
#: src/labels.h:73
|
||||||
|
msgid "Valid Requests"
|
||||||
|
msgstr "有效的请求"
|
||||||
|
|
||||||
|
#: src/labels.h:76
|
||||||
|
msgid "Hits"
|
||||||
|
msgstr "点击量"
|
||||||
|
|
||||||
|
#: src/labels.h:77
|
||||||
|
msgid "h%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:78 src/labels.h:104
|
||||||
|
msgid "Visitors"
|
||||||
|
msgstr "访客"
|
||||||
|
|
||||||
|
#: src/labels.h:79
|
||||||
|
msgid "Vis."
|
||||||
|
msgstr "访客"
|
||||||
|
|
||||||
|
#: src/labels.h:80
|
||||||
|
msgid "v%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:82
|
||||||
|
msgid "Avg. T.S."
|
||||||
|
msgstr "平均响应时"
|
||||||
|
|
||||||
|
#: src/labels.h:83
|
||||||
|
msgid "Cum. T.S."
|
||||||
|
msgstr "总共响应时"
|
||||||
|
|
||||||
|
#: src/labels.h:84
|
||||||
|
msgid "Max. T.S."
|
||||||
|
msgstr "最高响应时"
|
||||||
|
|
||||||
|
#: src/labels.h:85
|
||||||
|
msgid "Method"
|
||||||
|
msgstr "请求方法"
|
||||||
|
|
||||||
|
#: src/labels.h:86
|
||||||
|
msgid "Mtd"
|
||||||
|
msgstr "请求方法"
|
||||||
|
|
||||||
|
#: src/labels.h:87
|
||||||
|
msgid "Protocol"
|
||||||
|
msgstr "协议"
|
||||||
|
|
||||||
|
#: src/labels.h:88
|
||||||
|
msgid "Proto"
|
||||||
|
msgstr "协议"
|
||||||
|
|
||||||
|
#: src/labels.h:89
|
||||||
|
msgid "City"
|
||||||
|
msgstr "城市"
|
||||||
|
|
||||||
|
#: src/labels.h:90
|
||||||
|
msgid "Country"
|
||||||
|
msgstr "国家"
|
||||||
|
|
||||||
|
#: src/labels.h:91
|
||||||
|
msgid "Hostname"
|
||||||
|
msgstr "主机名"
|
||||||
|
|
||||||
|
#: src/labels.h:92
|
||||||
|
msgid "Data"
|
||||||
|
msgstr "数据"
|
||||||
|
|
||||||
|
#: src/labels.h:94
|
||||||
|
msgid "Hits/Visitors"
|
||||||
|
msgstr "点击量/访客"
|
||||||
|
|
||||||
|
#: src/labels.h:98
|
||||||
|
msgid "Unique visitors per day"
|
||||||
|
msgstr "每日独立访客"
|
||||||
|
|
||||||
|
#: src/labels.h:100
|
||||||
|
msgid "Unique visitors per day - Including spiders"
|
||||||
|
msgstr "每日独立访客 - 包括网络机器人"
|
||||||
|
|
||||||
|
#: src/labels.h:102
|
||||||
|
msgid "Hits having the same IP, date and agent are a unique visit."
|
||||||
|
msgstr "来自同一IP、时间和Http用户代理的多次点击被视作一次访问"
|
||||||
|
|
||||||
|
#: src/labels.h:107
|
||||||
|
msgid "Requested Files (URLs)"
|
||||||
|
msgstr "请求的文件"
|
||||||
|
|
||||||
|
#: src/labels.h:109
|
||||||
|
msgid "Top requests sorted by hits [, avgts, cumts, maxts, mthd, proto]"
|
||||||
|
msgstr ""
|
||||||
|
"请求排序按 [点击量, 平均响应时, 总共响应时, 最高响应时, 请求方法, 协议]"
|
||||||
|
|
||||||
|
#: src/labels.h:111
|
||||||
|
msgid "Requests"
|
||||||
|
msgstr "请求"
|
||||||
|
|
||||||
|
#: src/labels.h:114 src/labels.h:118
|
||||||
|
msgid "Static Requests"
|
||||||
|
msgstr "静态请求"
|
||||||
|
|
||||||
|
#: src/labels.h:116
|
||||||
|
msgid "Top static requests sorted by hits [, avgts, cumts, maxts, mthd, proto]"
|
||||||
|
msgstr ""
|
||||||
|
"静态请求排序按 [点击量, 平均响应时, 总共响应时, 最高响应时, 请求方法, 协议]"
|
||||||
|
|
||||||
|
#: src/labels.h:121
|
||||||
|
msgid "Time Distribution"
|
||||||
|
msgstr "时间分配"
|
||||||
|
|
||||||
|
#: src/labels.h:123
|
||||||
|
msgid "Data sorted by hour [, avgts, cumts, maxts]"
|
||||||
|
msgstr "数据列排序按 [小时, 平均响应时, 总共响应时, 最高响应时]"
|
||||||
|
|
||||||
|
#: src/labels.h:125
|
||||||
|
msgid "Time"
|
||||||
|
msgstr "时间"
|
||||||
|
|
||||||
|
#: src/labels.h:128 src/labels.h:132
|
||||||
|
msgid "Virtual Hosts"
|
||||||
|
msgstr "虚拟主机"
|
||||||
|
|
||||||
|
#: src/labels.h:130 src/labels.h:137
|
||||||
|
msgid "Data sorted by hits [, avgts, cumts, maxts]"
|
||||||
|
msgstr "数据列排序按 [点击量, 平均响应时, 总共响应时, 最高响应时]"
|
||||||
|
|
||||||
|
#: src/labels.h:135
|
||||||
|
msgid "Remote User (HTTP authentication)"
|
||||||
|
msgstr "已认证用户(HTTP authentication)"
|
||||||
|
|
||||||
|
#: src/labels.h:139
|
||||||
|
msgid "Remote User"
|
||||||
|
msgstr "已认证用户"
|
||||||
|
|
||||||
|
#: src/labels.h:142
|
||||||
|
msgid "Not Found URLs (404s)"
|
||||||
|
msgstr "未找到的URLs"
|
||||||
|
|
||||||
|
#: src/labels.h:144
|
||||||
|
msgid "Top not found URLs sorted by hits [, avgts, cumts, maxts, mthd, proto]"
|
||||||
|
msgstr ""
|
||||||
|
"未找到的URLs排序按 [点击量, 平均响应时, 总共响应时, 最高响应时, 请求方法, 协"
|
||||||
|
"议]"
|
||||||
|
|
||||||
|
#: src/labels.h:149
|
||||||
|
msgid "Visitor Hostnames and IPs"
|
||||||
|
msgstr "访客主机名和IP地址"
|
||||||
|
|
||||||
|
#: src/labels.h:151
|
||||||
|
msgid "Top visitor hosts sorted by hits [, avgts, cumts, maxts]"
|
||||||
|
msgstr "访客主机排序按 [点击量, 平均响应时, 总共响应时, 最高响应时]"
|
||||||
|
|
||||||
|
#: src/labels.h:153
|
||||||
|
msgid "Hosts"
|
||||||
|
msgstr "主机"
|
||||||
|
|
||||||
|
#: src/labels.h:156
|
||||||
|
msgid "Operating Systems"
|
||||||
|
msgstr "操作系统"
|
||||||
|
|
||||||
|
#: src/labels.h:158
|
||||||
|
msgid "Top Operating Systems sorted by hits [, avgts, cumts, maxts]"
|
||||||
|
msgstr "操作系统排序按 [点击量, 平均响应时, 总共响应时, 最高响应时]"
|
||||||
|
|
||||||
|
#: src/labels.h:160
|
||||||
|
msgid "OS"
|
||||||
|
msgstr "操作系统"
|
||||||
|
|
||||||
|
#: src/labels.h:163 src/labels.h:167
|
||||||
|
msgid "Browsers"
|
||||||
|
msgstr "浏览器"
|
||||||
|
|
||||||
|
#: src/labels.h:165
|
||||||
|
msgid "Top Browsers sorted by hits [, avgts, cumts, maxts]"
|
||||||
|
msgstr "浏览器排序按 [点击量, 平均响应时, 总共响应时, 最高响应时]"
|
||||||
|
|
||||||
|
#: src/labels.h:170
|
||||||
|
msgid "Referrers URLs"
|
||||||
|
msgstr "来源地址URLs"
|
||||||
|
|
||||||
|
#: src/labels.h:172
|
||||||
|
msgid "Top Requested Referrers sorted by hits [, avgts, cumts, maxts]"
|
||||||
|
msgstr "来源地址排序按 [点击量, 平均响应时, 总共响应时, 最高响应时]"
|
||||||
|
|
||||||
|
#: src/labels.h:177 src/labels.h:181
|
||||||
|
msgid "Referring Sites"
|
||||||
|
msgstr "推荐网站"
|
||||||
|
|
||||||
|
#: src/labels.h:179
|
||||||
|
msgid "Top Referring Sites sorted by hits [, avgts, cumts, maxts]"
|
||||||
|
msgstr "推荐网站排序按 [点击量, 平均响应时, 总共响应时, 最高响应时]"
|
||||||
|
|
||||||
|
#: src/labels.h:184
|
||||||
|
msgid "Keyphrases from Google's search engine"
|
||||||
|
msgstr "谷歌搜索关键字"
|
||||||
|
|
||||||
|
#: src/labels.h:186
|
||||||
|
msgid "Top Keyphrases sorted by hits [, avgts, cumts, maxts]"
|
||||||
|
msgstr "关键字排序按 [点击量, 平均响应时, 总共响应时, 最高响应时]"
|
||||||
|
|
||||||
|
#: src/labels.h:188
|
||||||
|
msgid "Keyphrases"
|
||||||
|
msgstr "关键字"
|
||||||
|
|
||||||
|
#: src/labels.h:191 src/labels.h:195
|
||||||
|
msgid "Geo Location"
|
||||||
|
msgstr "地理位置"
|
||||||
|
|
||||||
|
#: src/labels.h:193
|
||||||
|
msgid "Continent > Country sorted by unique hits [, avgts, cumts, maxts]"
|
||||||
|
msgstr "大陆 > 国家排序按 [点击量, 平均响应时, 总共响应时, 最高响应时]"
|
||||||
|
|
||||||
|
#: src/labels.h:198
|
||||||
|
msgid "HTTP Status Codes"
|
||||||
|
msgstr "HTTP状态码"
|
||||||
|
|
||||||
|
#: src/labels.h:200
|
||||||
|
msgid "Top HTTP Status Codes sorted by hits [, avgts, cumts, maxts]"
|
||||||
|
msgstr "HTTP状态码排序按 [点击量, 平均响应时, 总共响应时, 最高响应时]"
|
||||||
|
|
||||||
|
#: src/labels.h:202
|
||||||
|
msgid "Status Codes"
|
||||||
|
msgstr "状态码"
|
||||||
|
|
||||||
|
#: src/labels.h:206
|
||||||
|
msgid "[ ] case sensitive"
|
||||||
|
msgstr "[ ] 区分大小写"
|
||||||
|
|
||||||
|
#: src/labels.h:208
|
||||||
|
msgid "[x] case sensitive"
|
||||||
|
msgstr "[x] 区分大小写"
|
||||||
|
|
||||||
|
#: src/labels.h:210
|
||||||
|
msgid "Regex allowed - ^g to cancel - TAB switch case"
|
||||||
|
msgstr "允许正则表达式 - ^g退出 - TAB改变大小写"
|
||||||
|
|
||||||
|
#: src/labels.h:212
|
||||||
|
msgid "Find pattern in all views"
|
||||||
|
msgstr "在所有界面中查找匹配模式"
|
||||||
|
|
||||||
|
#: src/labels.h:216
|
||||||
|
msgid "Log Format Configuration"
|
||||||
|
msgstr "日志格式设置"
|
||||||
|
|
||||||
|
#: src/labels.h:218
|
||||||
|
msgid "[SPACE] to toggle - [ENTER] to proceed - [q] to quit"
|
||||||
|
msgstr "[空格]切换 - [回车]继续 - [q]退出"
|
||||||
|
|
||||||
|
#: src/labels.h:220
|
||||||
|
msgid "Log Format - [c] to add/edit format"
|
||||||
|
msgstr "日志格式 - [c]新建/修改格式"
|
||||||
|
|
||||||
|
#: src/labels.h:222
|
||||||
|
msgid "Date Format - [d] to add/edit format"
|
||||||
|
msgstr "日期格式 - [d]新建/修改格式"
|
||||||
|
|
||||||
|
#: src/labels.h:224
|
||||||
|
msgid "Time Format - [t] to add/edit format"
|
||||||
|
msgstr "时间格式 - [t]新建/修改格式"
|
||||||
|
|
||||||
|
#: src/labels.h:226 src/labels.h:230
|
||||||
|
msgid "[UP/DOWN] to scroll - [q] to close window"
|
||||||
|
msgstr "[UP/DOWN]上下滚动 - [q]退出"
|
||||||
|
|
||||||
|
#: src/labels.h:232
|
||||||
|
#, c-format
|
||||||
|
msgid "User Agents for %1$s"
|
||||||
|
msgstr "用户代理 %1$s"
|
||||||
|
|
||||||
|
#: src/labels.h:236
|
||||||
|
msgid "Scheme Configuration"
|
||||||
|
msgstr "颜色方案设置"
|
||||||
|
|
||||||
|
#: src/labels.h:238
|
||||||
|
msgid "[ENTER] to use scheme - [q]uit"
|
||||||
|
msgstr "[回车]选取方案 - [q]退出"
|
||||||
|
|
||||||
|
#: src/labels.h:242
|
||||||
|
msgid "Sort active module by"
|
||||||
|
msgstr "当前选择栏目排序"
|
||||||
|
|
||||||
|
#: src/labels.h:244
|
||||||
|
msgid "[ENTER] select - [TAB] sort - [q]uit"
|
||||||
|
msgstr "[回车]选择 - [TAB]排序 - [q]退出"
|
||||||
|
|
||||||
|
#: src/labels.h:248
|
||||||
|
msgid "GoAccess Quick Help"
|
||||||
|
msgstr "GoAccess快速帮助"
|
||||||
|
|
||||||
|
#: src/labels.h:250
|
||||||
|
msgid "[UP/DOWN] to scroll - [q] to quit"
|
||||||
|
msgstr "[UP/DOWN]上下滚动 - [q]退出"
|
||||||
|
|
||||||
|
#: src/labels.h:254
|
||||||
|
msgid "Built using Tokyo Cabinet on-disk B+ Tree."
|
||||||
|
msgstr "使用Tokyo Cabinet在磁盘中的B+树来构建"
|
||||||
|
|
||||||
|
#: src/labels.h:256
|
||||||
|
msgid "Built using Tokyo Cabinet in-memory hash database."
|
||||||
|
msgstr "使用Tokyo Cabinet的内存中的哈希表来构建"
|
||||||
|
|
||||||
|
#: src/labels.h:258
|
||||||
|
msgid "Built using the default in-memory hash database."
|
||||||
|
msgstr "使用默认的在内存中的哈希表来构建"
|
||||||
|
|
||||||
|
#: src/labels.h:262
|
||||||
|
msgid "Format Errors - Verify your log/date/time format"
|
||||||
|
msgstr "格式错误 - 请检查你的日志/日期/时间格式"
|
||||||
|
|
||||||
|
#: src/labels.h:264
|
||||||
|
msgid "No date format was found on your conf file."
|
||||||
|
msgstr "未在配置文件中设置日期格式"
|
||||||
|
|
||||||
|
#: src/labels.h:266
|
||||||
|
msgid "No log format was found on your conf file."
|
||||||
|
msgstr "未在配置文件中设置日志格式"
|
||||||
|
|
||||||
|
#: src/labels.h:268
|
||||||
|
msgid "No time format was found on your conf file."
|
||||||
|
msgstr "未在配置文件中设置时间格式"
|
||||||
|
|
||||||
|
#: src/labels.h:270
|
||||||
|
msgid "No default config file found."
|
||||||
|
msgstr "未找到默认的配置文件"
|
||||||
|
|
||||||
|
#: src/labels.h:272
|
||||||
|
msgid "You may specify one with"
|
||||||
|
msgstr "你可以指定配置文件"
|
||||||
|
|
||||||
|
#: src/labels.h:274
|
||||||
|
msgid "producing the following errors"
|
||||||
|
msgstr "出现以下错误"
|
||||||
|
|
||||||
|
#: src/labels.h:276
|
||||||
|
#, c-format
|
||||||
|
msgid "Parsed %1$d lines"
|
||||||
|
msgstr "已解析 %1$d 行"
|
||||||
|
|
||||||
|
#: src/labels.h:278
|
||||||
|
msgid "Please report it by opening an issue on GitHub"
|
||||||
|
msgstr "请在GitHub中添加一个issue来给我们反馈信息"
|
||||||
|
|
||||||
|
#: src/labels.h:280
|
||||||
|
msgid "Select a time format."
|
||||||
|
msgstr "选择时间格式"
|
||||||
|
|
||||||
|
#: src/labels.h:282
|
||||||
|
msgid "Select a date format."
|
||||||
|
msgstr "选择日期格式"
|
||||||
|
|
||||||
|
#: src/labels.h:284
|
||||||
|
msgid "Select a log format."
|
||||||
|
msgstr "选择日志格式"
|
||||||
|
|
||||||
|
#: src/labels.h:286
|
||||||
|
#, c-format
|
||||||
|
msgid "'%1$s' panel is disabled"
|
||||||
|
msgstr "'%1$s' 面板已禁用"
|
||||||
|
|
||||||
|
#: src/labels.h:290
|
||||||
|
msgid "For more details visit"
|
||||||
|
msgstr "更多信息请访问"
|
||||||
|
|
||||||
|
#: src/labels.h:292
|
||||||
|
msgid "Last Updated"
|
||||||
|
msgstr "最近更新"
|
||||||
|
|
||||||
|
#: src/labels.h:294
|
||||||
|
msgid "WebSocket server ready to accept new client connections"
|
||||||
|
msgstr "WebSocket服务器已准备接收来自客户的连接"
|
||||||
|
|
||||||
|
#: src/labels.h:297
|
||||||
|
msgid "The following options can also be supplied to the command"
|
||||||
|
msgstr "你也可以在command中选择以下选项"
|
||||||
|
|
||||||
|
#: src/labels.h:299
|
||||||
|
msgid "Examples can be found by running"
|
||||||
|
msgstr "运行一下指令查看更多示例"
|
||||||
|
|
||||||
|
#: src/labels.h:302
|
||||||
|
msgid "Server Statistics"
|
||||||
|
msgstr "服务器统计信息"
|
||||||
|
|
||||||
|
#: src/labels.h:304
|
||||||
|
msgid "Theme"
|
||||||
|
msgstr "主题"
|
||||||
|
|
||||||
|
#: src/labels.h:306
|
||||||
|
msgid "Dark Gray"
|
||||||
|
msgstr "深黑"
|
||||||
|
|
||||||
|
#: src/labels.h:308
|
||||||
|
msgid "Bright"
|
||||||
|
msgstr "明亮"
|
||||||
|
|
||||||
|
#: src/labels.h:310
|
||||||
|
msgid "Dark Blue"
|
||||||
|
msgstr "深蓝"
|
||||||
|
|
||||||
|
#: src/labels.h:312
|
||||||
|
#, fuzzy
|
||||||
|
msgid "Dark Purple"
|
||||||
|
msgstr "深蓝"
|
||||||
|
|
||||||
|
#: src/labels.h:314
|
||||||
|
msgid "Panels"
|
||||||
|
msgstr "面板"
|
||||||
|
|
||||||
|
#: src/labels.h:316
|
||||||
|
msgid "Items per Page"
|
||||||
|
msgstr "每页项目"
|
||||||
|
|
||||||
|
#: src/labels.h:318
|
||||||
|
msgid "Tables"
|
||||||
|
msgstr "表格"
|
||||||
|
|
||||||
|
#: src/labels.h:320
|
||||||
|
msgid "Display Tables"
|
||||||
|
msgstr "显示表格"
|
||||||
|
|
||||||
|
#: src/labels.h:322
|
||||||
|
msgid "Auto-Hide on Small Devices"
|
||||||
|
msgstr "屏幕过小时自动隐藏"
|
||||||
|
|
||||||
|
#: src/labels.h:324
|
||||||
|
msgid "Automatically hide tables on small screen devices"
|
||||||
|
msgstr "屏幕过小时自动隐藏表格"
|
||||||
|
|
||||||
|
#: src/labels.h:326
|
||||||
|
msgid "Layout"
|
||||||
|
msgstr "布局"
|
||||||
|
|
||||||
|
#: src/labels.h:328
|
||||||
|
msgid "Horizontal"
|
||||||
|
msgstr "横向"
|
||||||
|
|
||||||
|
#: src/labels.h:330
|
||||||
|
msgid "Vertical"
|
||||||
|
msgstr "纵向"
|
||||||
|
|
||||||
|
#: src/labels.h:332
|
||||||
|
msgid "File Options"
|
||||||
|
msgstr "文件选项"
|
||||||
|
|
||||||
|
#: src/labels.h:334
|
||||||
|
msgid "Export as JSON"
|
||||||
|
msgstr "导出为JSON文件"
|
||||||
|
|
||||||
|
#: src/labels.h:336
|
||||||
|
msgid "Panel Options"
|
||||||
|
msgstr "面板选项"
|
||||||
|
|
||||||
|
#: src/labels.h:338
|
||||||
|
msgid "Previous"
|
||||||
|
msgstr "后退"
|
||||||
|
|
||||||
|
#: src/labels.h:340
|
||||||
|
msgid "Next"
|
||||||
|
msgstr "前进"
|
||||||
|
|
||||||
|
#: src/labels.h:342
|
||||||
|
msgid "First"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:344
|
||||||
|
msgid "Last"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/labels.h:346
|
||||||
|
msgid "Chart Options"
|
||||||
|
msgstr "图表选项"
|
||||||
|
|
||||||
|
#: src/labels.h:348
|
||||||
|
msgid "Chart"
|
||||||
|
msgstr "图表"
|
||||||
|
|
||||||
|
#: src/labels.h:350
|
||||||
|
msgid "Type"
|
||||||
|
msgstr "类型"
|
||||||
|
|
||||||
|
#: src/labels.h:352
|
||||||
|
msgid "Area Spline"
|
||||||
|
msgstr "AreaSpline图表"
|
||||||
|
|
||||||
|
#: src/labels.h:354
|
||||||
|
msgid "Bar"
|
||||||
|
msgstr "条形图"
|
||||||
|
|
||||||
|
#: src/labels.h:356
|
||||||
|
msgid "Plot Metric"
|
||||||
|
msgstr "绘制度量"
|
||||||
|
|
||||||
|
# change
|
||||||
|
#: src/labels.h:358
|
||||||
|
msgid "Table Columns"
|
||||||
|
msgstr "表格列"
|
||||||
|
|
||||||
|
#: src/labels.h:362
|
||||||
|
msgid "1xx Informational"
|
||||||
|
msgstr "1xx 消息"
|
||||||
|
|
||||||
|
#: src/labels.h:364
|
||||||
|
msgid "2xx Success"
|
||||||
|
msgstr "2xx 成功"
|
||||||
|
|
||||||
|
#: src/labels.h:366
|
||||||
|
msgid "3xx Redirection"
|
||||||
|
msgstr "3xx Url重定向"
|
||||||
|
|
||||||
|
#: src/labels.h:368
|
||||||
|
msgid "4xx Client Errors"
|
||||||
|
msgstr "4xx 客户端错"
|
||||||
|
|
||||||
|
#: src/labels.h:370
|
||||||
|
msgid "5xx Server Errors"
|
||||||
|
msgstr "5xx 服务器错"
|
||||||
|
|
||||||
|
#: src/labels.h:373
|
||||||
|
msgid "100 - Continue: Server received the initial part of the request"
|
||||||
|
msgstr "100 - 继续: 服务器已经接收到请求头"
|
||||||
|
|
||||||
|
#: src/labels.h:375
|
||||||
|
msgid "101 - Switching Protocols: Client asked to switch protocols"
|
||||||
|
msgstr "101 - 更改协议: 客户端被通知变更协议来完成请求"
|
||||||
|
|
||||||
|
#: src/labels.h:377
|
||||||
|
msgid "200 - OK: The request sent by the client was successful"
|
||||||
|
msgstr "200 - 成功: 请求成功"
|
||||||
|
|
||||||
|
#: src/labels.h:379
|
||||||
|
msgid "201 - Created: The request has been fulfilled and created"
|
||||||
|
msgstr "201 - 已创建: 请求成功并且服务器创建了新的资源"
|
||||||
|
|
||||||
|
#: src/labels.h:381
|
||||||
|
msgid "202 - Accepted: The request has been accepted for processing"
|
||||||
|
msgstr "202 - 已接收: 服务器已接受请求,但尚未处理"
|
||||||
|
|
||||||
|
#: src/labels.h:383
|
||||||
|
msgid "203 - Non-authoritative Information: Response from a third party"
|
||||||
|
msgstr "203 - 非授权信息: 服务器已成功处理请求 但返回的信息可能来自另一来源"
|
||||||
|
|
||||||
|
#: src/labels.h:385
|
||||||
|
msgid "204 - No Content: Request did not return any content"
|
||||||
|
msgstr "204 - 无内容: 没有返回任何内容"
|
||||||
|
|
||||||
|
#: src/labels.h:387
|
||||||
|
msgid "205 - Reset Content: Server asked the client to reset the document"
|
||||||
|
msgstr "205 - 重置内容: 服务器已成功处理请求 但没有返回任何内容"
|
||||||
|
|
||||||
|
#: src/labels.h:389
|
||||||
|
msgid "206 - Partial Content: The partial GET has been successful"
|
||||||
|
msgstr "206 - 部分内容: 服务器成功处理了部分GET请求"
|
||||||
|
|
||||||
|
#: src/labels.h:391
|
||||||
|
msgid "207 - Multi-Status: WebDAV; RFC 4918"
|
||||||
|
msgstr "207 - 多状态: WebDAV; RFC 4918"
|
||||||
|
|
||||||
|
#: src/labels.h:393
|
||||||
|
msgid "208 - Already Reported: WebDAV; RFC 5842"
|
||||||
|
msgstr "208 - 已报告: WebDAV; RFC 5842"
|
||||||
|
|
||||||
|
#: src/labels.h:395
|
||||||
|
msgid "300 - Multiple Choices: Multiple options for the resource"
|
||||||
|
msgstr "300 - 多重选择: 资源提供多种选项让客户端选择"
|
||||||
|
|
||||||
|
#: src/labels.h:397
|
||||||
|
msgid "301 - Moved Permanently: Resource has permanently moved"
|
||||||
|
msgstr "301 - 永久移除: 资源已被永久移动到新位置"
|
||||||
|
|
||||||
|
#: src/labels.h:399
|
||||||
|
msgid "302 - Moved Temporarily (redirect)"
|
||||||
|
msgstr "302 - 临时移动"
|
||||||
|
|
||||||
|
#: src/labels.h:401
|
||||||
|
msgid "303 - See Other Document: The response is at a different URI"
|
||||||
|
msgstr "303 - 查看其他位置: 当前请求的响应在另一个URI上被找到"
|
||||||
|
|
||||||
|
#: src/labels.h:403
|
||||||
|
msgid "304 - Not Modified: Resource has not been modified"
|
||||||
|
msgstr "304 - 未修改: 资源未被修改"
|
||||||
|
|
||||||
|
#: src/labels.h:405
|
||||||
|
msgid "305 - Use Proxy: Can only be accessed through the proxy"
|
||||||
|
msgstr "305 - 使用代理: 只能通过代理访问资源"
|
||||||
|
|
||||||
|
#: src/labels.h:407
|
||||||
|
msgid "307 - Temporary Redirect: Resource temporarily moved"
|
||||||
|
msgstr "307 - 临时重定向: 临时从另外的URI响应"
|
||||||
|
|
||||||
|
#: src/labels.h:409
|
||||||
|
msgid "400 - Bad Request: The syntax of the request is invalid"
|
||||||
|
msgstr "400 - 错误请求: 客户端语法错误"
|
||||||
|
|
||||||
|
#: src/labels.h:411
|
||||||
|
msgid "401 - Unauthorized: Request needs user authentication"
|
||||||
|
msgstr "401 - 未授权: 当前请求需要用户授权"
|
||||||
|
|
||||||
|
#: src/labels.h:413
|
||||||
|
msgid "402 - Payment Required"
|
||||||
|
msgstr "402 - 需要支付"
|
||||||
|
|
||||||
|
#: src/labels.h:415
|
||||||
|
msgid "403 - Forbidden: Server is refusing to respond to it"
|
||||||
|
msgstr "403 - 禁止: 服务器拒绝响应请求"
|
||||||
|
|
||||||
|
#: src/labels.h:417
|
||||||
|
msgid "404 - Not Found: Requested resource could not be found"
|
||||||
|
msgstr "404 - 未找到: 找不到请求的资源"
|
||||||
|
|
||||||
|
#: src/labels.h:419
|
||||||
|
msgid "405 - Method Not Allowed: Request method not supported"
|
||||||
|
msgstr "405 - 方法禁用: 不支持请求中指定的方法"
|
||||||
|
|
||||||
|
#: src/labels.h:421
|
||||||
|
msgid "406 - Not Acceptable"
|
||||||
|
msgstr "406 - 无法接收"
|
||||||
|
|
||||||
|
#: src/labels.h:423
|
||||||
|
msgid "407 - Proxy Authentication Required"
|
||||||
|
msgstr "407 - 需要代理授权"
|
||||||
|
|
||||||
|
#: src/labels.h:425
|
||||||
|
msgid "408 - Request Timeout: Server timed out waiting for the request"
|
||||||
|
msgstr "408 - 请求超时: 服务器在等候请求时超时"
|
||||||
|
|
||||||
|
#: src/labels.h:427
|
||||||
|
msgid "409 - Conflict: Conflict in the request"
|
||||||
|
msgstr "409 - 冲突: 服务器在完成请求时发生冲突"
|
||||||
|
|
||||||
|
#: src/labels.h:429
|
||||||
|
msgid "410 - Gone: Resource requested is no longer available"
|
||||||
|
msgstr "410 - 已删除: 请求的资源已永久删除"
|
||||||
|
|
||||||
|
#: src/labels.h:431
|
||||||
|
msgid "411 - Length Required: Invalid Content-Length"
|
||||||
|
msgstr "411 - 需要有效长度: Content-Length无效"
|
||||||
|
|
||||||
|
#: src/labels.h:433
|
||||||
|
msgid "412 - Precondition Failed: Server does not meet preconditions"
|
||||||
|
msgstr "412 - 未满足前提条件: 服务器未满足请求中的前提条件"
|
||||||
|
|
||||||
|
#: src/labels.h:435
|
||||||
|
msgid "413 - Payload Too Large"
|
||||||
|
msgstr "413 - 请求实体过大"
|
||||||
|
|
||||||
|
#: src/labels.h:437
|
||||||
|
msgid "414 - Request-URI Too Long"
|
||||||
|
msgstr "414 - 请求的URI过长"
|
||||||
|
|
||||||
|
#: src/labels.h:439
|
||||||
|
msgid "415 - Unsupported Media Type: Media type is not supported"
|
||||||
|
msgstr "415 - 不支持的媒体类型"
|
||||||
|
|
||||||
|
#: src/labels.h:441
|
||||||
|
msgid "416 - Requested Range Not Satisfiable: Cannot supply that portion"
|
||||||
|
msgstr "416 - 请求范围不符合要求"
|
||||||
|
|
||||||
|
#: src/labels.h:443
|
||||||
|
msgid "417 - Expectation Failed"
|
||||||
|
msgstr "417 - 未满足期望值"
|
||||||
|
|
||||||
|
#: src/labels.h:445
|
||||||
|
msgid "421 - Misdirected Request"
|
||||||
|
msgstr "421 - 被误导的请求"
|
||||||
|
|
||||||
|
#: src/labels.h:447
|
||||||
|
msgid "422 - Unprocessable Entity due to semantic errors: WebDAV"
|
||||||
|
msgstr "422 - 请求格式正确但因存在语法错而无法响应"
|
||||||
|
|
||||||
|
#: src/labels.h:449
|
||||||
|
msgid "423 - The resource that is being accessed is locked"
|
||||||
|
msgstr "423 - 当前资源被锁定"
|
||||||
|
|
||||||
|
#: src/labels.h:451
|
||||||
|
msgid "424 - Failed Dependency: WebDAV"
|
||||||
|
msgstr "424 - 失败的依赖"
|
||||||
|
|
||||||
|
#: src/labels.h:453
|
||||||
|
msgid "426 - Upgrade Required: Client should switch to a different protocol"
|
||||||
|
msgstr "426 - 需要升级: 客户端应该切换到其他的协议"
|
||||||
|
|
||||||
|
#: src/labels.h:455
|
||||||
|
msgid "428 - Precondition Required"
|
||||||
|
msgstr "428 - 需要前提条件"
|
||||||
|
|
||||||
|
#: src/labels.h:457
|
||||||
|
msgid "429 - Too Many Requests: The user has sent too many requests"
|
||||||
|
msgstr "429 - 请求过多: 客户端发送了太多请求"
|
||||||
|
|
||||||
|
#: src/labels.h:459
|
||||||
|
msgid "431 - Request Header Fields Too Large"
|
||||||
|
msgstr "431 - 请求头字段太长"
|
||||||
|
|
||||||
|
#: src/labels.h:461
|
||||||
|
msgid "451 - Unavailable For Legal Reasons"
|
||||||
|
msgstr "451 - 因法律原因不可用"
|
||||||
|
|
||||||
|
#: src/labels.h:463
|
||||||
|
msgid "444 - (Nginx) Connection closed without sending any headers"
|
||||||
|
msgstr "444 - (Nginx) 未发送响应头且连接已关闭"
|
||||||
|
|
||||||
|
#: src/labels.h:465
|
||||||
|
msgid "494 - (Nginx) Request Header Too Large"
|
||||||
|
msgstr "494 - (Nginx) 请求头太大"
|
||||||
|
|
||||||
|
#: src/labels.h:467
|
||||||
|
msgid "495 - (Nginx) SSL client certificate error"
|
||||||
|
msgstr "495 - (Nginx) SSL客户端证书错"
|
||||||
|
|
||||||
|
#: src/labels.h:469
|
||||||
|
msgid "496 - (Nginx) Client didn't provide certificate"
|
||||||
|
msgstr "496 - (Nginx) 客户端未提供证书"
|
||||||
|
|
||||||
|
#: src/labels.h:471
|
||||||
|
msgid "497 - (Nginx) HTTP request sent to HTTPS port"
|
||||||
|
msgstr "497 - (Nginx) HTTP请求被发送到了HTTPS端口"
|
||||||
|
|
||||||
|
#: src/labels.h:473
|
||||||
|
msgid "499 - (Nginx) Connection closed by client while processing request"
|
||||||
|
msgstr "499 - (Nginx) 处理请求时连接被客户端关闭"
|
||||||
|
|
||||||
|
#: src/labels.h:475
|
||||||
|
msgid "500 - Internal Server Error"
|
||||||
|
msgstr "500 - 服务器内部错"
|
||||||
|
|
||||||
|
#: src/labels.h:477
|
||||||
|
msgid "501 - Not Implemented"
|
||||||
|
msgstr "501 - 尚未实施"
|
||||||
|
|
||||||
|
#: src/labels.h:479
|
||||||
|
msgid "502 - Bad Gateway: Received an invalid response from the upstream"
|
||||||
|
msgstr "502 - 错误网关: 服务器作为网关或代理, 从上游服务器收到无效响应"
|
||||||
|
|
||||||
|
#: src/labels.h:481
|
||||||
|
msgid "503 - Service Unavailable: The server is currently unavailable"
|
||||||
|
msgstr "503 - 服务不可用: 服务器无法使用"
|
||||||
|
|
||||||
|
#: src/labels.h:483
|
||||||
|
msgid "504 - Gateway Timeout: The upstream server failed to send request"
|
||||||
|
msgstr "504 - 网关超时: 服务器作为网关或代理, 未从上游服务器收到请求"
|
||||||
|
|
||||||
|
#: src/labels.h:485
|
||||||
|
msgid "505 - HTTP Version Not Supported"
|
||||||
|
msgstr "505 - HTTP版本不受支持"
|
||||||
|
|
||||||
|
#: src/labels.h:487
|
||||||
|
msgid "520 - CloudFlare - Web server is returning an unknown error"
|
||||||
|
msgstr "520 - CloudFlare - 服务器返回一个未知错误"
|
||||||
|
|
||||||
|
#: src/labels.h:489
|
||||||
|
msgid "521 - CloudFlare - Web server is down"
|
||||||
|
msgstr "521 - CloudFlare - 服务器挂了"
|
||||||
|
|
||||||
|
#: src/labels.h:491
|
||||||
|
msgid "522 - CloudFlare - Connection timed out"
|
||||||
|
msgstr "522 - CloudFlare - 连接超时"
|
||||||
|
|
||||||
|
#: src/labels.h:493
|
||||||
|
msgid "523 - CloudFlare - Origin is unreachable"
|
||||||
|
msgstr "523 - CloudFlare - 服务器无法访问"
|
||||||
|
|
||||||
|
#: src/labels.h:495
|
||||||
|
msgid "524 - CloudFlare - A timeout occurred"
|
||||||
|
msgstr "524 - CloudFlare - 服务器响应超时"
|
||||||
|
|
||||||
|
#~ msgid "Bandwidth"
|
||||||
|
#~ msgstr "带宽"
|
||||||
|
|
||||||
|
#~ msgid "Unique Files"
|
||||||
|
#~ msgstr "唯一的文件"
|
||||||
|
|
||||||
|
#~ msgid "Unique 404"
|
||||||
|
#~ msgstr "唯一的404"
|
||||||
|
|
||||||
|
#~ msgid " - Including spiders"
|
||||||
|
#~ msgstr "- 包括网络机器人"
|
@ -0,0 +1,987 @@
|
|||||||
|
/* GLOBAL */
|
||||||
|
html,
|
||||||
|
body {
|
||||||
|
background: #f0f0f0;
|
||||||
|
overflow-x: hidden;
|
||||||
|
}
|
||||||
|
h1 {
|
||||||
|
font-weight: bold;
|
||||||
|
letter-spacing: -3px;
|
||||||
|
}
|
||||||
|
h3 {
|
||||||
|
font-size: 21px;
|
||||||
|
letter-spacing: -1px;
|
||||||
|
}
|
||||||
|
.page-header {
|
||||||
|
border-bottom: 1px solid rgba(0, 0, 0, 0.15);
|
||||||
|
margin: 25px 0 20px;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.page-header h1 {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
.pagination {
|
||||||
|
margin: 5px 0;
|
||||||
|
}
|
||||||
|
.clickable,
|
||||||
|
.expandable>td {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.spinner {
|
||||||
|
color: #999;
|
||||||
|
left: 50%;
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
}
|
||||||
|
.powered {
|
||||||
|
bottom: 190px;
|
||||||
|
color: #9E9E9E;
|
||||||
|
font-size: smaller;
|
||||||
|
position: absolute;
|
||||||
|
right: 20px;
|
||||||
|
transform-origin: 100% 0;
|
||||||
|
transform: rotate(-90deg);
|
||||||
|
}
|
||||||
|
.powered a {
|
||||||
|
color: #636363;
|
||||||
|
}
|
||||||
|
.powered span {
|
||||||
|
color: #007bc3;
|
||||||
|
}
|
||||||
|
.dropdown-header {
|
||||||
|
color: #007bc3;
|
||||||
|
padding: 3px 25px;
|
||||||
|
text-transform: uppercase;
|
||||||
|
}
|
||||||
|
.gheader {
|
||||||
|
letter-spacing: -1px;
|
||||||
|
text-transform: uppercase;
|
||||||
|
}
|
||||||
|
h5.gheader {
|
||||||
|
letter-spacing: 0;
|
||||||
|
}
|
||||||
|
.panel-header h4.gheader {
|
||||||
|
margin-top: 20px;
|
||||||
|
}
|
||||||
|
.panel-header .gheader small {
|
||||||
|
font-size: 69%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* NAVIGATION */
|
||||||
|
nav {
|
||||||
|
-webkit-transition: left .2s;
|
||||||
|
background: #1C1C1C;
|
||||||
|
border-right: 3px solid #5bc0de;
|
||||||
|
height: 100%;
|
||||||
|
left: -236px;
|
||||||
|
overflow: hidden;
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
transition: left .2s;
|
||||||
|
width: 300px;
|
||||||
|
z-index: 2;
|
||||||
|
}
|
||||||
|
nav .nav-list {
|
||||||
|
height: 100%;
|
||||||
|
overflow-y: auto;
|
||||||
|
width: 350px;
|
||||||
|
}
|
||||||
|
nav header {
|
||||||
|
margin: 40px 20px 30px;
|
||||||
|
}
|
||||||
|
nav header a {
|
||||||
|
color: rgba(240,240,240,.7);
|
||||||
|
font-size: 2.7em;
|
||||||
|
font-weight: 300;
|
||||||
|
text-transform: uppercase;
|
||||||
|
}
|
||||||
|
nav header a:hover {
|
||||||
|
color: #eee;
|
||||||
|
}
|
||||||
|
nav.active {
|
||||||
|
display: block !important;
|
||||||
|
left: 0;
|
||||||
|
opacity: .97;
|
||||||
|
}
|
||||||
|
nav:hover ~ #content {
|
||||||
|
opacity: .3;
|
||||||
|
}
|
||||||
|
nav.active .nav-bars,
|
||||||
|
nav.active .nav-gears,
|
||||||
|
nav.active .nav-ws-status {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
nav .nav-bars,
|
||||||
|
nav .nav-gears,
|
||||||
|
nav .nav-ws-status {
|
||||||
|
-webkit-transition: opacity .2s;
|
||||||
|
color: #9E9E9E;
|
||||||
|
cursor: pointer;
|
||||||
|
float: right;
|
||||||
|
font-size: 36px;
|
||||||
|
height: 32px;
|
||||||
|
left: 13px;
|
||||||
|
line-height: 32px;
|
||||||
|
position: fixed;
|
||||||
|
text-align: center;
|
||||||
|
top: 30px;
|
||||||
|
transition: opacity .2s;
|
||||||
|
width: 32px;
|
||||||
|
}
|
||||||
|
nav .nav-gears {
|
||||||
|
top: 100px;
|
||||||
|
opacity: 0.6;
|
||||||
|
}
|
||||||
|
nav .nav-ws-status,
|
||||||
|
.nav-ws-status.mini {
|
||||||
|
color: #6A6A6A;
|
||||||
|
cursor: help;
|
||||||
|
display: none;
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
nav .nav-ws-status {
|
||||||
|
left: 25px;
|
||||||
|
top: 125px;
|
||||||
|
}
|
||||||
|
.nav-ws-status.mini {
|
||||||
|
top: 14px;
|
||||||
|
left: 50px;
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
|
.nav-ws-status.connected {
|
||||||
|
color: #5DB56A;
|
||||||
|
}
|
||||||
|
nav li a {
|
||||||
|
border-left: 3px solid transparent;
|
||||||
|
color: rgba(200,200,200,.5);
|
||||||
|
display: block;
|
||||||
|
font-size: smaller;
|
||||||
|
max-width: 235px;
|
||||||
|
opacity: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
padding: 9px 20px;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
text-transform: uppercase;
|
||||||
|
transition: opacity .2s;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
nav.active li a {
|
||||||
|
max-width: 100%;
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
nav li a:hover,
|
||||||
|
nav li.active a {
|
||||||
|
background: rgba(0,0,0,.1);
|
||||||
|
border-color: #5BC0DE;
|
||||||
|
color: #eee;
|
||||||
|
}
|
||||||
|
nav ul {
|
||||||
|
padding-left: 0;
|
||||||
|
list-style: none;
|
||||||
|
}
|
||||||
|
/* Navigation -- Icon */
|
||||||
|
nav a,
|
||||||
|
nav a:hover {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
nav h3 {
|
||||||
|
color: #FFF !important;
|
||||||
|
font-size: medium;
|
||||||
|
font-weight: bold;
|
||||||
|
margin: 20px 25px 10px;
|
||||||
|
text-transform: uppercase;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* CONTAINER */
|
||||||
|
@media screen and (max-width: 767px) {
|
||||||
|
.row-offcanvas {
|
||||||
|
-webkit-transition: all .25s ease-out;
|
||||||
|
-o-transition: all .25s ease-out;
|
||||||
|
position: relative;
|
||||||
|
transition: all .25s ease-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
.row-offcanvas-right {
|
||||||
|
right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.row-offcanvas-left {
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.row-offcanvas-right
|
||||||
|
.sidebar-offcanvas {
|
||||||
|
right: -50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.row-offcanvas-left
|
||||||
|
.sidebar-offcanvas {
|
||||||
|
left: -50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.row-offcanvas-right.active {
|
||||||
|
right: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.row-offcanvas-left.active {
|
||||||
|
left: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sidebar-offcanvas {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
width: 50%;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
@media (min-width: 768px) {
|
||||||
|
.container {
|
||||||
|
width: 750px;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
@media (max-width: 480px) {
|
||||||
|
.wrap-general h5,
|
||||||
|
.wrap-panel h5 {
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
|
.wrap-general h5 {
|
||||||
|
width: 100%
|
||||||
|
}
|
||||||
|
.wrap-panel h5 {
|
||||||
|
width: 70%
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.container-fluid {
|
||||||
|
margin-left: 75px;
|
||||||
|
}
|
||||||
|
@media (min-width: 1120px) {
|
||||||
|
.container {
|
||||||
|
width: 970px;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
@media (min-width: 1320px) {
|
||||||
|
.container {
|
||||||
|
width: 1170px;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
@media (max-width: 992px) {
|
||||||
|
.container-fluid {
|
||||||
|
margin-left: auto;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
.container-fluid {
|
||||||
|
padding-left: 5px;
|
||||||
|
padding-right: 5px;
|
||||||
|
}
|
||||||
|
.page-header {
|
||||||
|
padding: 0 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* PANEL STYLES */
|
||||||
|
.wrap-panel .panel-header {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
div.wrap-panel > div {
|
||||||
|
background: #FFF;
|
||||||
|
margin-top: 10px;
|
||||||
|
padding: 0 10px;
|
||||||
|
border-top: 1px solid rgba(0, 0, 0, 0.15);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* PANEL TABLES */
|
||||||
|
.wrap-panel table.table-borderless tbody tr td,
|
||||||
|
.wrap-panel table.table-borderless tbody tr th,
|
||||||
|
.wrap-panel table.table-borderless thead tr th {
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
.wrap-panel table thead tr th {
|
||||||
|
text-align: right;
|
||||||
|
border-bottom-width: 1px;
|
||||||
|
}
|
||||||
|
.wrap-panel table .string,
|
||||||
|
.wrap-panel table .date {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
.wrap-panel table .percent {
|
||||||
|
color: #898989;
|
||||||
|
}
|
||||||
|
.wrap-panel table td,
|
||||||
|
.wrap-panel table th {
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
.wrap-panel table th.sortable {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
/* thead meta */
|
||||||
|
.wrap-panel table tbody.tbody-meta {
|
||||||
|
border-top: 1px solid #C7C7C7;
|
||||||
|
border-bottom: 1px solid #C7C7C7;
|
||||||
|
}
|
||||||
|
.wrap-panel table tbody.tbody-meta tr {
|
||||||
|
background-color: #F1F1F1;
|
||||||
|
color: #222;
|
||||||
|
}
|
||||||
|
.wrap-panel table tbody.tbody-meta small {
|
||||||
|
font-size: 65%;
|
||||||
|
}
|
||||||
|
/* thead data */
|
||||||
|
.wrap-panel table tbody.tbody-data tr td {
|
||||||
|
border-right: 1px solid #F1F1F1;
|
||||||
|
font-size: smaller;
|
||||||
|
}
|
||||||
|
.wrap-panel table tbody.tbody-data td:last-child {
|
||||||
|
border-right: none;
|
||||||
|
}
|
||||||
|
.wrap-panel table tbody.tbody-data td.row-idx {
|
||||||
|
color: #898989;
|
||||||
|
}
|
||||||
|
.wrap-panel table>tbody+tbody {
|
||||||
|
border-top-width: 1px;
|
||||||
|
}
|
||||||
|
.wrap-panel table tbody.tbody-data tr.shaded {
|
||||||
|
background-color: #F7F7F7;
|
||||||
|
}
|
||||||
|
.wrap-panel table tbody.tbody-data tr. {
|
||||||
|
background-color: #F7F7F7;
|
||||||
|
}
|
||||||
|
.wrap-panel table tbody.tbody-data tr.child td:nth-child(1),
|
||||||
|
.wrap-panel table tbody.tbody-data tr.child td:nth-child(2) {
|
||||||
|
border-right: none;
|
||||||
|
}
|
||||||
|
.wrap-panel table.table-hover>tbody>tr:hover {
|
||||||
|
background-color: #EEE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* GENERAL */
|
||||||
|
.wrap-general {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.report-title {
|
||||||
|
background: #FFF;
|
||||||
|
border-radius: 4px;
|
||||||
|
bottom: -10px;
|
||||||
|
color: #9E9E9E;
|
||||||
|
font-size: small;
|
||||||
|
padding: 0 10px;
|
||||||
|
position: absolute;
|
||||||
|
right: 0;
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
.panel-plot-wrap {
|
||||||
|
position: absolute;
|
||||||
|
right: 0;
|
||||||
|
top: 18px;
|
||||||
|
}
|
||||||
|
.col-title {
|
||||||
|
font-size: 85%;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
text-shadow: 1px 1px 0 #FFF;
|
||||||
|
white-space: nowrap;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.grid-module {
|
||||||
|
background: #FFF;
|
||||||
|
color: rgb(36, 36, 36);
|
||||||
|
font-weight: normal;
|
||||||
|
margin-top: 5px;
|
||||||
|
padding: 7px;
|
||||||
|
}
|
||||||
|
.grid-module h3 {
|
||||||
|
font-size: 25px;
|
||||||
|
margin: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.grid-module.black {
|
||||||
|
border-top: 4px solid #0F1214;
|
||||||
|
}
|
||||||
|
.grid-module.gray {
|
||||||
|
border-top: 4px solid #9E9E9E;
|
||||||
|
}
|
||||||
|
.grid-module.red {
|
||||||
|
border-top: 4px solid #FF303E;
|
||||||
|
}
|
||||||
|
.grid-module.blue{
|
||||||
|
border-top: 4px solid #00D4E1;
|
||||||
|
}
|
||||||
|
.grid-module.green {
|
||||||
|
border-top: 4px solid #5DB56A;
|
||||||
|
}
|
||||||
|
@media (max-width: 767px) {
|
||||||
|
.panel-plot-wrap {
|
||||||
|
top: 10px;
|
||||||
|
}
|
||||||
|
.powered {
|
||||||
|
bottom: 10px;
|
||||||
|
left: 25px;
|
||||||
|
transform: initial;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* CHARTS */
|
||||||
|
.chart-wrap {
|
||||||
|
margin-bottom: 15px;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
svg {
|
||||||
|
background-color: #fff;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
.axis path {
|
||||||
|
fill: transparent;
|
||||||
|
stroke: black;
|
||||||
|
shape-rendering: crispEdges;
|
||||||
|
stroke-width: 1;
|
||||||
|
}
|
||||||
|
.grid.y .tick line,
|
||||||
|
.grid.x .tick line {
|
||||||
|
shape-rendering: crispEdges;
|
||||||
|
stroke: #999;
|
||||||
|
stroke-dasharray: 3 3;
|
||||||
|
stroke-width: 1;
|
||||||
|
}
|
||||||
|
.axis.x .tick line,
|
||||||
|
.axis.y0 .tick line,
|
||||||
|
.axis.y1 .tick line,
|
||||||
|
.grid.y .tick:first-child line {
|
||||||
|
stroke: black;
|
||||||
|
stroke-width: 1;
|
||||||
|
shape-rendering: crispEdges;
|
||||||
|
}
|
||||||
|
.bars rect.bar {
|
||||||
|
shape-rendering: crispEdges;
|
||||||
|
}
|
||||||
|
.rects rect {
|
||||||
|
fill: transparent;
|
||||||
|
}
|
||||||
|
.area {
|
||||||
|
opacity: 0.2;
|
||||||
|
}
|
||||||
|
.points {
|
||||||
|
stroke: transparent;
|
||||||
|
}
|
||||||
|
line.indicator {
|
||||||
|
fill: transparent;
|
||||||
|
pointer-events: none;
|
||||||
|
shape-rendering: crispEdges;
|
||||||
|
stroke: #999;
|
||||||
|
stroke-width: 1;
|
||||||
|
}
|
||||||
|
.area0,
|
||||||
|
.bars.y0 .bar,
|
||||||
|
.points.y0,
|
||||||
|
rect.legend.y0 {
|
||||||
|
fill: #447FB3;
|
||||||
|
}
|
||||||
|
.area1,
|
||||||
|
.bars.y1 .bar,
|
||||||
|
.points.y1,
|
||||||
|
rect.legend.y1 {
|
||||||
|
fill: #FF6854;
|
||||||
|
}
|
||||||
|
.line0,
|
||||||
|
.line1 {
|
||||||
|
fill: transparent;
|
||||||
|
stroke-width: 1;
|
||||||
|
}
|
||||||
|
.line0 {
|
||||||
|
stroke: #007BC3;
|
||||||
|
}
|
||||||
|
.line1 {
|
||||||
|
stroke: #FF303E;
|
||||||
|
}
|
||||||
|
.axis text,
|
||||||
|
.axis-label,
|
||||||
|
text.legend {
|
||||||
|
font: 10px sans-serif;
|
||||||
|
}
|
||||||
|
.axis-label.y0,
|
||||||
|
.axis-label.y1 {
|
||||||
|
text-anchor: end;
|
||||||
|
}
|
||||||
|
rect.legend {
|
||||||
|
height: 10px;
|
||||||
|
width: 10px;
|
||||||
|
}
|
||||||
|
.legend {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.wrap-text text {
|
||||||
|
text-anchor: start!important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* CHART TOOLTIP */
|
||||||
|
.chart-tooltip-wrap {
|
||||||
|
left: 0;
|
||||||
|
pointer-events: none;
|
||||||
|
position: absolute;
|
||||||
|
top: 10px;
|
||||||
|
z-index: 10;
|
||||||
|
}
|
||||||
|
.chart-tooltip {
|
||||||
|
-moz-box-shadow: 7px 7px 12px -9px #777777;
|
||||||
|
-webkit-box-shadow: 7px 7px 12px -9px #777777;
|
||||||
|
background-color: #fff;
|
||||||
|
border-collapse: collapse;
|
||||||
|
border-spacing: 0;
|
||||||
|
box-shadow: 7px 7px 12px -9px #777777;
|
||||||
|
empty-cells: show;
|
||||||
|
opacity: 0.9;
|
||||||
|
}
|
||||||
|
.chart-tooltip tr {
|
||||||
|
border: 1px solid #CCC;
|
||||||
|
}
|
||||||
|
.chart-tooltip th {
|
||||||
|
background-color: #aaa;
|
||||||
|
color: #FFF;
|
||||||
|
font-size: 14px;
|
||||||
|
max-width: 380px;
|
||||||
|
overflow: hidden;
|
||||||
|
padding: 2px 5px;
|
||||||
|
text-align: left;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
.chart-tooltip td {
|
||||||
|
border-left: 1px dotted #999;
|
||||||
|
font-size: 13px;
|
||||||
|
padding: 3px 6px;
|
||||||
|
}
|
||||||
|
.chart-tooltip td > span {
|
||||||
|
display: inline-block;
|
||||||
|
height: 10px;
|
||||||
|
margin-right: 6px;
|
||||||
|
width: 10px;
|
||||||
|
}
|
||||||
|
.chart-tooltip td.value {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
.chart-tooltip .blue {
|
||||||
|
background-color: #007BC3;
|
||||||
|
}
|
||||||
|
.chart-tooltip .red {
|
||||||
|
background-color: #FF303E;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* DARK THEME */
|
||||||
|
.dark h1 {
|
||||||
|
color: rgba(255, 255, 255, 0.6);
|
||||||
|
}
|
||||||
|
.dark h3,
|
||||||
|
.dark h4,
|
||||||
|
.dark h5 {
|
||||||
|
color: rgba(255,255,255,0.4);
|
||||||
|
}
|
||||||
|
.dark .table-responsive {
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
.dark .wrap-panel > div > table {
|
||||||
|
color: #D2D2D2;
|
||||||
|
}
|
||||||
|
.dark .wrap-panel table tbody.tbody-meta tr {
|
||||||
|
background-color: transparent;
|
||||||
|
color: #F7F7F7;
|
||||||
|
}
|
||||||
|
.dark .wrap-panel table tbody.tbody-data tr td {
|
||||||
|
border-right: none;
|
||||||
|
}
|
||||||
|
.dark .wrap-panel table.table-hover>tbody.tbody-data>tr:hover {
|
||||||
|
background-color: rgba(255, 255, 255, 0.08) !important;
|
||||||
|
}
|
||||||
|
.dark .col-title {
|
||||||
|
color: #9e9e9e;
|
||||||
|
text-shadow:none;
|
||||||
|
}
|
||||||
|
.dark .grid-module h3 {
|
||||||
|
color: #FFF;
|
||||||
|
}
|
||||||
|
.dark .dropdown-menu>li>a {
|
||||||
|
color: #FFF;
|
||||||
|
}
|
||||||
|
.dark div.wrap-panel > div {
|
||||||
|
color: #EEE;
|
||||||
|
margin-top: 10px;
|
||||||
|
padding: 0 10px;
|
||||||
|
border-top: 1px solid rgba(255, 255, 255, 0.15);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* DARK BLUE THEME */
|
||||||
|
html.dark.blue,
|
||||||
|
.dark.blue body {
|
||||||
|
background: #252B30;
|
||||||
|
}
|
||||||
|
.dark.blue .container {
|
||||||
|
background: #252B30;
|
||||||
|
}
|
||||||
|
.dark.blue .page-header {
|
||||||
|
border-bottom: 1px solid #3B444C;
|
||||||
|
}
|
||||||
|
.dark.blue .label-info {
|
||||||
|
background-color: #252B30;
|
||||||
|
}
|
||||||
|
.dark.blue nav {
|
||||||
|
border-right: 1px solid #181B1F;
|
||||||
|
background: #1F2328;
|
||||||
|
}
|
||||||
|
.dark.blue div.wrap-panel > div {
|
||||||
|
background: #1F2328;
|
||||||
|
}
|
||||||
|
.dark.blue .wrap-panel table tbody.tbody-meta {
|
||||||
|
border-top: 1px solid #3B444C;
|
||||||
|
border-bottom: 1px solid #3B444C;
|
||||||
|
}
|
||||||
|
.dark.blue .wrap-panel table tbody.tbody-data tr.shaded {
|
||||||
|
background-color: #181B1F;
|
||||||
|
}
|
||||||
|
.dark.blue .gray {
|
||||||
|
border-top: 4px solid #3B444C;
|
||||||
|
}
|
||||||
|
.dark.blue .grid-module {
|
||||||
|
background: #1F2328;
|
||||||
|
}
|
||||||
|
.dark.blue .btn-default {
|
||||||
|
color: #9E9E9E;
|
||||||
|
background-color: #1F2328;
|
||||||
|
border-color: #3B444C;
|
||||||
|
}
|
||||||
|
.dark.blue .btn-default:active,
|
||||||
|
.dark.blue .btn-default:hover,
|
||||||
|
.dark.blue .btn-default.active,
|
||||||
|
.dark.blue .open>.dropdown-toggle.btn-default {
|
||||||
|
color: #3B444C;
|
||||||
|
background-color: #1F2328;
|
||||||
|
border-color: #0F1214;
|
||||||
|
}
|
||||||
|
.dark.blue .pagination>.disabled>a,
|
||||||
|
.dark.blue .pagination>.disabled>a:hover,
|
||||||
|
.dark.blue .pagination>.disabled>a:focus {
|
||||||
|
color: #777;
|
||||||
|
}
|
||||||
|
.dark.blue .pagination>li>a {
|
||||||
|
background-color: #1F2328;
|
||||||
|
border: 1px solid #3B444C;
|
||||||
|
}
|
||||||
|
.dark.blue .pagination>li>a:hover,
|
||||||
|
.dark.blue .pagination>li>a:active,
|
||||||
|
.dark.blue .pagination>li>a:focus {
|
||||||
|
color: #0370B0;
|
||||||
|
background-color: #1F2328;
|
||||||
|
border-color: #3B444C;
|
||||||
|
}
|
||||||
|
.dark.blue .dropdown-menu>li>a:hover,
|
||||||
|
.dark.blue .dropdown-menu>li>a:focus {
|
||||||
|
color: #FFF;
|
||||||
|
background-color: #3B444C;
|
||||||
|
}
|
||||||
|
.dark.blue .dropdown-menu {
|
||||||
|
background-color: #252B30;
|
||||||
|
}
|
||||||
|
.dark.blue::-webkit-scrollbar-track,
|
||||||
|
.dark.blue .table-responsive::-webkit-scrollbar-track {
|
||||||
|
-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
|
||||||
|
background-color: #9E9E9E;
|
||||||
|
}
|
||||||
|
.dark.blue::-webkit-scrollbar,
|
||||||
|
.dark.blue .table-responsive::-webkit-scrollbar {
|
||||||
|
width: 10px;
|
||||||
|
height: 10px;
|
||||||
|
background-color: #9E9E9E;
|
||||||
|
}
|
||||||
|
.dark.blue::-webkit-scrollbar-thumb,
|
||||||
|
.dark.blue .table-responsive::-webkit-scrollbar-thumb {
|
||||||
|
background-color: #3B444C;
|
||||||
|
}
|
||||||
|
.dark.blue .chart-tooltip {
|
||||||
|
background-color: #252B30;
|
||||||
|
}
|
||||||
|
.dark.blue .report-title {
|
||||||
|
background: #1F2328;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* DARK GREY THEME */
|
||||||
|
html.dark.gray,
|
||||||
|
.dark.gray body {
|
||||||
|
background: #212121;
|
||||||
|
}
|
||||||
|
.dark.gray .container {
|
||||||
|
background: #212121;
|
||||||
|
}
|
||||||
|
.dark.gray .page-header {
|
||||||
|
border-bottom: 1px solid #303030;
|
||||||
|
}
|
||||||
|
.dark.gray .label-info {
|
||||||
|
background-color: #303030;
|
||||||
|
}
|
||||||
|
.dark.gray nav {
|
||||||
|
border-right: 1px solid #363737;
|
||||||
|
background: #1C1C1C;
|
||||||
|
}
|
||||||
|
.dark.gray div.wrap-panel > div {
|
||||||
|
background: #1C1C1C;
|
||||||
|
}
|
||||||
|
.dark.gray .wrap-panel table tbody.tbody-meta {
|
||||||
|
border-top: 1px solid #363737;
|
||||||
|
border-bottom: 1px solid #363737;
|
||||||
|
}
|
||||||
|
.dark.gray .wrap-panel table tbody.tbody-data tr.shaded {
|
||||||
|
background-color: rgba(48, 48, 48, 0.48);
|
||||||
|
}
|
||||||
|
.dark.gray .gray {
|
||||||
|
border-top: 4px solid #303030;
|
||||||
|
}
|
||||||
|
.dark.gray .grid-module {
|
||||||
|
background: #1C1C1C;
|
||||||
|
}
|
||||||
|
.dark.gray .btn-default {
|
||||||
|
color: #9E9E9E;
|
||||||
|
background-color: #212121;
|
||||||
|
border-color: #303030;
|
||||||
|
}
|
||||||
|
.dark.gray .btn-default:active,
|
||||||
|
.dark.gray .btn-default:hover,
|
||||||
|
.dark.gray .btn-default.active,
|
||||||
|
.dark.gray .open>.dropdown-toggle.btn-default {
|
||||||
|
color: #363737;
|
||||||
|
background-color: #1C1C1C;
|
||||||
|
border-color: #0F1214;
|
||||||
|
}
|
||||||
|
.dark.gray .pagination>.disabled>a,
|
||||||
|
.dark.gray .pagination>.disabled>a:hover,
|
||||||
|
.dark.gray .pagination>.disabled>a:focus {
|
||||||
|
color: #777;
|
||||||
|
}
|
||||||
|
.dark.gray .pagination>li>a {
|
||||||
|
background-color: #212121;
|
||||||
|
border: 1px solid #303030;
|
||||||
|
}
|
||||||
|
.dark.gray .pagination>li>a:hover,
|
||||||
|
.dark.gray .pagination>li>a:active,
|
||||||
|
.dark.gray .pagination>li>a:focus {
|
||||||
|
color: #0370B0;
|
||||||
|
background-color: #212121;
|
||||||
|
border-color: #303030;
|
||||||
|
}
|
||||||
|
.dark.gray .dropdown-menu>li>a {
|
||||||
|
color: #FFF;
|
||||||
|
}
|
||||||
|
.dark.gray .dropdown-menu>li>a:hover,
|
||||||
|
.dark.gray .dropdown-menu>li>a:focus {
|
||||||
|
color: #FFF;
|
||||||
|
background-color: #303030;
|
||||||
|
}
|
||||||
|
.dark.gray .dropdown-menu {
|
||||||
|
background-color: #212121;
|
||||||
|
}
|
||||||
|
.dark.gray::-webkit-scrollbar-track,
|
||||||
|
.dark.gray .table-responsive::-webkit-scrollbar-track {
|
||||||
|
-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
|
||||||
|
background-color: #9E9E9E;
|
||||||
|
}
|
||||||
|
.dark.gray::-webkit-scrollbar,
|
||||||
|
.dark.gray .table-responsive::-webkit-scrollbar {
|
||||||
|
width: 10px;
|
||||||
|
height: 10px;
|
||||||
|
background-color: #9E9E9E;
|
||||||
|
}
|
||||||
|
.dark.gray::-webkit-scrollbar-thumb,
|
||||||
|
.dark.gray .table-responsive::-webkit-scrollbar-thumb {
|
||||||
|
background-color: #303030;
|
||||||
|
}
|
||||||
|
.dark.gray .chart-tooltip {
|
||||||
|
background-color: #303030;
|
||||||
|
}
|
||||||
|
.dark.gray .report-title {
|
||||||
|
background: #303030;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* DARK CHARTS */
|
||||||
|
.dark svg {
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
.dark .area {
|
||||||
|
opacity: 0.1;
|
||||||
|
}
|
||||||
|
.dark .line0,
|
||||||
|
.dark .line1 {
|
||||||
|
stroke-width: 2;
|
||||||
|
}
|
||||||
|
.dark .area0,
|
||||||
|
.dark .bars.y0 .bar,
|
||||||
|
.dark rect.legend.y0 {
|
||||||
|
fill: #007BC3;
|
||||||
|
}
|
||||||
|
.dark .area1,
|
||||||
|
.dark .bars.y1 .bar,
|
||||||
|
.dark .points.y1,
|
||||||
|
.dark rect.legend.y1 {
|
||||||
|
fill: #FF303E;
|
||||||
|
}
|
||||||
|
.dark .points.y0 {
|
||||||
|
fill: #00D4E1;
|
||||||
|
}
|
||||||
|
.dark .line0 {
|
||||||
|
stroke: #007BC3;
|
||||||
|
}
|
||||||
|
.dark .line1 {
|
||||||
|
stroke: #FF303E;
|
||||||
|
}
|
||||||
|
.dark .grid.y .tick line,
|
||||||
|
.dark .grid.x .tick line {
|
||||||
|
stroke: #44474B;
|
||||||
|
stroke-dasharray: 1 1;
|
||||||
|
}
|
||||||
|
.dark .axis text,
|
||||||
|
.dark .axis-label,
|
||||||
|
.dark text.legend {
|
||||||
|
fill: #9E9E9E;
|
||||||
|
}
|
||||||
|
.dark .axis path {
|
||||||
|
stroke: #999999;
|
||||||
|
}
|
||||||
|
.dark .axis.x .tick line,
|
||||||
|
.dark .axis.y0 .tick line,
|
||||||
|
.dark .axis.y1 .tick line,
|
||||||
|
.dark .grid.y .tick:first-child line {
|
||||||
|
stroke: #3B444C;
|
||||||
|
}
|
||||||
|
.dark .chart-tooltip th {
|
||||||
|
background-color: #1c1c1c;
|
||||||
|
}
|
||||||
|
.dark .chart-tooltip tr {
|
||||||
|
border: 1px solid #363737;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* DARK PURPLE THEME */
|
||||||
|
html.dark.purple,
|
||||||
|
.dark.purple body {
|
||||||
|
background: #1e1e2f;
|
||||||
|
}
|
||||||
|
.dark.purple .container {
|
||||||
|
background: #1e1e2f;
|
||||||
|
}
|
||||||
|
.dark.purple .page-header {
|
||||||
|
border-bottom: 1px solid #2b3553;
|
||||||
|
}
|
||||||
|
.dark.purple .label-info {
|
||||||
|
background-color: #181823;
|
||||||
|
}
|
||||||
|
.dark.purple nav {
|
||||||
|
border-right: 1px solid #e14eca;
|
||||||
|
background: #181823;
|
||||||
|
}
|
||||||
|
.dark.purple div.wrap-panel > div {
|
||||||
|
background: #27293d;
|
||||||
|
border-top: 1px solid #2b3553;
|
||||||
|
}
|
||||||
|
.dark.purple .wrap-panel table tbody.tbody-meta {
|
||||||
|
border-top: 1px solid #2b3553;
|
||||||
|
border-bottom: 1px solid #2b3553;
|
||||||
|
}
|
||||||
|
.dark.purple .wrap-panel table tbody.tbody-data tr.shaded {
|
||||||
|
background-color: #1e1e2f;
|
||||||
|
}
|
||||||
|
.dark.purple .gray {
|
||||||
|
border-top: 4px solid #2b3553;
|
||||||
|
}
|
||||||
|
.dark.purple .red {
|
||||||
|
border-top: 4px solid #fd5d93;
|
||||||
|
}
|
||||||
|
.dark.purple .green {
|
||||||
|
border-top: 4px solid #00f2c3;
|
||||||
|
}
|
||||||
|
.dark.purple .blue {
|
||||||
|
border-top: 4px solid #1f8ef1;
|
||||||
|
}
|
||||||
|
.dark.purple h3, .dark.purple h4, .dark.purple h5 {
|
||||||
|
color: #9a9a9a;
|
||||||
|
}
|
||||||
|
.dark.purple .grid-module {
|
||||||
|
background: #27293d;
|
||||||
|
}
|
||||||
|
.dark.purple .grid-module h3 {
|
||||||
|
color: #FFF;
|
||||||
|
}
|
||||||
|
.dark.purple .btn-default {
|
||||||
|
color: #9E9E9E;
|
||||||
|
background-color: #1e1e2f;
|
||||||
|
border-color: #2b3553;
|
||||||
|
}
|
||||||
|
.dark.purple .btn-default:active,
|
||||||
|
.dark.purple .btn-default:hover,
|
||||||
|
.dark.purple .btn-default.active,
|
||||||
|
.dark.purple .open>.dropdown-toggle.btn-default {
|
||||||
|
color: #59595f;
|
||||||
|
background-color: #1e1e2f;
|
||||||
|
border-color: #2b3553;
|
||||||
|
}
|
||||||
|
.dark.purple .pagination>.disabled>a,
|
||||||
|
.dark.purple .pagination>.disabled>a:hover,
|
||||||
|
.dark.purple .pagination>.disabled>a:focus {
|
||||||
|
color: #777;
|
||||||
|
}
|
||||||
|
.dark.purple .pagination>li>a {
|
||||||
|
background-color: #1e1e2f;
|
||||||
|
border: 1px solid #3B444C;
|
||||||
|
}
|
||||||
|
.dark.purple .pagination>li>a:hover,
|
||||||
|
.dark.purple .pagination>li>a:active,
|
||||||
|
.dark.purple .pagination>li>a:focus {
|
||||||
|
color: #0370B0;
|
||||||
|
background-color: #181823;
|
||||||
|
}
|
||||||
|
.dark.purple .dropdown-menu>li>a:hover,
|
||||||
|
.dark.purple .dropdown-menu>li>a:focus {
|
||||||
|
color: #FFF;
|
||||||
|
background-color: #181823;
|
||||||
|
}
|
||||||
|
.dark.purple .dropdown-menu {
|
||||||
|
background-color: #1e1e2f;
|
||||||
|
}
|
||||||
|
.dark.purple::-webkit-scrollbar-track,
|
||||||
|
.dark.purple .table-responsive::-webkit-scrollbar-track {
|
||||||
|
-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
|
||||||
|
background-color: #9E9E9E;
|
||||||
|
}
|
||||||
|
.dark.purple::-webkit-scrollbar,
|
||||||
|
.dark.purple .table-responsive::-webkit-scrollbar {
|
||||||
|
width: 10px;
|
||||||
|
height: 10px;
|
||||||
|
background-color: #9E9E9E;
|
||||||
|
}
|
||||||
|
.dark.purple::-webkit-scrollbar-thumb,
|
||||||
|
.dark.purple .table-responsive::-webkit-scrollbar-thumb {
|
||||||
|
background-color: #1e1e2f;
|
||||||
|
}
|
||||||
|
.dark.purple .chart-tooltip {
|
||||||
|
background-color: #181823;
|
||||||
|
}
|
||||||
|
.dark.purple .report-title {
|
||||||
|
background: #181823;
|
||||||
|
}
|
||||||
|
.dark.purple .area0,
|
||||||
|
.dark.purple .bars.y0 .bar,
|
||||||
|
.dark.purple rect.legend.y0 {
|
||||||
|
fill: #007BC3;
|
||||||
|
}
|
||||||
|
.dark.purple .area1,
|
||||||
|
.dark.purple .bars.y1 .bar,
|
||||||
|
.dark.purple .points.y1,
|
||||||
|
.dark.purple rect.legend.y1 {
|
||||||
|
fill: #d048b6;
|
||||||
|
}
|
||||||
|
.dark.purple .points.y0 {
|
||||||
|
fill: #00D4E1;
|
||||||
|
}
|
||||||
|
.dark.purple .line0 {
|
||||||
|
stroke: #007BC3;
|
||||||
|
}
|
||||||
|
.dark.purple .line1 {
|
||||||
|
stroke: #d048b6;
|
||||||
|
}
|