WIP: integer-ms timestamps (fixes 0:00), jl_new_int port

This commit is contained in:
SirHumza committed 2026-09-23 19:10:59 +02:00
1 parent 0d8c5cd254
commit db38c05077
3 files changed
+12 -7

No files matched your search

+6 -5
View File
@@ -108,7 +108,7 @@ static int rx_frame(discord_t *d, char *buf, size_t cap, int *op, int *fin, int6
static int send_identify(discord_t *d, const char *token){
jl_val_t *root=jl_new_object();
if(!root) return -1;
jl_obj_set(root,"op",jl_new_number(2));
jl_obj_set(root,"op",jl_new_int(2));
jl_val_t *dd=jl_new_object();
if(!dd){ jl_free(root); return -1; }
jl_obj_set(dd,"token",jl_new_string(token));
@@ -230,13 +230,14 @@ int discord_set_presence_ex(discord_t *d, const char *state, const char *name,
jl_val_t *act=jl_new_object();
if(!act) return -1;
jl_obj_set(act,"name",jl_new_string(name?name:""));
jl_obj_set(act,"type",jl_new_number(0)); /* Playing */
jl_obj_set(act,"type",jl_new_int(0)); /* Playing */
if(state&&state[0]) jl_obj_set(act,"state",jl_new_string(state));
if(title_id&&title_id[0]) jl_obj_set(act,"details",jl_new_string(title_id));
if(started_epoch>0){
jl_val_t *ts=jl_new_object();
if(!ts){ jl_free(act); return -1; }
jl_obj_set(ts,"start",jl_new_number((double)started_epoch*1000.0)); /* ms epoch */
if(started_epoch > 0 && started_epoch < 100000000000LL)
jl_obj_set(ts,"start",jl_new_int(started_epoch*1000LL)); /* integer ms epoch */
jl_obj_set(act,"timestamps",ts);
}
if(application_id&&application_id[0])
@@ -274,7 +275,7 @@ int discord_set_presence_ex(discord_t *d, const char *state, const char *name,
jl_obj_set(dd,"afk",jl_new_bool(0));
jl_val_t *root=jl_new_object();
if(!root){ jl_free(dd); return -1; }
jl_obj_set(root,"op",jl_new_number(3));
jl_obj_set(root,"op",jl_new_int(3));
jl_obj_set(root,"d",dd);
char *s=jl_stringify(root); jl_free(root);
if(!s) return -1;
@@ -291,7 +292,7 @@ int discord_clear_presence(discord_t *d){
jl_obj_set(dd,"afk",jl_new_bool(0));
jl_val_t *root=jl_new_object();
if(!root){ jl_free(dd); return -1; }
jl_obj_set(root,"op",jl_new_number(3));
jl_obj_set(root,"op",jl_new_int(3));
jl_obj_set(root,"d",dd);
char *s=jl_stringify(root); jl_free(root);
if(!s) return -1;
+3 -2
View File
@@ -252,7 +252,7 @@ static int emit(jl_val_t *v, char **out, size_t *cap, size_t *len){
case JL_NULL: { size_t l=4; if(ensure_capacity(out,cap,*len+l+1)<0)return -1; memcpy(*out+*len,"null",4);*len+=4; return 0; }
case JL_BOOL: { const char*s=v->num?"true":"false"; size_t l=strlen(s);
if(ensure_capacity(out,cap,*len+l+1)<0)return -1; memcpy(*out+*len,s,l);*len+=l; return 0; }
case JL_NUMBER: snprintf(buf,sizeof buf,"%.17g",v->num); break;
case JL_NUMBER: if(v->num_is_int) snprintf(buf,sizeof buf,"%lld",(long long)v->inum); else snprintf(buf,sizeof buf,"%.17g",v->num); break;
case JL_STRING: return escstr(v->str,out,cap,len);
case JL_ARRAY:{
size_t l=*len+1; if(ensure_capacity(out,cap,l+1)<0)return -1; (*out)[(*len)++]='[';
@@ -298,7 +298,8 @@ jl_val_t *jl_new_string(const char *s){
v->strlen=strlen(v->str);
return v;
}
jl_val_t *jl_new_number(double n){ jl_val_t *v=newval(JL_NUMBER); if(v)v->num=n; return v; }
jl_val_t *jl_new_number(double n){ jl_val_t *v=newval(JL_NUMBER); if(v){v->num=n; v->num_is_int=0;} return v; }
jl_val_t *jl_new_int(int64_t n){ jl_val_t *v=newval(JL_NUMBER); if(v){v->num=(double)n; v->num_is_int=1; v->inum=n;} return v; }
jl_val_t *jl_new_bool(int b){ jl_val_t *v=newval(JL_BOOL); if(v)v->num=b?1:0; return v; }
jl_val_t *jl_new_null(void){ return newval(JL_NULL); }
jl_val_t *jl_new_object(void){ return newval(JL_OBJECT); }
+3
View File
@@ -9,6 +9,8 @@ typedef struct jl_val {
char *str; /* string text OR object-entry key */
size_t strlen;
double num;
int num_is_int;
int64_t inum;
struct jl_val *child; /* object: first pair ; array: first elem */
struct jl_val *next; /* object pair chain OR array elem chain */
int32_t count;
@@ -23,6 +25,7 @@ jl_val_t *jl_arr_at(const jl_val_t *arr, size_t i);
char *jl_stringify(const jl_val_t *v);
jl_val_t *jl_new_string(const char *s);
jl_val_t *jl_new_number(double n);
jl_val_t *jl_new_int(int64_t n);
jl_val_t *jl_new_bool(int b);
jl_val_t *jl_new_null(void);
jl_val_t *jl_new_object(void);