Skip to content

Commit 23adbc0

Browse files
committed
feat: Add browser applet
1 parent ff76c84 commit 23adbc0

File tree

3 files changed

+40
-1
lines changed

3 files changed

+40
-1
lines changed

libctru/include/3ds.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ extern "C" {
9292

9393
#include <3ds/applets/swkbd.h>
9494
#include <3ds/applets/error.h>
95-
95+
#include <3ds/applets/browser.h>
9696
#include <3ds/applets/miiselector.h>
9797

9898
#include <3ds/archive.h>
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
/**
2+
* @file browser.h
3+
* @brief Browser Applet
4+
*/
5+
6+
#pragma once
7+
8+
/**
9+
* @brief Open the browser at a url
10+
* @param url The url to open at, max-length 1024 characters including the trailing zero. If invalid or null, just opens the browser.
11+
*/
12+
void browserOpenUrl(char* url);

libctru/source/applets/browser.c

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
#include <3ds/types.h>
2+
#include <3ds/services/apt.h>
3+
4+
#include <3ds/applets/browser.h>
5+
6+
#include <stdlib.h>
7+
#include <string.h>
8+
9+
void browserOpenUrl(char* url)
10+
{
11+
if (!url)
12+
{
13+
aptLaunchSystemApplet(APPID_WEB, 0, 0, 0);
14+
return;
15+
}
16+
size_t url_len = strlen(url) + 1;
17+
if (url_len > 0x400)
18+
return browserOpenUrl(NULL);
19+
size_t buffer_size = url_len + 1;
20+
u8* buffer = malloc(buffer_size);
21+
if (!buffer)
22+
return browserOpenUrl(NULL);
23+
memcpy(buffer, url, url_len);
24+
buffer[url_len] = 0;
25+
aptLaunchSystemApplet(APPID_WEB, buffer, buffer_size, 0);
26+
free(buffer);
27+
}

0 commit comments

Comments
 (0)