diff --git a/res/res_musiconhold.c b/res/res_musiconhold.c
index a9fafa9bc722454d9fd34f0386fe6688192ead59..30a363574916058fdd2f7c2d3247aa147a8e6ead 100644
--- a/res/res_musiconhold.c
+++ b/res/res_musiconhold.c
@@ -364,33 +364,25 @@ static int spawn_mp3(struct mohclass *class)
 			argv[argc++] = "8192";
 		
 		/* Look for extra arguments and add them to the list */
-		strncpy(xargs, class->args, sizeof(xargs) - 1);
+		ast_copy_string(xargs, class->args, sizeof(xargs));
 		argptr = xargs;
 		while (!ast_strlen_zero(argptr)) {
 			argv[argc++] = argptr;
-			argptr = strchr(argptr, ',');
-			if (argptr) {
-				*argptr = '\0';
-				argptr++;
-			}
+			strsep(&argptr, ",");
 		}
 	} else  {
 		/* Format arguments for argv vector */
-		strncpy(xargs, class->args, sizeof(xargs) - 1);
+		ast_copy_string(xargs, class->args, sizeof(xargs));
 		argptr = xargs;
 		while (!ast_strlen_zero(argptr)) {
 			argv[argc++] = argptr;
-			argptr = strchr(argptr, ' ');
-			if (argptr) {
-				*argptr = '\0';
-				argptr++;
-			}
+			strsep(&argptr, " ");
 		}
 	}
 
 
 	if (strstr(class->dir,"http://") || strstr(class->dir,"HTTP://")) {
-		strncpy(fns[files], class->dir, sizeof(fns[files]) - 1);
+		ast_copy_string(fns[files], class->dir, sizeof(fns[files]));
 		argv[argc++] = fns[files];
 		files++;
 	} else if (dir) {
@@ -400,7 +392,7 @@ static int spawn_mp3(struct mohclass *class)
 			      (!strcasecmp(de->d_name + strlen(de->d_name) - 4, ".raw") || 
 			       !strcasecmp(de->d_name + strlen(de->d_name) - 4, ".sln"))) ||
 			     !strcasecmp(de->d_name + strlen(de->d_name) - 4, ".mp3"))) {
-				strncpy(fns[files], de->d_name, sizeof(fns[files]) - 1);
+				ast_copy_string(fns[files], de->d_name, sizeof(fns[files]));
 				argv[argc++] = fns[files];
 				files++;
 			}