Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
F
FFS Gluon
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Deploy
Releases
Model registry
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
firmware
FFS Gluon
Compare revisions
f396ba43d9af05888aba3e5976f68a9bc0c516cc to experimental
Compare revisions
Changes are shown as if the
source
revision was being merged into the
target
revision.
Learn more about comparing revisions.
Source
firmware/gluon
Select target project
No results found
experimental
Select Git revision
Branches
0x4A6F-master
0x4A6F-rpi4
autinerd/experimental-openwrt-24.10
experimental
feature/addMikrotikwAP
master
nrb/airmax-test
nrb/ar9344-reset-sequence
nrb/ex400-remove-wps
nrb/gluon-master-cpe510
nrb/test-radv-filter
nrbffs/fastd-remove-delay
nrbffs/netgear-ex6120
v2018.2.2-ffs
v2018.2.3-ffs
v2019.1-ffs
v2019.1.1-ffs
v2019.1.2-ffs
v2020.1-ffs
v2020.1.1-ffs
v2020.1.3-ffs
v2020.2-ffs
v2020.2.1-ffs
v2020.2.2-ffs
v2020.2.3-ffs
v2021.1-ffs
v2021.1.1-ffs
v2021.1.2-ffs
v2022.1.1-ffs
v2022.1.3-ffs
v2022.1.4-ffs
v2023.1-ffs
v2023.2-ffs
v2023.2.2-ffs
v2023.2.3-ffs
v2023.2.4-ffs
v2023.2.5-ffs
Tags
experimental-2022-09-24
experimental-2022-09-24-base
experimental-2023-03-11
experimental-2023-03-11-base
experimental-2023-03-12
experimental-2023-03-12-base
experimental-2023-03-16
experimental-2023-03-16-base
experimental-2023-03-20
experimental-2023-03-20-base
experimental-2023-03-23
experimental-2023-03-23-base
experimental-2023-03-25
experimental-2023-03-25-base
experimental-2023-03-26
experimental-2023-03-26-base
experimental-2023-03-30
experimental-2023-03-30-base
experimental-2023-03-31
experimental-2023-03-31-base
experimental-2023-04-01
experimental-2023-04-01-base
experimental-2023-04-08
experimental-2023-04-08-base
experimental-2023-04-10
experimental-2023-04-10-base
experimental-2023-04-13
experimental-2023-04-13-base
experimental-2023-04-15
experimental-2023-04-15-base
experimental-2023-04-16
experimental-2023-04-16-base
experimental-2023-04-18
experimental-2023-04-18-base
experimental-2023-04-20
experimental-2023-04-20-base
experimental-2023-04-26
experimental-2023-04-26-base
experimental-2023-04-28
experimental-2023-04-28-base
experimental-2023-04-30
experimental-2023-04-30-base
experimental-2023-05-02
experimental-2023-05-02-base
experimental-2023-05-03
experimental-2023-05-03-base
experimental-2023-05-12
experimental-2023-05-12-base
experimental-2023-05-21
experimental-2023-05-21-base
experimental-2023-05-25
experimental-2023-05-25-base
experimental-2023-07-02
experimental-2023-07-02-base
experimental-2023-07-04
experimental-2023-07-04-base
experimental-2023-07-12
experimental-2023-07-12-base
experimental-2023-07-16
experimental-2023-07-16-base
experimental-2023-08-04
experimental-2023-08-04-base
experimental-2023-08-10
experimental-2023-08-10-base
experimental-2023-09-08
experimental-2023-09-08-base
experimental-2023-09-09
experimental-2023-09-09-base
experimental-2023-09-10
experimental-2023-09-10-base
experimental-2023-09-11
experimental-2023-09-11-base
experimental-2023-09-12
experimental-2023-09-12-base
experimental-2023-09-13
experimental-2023-09-13-base
experimental-2023-09-15
experimental-2023-09-15-base
experimental-2023-09-16
experimental-2023-09-16-base
experimental-2023-09-18
experimental-2023-09-18-base
experimental-2023-09-20
experimental-2023-09-20-base
experimental-2023-09-27
experimental-2023-09-27-base
experimental-2023-09-28
experimental-2023-09-28-base
experimental-2023-09-29
experimental-2023-09-29-base
experimental-2023-10-02
experimental-2023-10-02-base
experimental-2023-10-13
experimental-2023-10-13-base
experimental-2023-10-14
experimental-2023-10-14-base
experimental-2023-10-16
experimental-2023-10-16-base
experimental-2023-10-23
experimental-2023-10-23-base
137 results
Swap
Target
0x4A6F/gluon
Select target project
firmware/gluon
0x4A6F/gluon
patrick/gluon
3 results
f396ba43d9af05888aba3e5976f68a9bc0c516cc
Select Git revision
Branches
0x4A6F-master
0x4A6F-rpi4
2014.3.x
2014.4.x
babel
hoodselector
master
radv-filterd
v2015.1.x
v2016.1.x
v2016.2.4-batmanbug
v2016.2.x
v2018.2.2-ffs
v2018.2.x
Tags
v2014.1
v2014.2
v2014.3
v2014.3.1
v2014.4
v2015.1
v2015.1.1
v2015.1.2
v2016.1
v2016.1.1
v2016.1.2
v2016.1.3
v2016.1.4
v2016.1.5
v2016.1.6
v2016.2
v2016.2.1
v2016.2.2
v2016.2.3
v2016.2.4
v2016.2.5
v2016.2.6
v2016.2.7
v2017.1
v2017.1.1
v2017.1.2
v2017.1.3
v2017.1.4
v2017.1.5
v2017.1.6
v2017.1.7
v2017.1.8
v2018.1
v2018.1.1
v2018.1.2
v2018.1.3
v2018.1.4
v2018.2
v2018.2-ffs0.1
v2018.2.1
v2018.2.1-ffs0.1
v2018.2.2-ffs0.1
56 results
Show changes
Only incoming changes from source
Include changes to target since source was created
Compare
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
package/gluon-web/src/Makefile
+18
-0
18 additions, 0 deletions
package/gluon-web/src/Makefile
package/gluon-web/src/gluon-po2lmo.c
+256
-0
256 additions, 0 deletions
package/gluon-web/src/gluon-po2lmo.c
with
274 additions
and
0 deletions
Some changes are not shown.
For a faster browsing experience, only
2 of 902+
files are shown.
package/gluon-web/src/Makefile
0 → 100644
View file @
ac84ddf1
all
:
compile
%.o
:
%.c
$(
CC
)
$(
CPPFLAGS
)
$(
CFLAGS
)
-D_GNU_SOURCE
-std
=
c99
-Wall
-Wextra
-fPIC
-fvisibility
=
hidden
-c
-o
$@
$<
clean
:
rm
-f
parser.so
*
.o
parser.so
:
template_parser.o template_utils.o template_lmo.o template_lualib.o
$(
CC
)
$(
LDFLAGS
)
-shared
-o
$@
$^
gluon-po2lmo
:
gluon-po2lmo.o template_lmo.o
compile
:
parser.so
install
:
compile
mkdir
-p
$(
DESTDIR
)
/usr/lib/lua/gluon/web/template
cp
parser.so
$(
DESTDIR
)
/usr/lib/lua/gluon/web/template/parser.so
This diff is collapsed.
Click to expand it.
package/gluon-web/src/gluon-po2lmo.c
0 → 100644
View file @
ac84ddf1
/*
* lmo - Lua Machine Objects - PO to LMO conversion tool
*
* Copyright (C) 2009-2012 Jo-Philipp Wich <jow@openwrt.org>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include
"template_lmo.h"
#include
<arpa/inet.h>
#include
<stdio.h>
#include
<stdlib.h>
#include
<string.h>
#include
<unistd.h>
__attribute__
((
noreturn
))
static
void
die
(
const
char
*
msg
)
{
fprintf
(
stderr
,
"Error: %s
\n
"
,
msg
);
exit
(
1
);
}
__attribute__
((
noreturn
))
static
void
usage
(
const
char
*
name
)
{
fprintf
(
stderr
,
"Usage: %s input.po output.lmo
\n
"
,
name
);
exit
(
1
);
}
static
void
print
(
const
void
*
ptr
,
size_t
size
,
size_t
nmemb
,
FILE
*
stream
)
{
if
(
fwrite
(
ptr
,
size
,
nmemb
,
stream
)
==
0
)
die
(
"Failed to write stdout"
);
}
static
ssize_t
extract_string
(
const
char
*
src
,
char
*
dest
,
size_t
len
)
{
size_t
pos
=
0
;
int
esc
=
0
;
int
off
=
-
1
;
for
(
pos
=
0
;
(
pos
<
strlen
(
src
))
&&
(
pos
<
len
);
pos
++
)
{
if
(
(
off
==
-
1
)
&&
(
src
[
pos
]
==
'"'
)
)
{
off
=
pos
+
1
;
}
else
if
(
off
>=
0
)
{
if
(
esc
==
1
)
{
switch
(
src
[
pos
])
{
case
'"'
:
case
'\\'
:
off
++
;
break
;
}
dest
[
pos
-
off
]
=
src
[
pos
];
esc
=
0
;
}
else
if
(
src
[
pos
]
==
'\\'
)
{
dest
[
pos
-
off
]
=
src
[
pos
];
esc
=
1
;
}
else
if
(
src
[
pos
]
!=
'"'
)
{
dest
[
pos
-
off
]
=
src
[
pos
];
}
else
{
dest
[
pos
-
off
]
=
'\0'
;
break
;
}
}
}
return
(
off
>
-
1
)
?
(
ssize_t
)
strlen
(
dest
)
:
-
1
;
}
static
int
cmp_index
(
const
void
*
a
,
const
void
*
b
)
{
uint32_t
x
=
((
const
lmo_entry_t
*
)
a
)
->
key_id
;
uint32_t
y
=
((
const
lmo_entry_t
*
)
b
)
->
key_id
;
if
(
x
<
y
)
return
-
1
;
else
if
(
x
>
y
)
return
1
;
return
0
;
}
static
void
print_uint32
(
uint32_t
x
,
FILE
*
out
)
{
uint32_t
y
=
htonl
(
x
);
print
(
&
y
,
sizeof
(
uint32_t
),
1
,
out
);
}
static
void
print_index
(
void
*
array
,
int
n
,
FILE
*
out
)
{
lmo_entry_t
*
e
;
qsort
(
array
,
n
,
sizeof
(
*
e
),
cmp_index
);
for
(
e
=
array
;
n
>
0
;
n
--
,
e
++
)
{
print_uint32
(
e
->
key_id
,
out
);
print_uint32
(
e
->
val_id
,
out
);
print_uint32
(
e
->
offset
,
out
);
print_uint32
(
e
->
length
,
out
);
}
}
int
main
(
int
argc
,
char
*
argv
[])
{
char
line
[
4096
];
char
key
[
4096
];
char
val
[
4096
];
char
tmp
[
4096
];
int
state
=
0
;
int
offset
=
0
;
int
length
=
0
;
int
n_entries
=
0
;
void
*
array
=
NULL
;
lmo_entry_t
*
entry
=
NULL
;
uint32_t
key_id
,
val_id
;
FILE
*
in
;
FILE
*
out
;
if
(
(
argc
!=
3
)
||
((
in
=
fopen
(
argv
[
1
],
"r"
))
==
NULL
)
||
((
out
=
fopen
(
argv
[
2
],
"w"
))
==
NULL
)
)
usage
(
argv
[
0
]);
memset
(
line
,
0
,
sizeof
(
key
));
memset
(
key
,
0
,
sizeof
(
val
));
memset
(
val
,
0
,
sizeof
(
val
));
while
(
(
NULL
!=
fgets
(
line
,
sizeof
(
line
),
in
))
||
(
state
>=
2
&&
feof
(
in
))
)
{
if
(
state
==
0
&&
strstr
(
line
,
"msgid
\"
"
)
==
line
)
{
switch
(
extract_string
(
line
,
key
,
sizeof
(
key
)))
{
case
-
1
:
die
(
"Syntax error in msgid"
);
case
0
:
state
=
1
;
break
;
default:
state
=
2
;
}
}
else
if
(
state
==
1
||
state
==
2
)
{
if
(
strstr
(
line
,
"msgstr
\"
"
)
==
line
||
state
==
2
)
{
switch
(
extract_string
(
line
,
val
,
sizeof
(
val
)))
{
case
-
1
:
state
=
4
;
break
;
default:
state
=
3
;
}
}
else
{
switch
(
extract_string
(
line
,
tmp
,
sizeof
(
tmp
)))
{
case
-
1
:
state
=
2
;
break
;
default:
strcat
(
key
,
tmp
);
}
}
}
else
if
(
state
==
3
)
{
switch
(
extract_string
(
line
,
tmp
,
sizeof
(
tmp
)))
{
case
-
1
:
state
=
4
;
break
;
default:
strcat
(
val
,
tmp
);
}
}
if
(
state
==
4
)
{
if
(
strlen
(
key
)
>
0
&&
strlen
(
val
)
>
0
)
{
key_id
=
sfh_hash
(
key
,
strlen
(
key
));
val_id
=
sfh_hash
(
val
,
strlen
(
val
));
if
(
key_id
!=
val_id
)
{
n_entries
++
;
array
=
realloc
(
array
,
n_entries
*
sizeof
(
lmo_entry_t
));
entry
=
(
lmo_entry_t
*
)
array
+
n_entries
-
1
;
if
(
!
array
)
die
(
"Out of memory"
);
entry
->
key_id
=
key_id
;
entry
->
val_id
=
val_id
;
entry
->
offset
=
offset
;
entry
->
length
=
strlen
(
val
);
length
=
strlen
(
val
)
+
((
4
-
(
strlen
(
val
)
%
4
))
%
4
);
print
(
val
,
length
,
1
,
out
);
offset
+=
length
;
}
}
state
=
0
;
memset
(
key
,
0
,
sizeof
(
key
));
memset
(
val
,
0
,
sizeof
(
val
));
}
memset
(
line
,
0
,
sizeof
(
line
));
}
print_index
(
array
,
n_entries
,
out
);
if
(
offset
>
0
)
{
print_uint32
(
offset
,
out
);
fsync
(
fileno
(
out
));
fclose
(
out
);
}
else
{
fclose
(
out
);
unlink
(
argv
[
2
]);
}
fclose
(
in
);
return
(
0
);
}
This diff is collapsed.
Click to expand it.
Prev
1
…
42
43
44
45
46
Next