/* * Feynman -- Wayland compositor for GNU Emacs * * Copyright (c) 2022 Sameer Rahmani * * 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, version 2. * * 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 . */ #include "utils.h" #include void em_message (emacs_env *env, const char *fmt, ...) { char *internalfmt = NULL; char buffer[4096]; va_list args; va_start (args, fmt); int rc = vsnprintf (buffer, sizeof (buffer), fmt, args); va_end (args); if (rc < 0) { em_error (env, "Variadic params failed on 'em_message'"); return; } sprintf (internalfmt, "[Feynman]: %s", fmt); emacs_value message = env->intern (env, "message"); emacs_value msg = env->make_string (env, internalfmt, strlen (internalfmt)); // emacs_value msgstr = env->make_string (env, , strlen (msg)); emacs_value message_args[] = { msg }; env->funcall (env, message, 2, message_args); }; void em_error (emacs_env *env, const char *fmt, ...) { char *internalfmt = NULL; emacs_value error = env->intern (env, "error"); char buffer[4096]; va_list args; va_start (args, fmt); int rc = vsnprintf (buffer, sizeof (buffer), fmt, args); va_end (args); if (rc < 0) { char *err_msg = "Variadic params failed on 'em_error'"; emacs_value msg = env->make_string (env, err_msg, strlen (err_msg)); emacs_value err_args[] = { msg }; env->funcall (env, error, 1, err_args); return; } sprintf (internalfmt, "[Feynman][Error]: %s", fmt); emacs_value msg = env->make_string (env, internalfmt, strlen (internalfmt)); emacs_value error_args[] = { msg }; env->funcall (env, error, 2, error_args); };